/* Handler for "font-set" signal on Terminal Font font button. */ static void preferences_dialog_font_set_event(GtkFontButton * widget, LXTerminal * terminal) { g_free(terminal->setting->font_name); terminal->setting->font_name = g_strdup(gtk_font_button_get_font_name(widget)); terminal->setting->geometry_change = TRUE; /* Force the terminals to resize */ terminal_settings_apply_to_all(terminal); }
/* Handler for "focus-out-event" on Selection Characters entry. */ static gboolean preferences_dialog_selection_focus_out_event(GtkWidget * widget, GdkEventFocus * event, LXTerminal * terminal) { const gchar * new_text = gtk_entry_get_text(GTK_ENTRY(widget)); g_free(terminal->setting->word_selection_characters); terminal->setting->word_selection_characters = g_strdup(new_text); terminal_settings_apply_to_all(terminal); return FALSE; }
/* Handler for "changed" signal on Tab Position combo box. */ static void preferences_dialog_tab_position_changed_event(GtkComboBox * widget, LXTerminal * terminal) { /* Convert the index into a string, which is what we put in the configuration file. */ char * p = NULL; switch (gtk_combo_box_get_active(widget)) { case 0: p = "top"; break; case 1: p = "bottom"; break; case 2: p = "left"; break; case 3: p = "right"; break; } if (p != NULL) { g_free(terminal->setting->tab_position); terminal->setting->tab_position = g_strdup(p); } terminal_settings_apply_to_all(terminal); }
/* Initialize and display the preferences dialog. */ void terminal_preferences_dialog(GtkAction * action, LXTerminal * terminal) { Setting * setting = copy_setting(get_setting()); GtkBuilder * builder = gtk_builder_new(); if ( ! gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "/lxterminal/lxterminal-preferences.ui", NULL)) { g_object_unref(builder); return; } GtkDialog * dialog = GTK_DIALOG(gtk_builder_get_object(builder, "lxterminal_preferences")); gtk_window_set_title(GTK_WINDOW(dialog), _("LXTerminal")); gtk_window_set_icon_from_file(GTK_WINDOW(dialog), PACKAGE_DATA_DIR "/icons/hicolor/128x128/apps/lxterminal.png", NULL); GtkWidget * w = GTK_WIDGET(gtk_builder_get_object(builder, "terminal_font")); gtk_font_button_set_font_name(GTK_FONT_BUTTON(w), setting->font_name); g_signal_connect(G_OBJECT(w), "font-set", G_CALLBACK(preferences_dialog_font_set_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "background_color")); gtk_color_button_set_color(GTK_COLOR_BUTTON(w), &setting->background_color); gtk_color_button_set_alpha(GTK_COLOR_BUTTON(w), setting->background_alpha); g_signal_connect(G_OBJECT(w), "color-set", G_CALLBACK(preferences_dialog_background_color_set_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "foreground_color")); gtk_color_button_set_color(GTK_COLOR_BUTTON(w), &setting->foreground_color); g_signal_connect(G_OBJECT(w), "color-set", G_CALLBACK(preferences_dialog_foreground_color_set_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "allow_bold")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), ! setting->disallow_bold); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_allow_bold_toggled_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "cursor_blink")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->cursor_blink); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->cursor_blink); w = GTK_WIDGET(gtk_builder_get_object(builder, "cursor_style_block")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), ! setting->cursor_underline); w = GTK_WIDGET(gtk_builder_get_object(builder, "cursor_style_underline")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->cursor_underline); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->cursor_underline); w = GTK_WIDGET(gtk_builder_get_object(builder, "audible_bell")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->audible_bell); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->audible_bell); w = GTK_WIDGET(gtk_builder_get_object(builder, "tab_position")); gtk_combo_box_set_active(GTK_COMBO_BOX(w), terminal_tab_get_position_id(setting->tab_position)); g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(preferences_dialog_tab_position_changed_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "scrollback_lines")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), setting->scrollback); g_signal_connect(G_OBJECT(w), "value-changed", G_CALLBACK(preferences_dialog_scrollback_value_changed_event), setting); w = GTK_WIDGET(gtk_builder_get_object(builder, "hide_scroll_bar")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->hide_scroll_bar); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->hide_scroll_bar); w = GTK_WIDGET(gtk_builder_get_object(builder, "hide_menu_bar")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->hide_menu_bar); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->hide_menu_bar); w = GTK_WIDGET(gtk_builder_get_object(builder, "hide_close_button")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->hide_close_button); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->hide_close_button); w = GTK_WIDGET(gtk_builder_get_object(builder, "hide_pointer")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->hide_pointer); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->hide_pointer); w = GTK_WIDGET(gtk_builder_get_object(builder, "select_by_word")); gtk_entry_set_text(GTK_ENTRY(w), setting->word_selection_characters); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_generic_focus_out_event), setting->word_selection_characters); w = GTK_WIDGET(gtk_builder_get_object(builder, "disable_f10")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->disable_f10); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->disable_f10); w = GTK_WIDGET(gtk_builder_get_object(builder, "disable_alt")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), setting->disable_alt); g_signal_connect(G_OBJECT(w), "toggled", G_CALLBACK(preferences_dialog_generic_toggled_event), &setting->disable_alt); /* Shortcuts */ w = GTK_WIDGET(gtk_builder_get_object(builder, NEW_WINDOW_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->new_window_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->new_window_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, NEW_TAB_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->new_tab_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->new_tab_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, CLOSE_TAB_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->close_tab_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->close_tab_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, CLOSE_WINDOW_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->close_window_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->close_window_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, COPY_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->copy_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->copy_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, PASTE_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->paste_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->paste_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, NAME_TAB_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->name_tab_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->name_tab_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, PREVIOUS_TAB_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->previous_tab_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->previous_tab_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, NEXT_TAB_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->next_tab_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->next_tab_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, MOVE_TAB_LEFT_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->move_tab_left_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->move_tab_left_accel); w = GTK_WIDGET(gtk_builder_get_object(builder, MOVE_TAB_RIGHT_ACCEL)); gtk_entry_set_text(GTK_ENTRY(w), setting->move_tab_right_accel); g_signal_connect(G_OBJECT(w), "focus-out-event", G_CALLBACK(preferences_dialog_shortcut_focus_out_event), setting->move_tab_right_accel); g_object_unref(builder); gtk_window_set_modal(GTK_WINDOW(GTK_DIALOG(dialog)), TRUE); gtk_window_set_transient_for(GTK_WINDOW(GTK_DIALOG(dialog)), GTK_WINDOW(terminal->window)); int result = gtk_dialog_run(dialog); /* Dismiss dialog. */ gtk_widget_destroy(GTK_WIDGET(dialog)); if (result == GTK_RESPONSE_OK) { set_setting(setting); save_setting(); terminal_settings_apply_to_all(terminal); } else { free_setting(setting); } }
/* Handler for "toggled" signal on Cursor Underline radio button. */ static void preferences_dialog_cursor_underline_toggled_event(GtkToggleButton * widget, LXTerminal * terminal) { terminal->setting->cursor_underline = gtk_toggle_button_get_active(widget); terminal_settings_apply_to_all(terminal); }
/* Handler for "toggled" signal on Allow Bold toggle button. * Use the complement so the default is FALSE. */ static void preferences_dialog_allow_bold_toggled_event(GtkToggleButton * widget, LXTerminal * terminal) { terminal->setting->disallow_bold = ! gtk_toggle_button_get_active(widget); terminal_settings_apply_to_all(terminal); }
/* Handler for "color-set" signal on Foreground Color color button. */ static void preferences_dialog_foreground_color_set_event(GtkColorButton * widget, LXTerminal * terminal) { gtk_color_button_get_color(widget, &terminal->setting->foreground_color); terminal_settings_apply_to_all(terminal); }
/* Handler for "toggled" signal on Hide Close Button toggle button. */ static void preferences_dialog_hide_close_button_toggled_event(GtkToggleButton * widget, LXTerminal * terminal) { terminal->setting->hide_close_button = gtk_toggle_button_get_active(widget); terminal_settings_apply_to_all(terminal); }
/* Handler for "value-changed" signal on Scrollback spin button. */ static void preferences_dialog_scrollback_value_changed_event(GtkSpinButton * widget, LXTerminal * terminal) { terminal->setting->scrollback = gtk_spin_button_get_value_as_int(widget); terminal_settings_apply_to_all(terminal); }