diff --git a/src/gnome-cmd-options-dialog.cc b/src/gnome-cmd-options-dialog.cc index a3d0a26..dbcdfd9 100644 --- a/src/gnome-cmd-options-dialog.cc +++ b/src/gnome-cmd-options-dialog.cc @@ -359,6 +359,43 @@ inline void store_format_options (GtkWidget *dialog, GnomeCmdData &cfg) * The Layout tab * **********************************************************************/ +static void on_font_changed (GtkFontButton *button, GtkWidget *dialog) +{ + g_return_if_fail (GTK_IS_FONT_BUTTON (button)); + + const gchar *list_font = gtk_font_button_get_font_name (button); + gnome_cmd_data_set_list_font (list_font); + + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); +} + + +static void on_row_height_changed (GtkSpinButton *row_height_spin_button, GtkWidget *dialog) +{ + g_return_if_fail (GTK_IS_SPIN_BUTTON (row_height_spin_button)); + + gint row_height = gtk_spin_button_get_value_as_int (row_height_spin_button); + cfg.list_row_height = row_height; + + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); +} + + +static void on_ext_display_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog) +{ + g_return_if_fail (GTK_IS_OPTION_MENU (optmenu)); + + GnomeCmdExtDispMode mode = (GnomeCmdExtDispMode) gtk_option_menu_get_history (GTK_OPTION_MENU (optmenu)); + cfg.options.ext_disp_mode = mode; + + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); +} static void on_layout_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog) { @@ -367,11 +404,29 @@ static void on_layout_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog) GtkWidget *icon_frame = lookup_widget (GTK_WIDGET (dialog), "mime_icon_settings_frame"); GnomeCmdLayout mode = (GnomeCmdLayout) gtk_option_menu_get_history (GTK_OPTION_MENU (optmenu)); + // Apply layout theme + cfg.options.layout = mode; + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); + if (icon_frame) gtk_widget_set_sensitive (icon_frame, mode == GNOME_CMD_LAYOUT_MIME_ICONS); } +static void on_icon_size_changed (GtkSpinButton *icon_size_spin_button, GtkWidget *dialog) +{ + g_return_if_fail (GTK_IS_SPIN_BUTTON (icon_size_spin_button)); + + gint icon_size = gtk_spin_button_get_value_as_int (icon_size_spin_button); + cfg.options.icon_size = icon_size; + + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); +} + + static void on_color_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog) { g_return_if_fail (GTK_IS_OPTION_MENU (optmenu)); @@ -379,6 +434,11 @@ static void on_color_mode_changed (GtkOptionMenu *optmenu, GtkWidget *dialog) GtkWidget *btn = lookup_widget (GTK_WIDGET (dialog), "color_btn"); GnomeCmdColorMode mode = (GnomeCmdColorMode) gtk_option_menu_get_history (GTK_OPTION_MENU (optmenu)); + // Apply color theme + cfg.options.color_mode = mode; + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); + if (btn) gtk_widget_set_sensitive (btn, mode == GNOME_CMD_COLOR_CUSTOM); } @@ -397,6 +457,10 @@ static void on_edit_colors_close (GtkButton *btn, GtkWidget *dlg) gtk_color_button_get_color (GTK_COLOR_BUTTON (lookup_widget (dlg, "cursor_fg")), colors->curs_fg); gtk_color_button_get_color (GTK_COLOR_BUTTON (lookup_widget (dlg, "cursor_bg")), colors->curs_bg); + // Apply color theme + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); + gtk_widget_destroy (dlg); } @@ -470,6 +534,13 @@ static void on_colors_edit (GtkButton *btn, GtkWidget *parent) static void on_ls_colors_toggled (GtkToggleButton *btn, GtkWidget *dialog) { GtkWidget *edit_btn = lookup_widget (GTK_WIDGET (dialog), "ls_colors_edit_btn"); + + cfg.options.use_ls_colors = gtk_toggle_button_get_active (btn); + + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); + if (edit_btn) gtk_widget_set_sensitive (edit_btn, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (btn))); } @@ -502,6 +573,10 @@ static void on_edit_ls_colors_ok (GtkButton *btn, GtkWidget *dlg) gtk_color_button_get_color (GTK_COLOR_BUTTON (lookup_widget (dlg, "white_fg")), palette.white_fg); gtk_color_button_get_color (GTK_COLOR_BUTTON (lookup_widget (dlg, "white_bg")), palette.white_bg); + // Update style + gnome_cmd_style_create (gnome_cmd_data); + main_win->update_style (); + gtk_widget_destroy (dlg); } @@ -645,7 +720,7 @@ static void on_ls_colors_edit (GtkButton *btn, GtkWidget *parent) inline GtkWidget *create_layout_tab (GtkWidget *parent, GnomeCmdData &cfg) { GtkWidget *frame, *hbox, *vbox, *cat; - GtkWidget *entry, *spin, *scale, *table, *label, *fpicker, *btn; + GtkWidget *entry, *spin, *scale, *table, *label, *fpicker, *btn, *row_ht_spin, *icon_sz_spin; GtkWidget *lm_optmenu, *cm_optmenu, *fe_optmenu, *check; const gchar *ext_modes[] = { _("With file name"), @@ -688,8 +763,8 @@ inline GtkWidget *create_layout_tab (GtkWidget *parent, GnomeCmdData &cfg) table_add (table, fpicker, 1, 0, GTK_FILL); gtk_font_button_set_font_name (GTK_FONT_BUTTON (fpicker), cfg.options.list_font); - spin = create_spin (parent, "row_height_spin", 8, 64, cfg.options.list_row_height); - table_add (table, spin, 1, 1, GTK_FILL); + row_ht_spin = create_spin (parent, "row_height_spin", 8, 64, cfg.options.list_row_height); + table_add (table, row_ht_spin, 1, 1, GTK_FILL); label = create_label (parent, _("Font:")); table_add (table, label, 0, 0, GTK_FILL); @@ -749,8 +824,8 @@ inline GtkWidget *create_layout_tab (GtkWidget *parent, GnomeCmdData &cfg) g_object_set_data (G_OBJECT (parent), "mime_icon_settings_frame", cat); gtk_box_pack_start (GTK_BOX (vbox), cat, FALSE, FALSE, 0); - spin = create_spin (parent, "iconsize_spin", 8, 64, cfg.options.icon_size); - table_add (table, spin, 1, 0, (GtkAttachOptions) GTK_FILL); + icon_sz_spin = create_spin (parent, "iconsize_spin", 8, 64, cfg.options.icon_size); + table_add (table, icon_sz_spin, 1, 0, (GtkAttachOptions) GTK_FILL); scale = create_scale (parent, "iconquality_scale", cfg.options.icon_scale_quality, 0, 3); table_add (table, scale, 1, 1, (GtkAttachOptions) GTK_FILL); entry = create_file_entry (parent, "theme_icondir_entry", cfg.options.theme_icon_dir); @@ -772,9 +847,13 @@ inline GtkWidget *create_layout_tab (GtkWidget *parent, GnomeCmdData &cfg) gtk_option_menu_set_history (GTK_OPTION_MENU (lm_optmenu), (gint) cfg.options.layout); gtk_option_menu_set_history (GTK_OPTION_MENU (cm_optmenu), (gint) cfg.options.color_mode); + g_signal_connect (fpicker, "font-set", G_CALLBACK (on_font_changed), parent); + g_signal_connect (row_ht_spin, "value-changed", G_CALLBACK (on_row_height_changed), parent); + g_signal_connect (fe_optmenu, "changed", G_CALLBACK (on_ext_display_mode_changed), parent); g_signal_connect (lm_optmenu, "changed", G_CALLBACK (on_layout_mode_changed), parent); g_signal_connect (cm_optmenu, "changed", G_CALLBACK (on_color_mode_changed), parent); g_signal_connect (check, "toggled", G_CALLBACK (on_ls_colors_toggled), parent); + g_signal_connect (icon_sz_spin, "value-changed", G_CALLBACK (on_icon_size_changed), parent); return frame; }