/[gtktalog]/gtktalog/src/gtktalog/edit.c
ViewVC logotype

Contents of /gtktalog/src/gtktalog/edit.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.37.2.1 - (show annotations) (download)
Fri Mar 28 21:34:06 2003 UTC (21 years, 1 month ago) by ymettier
Branch: stable-1-0
Changes since 1.37: +4 -4 lines
File MIME type: text/plain
fixed a bug with categories

1 /* GTKtalog.
2 * Copyright (C) 1999-2000 Mathieu VILLEGAS
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18
19 #include <config.h>
20 #include <gnome.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23
24 #include "selectdir.h"
25 #include "edit.h"
26 #include "categories.h"
27 #include "interface.h"
28 #include "config_common.h"
29 #include "folder.h"
30 #include "io.h"
31 #include "fastaddisk.h"
32 #include "addisk.h"
33 #include "exit.h"
34 #include "thread_utils.h"
35
36 static GtkWidget *edit_window;
37 static GtkWidget *fold_entry;
38 static GtkWidget *cat_box;
39 static GtkWidget *cat_combo;
40 static GtkWidget *cat_ed;
41 static GtkWidget *desc_combo;
42 static GtkWidget *recursive_category;
43 static GtkWidget *recursive_description;
44 static GtkWidget *widget_is_description_empty;
45 static GtkWidget *widget_is_category_empty;
46
47 struct _gnode_and_string
48 {
49 GNode *gn;
50 gchar *s;
51 };
52
53 gboolean
54 is_file_with_the_same_name (GNode * gn, gpointer data)
55 {
56 FILE_DATA *fd;
57 struct _gnode_and_string *gns = data;
58
59 if (G_NODE_IS_ROOT (gn))
60 return (FALSE);
61 fd = get_file_data_from_gnode (gn);
62 if (strcmp (gns->s, fd->name->str) == 0)
63 {
64 gns->gn = gn;
65 return (TRUE);
66 }
67 return (FALSE);
68
69 }
70
71 gboolean
72 _change_category (GNode * gn, gpointer data)
73 {
74 g_assert (!G_NODE_IS_ROOT (gn));
75 if (is_link (gn->parent) == FALSE)
76 {
77 change_category (gn, GPOINTER_TO_UINT (data));
78 }
79 return (FALSE);
80 }
81
82 gboolean
83 _change_description (GNode * gn, gpointer data)
84 {
85 g_assert (!G_NODE_IS_ROOT (gn));
86 if (is_link (gn->parent) == FALSE)
87 {
88 change_description (gn, GPOINTER_TO_UINT (data));
89 }
90 return (FALSE);
91 }
92
93 gint
94 description_add (GPtrArray * description_array, gchar * text)
95 {
96 gint i;
97 i = string_to_index (description_array, text);
98 if (i)
99 return (i);
100 g_ptr_array_add (description_array, g_string_new (text));
101 return (description_array->len);
102 }
103
104 static void
105 ok_clicked (GtkWidget * w, gpointer data)
106 {
107 FOLDER *racine = data;
108 G_CONST_RETURN gchar *entry_text, *entry_text2, *entry_text3;
109 GNode *gn;
110 FILE_DATA *fd;
111 GtkCTreeNode *gtknode;
112 PIX *pix;
113 GNode *tmpgn;
114 gboolean gc_descriptions_flag;
115
116 gn = racine->selected_folder;
117 fd = get_file_data_from_gnode (gn);
118
119 entry_text = gtk_entry_get_text (GTK_ENTRY (fold_entry));
120 entry_text2 = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (cat_combo)->entry));
121 entry_text3 =
122 gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (desc_combo)->entry));
123
124 if (strlen (entry_text) == 0)
125 {
126 ERROR_DIALOG (_("Name field is empty.\nType a file name or cancel."),
127 edit_window);
128 return;
129 }
130 /* Is there a filename with the same name as entry_text ? */
131 if (strcmp (fd->name->str, entry_text))
132 {
133 static struct _gnode_and_string gns;
134 gns.gn = NULL;
135 gns.s = (gchar *) entry_text;
136
137 g_node_traverse (gn->parent, G_POST_ORDER, G_TRAVERSE_ALL, 2,
138 is_file_with_the_same_name, &gns);
139 tmpgn = gns.gn;
140 if ((tmpgn) && (tmpgn != gn->parent))
141 {
142 ERROR_DIALOG (_("A file/dir with the same name "
143 "already exists in this directory"), edit_window);
144 return;
145 }
146 }
147
148 /* Change the category */
149 if (gtk_toggle_button_get_active
150 (GTK_TOGGLE_BUTTON (widget_is_category_empty)))
151 {
152 fd->categorie =
153 string_to_index (racine->categories, (gchar *) entry_text2);
154 }
155 else
156 fd->categorie = 0;
157
158 my_config->edit_category_is_recursive = FALSE;
159
160 if ((is_file (racine->selected_folder) == FALSE)
161 && (is_link (racine->selected_folder) == FALSE))
162 {
163 my_config->edit_category_is_recursive = TRUE;
164 if (gtk_toggle_button_get_active
165 (GTK_TOGGLE_BUTTON (recursive_category)))
166 {
167 g_node_traverse (gn, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
168 _change_category,
169 GUINT_TO_POINTER (0 + fd->categorie));
170 }
171 }
172
173 /* Change the descriptions ? */
174 gc_descriptions_flag = FALSE;
175 if (gtk_toggle_button_get_active
176 (GTK_TOGGLE_BUTTON (widget_is_description_empty)))
177 {
178 fd->description =
179 description_add (racine->descriptions, (gchar *) entry_text3);
180 }
181 else
182 {
183 fd->description = 0;
184 gc_descriptions_flag = TRUE;
185 }
186
187 my_config->edit_description_is_recursive = FALSE;
188
189 if ((is_file (racine->selected_folder) == FALSE)
190 && (is_link (racine->selected_folder) == FALSE))
191 {
192 my_config->edit_description_is_recursive = TRUE;
193 if (gtk_toggle_button_get_active
194 (GTK_TOGGLE_BUTTON (recursive_description)))
195 {
196 g_node_traverse (gn, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
197 _change_description,
198 GUINT_TO_POINTER (0 + fd->description));
199 }
200 }
201 if (gc_descriptions_flag)
202 description_garbage_collection ();
203
204
205 /* Change the name ? */
206 if (strcmp (fd->name->str, entry_text))
207 {
208 g_string_free (fd->name, TRUE);
209 fd->name = g_string_new (entry_text);
210 if ((is_dir (gn)) || (is_disk (gn)) || (is_vfs_any (gn)))
211 {
212 gtknode = fd->ctree_node;
213 if (g_node_depth (gn) == 2)
214 pix = my_config->default_disk_pix;
215 else
216 pix = my_config->default_dir_pix;
217 gtk_ctree_set_node_info (GTK_CTREE (racine->ctree),
218 gtknode, fd->name->str, 4,
219 pix->pixmap, *(pix->mask), pix->pixmap,
220 *(pix->mask),
221 GTK_CTREE_ROW (gtknode)->is_leaf,
222 GTK_CTREE_ROW (gtknode)->expanded);
223 }
224
225
226 }
227 gtk_widget_destroy (edit_window);
228 list_folder (racine->selected_folder->parent, TRUE);
229 racine->selected_folder = NULL;
230 my_config->update_edit_window = FALSE;
231 racine->is_modified = TRUE;
232 }
233
234 void
235 delete_folder (GtkWidget * w, FOLDER * racine)
236 {
237 GNode *parent;
238 GNode *gn;
239 GList *gl;
240 GList *gl_del = NULL;
241
242 if (yes_no_dialog (_("Deletion confirmation"), _("Really delete?")))
243 return;
244
245 parent = racine->selected_folder->parent;
246 gtk_clist_freeze (GTK_CLIST (racine->ctree));
247 gl = (GTK_CLIST (clist))->selection;
248 if (g_list_length (gl) > 1)
249 {
250 while (gl)
251 {
252 gn =
253 gtk_clist_get_row_data (GTK_CLIST (clist),
254 GPOINTER_TO_INT (gl->data));
255 gl_del = g_list_append (gl_del, gn);
256 gl = g_list_next (gl);
257 }
258 gl = gl_del;
259 while (gl)
260 {
261 gn = gl->data;
262 suppress_dir (gn, TRUE);
263 gl = g_list_next (gl);
264 }
265 g_list_free (gl_del);
266 }
267 else
268 {
269 suppress_dir (racine->selected_folder, TRUE);
270 }
271 description_garbage_collection ();
272 gtk_clist_thaw (GTK_CLIST (racine->ctree));
273 list_folder (parent, TRUE);
274 }
275
276 static void
277 cancel_clicked (GtkWidget * w, gpointer data)
278 {
279 gtk_widget_destroy (edit_window);
280 my_config->update_edit_window = FALSE;
281 return;
282 }
283
284 static void
285 destroy_window (GtkWidget * w, GdkEventKey * event, gpointer data)
286 {
287 cancel_clicked (w, data);
288 }
289
290 void
291 update_category_combo (FOLDER * racine)
292 {
293 FILE_DATA *fd;
294 GList *cat_list;
295 gint i;
296
297 cat_list = NULL;
298 for (i = 0; i < racine->categories->len; i++)
299 cat_list = g_list_append (cat_list, ((GString *)
300 g_ptr_array_index
301 (racine->categories, i))->str);
302 if (cat_list)
303 gtk_combo_set_popdown_strings (GTK_COMBO (cat_combo), cat_list);
304 gtk_editable_set_editable (GTK_EDITABLE (GTK_COMBO (cat_combo)->entry),
305 FALSE);
306 fd = get_file_data_from_gnode (racine->selected_folder);
307 if (fd->categorie)
308 {
309 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cat_combo)->entry),
310 get_categorie (racine, fd->categorie));
311 }
312 gtk_widget_show (cat_combo);
313
314 }
315
316 void
317 _edit_categories (GtkWidget * w, FOLDER * racine)
318 {
319 edit_categories (racine);
320 }
321
322 void
323 desc_sw_clicked (GtkWidget * w, gpointer data)
324 {
325 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
326 {
327 gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE);
328 }
329 else
330 {
331 gtk_widget_set_sensitive (GTK_WIDGET (data), FALSE);
332 }
333 }
334
335 void
336 edit_folder (GtkWidget * w, FOLDER * racine)
337 {
338 GtkWidget *vbox, *hbox, *the_box;
339 GtkWidget *hboxdc;
340 GtkWidget *ok, *cancel;
341 GtkWidget *frame;
342 FILE_DATA *fd;
343
344
345 GList *cat_list;
346
347 GList *desc_list;
348 int i;
349 GtkAccelGroup *accel_group;
350
351 accel_group = gtk_accel_group_new ();
352
353 if (racine->selected_folder != NULL)
354 {
355
356 fd = get_file_data_from_gnode (racine->selected_folder);
357 /* Window */
358 edit_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
359
360 gtk_window_set_modal (GTK_WINDOW (edit_window), TRUE);
361 gtk_window_set_transient_for (GTK_WINDOW (edit_window),
362 GTK_WINDOW (main_window));
363
364 gtk_window_set_position (GTK_WINDOW (edit_window), GTK_WIN_POS_MOUSE);
365 if ((is_file (racine->selected_folder))
366 || (is_link (racine->selected_folder)))
367 gtk_widget_set_usize (GTK_WIDGET (edit_window), 300, 170);
368 else
369 gtk_widget_set_usize (GTK_WIDGET (edit_window), 300, 210);
370 if (is_disk (racine->selected_folder))
371 {
372 gtk_window_set_title (GTK_WINDOW (edit_window), _("Edit disk"));
373 gtk_window_set_wmclass (GTK_WINDOW (edit_window), _("Edit disk"),
374 "GTKtalog");
375 }
376 else if (is_vfs_any (racine->selected_folder))
377 {
378 gtk_window_set_title (GTK_WINDOW (edit_window), _("Edit vfs"));
379 gtk_window_set_wmclass (GTK_WINDOW (edit_window), _("Edit vfs"),
380 "GTKtalog");
381 }
382 else if (is_link (racine->selected_folder))
383 {
384 gtk_window_set_title (GTK_WINDOW (edit_window), _("Edit link"));
385 gtk_window_set_wmclass (GTK_WINDOW (edit_window), _("Edit link"),
386 "GTKtalog");
387 }
388 else if (is_dir (racine->selected_folder))
389 {
390 gtk_window_set_title (GTK_WINDOW (edit_window), _("Edit folder"));
391 gtk_window_set_wmclass (GTK_WINDOW (edit_window), _("Edit folder"),
392 "GTKtalog");
393 }
394 else if (is_file (racine->selected_folder))
395 {
396 gtk_window_set_title (GTK_WINDOW (edit_window), _("Edit file"));
397 gtk_window_set_wmclass (GTK_WINDOW (edit_window), _("Edit file"),
398 "GTKtalog");
399 }
400 gtk_window_set_policy (GTK_WINDOW (edit_window), TRUE, TRUE, TRUE);
401 gtk_container_border_width (GTK_CONTAINER (edit_window), 10);
402 gtk_signal_connect (GTK_OBJECT (edit_window),
403 "delete_event", G_CALLBACK (destroy_window), NULL);
404
405 vbox = gtk_vbox_new (FALSE, 0);
406 gtk_container_add (GTK_CONTAINER (edit_window), vbox);
407 gtk_widget_show (vbox);
408
409 /* First frame (edit label) */
410 frame = gtk_frame_new (NULL);
411 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
412 if (is_disk (racine->selected_folder))
413 gtk_frame_set_label (GTK_FRAME (frame), _("Edit disk label"));
414 else if (is_vfs_any (racine->selected_folder))
415 gtk_frame_set_label (GTK_FRAME (frame), _("Vfs label"));
416 else if (is_link (racine->selected_folder))
417 gtk_frame_set_label (GTK_FRAME (frame), _("Link label"));
418 else if (is_dir (racine->selected_folder))
419 gtk_frame_set_label (GTK_FRAME (frame), _("Directory label"));
420 else if (is_file (racine->selected_folder))
421 gtk_frame_set_label (GTK_FRAME (frame), _("File label"));
422 gtk_frame_set_label_align (GTK_FRAME (frame), 0.0, 0.0);
423 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);
424 gtk_widget_show (frame);
425
426 fold_entry = gtk_entry_new_with_max_length (80);
427 gtk_signal_connect (GTK_OBJECT (fold_entry), "activate",
428 GTK_SIGNAL_FUNC (ok_clicked), racine);
429 gtk_entry_set_text (GTK_ENTRY (fold_entry), fd->name->str);
430 gtk_entry_select_region (GTK_ENTRY (fold_entry),
431 0, GTK_ENTRY (fold_entry)->text_length);
432 gtk_container_add (GTK_CONTAINER (frame), fold_entry);
433
434 gtk_widget_show (fold_entry);
435
436 /* Second entry (category combo box) */
437 frame = gtk_frame_new (NULL);
438 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
439 if (is_disk (racine->selected_folder))
440 gtk_frame_set_label (GTK_FRAME (frame), _("Change disk category"));
441 else if (is_vfs (racine->selected_folder))
442 gtk_frame_set_label (GTK_FRAME (frame), _("Change vfs category"));
443 else if (is_link (racine->selected_folder))
444 gtk_frame_set_label (GTK_FRAME (frame), _("Change link category"));
445 else if (is_dir (racine->selected_folder))
446 gtk_frame_set_label (GTK_FRAME (frame),
447 _("Change directory category"));
448 else if (is_file (racine->selected_folder))
449 gtk_frame_set_label (GTK_FRAME (frame), _("Change file category"));
450 gtk_frame_set_label_align (GTK_FRAME (frame), 0.0, 0.0);
451 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);
452 gtk_widget_show (frame);
453
454 cat_box = gtk_hbox_new (FALSE, 0);
455 gtk_container_add (GTK_CONTAINER (frame), cat_box);
456 gtk_widget_show (cat_box);
457
458 widget_is_category_empty = gtk_check_button_new ();
459 if (fd->categorie)
460 {
461 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
462 (widget_is_category_empty), TRUE);
463 }
464 else
465 {
466 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
467 (widget_is_category_empty), FALSE);
468 }
469 gtk_box_pack_start (GTK_BOX (cat_box), widget_is_category_empty,
470 FALSE, TRUE, 0);
471 gtk_widget_show (widget_is_category_empty);
472
473 cat_combo = gtk_combo_new ();
474 gtk_combo_set_value_in_list (GTK_COMBO (cat_combo), FALSE, TRUE);
475 gtk_combo_set_use_arrows_always (GTK_COMBO (cat_combo), TRUE);
476 gtk_combo_disable_activate (GTK_COMBO (cat_combo));
477 gtk_box_pack_start (GTK_BOX (cat_box), cat_combo, TRUE, TRUE, 0);
478 cat_list = NULL;
479 for (i = 0; i < racine->categories->len; i++)
480 cat_list = g_list_append (cat_list, ((GString *)
481 g_ptr_array_index
482 (racine->categories, i))->str);
483 if (cat_list)
484 {
485 gtk_combo_set_popdown_strings (GTK_COMBO (cat_combo), cat_list);
486 g_list_free (cat_list);
487 }
488 gtk_editable_set_editable (GTK_EDITABLE (GTK_COMBO (cat_combo)->entry),
489 FALSE);
490 if (fd->categorie)
491 {
492 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cat_combo)->entry),
493 get_categorie (racine, fd->categorie));
494 gtk_widget_set_sensitive (GTK_WIDGET (cat_combo), TRUE);
495 }
496 else
497 {
498 gtk_widget_set_sensitive (GTK_WIDGET (cat_combo), FALSE);
499 }
500 gtk_widget_show (cat_combo);
501
502
503 cat_ed = gtk_button_new_with_label ("...");
504 gtk_box_pack_start (GTK_BOX (cat_box), cat_ed, FALSE, FALSE, 0);
505 gtk_signal_connect (GTK_OBJECT (cat_ed), "clicked",
506 GTK_SIGNAL_FUNC (_edit_categories), racine);
507 gtk_widget_show (cat_ed);
508 gtk_signal_connect (GTK_OBJECT (widget_is_category_empty), "clicked",
509 GTK_SIGNAL_FUNC (desc_sw_clicked), cat_combo);
510
511
512 /* Third entry (description combo box) */
513
514 frame = gtk_frame_new (NULL);
515 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
516 gtk_frame_set_label (GTK_FRAME (frame), _("Edit description"));
517 gtk_frame_set_label_align (GTK_FRAME (frame), 0.0, 0.0);
518 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);
519 gtk_widget_show (frame);
520
521 hboxdc = gtk_hbox_new (FALSE, 0);
522 gtk_container_add (GTK_CONTAINER (frame), hboxdc);
523 gtk_widget_show (hboxdc);
524
525 widget_is_description_empty = gtk_check_button_new ();
526 if (fd->description)
527 {
528 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
529 (widget_is_description_empty), TRUE);
530 }
531 else
532 {
533 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
534 (widget_is_description_empty), FALSE);
535 }
536 gtk_box_pack_start (GTK_BOX (hboxdc), widget_is_description_empty,
537 FALSE, TRUE, 0);
538 gtk_widget_show (widget_is_description_empty);
539
540
541 desc_combo = gtk_combo_new ();
542 gtk_combo_set_value_in_list (GTK_COMBO (desc_combo), FALSE, TRUE);
543 gtk_combo_set_use_arrows_always (GTK_COMBO (desc_combo), TRUE);
544 gtk_combo_disable_activate (GTK_COMBO (desc_combo));
545 gtk_container_add (GTK_CONTAINER (hboxdc), desc_combo);
546 desc_list = NULL;
547 for (i = 0; i < racine->descriptions->len; i++)
548 {
549 desc_list = g_list_append (desc_list, ((GString *)
550 g_ptr_array_index
551 (racine->descriptions,
552 i))->str);
553 }
554 if (desc_list)
555 gtk_combo_set_popdown_strings (GTK_COMBO (desc_combo), desc_list);
556 if (fd->description)
557 {
558 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (desc_combo)->entry),
559 get_description (racine, fd->description));
560 }
561 gtk_widget_show (desc_combo);
562
563
564 if (fd->description)
565 {
566 gtk_widget_set_sensitive (GTK_WIDGET (desc_combo), TRUE);
567 }
568 else
569 {
570 gtk_widget_set_sensitive (GTK_WIDGET (desc_combo), FALSE);
571 }
572 gtk_signal_connect (GTK_OBJECT (widget_is_description_empty), "clicked",
573 GTK_SIGNAL_FUNC (desc_sw_clicked), desc_combo);
574
575 if ((is_file (racine->selected_folder) == FALSE)
576 && (is_link (racine->selected_folder) == FALSE))
577 {
578 frame = gtk_frame_new (NULL);
579 gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
580 gtk_frame_set_label (GTK_FRAME (frame),
581 _("Propagate in subdirs and files"));
582 gtk_frame_set_label_align (GTK_FRAME (frame), 0.0, 0.0);
583 gtk_frame_set_shadow_type (GTK_FRAME (frame),
584 GTK_SHADOW_ETCHED_OUT);
585 gtk_widget_show (frame);
586
587 the_box = gtk_hbox_new (FALSE, 0);
588 gtk_container_add (GTK_CONTAINER (frame), the_box);
589 gtk_widget_show (the_box);
590
591 recursive_category =
592 gtk_check_button_new_with_label (_("Category"));
593 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
594 (recursive_category),
595 my_config->
596 edit_category_is_recursive);
597 gtk_box_pack_start (GTK_BOX (the_box), recursive_category, FALSE,
598 TRUE, 0);
599 gtk_widget_show (recursive_category);
600
601 recursive_description =
602 gtk_check_button_new_with_label (_("Description"));
603 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
604 (recursive_description),
605 my_config->
606 edit_description_is_recursive);
607 gtk_box_pack_start (GTK_BOX (the_box), recursive_description, FALSE,
608 TRUE, 0);
609 gtk_widget_show (recursive_description);
610 }
611
612 /* Buttons */
613 hbox = gtk_hbutton_box_new ();
614 gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END);
615 gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbox), 5);
616
617 #ifdef GNOME1
618 ok = gnome_stock_button (GNOME_STOCK_BUTTON_OK);
619 #else
620 ok = gtk_button_new_from_stock (GNOME_STOCK_BUTTON_OK);
621 #endif
622 GTK_WIDGET_SET_FLAGS (ok, GTK_CAN_DEFAULT);
623 gtk_window_set_default (GTK_WINDOW (edit_window), ok);
624 gtk_box_pack_start (GTK_BOX (hbox), ok, TRUE, TRUE, 0);
625 gtk_signal_connect (GTK_OBJECT (ok), "clicked",
626 GTK_SIGNAL_FUNC (ok_clicked), racine);
627 gtk_widget_show (ok);
628
629 #ifdef GNOME1
630 cancel = gnome_stock_button (GNOME_STOCK_BUTTON_CANCEL);
631 #else
632 cancel = gtk_button_new_from_stock (GNOME_STOCK_BUTTON_CANCEL);
633 #endif
634 GTK_WIDGET_SET_FLAGS (cancel, GTK_CAN_DEFAULT);
635 gtk_box_pack_start (GTK_BOX (hbox), cancel, TRUE, TRUE, 0);
636 gtk_signal_connect (GTK_OBJECT (cancel), "clicked",
637 G_CALLBACK (cancel_clicked), NULL);
638 gtk_widget_show (cancel);
639
640 gtk_widget_add_accelerator (cancel, "clicked", accel_group,
641 GDK_Escape, 0, GTK_ACCEL_VISIBLE);
642
643 gtk_window_add_accel_group (GTK_WINDOW (edit_window), accel_group);
644 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
645 gtk_widget_show (hbox);
646
647 gtk_widget_show (edit_window);
648 my_config->update_edit_window = TRUE;
649
650 }
651 }
652
653 void
654 update_disk (GtkWidget * w, FOLDER * racine)
655 {
656 GNode *parent;
657 gchar *folder_name, *disk_name;
658 const gchar *fn;
659
660 reset_added_disk ();
661 parent = racine->selected_folder;
662 disk_name = g_strdup (folder_get_name (parent));
663 if (is_cd (parent))
664 {
665 folder_name = g_strdup (my_config->mount_point->str);
666 }
667 else
668 {
669 if ((fn = folder_get_informations (parent)))
670 folder_name = g_strdup (fn);
671 else
672 folder_name = NULL;
673 }
674 if (folder_name)
675 {
676 if (is_cd (parent))
677 {
678 do_not_forget_to_mount (TRUE);
679 if (!mount_disk_if_necessary ())
680 {
681 g_free (folder_name);
682 g_free (disk_name);
683 display_message_if_necessary ();
684 reinit_thread_status ();
685 return;
686 }
687 }
688 suppress_dir (racine->selected_folder, TRUE);
689 gtk_clist_clear (GTK_CLIST (clist));
690 gtk_widget_hide (GTK_WIDGET (clist));
691 gtk_clist_columns_autosize (GTK_CLIST (clist));
692 gtk_widget_show (GTK_WIDGET (clist));
693 if (is_cd (parent))
694 {
695 start_add_cd_for_update (folder_name, disk_name, racine);
696 }
697 else
698 {
699 start_add_disk (folder_name, disk_name, racine);
700 }
701 g_free (folder_name);
702 }
703 else
704 {
705 ERROR_DIALOG (_
706 ("The disk has an invalid path. Report the bug to the authors."),
707 main_window);
708 }
709 g_free (disk_name);
710 }

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26