1
/* $Id: terminal-helper-dialog.c 21730 2006-05-20 16:23:40Z benny $ */
3
* Copyright (c) 2004-2006 os-cillation e.K.
5
* Written by Benedikt Meurer <benny@xfce.org>.
7
* This program is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU General Public License as published by the Free
9
* Software Foundation; either version 2 of the License, or (at your option)
12
* This program is distributed in the hope that it will be useful, but WITHOUT
13
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
17
* You should have received a copy of the GNU General Public License along with
18
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19
* Place, Suite 330, Boston, MA 02111-1307 USA.
35
#include <terminal/terminal-enum-types.h>
36
#include <terminal/terminal-helper-dialog.h>
37
#include <terminal/terminal-helper.h>
38
#include <terminal/terminal-preferences.h>
49
static const gchar *category_titles[] =
55
static const gchar *category_descriptions[] =
57
N_ ("Choose your preferred Web Browser. The preferred\n"
58
"Web Browser opens when you right-click on a URL\n"
59
"and select Open Link from the context menu."),
60
N_ ("Choose your preferred Mail Reader. The preferred\n"
61
"Mail Reader opens when you right-click on an email\n"
62
"address and select Compose Email from the context\n"
68
static void terminal_helper_chooser_class_init (TerminalHelperChooserClass *klass);
69
static void terminal_helper_chooser_init (TerminalHelperChooser *chooser);
70
static void terminal_helper_chooser_finalize (GObject *object);
71
static void terminal_helper_chooser_get_property (GObject *object,
75
static void terminal_helper_chooser_set_property (GObject *object,
79
static void terminal_helper_chooser_pressed (GtkButton *button,
80
TerminalHelperChooser *chooser);
81
static void terminal_helper_chooser_update_state (TerminalHelperChooser *chooser);
85
struct _TerminalHelperChooserClass
87
GtkHBoxClass __parent__;
90
struct _TerminalHelperChooser
96
GtkTooltips *tooltips;
98
TerminalHelperDatabase *database;
101
TerminalHelperCategory category;
106
G_DEFINE_TYPE (TerminalHelperChooser, terminal_helper_chooser, GTK_TYPE_HBOX);
111
terminal_helper_chooser_class_init (TerminalHelperChooserClass *klass)
113
GObjectClass *gobject_class;
115
gobject_class = G_OBJECT_CLASS (klass);
116
gobject_class->finalize = terminal_helper_chooser_finalize;
117
gobject_class->get_property = terminal_helper_chooser_get_property;
118
gobject_class->set_property = terminal_helper_chooser_set_property;
121
* TerminalHelperChooser:active:
123
g_object_class_install_property (gobject_class,
125
g_param_spec_string ("active",
127
"The currently selected helper",
132
* TerminalHelperChooser:category:
134
g_object_class_install_property (gobject_class,
136
g_param_spec_enum ("category",
139
TERMINAL_TYPE_HELPER_CATEGORY,
140
TERMINAL_HELPER_WEBBROWSER,
147
terminal_helper_chooser_init (TerminalHelperChooser *chooser)
149
GtkWidget *separator;
154
chooser->database = terminal_helper_database_get ();
156
chooser->tooltips = gtk_tooltips_new ();
157
g_object_ref (G_OBJECT (chooser->tooltips));
158
gtk_object_sink (GTK_OBJECT (chooser->tooltips));
160
gtk_widget_push_composite_child ();
162
button = gtk_button_new ();
163
g_signal_connect (G_OBJECT (button), "pressed",
164
G_CALLBACK (terminal_helper_chooser_pressed), chooser);
165
gtk_tooltips_set_tip (chooser->tooltips, button,
166
_("Click here to change the selected application "
167
"or to disable this feature."), NULL);
168
gtk_container_add (GTK_CONTAINER (chooser), button);
169
gtk_widget_show (button);
171
hbox = gtk_hbox_new (FALSE, 4);
172
gtk_container_add (GTK_CONTAINER (button), hbox);
173
gtk_widget_show (hbox);
175
chooser->image = gtk_image_new ();
176
gtk_box_pack_start (GTK_BOX (hbox), chooser->image, FALSE, FALSE, 0);
177
gtk_widget_show (chooser->image);
179
chooser->label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0, "yalign", 0.0, NULL);
180
gtk_box_pack_start (GTK_BOX (hbox), chooser->label, TRUE, TRUE, 0);
181
gtk_widget_show (chooser->label);
183
separator = g_object_new (GTK_TYPE_VSEPARATOR, "height-request", 16, NULL);
184
gtk_box_pack_start (GTK_BOX (hbox), separator, FALSE, FALSE, 0);
185
gtk_widget_show (separator);
187
arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
188
gtk_box_pack_start (GTK_BOX (hbox), arrow, FALSE, FALSE, 0);
189
gtk_widget_show (arrow);
191
gtk_widget_pop_composite_child ();
193
terminal_helper_chooser_update_state (chooser);
199
terminal_helper_chooser_finalize (GObject *object)
201
TerminalHelperChooser *chooser = TERMINAL_HELPER_CHOOSER (object);
203
g_object_unref (G_OBJECT (chooser->database));
204
g_object_unref (G_OBJECT (chooser->tooltips));
205
g_free (chooser->active);
207
(*G_OBJECT_CLASS (terminal_helper_chooser_parent_class)->finalize) (object);
213
terminal_helper_chooser_get_property (GObject *object,
218
TerminalHelperChooser *chooser = TERMINAL_HELPER_CHOOSER (object);
223
g_value_set_string (value, terminal_helper_chooser_get_active (chooser));
227
g_value_set_enum (value, terminal_helper_chooser_get_category (chooser));
231
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
239
terminal_helper_chooser_set_property (GObject *object,
244
TerminalHelperChooser *chooser = TERMINAL_HELPER_CHOOSER (object);
249
terminal_helper_chooser_set_active (chooser, g_value_get_string (value));
253
terminal_helper_chooser_set_category (chooser, g_value_get_enum (value));
257
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
265
menu_activate (GtkWidget *item,
266
TerminalHelperChooser *chooser)
268
TerminalHelper *helper;
271
helper = g_object_get_data (G_OBJECT (item), "terminal-helper");
272
if (G_LIKELY (helper != NULL))
274
id = terminal_helper_get_id (helper);
275
terminal_helper_chooser_set_active (chooser, id);
279
terminal_helper_chooser_set_active (chooser, "disabled");
286
entry_changed (GtkEditable *editable,
291
text = gtk_editable_get_chars (editable, 0, -1);
292
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
301
browse_clicked (GtkWidget *button,
308
toplevel = gtk_widget_get_toplevel (entry);
309
dialog = gtk_file_chooser_dialog_new (_("Select application"),
310
GTK_WINDOW (toplevel),
311
GTK_FILE_CHOOSER_ACTION_OPEN,
312
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
313
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
315
gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), TRUE);
317
filename = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
318
if (G_LIKELY (filename != NULL && *filename != '\0'))
320
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), filename);
324
/* set Terminal's bindir as default folder */
325
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), BINDIR);
329
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
331
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
332
gtk_entry_set_text (GTK_ENTRY (entry), filename);
336
gtk_widget_destroy (dialog);
342
menu_activate_other (GtkWidget *item,
343
TerminalHelperChooser *chooser)
345
static const gchar *browse_titles[] =
347
N_ ("Choose a custom Web Browser"),
348
N_ ("Choose a custom Mail Reader"),
351
static const gchar *browse_messages[] =
353
N_ ("Specify the application you want to use as\nWeb Browser in Terminal:"),
354
N_ ("Specify the application you want to use as\nMail Reader in Terminal:"),
357
TerminalHelper *helper;
358
const gchar *command;
360
GEnumClass *enum_class;
361
GEnumValue *enum_value;
372
/* sanity check the category values */
373
g_assert (TERMINAL_HELPER_WEBBROWSER == 0);
374
g_assert (TERMINAL_HELPER_MAILREADER == 1);
376
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (chooser));
378
dialog = gtk_dialog_new_with_buttons (dgettext (GETTEXT_PACKAGE, browse_titles[chooser->category]),
379
GTK_WINDOW (toplevel),
380
GTK_DIALOG_DESTROY_WITH_PARENT
381
| GTK_DIALOG_NO_SEPARATOR
383
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
384
GTK_STOCK_OK, GTK_RESPONSE_OK,
386
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
387
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
388
gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
389
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 12);
390
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
392
hbox = g_object_new (GTK_TYPE_HBOX, "border-width", 5, "spacing", 12, NULL);
393
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
394
gtk_widget_show (hbox);
396
/* determine the stock icon for the helper category */
397
enum_class = g_type_class_ref (TERMINAL_TYPE_HELPER_CATEGORY);
398
enum_value = g_enum_get_value (enum_class, chooser->category);
399
stock = g_strconcat ("terminal-", enum_value->value_nick, NULL);
400
g_type_class_unref (enum_class);
402
image = gtk_image_new_from_stock (stock, GTK_ICON_SIZE_DIALOG);
403
gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
404
gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
405
gtk_widget_show (image);
408
vbox = gtk_vbox_new (FALSE, 6);
409
gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
410
gtk_widget_show (vbox);
412
label = g_object_new (GTK_TYPE_LABEL,
413
"label", dgettext (GETTEXT_PACKAGE, browse_messages[chooser->category]),
417
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
418
gtk_widget_show (label);
420
hbox = gtk_hbox_new (FALSE, 6);
421
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
422
gtk_widget_show (hbox);
424
entry = g_object_new (GTK_TYPE_ENTRY, "activates-default", TRUE, NULL);
425
g_signal_connect (G_OBJECT (entry), "changed", G_CALLBACK (entry_changed), dialog);
426
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
427
gtk_widget_show (entry);
429
button = gtk_button_new_with_mnemonic (_("_Browse..."));
430
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (browse_clicked), entry);
431
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
432
gtk_widget_show (button);
434
/* set the current custom command (if any) */
435
helper = terminal_helper_database_get_custom (chooser->database, chooser->category);
436
if (G_LIKELY (helper != NULL))
438
command = terminal_helper_get_command (helper);
439
gtk_entry_set_text (GTK_ENTRY (entry), command);
442
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
444
/* change the custom command in the database */
445
command = gtk_entry_get_text (GTK_ENTRY (entry));
446
terminal_helper_database_set_custom (chooser->database, chooser->category, command);
448
/* reload the custom helper */
449
helper = terminal_helper_database_get_custom (chooser->database, chooser->category);
450
if (G_LIKELY (helper != NULL))
452
id = terminal_helper_get_id (helper);
453
terminal_helper_chooser_set_active (chooser, id);
457
gtk_widget_destroy (dialog);
463
menu_position (GtkMenu *menu,
469
GtkRequisition chooser_request;
470
GtkRequisition menu_request;
471
GdkRectangle geometry;
473
GtkWidget *toplevel = gtk_widget_get_toplevel (chooser);
478
gtk_widget_translate_coordinates (GTK_WIDGET (chooser), toplevel, 0, 0, &x0, &y0);
480
gtk_widget_size_request (GTK_WIDGET (chooser), &chooser_request);
481
gtk_widget_size_request (GTK_WIDGET (menu), &menu_request);
483
gdk_window_get_position (GTK_WIDGET (chooser)->window, x, y);
488
/* verify the the menu is on-screen */
489
screen = gtk_widget_get_screen (GTK_WIDGET (chooser));
490
if (G_LIKELY (screen != NULL))
492
monitor = gdk_screen_get_monitor_at_point (screen, *x, *y);
493
gdk_screen_get_monitor_geometry (screen, monitor, &geometry);
494
if (*y + menu_request.height > geometry.y + geometry.height)
495
*y -= menu_request.height - chooser_request.height;
504
terminal_helper_chooser_pressed (GtkButton *button,
505
TerminalHelperChooser *chooser)
507
TerminalHelper *helper;
517
/* set a watch cursor while loading the menu */
518
if (G_LIKELY (GTK_WIDGET (button)->window != NULL))
520
cursor = gdk_cursor_new (GDK_WATCH);
521
gdk_window_set_cursor (GTK_WIDGET (button)->window, cursor);
522
gdk_cursor_unref (cursor);
526
menu = gtk_menu_new ();
528
item = gtk_menu_item_new_with_label (_("Disable this feature"));
529
g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (menu_activate), chooser);
530
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
531
gtk_widget_show (item);
533
item = gtk_separator_menu_item_new ();
534
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
535
gtk_widget_show (item);
537
helpers = terminal_helper_database_lookup_all (chooser->database, chooser->category);
538
for (lp = helpers, n_helpers = 0; lp != NULL; lp = lp->next)
540
/* skip hidden helpers (like custom ones) */
541
helper = TERMINAL_HELPER (lp->data);
542
if (terminal_helper_is_hidden (helper))
544
g_object_unref (G_OBJECT (helper));
548
item = gtk_image_menu_item_new_with_label (terminal_helper_get_name (helper));
549
g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (menu_activate), chooser);
550
g_object_set_data_full (G_OBJECT (item), "terminal-helper", helper, g_object_unref);
551
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
552
gtk_widget_show (item);
554
image = gtk_image_new_from_icon_name (terminal_helper_get_icon (helper), GTK_ICON_SIZE_MENU);
555
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
556
gtk_widget_show (image);
560
g_slist_free (helpers);
562
if (G_LIKELY (n_helpers > 0))
564
item = gtk_separator_menu_item_new ();
565
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
566
gtk_widget_show (item);
569
item = gtk_menu_item_new_with_label (_("Other..."));
570
g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (menu_activate_other), chooser);
571
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
572
gtk_widget_show (item);
574
/* reset the watch cursor on the chooser */
575
if (G_LIKELY (GTK_WIDGET (button)->window != NULL))
576
gdk_window_set_cursor (GTK_WIDGET (button)->window, NULL);
578
loop = g_main_loop_new (NULL, FALSE);
580
gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (GTK_WIDGET (chooser)));
581
g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop);
583
/* make sure the menu has atleast the same width as the chooser */
584
if (menu->allocation.width < GTK_WIDGET (chooser)->allocation.width)
585
gtk_widget_set_size_request (menu, GTK_WIDGET (chooser)->allocation.width, -1);
588
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, menu_position,
589
GTK_WIDGET (button), 0, gtk_get_current_event_time ());
590
g_main_loop_run (loop);
591
gtk_grab_remove (menu);
592
g_main_loop_unref (loop);
594
gtk_object_sink (GTK_OBJECT (menu));
596
gtk_button_released (button);
602
terminal_helper_chooser_update_state (TerminalHelperChooser *chooser)
604
TerminalHelper *helper;
606
if (exo_str_is_equal (chooser->active, "disabled"))
608
gtk_image_set_from_pixbuf (GTK_IMAGE (chooser->image), NULL);
609
gtk_label_set_text (GTK_LABEL (chooser->label), _("Disabled"));
612
else if (chooser->active != NULL)
614
helper = terminal_helper_database_lookup (chooser->database,
617
if (G_LIKELY (helper != NULL))
619
gtk_image_set_from_icon_name (GTK_IMAGE (chooser->image), terminal_helper_get_icon (helper), GTK_ICON_SIZE_MENU);
620
gtk_label_set_text (GTK_LABEL (chooser->label), terminal_helper_get_name (helper));
625
gtk_image_set_from_pixbuf (GTK_IMAGE (chooser->image), NULL);
626
gtk_label_set_text (GTK_LABEL (chooser->label), _("No application selected"));
632
* terminal_helper_chooser_get_active:
633
* @chooser : A #TerminalHelperChooser.
638
terminal_helper_chooser_get_active (TerminalHelperChooser *chooser)
640
g_return_val_if_fail (TERMINAL_IS_HELPER_CHOOSER (chooser), NULL);
641
return chooser->active;
647
* terminal_helper_chooser_set_active:
648
* @chooser : A #TerminalHelperChooser.
652
terminal_helper_chooser_set_active (TerminalHelperChooser *chooser,
655
g_return_if_fail (TERMINAL_IS_HELPER_CHOOSER (chooser));
657
if (!exo_str_is_equal (chooser->active, active))
659
g_free (chooser->active);
660
chooser->active = g_strdup (active);
661
g_object_notify (G_OBJECT (chooser), "active");
664
terminal_helper_chooser_update_state (chooser);
670
* terminal_helper_chooser_get_category:
671
* @chooser : A #TerminalHelperChooser.
675
TerminalHelperCategory
676
terminal_helper_chooser_get_category (TerminalHelperChooser *chooser)
678
g_return_val_if_fail (TERMINAL_IS_HELPER_CHOOSER (chooser),
679
TERMINAL_HELPER_WEBBROWSER);
680
return chooser->category;
686
* terminal_helper_chooser_set_category:
687
* @chooser : A #TerminalHelperChooser.
691
terminal_helper_chooser_set_category (TerminalHelperChooser *chooser,
692
TerminalHelperCategory category)
694
g_return_if_fail (TERMINAL_IS_HELPER_CHOOSER (chooser));
695
g_return_if_fail (category >= TERMINAL_HELPER_WEBBROWSER
696
&& category <= TERMINAL_HELPER_MAILREADER);
698
if (chooser->category != category)
700
chooser->category = category;
701
g_object_notify (G_OBJECT (chooser), "category");
704
terminal_helper_chooser_update_state (chooser);
710
struct _TerminalHelperDialogClass
712
GtkDialogClass __parent__;
715
struct _TerminalHelperDialog
717
GtkDialog __parent__;
718
TerminalPreferences *preferences;
723
static void terminal_helper_dialog_class_init (TerminalHelperDialogClass *klass);
724
static void terminal_helper_dialog_init (TerminalHelperDialog *dialog);
725
static void terminal_helper_dialog_finalize (GObject *object);
726
static void terminal_helper_dialog_response (GtkDialog *dialog,
731
G_DEFINE_TYPE (TerminalHelperDialog, terminal_helper_dialog, GTK_TYPE_DIALOG);
736
terminal_helper_dialog_class_init (TerminalHelperDialogClass *klass)
738
GtkDialogClass *gtkdialog_class;
739
GObjectClass *gobject_class;
741
gobject_class = G_OBJECT_CLASS (klass);
742
gobject_class->finalize = terminal_helper_dialog_finalize;
744
gtkdialog_class = GTK_DIALOG_CLASS (klass);
745
gtkdialog_class->response = terminal_helper_dialog_response;
751
terminal_helper_dialog_init (TerminalHelperDialog *dialog)
753
TerminalHelperCategory category;
755
GEnumClass *enum_class;
756
GEnumValue *enum_value;
764
/* sanity check the category values */
765
g_assert (TERMINAL_HELPER_WEBBROWSER == 0);
766
g_assert (TERMINAL_HELPER_MAILREADER == 1);
768
dialog->preferences = terminal_preferences_get ();
770
gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
771
gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL);
772
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
773
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
775
gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
776
gtk_window_set_title (GTK_WINDOW (dialog), _("Preferred Applications"));
778
vbox = g_object_new (GTK_TYPE_VBOX, "border-width", 12, "spacing", 12, NULL);
779
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, TRUE, TRUE, 0);
780
gtk_widget_show (vbox);
782
for (category = 0; category < 2; ++category)
784
frame = g_object_new (GTK_TYPE_FRAME, "border-width", 0, "shadow-type", GTK_SHADOW_NONE, NULL);
785
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0);
786
gtk_widget_show (frame);
788
text = dgettext (GETTEXT_PACKAGE, category_titles[category]);
789
name = g_strdup_printf ("<b>%s</b>", text);
790
label = g_object_new (GTK_TYPE_LABEL, "label", name, "use-markup", TRUE, NULL);
791
gtk_frame_set_label_widget (GTK_FRAME (frame), label);
792
gtk_widget_show (label);
795
box = g_object_new (GTK_TYPE_VBOX, "border-width", 12, "spacing", 12, NULL);
796
gtk_container_add (GTK_CONTAINER (frame), box);
797
gtk_widget_show (box);
799
text = dgettext (GETTEXT_PACKAGE, category_descriptions[category]);
800
label = g_object_new (GTK_TYPE_LABEL, "label", text, "xalign", 0.0, "yalign", 0.0, NULL);
801
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
802
gtk_widget_show (label);
804
chooser = g_object_new (TERMINAL_TYPE_HELPER_CHOOSER, "category", category, NULL);
805
gtk_box_pack_start (GTK_BOX (box), chooser, FALSE, FALSE, 0);
806
gtk_widget_show (chooser);
808
/* determine the name for the helper setting name */
809
enum_class = g_type_class_ref (TERMINAL_TYPE_HELPER_CATEGORY);
810
enum_value = g_enum_get_value (enum_class, category);
811
name = g_strconcat ("helper-", enum_value->value_nick, NULL);
812
exo_mutual_binding_new (G_OBJECT (dialog->preferences), name, G_OBJECT (chooser), "active");
813
g_type_class_unref (enum_class);
821
terminal_helper_dialog_finalize (GObject *object)
823
TerminalHelperDialog *dialog = TERMINAL_HELPER_DIALOG (object);
825
g_object_unref (G_OBJECT (dialog->preferences));
827
(*G_OBJECT_CLASS (terminal_helper_dialog_parent_class)->finalize) (object);
833
terminal_helper_dialog_response (GtkDialog *dialog,
836
if (response_id == GTK_RESPONSE_CLOSE)
837
gtk_widget_destroy (GTK_WIDGET (dialog));