diff options
Diffstat (limited to 'pluma/dialogs')
-rw-r--r-- | pluma/dialogs/pluma-encodings-dialog.c | 41 | ||||
-rw-r--r-- | pluma/dialogs/pluma-preferences-dialog.c | 598 |
2 files changed, 256 insertions, 383 deletions
diff --git a/pluma/dialogs/pluma-encodings-dialog.c b/pluma/dialogs/pluma-encodings-dialog.c index fe58ad54..cff41e2b 100644 --- a/pluma/dialogs/pluma-encodings-dialog.c +++ b/pluma/dialogs/pluma-encodings-dialog.c @@ -40,14 +40,16 @@ #include "pluma-encodings-dialog.h" #include "pluma-encodings.h" -#include "pluma-prefs-manager.h" #include "pluma-utils.h" #include "pluma-debug.h" #include "pluma-help.h" #include "pluma-dirs.h" +#include "pluma-settings.h" struct _PlumaEncodingsDialogPrivate { + GSettings *enc_settings; + GtkListStore *available_liststore; GtkListStore *displayed_liststore; GtkWidget *available_treeview; @@ -63,7 +65,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (PlumaEncodingsDialog, pluma_encodings_dialog, GTK_TY static void pluma_encodings_dialog_finalize (GObject *object) { - PlumaEncodingsDialogPrivate *priv = PLUMA_ENCODINGS_DIALOG (object)->priv; + PlumaEncodingsDialogPrivate *priv = pluma_encodings_dialog_get_instance_private (PLUMA_ENCODINGS_DIALOG(object)); g_slist_free (priv->show_in_menu_list); @@ -71,11 +73,22 @@ pluma_encodings_dialog_finalize (GObject *object) } static void +pluma_encodings_dialog_dispose (GObject *object) +{ + PlumaEncodingsDialogPrivate *priv = pluma_encodings_dialog_get_instance_private (PLUMA_ENCODINGS_DIALOG(object)); + + g_clear_object (&priv->enc_settings); + + G_OBJECT_CLASS (pluma_encodings_dialog_parent_class)->dispose (object); +} + +static void pluma_encodings_dialog_class_init (PlumaEncodingsDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = pluma_encodings_dialog_finalize; + object_class->dispose = pluma_encodings_dialog_dispose; } enum { @@ -232,14 +245,16 @@ static void init_shown_in_menu_tree_model (PlumaEncodingsDialog *dialog) { GtkTreeIter iter; + gchar **enc_strv; GSList *list, *tmp; /* add data to the list store */ - list = pluma_prefs_manager_get_shown_in_menu_encodings (); + enc_strv = g_settings_get_strv (dialog->priv->enc_settings, + PLUMA_SETTINGS_ENCODING_SHOWN_IN_MENU); - tmp = list; + list = _pluma_encoding_strv_to_list ((const gchar * const *)enc_strv); - while (tmp != NULL) + for (tmp = list; tmp != NULL; tmp = g_slist_next (tmp)) { const PlumaEncoding *enc; @@ -256,10 +271,9 @@ init_shown_in_menu_tree_model (PlumaEncodingsDialog *dialog) pluma_encoding_get_charset (enc), COLUMN_NAME, pluma_encoding_get_name (enc), -1); - - tmp = g_slist_next (tmp); } + g_strfreev (enc_strv); g_slist_free (list); } @@ -277,8 +291,15 @@ response_handler (GtkDialog *dialog, if (response_id == GTK_RESPONSE_OK) { - g_return_if_fail (pluma_prefs_manager_shown_in_menu_encodings_can_set ()); - pluma_prefs_manager_set_shown_in_menu_encodings (dlg->priv->show_in_menu_list); + gchar **encs; + + encs = _pluma_encoding_list_to_strv (dlg->priv->show_in_menu_list); + + g_settings_set_strv (dlg->priv->enc_settings, + PLUMA_SETTINGS_ENCODING_SHOWN_IN_MENU, + (const gchar * const *)encs); + + g_strfreev (encs); } } @@ -303,6 +324,8 @@ pluma_encodings_dialog_init (PlumaEncodingsDialog *dlg) dlg->priv = pluma_encodings_dialog_get_instance_private (dlg); + dlg->priv->enc_settings = g_settings_new (PLUMA_SCHEMA_ID); + pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Cancel"), "process-stop", GTK_RESPONSE_CANCEL); pluma_dialog_add_button (GTK_DIALOG (dlg), _("_OK"), "gtk-ok", GTK_RESPONSE_OK); pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Help"), "help-browser", GTK_RESPONSE_HELP); diff --git a/pluma/dialogs/pluma-preferences-dialog.c b/pluma/dialogs/pluma-preferences-dialog.c index 336ccb7d..246388e7 100644 --- a/pluma/dialogs/pluma-preferences-dialog.c +++ b/pluma/dialogs/pluma-preferences-dialog.c @@ -41,8 +41,6 @@ #include <gtksourceview/gtksource.h> #include <libpeas-gtk/peas-gtk-plugin-manager.h> -#include <pluma/pluma-prefs-manager.h> - #include "pluma-preferences-dialog.h" #include "pluma-utils.h" #include "pluma-debug.h" @@ -50,6 +48,8 @@ #include "pluma-style-scheme-manager.h" #include "pluma-help.h" #include "pluma-dirs.h" +#include "pluma-settings.h" +#include "pluma-utils.h" /* * pluma-preferences dialog is a singleton since we don't @@ -62,7 +62,6 @@ static GtkWidget *preferences_dialog = NULL; - enum { ID_COLUMN = 0, @@ -80,6 +79,8 @@ typedef enum struct _PlumaPreferencesDialogPrivate { + GSettings *editor_settings; + GtkWidget *notebook; /* Font */ @@ -138,12 +139,24 @@ struct _PlumaPreferencesDialogPrivate GtkWidget *plugin_manager_place_holder; }; - G_DEFINE_TYPE_WITH_PRIVATE (PlumaPreferencesDialog, pluma_preferences_dialog, GTK_TYPE_DIALOG) static void +pluma_preferences_dialog_dispose (GObject *object) +{ + PlumaPreferencesDialog *dlg = PLUMA_PREFERENCES_DIALOG (object); + + g_clear_object (&dlg->priv->editor_settings); + + G_OBJECT_CLASS (pluma_preferences_dialog_parent_class)->dispose (object); +} + +static void pluma_preferences_dialog_class_init (PlumaPreferencesDialogClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = pluma_preferences_dialog_dispose; } static void @@ -169,36 +182,13 @@ dialog_response_handler (GtkDialog *dlg, } static void -tabs_width_spinbutton_value_changed (GtkSpinButton *spin_button, - PlumaPreferencesDialog *dlg) -{ - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (spin_button == GTK_SPIN_BUTTON (dlg->priv->tabs_width_spinbutton)); - - pluma_prefs_manager_set_tabs_size (gtk_spin_button_get_value_as_int (spin_button)); -} - -static void -insert_spaces_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->insert_spaces_checkbutton)); - - pluma_prefs_manager_set_insert_spaces (gtk_toggle_button_get_active (button)); -} - -static void -auto_indent_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) +on_auto_save_changed (GSettings *settings, + const gchar *key, + PlumaPreferencesDialog *dlg) { - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->auto_indent_checkbutton)); - - pluma_prefs_manager_set_auto_indent (gtk_toggle_button_get_active (button)); + gboolean value; + value = g_settings_get_boolean (settings, key); + gtk_widget_set_sensitive (dlg->priv->auto_save_spinbutton, value); } static void @@ -206,6 +196,7 @@ draw_spaces_checkbutton_toggled (GtkToggleButton *button, PlumaPreferencesDialog *dlg) { DrawSpacesSettings setting; + pluma_debug (DEBUG_PREFS); g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->draw_spaces_checkbutton)); @@ -215,10 +206,12 @@ draw_spaces_checkbutton_toggled (GtkToggleButton *button, else setting = DRAW_NONE; - pluma_prefs_manager_set_draw_spaces (setting); + g_settings_set_enum (dlg->priv->editor_settings, PLUMA_SETTINGS_DRAWER_SPACE, setting); + #ifdef GTK_SOURCE_VERSION_3_24 if (setting == DRAW_NONE) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), FALSE); + gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_spaces_checkbutton), setting > DRAW_NONE); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), setting == DRAW_NONE); #endif @@ -233,13 +226,22 @@ draw_trailing_spaces_checkbutton_toggled (GtkToggleButton *button, g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton)); if (gtk_toggle_button_get_active (button)) - pluma_prefs_manager_set_draw_spaces (DRAW_TRAILING); + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_SPACE, + DRAW_TRAILING); else { - if (pluma_prefs_manager_get_draw_spaces ()) - pluma_prefs_manager_set_draw_spaces (DRAW_ALL); + gint draw_spaces = g_settings_get_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_SPACE); + + if (draw_spaces) + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_SPACE, + DRAW_ALL); else - pluma_prefs_manager_set_draw_spaces (DRAW_NONE); + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_SPACE, + DRAW_NONE); } } @@ -257,10 +259,13 @@ draw_tabs_checkbutton_toggled (GtkToggleButton *button, else setting = DRAW_NONE; - pluma_prefs_manager_set_draw_tabs (setting); + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_TAB, + setting); #ifdef GTK_SOURCE_VERSION_3_24 if (setting == DRAW_NONE) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), FALSE); + gtk_widget_set_sensitive (GTK_WIDGET(dlg->priv->draw_trailing_tabs_checkbutton), setting > DRAW_NONE); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON(dlg->priv->draw_trailing_tabs_checkbutton), setting == DRAW_NONE); #endif @@ -275,163 +280,109 @@ draw_trailing_tabs_checkbutton_toggled (GtkToggleButton *button, g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton)); if (gtk_toggle_button_get_active (button)) - pluma_prefs_manager_set_draw_tabs (DRAW_TRAILING); + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_TAB, + DRAW_TRAILING); else { - if (pluma_prefs_manager_get_draw_tabs ()) - pluma_prefs_manager_set_draw_tabs (DRAW_ALL); - else - pluma_prefs_manager_set_draw_tabs (DRAW_NONE); - } -} + gint draw_tabs = g_settings_get_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_TAB); -static void -draw_newlines_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->draw_newlines_checkbutton)); - - pluma_prefs_manager_set_draw_newlines (gtk_toggle_button_get_active (button)); -} - -static void -auto_save_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->auto_save_checkbutton)); - - if (gtk_toggle_button_get_active (button)) - { - gtk_widget_set_sensitive (dlg->priv->auto_save_spinbutton, - pluma_prefs_manager_auto_save_interval_can_set()); - - pluma_prefs_manager_set_auto_save (TRUE); - } - else - { - gtk_widget_set_sensitive (dlg->priv->auto_save_spinbutton, FALSE); - pluma_prefs_manager_set_auto_save (FALSE); + if (draw_tabs) + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_TAB, + DRAW_ALL); + else + g_settings_set_enum (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_TAB, + DRAW_NONE); } } static void -backup_copy_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->backup_copy_checkbutton)); - - pluma_prefs_manager_set_create_backup_copy (gtk_toggle_button_get_active (button)); -} - -static void -auto_save_spinbutton_value_changed (GtkSpinButton *spin_button, - PlumaPreferencesDialog *dlg) -{ - g_return_if_fail (spin_button == GTK_SPIN_BUTTON (dlg->priv->auto_save_spinbutton)); - - pluma_prefs_manager_set_auto_save_interval ( - MAX (1, gtk_spin_button_get_value_as_int (spin_button))); -} - -static void setup_editor_page (PlumaPreferencesDialog *dlg) { gboolean auto_save; - gint auto_save_interval; pluma_debug (DEBUG_PREFS); - /* Set initial state */ - gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->tabs_width_spinbutton), - (guint) pluma_prefs_manager_get_tabs_size ()); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->insert_spaces_checkbutton), - pluma_prefs_manager_get_insert_spaces ()); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->auto_indent_checkbutton), - pluma_prefs_manager_get_auto_indent ()); + /* Get values */ + auto_save = g_settings_get_boolean (dlg->priv->editor_settings, + PLUMA_SETTINGS_AUTO_SAVE); + + gtk_widget_set_sensitive (dlg->priv->auto_save_spinbutton, + auto_save); + + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_TABS_SIZE, + dlg->priv->tabs_width_spinbutton, + "value", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_INSERT_SPACES, + dlg->priv->insert_spaces_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_AUTO_INDENT, + dlg->priv->auto_indent_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_CREATE_BACKUP_COPY, + dlg->priv->backup_copy_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_BRACKET_MATCHING, + dlg->priv->bracket_matching_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_AUTO_SAVE_INTERVAL, + dlg->priv->auto_save_spinbutton, + "value", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_signal_connect (dlg->priv->editor_settings, + "changed::auto-save", + G_CALLBACK (on_auto_save_changed), + dlg); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_AUTO_SAVE, + dlg->priv->auto_save_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_DRAWER_NEWLINE, + dlg->priv->draw_newlines_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + + gint draw_spaces = g_settings_get_enum (dlg->priv->editor_settings, PLUMA_SETTINGS_DRAWER_SPACE); + gint draw_tabs = g_settings_get_enum (dlg->priv->editor_settings, PLUMA_SETTINGS_DRAWER_TAB); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_spaces_checkbutton), - pluma_prefs_manager_get_draw_spaces () > DRAW_NONE); + draw_spaces > DRAW_NONE); #ifdef GTK_SOURCE_VERSION_3_24 - gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_spaces_checkbutton), - pluma_prefs_manager_get_draw_spaces () > DRAW_NONE); - gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), - pluma_prefs_manager_get_draw_spaces () == DRAW_NONE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), - pluma_prefs_manager_get_draw_spaces () == DRAW_TRAILING); + gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_spaces_checkbutton), draw_spaces > DRAW_NONE); + gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), draw_spaces == DRAW_NONE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), draw_spaces == DRAW_TRAILING); #else gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_spaces_checkbutton), FALSE); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), TRUE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_spaces_checkbutton), FALSE); #endif - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_tabs_checkbutton), - pluma_prefs_manager_get_draw_tabs () > DRAW_NONE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_tabs_checkbutton), draw_tabs > DRAW_NONE); #ifdef GTK_SOURCE_VERSION_3_24 - gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_tabs_checkbutton), - pluma_prefs_manager_get_draw_tabs () > DRAW_NONE); - gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), - pluma_prefs_manager_get_draw_tabs () == DRAW_NONE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), - pluma_prefs_manager_get_draw_tabs () == DRAW_TRAILING); + gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_tabs_checkbutton), draw_tabs > DRAW_NONE); + gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), draw_tabs == DRAW_NONE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), draw_tabs == DRAW_TRAILING); #else gtk_widget_set_sensitive (GTK_WIDGET (dlg->priv->draw_trailing_tabs_checkbutton), FALSE); gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_trailing_tabs_checkbutton), FALSE); #endif - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->draw_newlines_checkbutton), - pluma_prefs_manager_get_draw_newlines ()); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->backup_copy_checkbutton), - pluma_prefs_manager_get_create_backup_copy ()); - - auto_save = pluma_prefs_manager_get_auto_save (); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->auto_save_checkbutton), - auto_save); - - auto_save_interval = pluma_prefs_manager_get_auto_save_interval (); - if (auto_save_interval <= 0) - auto_save_interval = GPM_DEFAULT_AUTO_SAVE_INTERVAL; - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->auto_save_spinbutton), - auto_save_interval); - - /* Set widget sensitivity */ - gtk_widget_set_sensitive (dlg->priv->tabs_width_hbox, - pluma_prefs_manager_tabs_size_can_set ()); - gtk_widget_set_sensitive (dlg->priv->insert_spaces_checkbutton, - pluma_prefs_manager_insert_spaces_can_set ()); - gtk_widget_set_sensitive (dlg->priv->auto_indent_checkbutton, - pluma_prefs_manager_auto_indent_can_set ()); - gtk_widget_set_sensitive (dlg->priv->draw_spaces_checkbutton, - pluma_prefs_manager_draw_spaces_can_set ()); - gtk_widget_set_sensitive (dlg->priv->draw_tabs_checkbutton, - pluma_prefs_manager_draw_tabs_can_set ()); - gtk_widget_set_sensitive (dlg->priv->draw_newlines_checkbutton, - pluma_prefs_manager_draw_newlines_can_set ()); - gtk_widget_set_sensitive (dlg->priv->backup_copy_checkbutton, - pluma_prefs_manager_create_backup_copy_can_set ()); - gtk_widget_set_sensitive (dlg->priv->autosave_hbox, - pluma_prefs_manager_auto_save_can_set ()); - gtk_widget_set_sensitive (dlg->priv->auto_save_spinbutton, - auto_save && - pluma_prefs_manager_auto_save_interval_can_set ()); - /* Connect signal */ - g_signal_connect (dlg->priv->tabs_width_spinbutton, - "value_changed", - G_CALLBACK (tabs_width_spinbutton_value_changed), - dlg); - g_signal_connect (dlg->priv->insert_spaces_checkbutton, - "toggled", - G_CALLBACK (insert_spaces_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->auto_indent_checkbutton, - "toggled", - G_CALLBACK (auto_indent_checkbutton_toggled), - dlg); g_signal_connect (dlg->priv->draw_spaces_checkbutton, "toggled", G_CALLBACK (draw_spaces_checkbutton_toggled), @@ -448,53 +399,6 @@ setup_editor_page (PlumaPreferencesDialog *dlg) "toggled", G_CALLBACK (draw_trailing_tabs_checkbutton_toggled), dlg); - g_signal_connect (dlg->priv->draw_newlines_checkbutton, - "toggled", - G_CALLBACK (draw_newlines_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->auto_save_checkbutton, - "toggled", - G_CALLBACK (auto_save_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->backup_copy_checkbutton, - "toggled", - G_CALLBACK (backup_copy_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->auto_save_spinbutton, - "value_changed", - G_CALLBACK (auto_save_spinbutton_value_changed), - dlg); -} - -static void -display_line_numbers_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - g_return_if_fail (button == - GTK_TOGGLE_BUTTON (dlg->priv->display_line_numbers_checkbutton)); - - pluma_prefs_manager_set_display_line_numbers (gtk_toggle_button_get_active (button)); -} - -static void -highlight_current_line_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - g_return_if_fail (button == - GTK_TOGGLE_BUTTON (dlg->priv->highlight_current_line_checkbutton)); - - pluma_prefs_manager_set_highlight_current_line (gtk_toggle_button_get_active (button)); -} - -static void -bracket_matching_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) -{ - g_return_if_fail (button == - GTK_TOGGLE_BUTTON (dlg->priv->bracket_matching_checkbutton)); - - pluma_prefs_manager_set_bracket_matching ( - gtk_toggle_button_get_active (button)); } static gboolean split_button_state = TRUE; @@ -503,37 +407,39 @@ static void wrap_mode_checkbutton_toggled (GtkToggleButton *button, PlumaPreferencesDialog *dlg) { + GtkWrapMode mode; + if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dlg->priv->wrap_text_checkbutton))) { - pluma_prefs_manager_set_wrap_mode (GTK_WRAP_NONE); + mode = GTK_WRAP_NONE; - gtk_widget_set_sensitive (dlg->priv->split_checkbutton, - FALSE); - gtk_toggle_button_set_inconsistent ( - GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), TRUE); + gtk_widget_set_sensitive (dlg->priv->split_checkbutton, FALSE); + + gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), TRUE); } else { - gtk_widget_set_sensitive (dlg->priv->split_checkbutton, - TRUE); - - gtk_toggle_button_set_inconsistent ( - GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), FALSE); + gtk_widget_set_sensitive (dlg->priv->split_checkbutton, TRUE); + gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton), FALSE); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dlg->priv->split_checkbutton))) { split_button_state = TRUE; - pluma_prefs_manager_set_wrap_mode (GTK_WRAP_WORD); + mode = GTK_WRAP_WORD; } else { split_button_state = FALSE; - pluma_prefs_manager_set_wrap_mode (GTK_WRAP_CHAR); + mode = GTK_WRAP_CHAR; } } + + pluma_settings_set_wrap_mode (dlg->priv->editor_settings, + PLUMA_SETTINGS_WRAP_MODE, + mode); } static void @@ -546,24 +452,12 @@ right_margin_checkbutton_toggled (GtkToggleButton *button, active = gtk_toggle_button_get_active (button); - pluma_prefs_manager_set_display_right_margin (active); - - gtk_widget_set_sensitive (dlg->priv->right_margin_position_hbox, - active && - pluma_prefs_manager_right_margin_position_can_set ()); -} - -static void -right_margin_position_spinbutton_value_changed (GtkSpinButton *spin_button, - PlumaPreferencesDialog *dlg) -{ - gint value; - - g_return_if_fail (spin_button == GTK_SPIN_BUTTON (dlg->priv->right_margin_position_spinbutton)); + g_settings_set_boolean (dlg->priv->editor_settings, PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN, + active); - value = CLAMP (gtk_spin_button_get_value_as_int (spin_button), 1, 160); - pluma_prefs_manager_set_right_margin_position (value); + gtk_widget_set_sensitive (dlg->priv->right_margin_position_hbox, + active); } static void @@ -571,22 +465,18 @@ setup_view_page (PlumaPreferencesDialog *dlg) { GtkWrapMode wrap_mode; gboolean display_right_margin; - gboolean wrap_mode_can_set; pluma_debug (DEBUG_PREFS); - /* Set initial state */ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->display_line_numbers_checkbutton), - pluma_prefs_manager_get_display_line_numbers ()); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->highlight_current_line_checkbutton), - pluma_prefs_manager_get_highlight_current_line ()); + /* Get values */ + display_right_margin = g_settings_get_boolean (dlg->priv->editor_settings, + PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->bracket_matching_checkbutton), - pluma_prefs_manager_get_bracket_matching ()); + /* Set initial state */ + wrap_mode = pluma_settings_get_wrap_mode (dlg->priv->editor_settings, + PLUMA_SETTINGS_WRAP_MODE); - wrap_mode = pluma_prefs_manager_get_wrap_mode (); - switch (wrap_mode ) + switch (wrap_mode) { case GTK_WRAP_WORD: gtk_toggle_button_set_active ( @@ -610,48 +500,35 @@ setup_view_page (PlumaPreferencesDialog *dlg) } - display_right_margin = pluma_prefs_manager_get_display_right_margin (); - - gtk_toggle_button_set_active ( - GTK_TOGGLE_BUTTON (dlg->priv->right_margin_checkbutton), - display_right_margin); - - gtk_spin_button_set_value ( - GTK_SPIN_BUTTON (dlg->priv->right_margin_position_spinbutton), - (guint)CLAMP (pluma_prefs_manager_get_right_margin_position (), 1, 160)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->right_margin_checkbutton), + display_right_margin); /* Set widgets sensitivity */ - gtk_widget_set_sensitive (dlg->priv->display_line_numbers_checkbutton, - pluma_prefs_manager_display_line_numbers_can_set ()); - gtk_widget_set_sensitive (dlg->priv->highlight_current_line_checkbutton, - pluma_prefs_manager_highlight_current_line_can_set ()); - gtk_widget_set_sensitive (dlg->priv->bracket_matching_checkbutton, - pluma_prefs_manager_bracket_matching_can_set ()); - wrap_mode_can_set = pluma_prefs_manager_wrap_mode_can_set (); - gtk_widget_set_sensitive (dlg->priv->wrap_text_checkbutton, - wrap_mode_can_set); - gtk_widget_set_sensitive (dlg->priv->split_checkbutton, - wrap_mode_can_set && - (wrap_mode != GTK_WRAP_NONE)); - gtk_widget_set_sensitive (dlg->priv->right_margin_checkbutton, - pluma_prefs_manager_display_right_margin_can_set ()); - gtk_widget_set_sensitive (dlg->priv->right_margin_position_hbox, - display_right_margin && - pluma_prefs_manager_right_margin_position_can_set ()); + gtk_widget_set_sensitive (dlg->priv->split_checkbutton, (wrap_mode != GTK_WRAP_NONE)); + + gtk_widget_set_sensitive (dlg->priv->right_margin_position_hbox, display_right_margin); + + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS, + dlg->priv->display_line_numbers_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE, + dlg->priv->highlight_current_line_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_RIGHT_MARGIN_POSITION, + dlg->priv->right_margin_position_spinbutton, + "value", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_AUTO_SAVE_INTERVAL, + dlg->priv->auto_save_spinbutton, + "value", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); - /* Connect signals */ - g_signal_connect (dlg->priv->display_line_numbers_checkbutton, - "toggled", - G_CALLBACK (display_line_numbers_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->highlight_current_line_checkbutton, - "toggled", - G_CALLBACK (highlight_current_line_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->bracket_matching_checkbutton, - "toggled", - G_CALLBACK (bracket_matching_checkbutton_toggled), - dlg); g_signal_connect (dlg->priv->wrap_text_checkbutton, "toggled", G_CALLBACK (wrap_mode_checkbutton_toggled), @@ -664,59 +541,28 @@ setup_view_page (PlumaPreferencesDialog *dlg) "toggled", G_CALLBACK (right_margin_checkbutton_toggled), dlg); - g_signal_connect (dlg->priv->right_margin_position_spinbutton, - "value_changed", - G_CALLBACK (right_margin_position_spinbutton_value_changed), - dlg); } static void -default_font_font_checkbutton_toggled (GtkToggleButton *button, - PlumaPreferencesDialog *dlg) +on_use_default_font_changed (GSettings *settings, + const gchar *key, + PlumaPreferencesDialog *dlg) { - pluma_debug (DEBUG_PREFS); - - g_return_if_fail (button == GTK_TOGGLE_BUTTON (dlg->priv->default_font_checkbutton)); - - if (gtk_toggle_button_get_active (button)) - { - gtk_widget_set_sensitive (dlg->priv->font_hbox, FALSE); - pluma_prefs_manager_set_use_default_font (TRUE); - } - else - { - gtk_widget_set_sensitive (dlg->priv->font_hbox, - pluma_prefs_manager_editor_font_can_set ()); - pluma_prefs_manager_set_use_default_font (FALSE); - } -} - -static void -editor_font_button_font_set (GtkFontChooser *font_button, - PlumaPreferencesDialog *dlg) -{ - const gchar *font_name; + gboolean value; pluma_debug (DEBUG_PREFS); - g_return_if_fail (font_button == GTK_FONT_CHOOSER (dlg->priv->font_button)); - - /* FIXME: Can this fail? Gtk docs are a bit terse... 21-02-2004 pbor */ - font_name = gtk_font_chooser_get_font (font_button); - if (!font_name) - { - g_warning ("Could not get font name"); - return; - } + value = g_settings_get_boolean (settings, key); - pluma_prefs_manager_set_editor_font (font_name); + gtk_widget_set_sensitive (dlg->priv->font_hbox, !value); } static void setup_font_colors_page_font_section (PlumaPreferencesDialog *dlg) { + PlumaSettings *settings; gboolean use_default_font; - gchar *editor_font = NULL; + gchar *system_font = NULL; gchar *label; pluma_debug (DEBUG_PREFS); @@ -731,46 +577,40 @@ setup_font_colors_page_font_section (PlumaPreferencesDialog *dlg) dlg->priv->font_button, ATK_RELATION_CONTROLLER_FOR); - editor_font = pluma_prefs_manager_get_system_font (); - label = g_strdup_printf(_("_Use the system fixed width font (%s)"), - editor_font); + /* Get values */ + settings = _pluma_settings_get_singleton (); + system_font = pluma_settings_get_system_font (settings); + use_default_font = g_settings_get_boolean (dlg->priv->editor_settings, + PLUMA_SETTINGS_USE_DEFAULT_FONT); + + label = g_strdup_printf(_("_Use the system fixed width font (%s)"), system_font); gtk_button_set_label (GTK_BUTTON (dlg->priv->default_font_checkbutton), label); - g_free (editor_font); + g_free (system_font); g_free (label); /* read current config and setup initial state */ - use_default_font = pluma_prefs_manager_get_use_default_font (); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->default_font_checkbutton), use_default_font); - editor_font = pluma_prefs_manager_get_editor_font (); - if (editor_font != NULL) - { - gtk_font_chooser_set_font (GTK_FONT_CHOOSER (dlg->priv->font_button), - editor_font); - g_free (editor_font); - } - /* Connect signals */ - g_signal_connect (dlg->priv->default_font_checkbutton, - "toggled", - G_CALLBACK (default_font_font_checkbutton_toggled), - dlg); - g_signal_connect (dlg->priv->font_button, - "font_set", - G_CALLBACK (editor_font_button_font_set), + g_signal_connect (dlg->priv->editor_settings, + "changed::use-default-font", + G_CALLBACK (on_use_default_font_changed), dlg); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_USE_DEFAULT_FONT, + dlg->priv->default_font_checkbutton, + "active", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); + g_settings_bind (dlg->priv->editor_settings, + PLUMA_SETTINGS_EDITOR_FONT, + dlg->priv->font_button, + "font-name", + G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET); /* Set initial widget sensitivity */ - gtk_widget_set_sensitive (dlg->priv->default_font_checkbutton, - pluma_prefs_manager_use_default_font_can_set ()); - - if (use_default_font) - gtk_widget_set_sensitive (dlg->priv->font_hbox, FALSE); - else - gtk_widget_set_sensitive (dlg->priv->font_hbox, - pluma_prefs_manager_editor_font_can_set ()); + gtk_widget_set_sensitive (dlg->priv->font_hbox, !use_default_font); } static void @@ -784,8 +624,7 @@ set_buttons_sensisitivity_according_to_scheme (PlumaPreferencesDialog *dlg, pluma_get_style_scheme_manager (), scheme_id); - gtk_widget_set_sensitive (dlg->priv->uninstall_scheme_button, - editable); + gtk_widget_set_sensitive (dlg->priv->uninstall_scheme_button, editable); } static void @@ -803,7 +642,7 @@ style_scheme_changed (GtkWidget *treeview, gtk_tree_model_get (GTK_TREE_MODEL (dlg->priv->schemes_treeview_model), &iter, ID_COLUMN, &id, -1); - pluma_prefs_manager_set_source_style_scheme (id); + g_settings_set_string (dlg->priv->editor_settings, PLUMA_SETTINGS_COLOR_SCHEME, id); set_buttons_sensisitivity_according_to_scheme (dlg, id); @@ -811,7 +650,8 @@ style_scheme_changed (GtkWidget *treeview, } static const gchar * -ensure_color_scheme_id (const gchar *id) +ensure_color_scheme_id (PlumaPreferencesDialog *dlg, + const gchar *id) { GtkSourceStyleScheme *scheme = NULL; GtkSourceStyleSchemeManager *manager = pluma_get_style_scheme_manager (); @@ -820,7 +660,9 @@ ensure_color_scheme_id (const gchar *id) { gchar *pref_id; - pref_id = pluma_prefs_manager_get_source_style_scheme (); + pref_id = g_settings_get_string (dlg->priv->editor_settings, + PLUMA_SETTINGS_COLOR_SCHEME); + scheme = gtk_source_style_scheme_manager_get_scheme (manager, pref_id); g_free (pref_id); @@ -858,7 +700,7 @@ populate_color_scheme_list (PlumaPreferencesDialog *dlg, const gchar *def_id) gtk_list_store_clear (dlg->priv->schemes_treeview_model); - def_id = ensure_color_scheme_id (def_id); + def_id = ensure_color_scheme_id (dlg, def_id); if (def_id == NULL) { g_warning ("Cannot build the list of available color schemes.\n" @@ -940,7 +782,8 @@ add_scheme_chooser_response_cb (GtkDialog *chooser, return; } - pluma_prefs_manager_set_source_style_scheme (scheme_id); + g_settings_set_string (dlg->priv->editor_settings, PLUMA_SETTINGS_COLOR_SCHEME, + scheme_id); scheme_id = populate_color_scheme_list (dlg, scheme_id); @@ -1132,7 +975,12 @@ uninstall_scheme_clicked (GtkButton *button, set_buttons_sensisitivity_according_to_scheme (dlg, real_new_id); if (real_new_id != NULL) - pluma_prefs_manager_set_source_style_scheme (real_new_id); + { + g_settings_set_string (dlg->priv->editor_settings, + PLUMA_SETTINGS_COLOR_SCHEME, + real_new_id); + } + } g_free (id); @@ -1346,6 +1194,8 @@ pluma_preferences_dialog_init (PlumaPreferencesDialog *dlg) dlg->priv = pluma_preferences_dialog_get_instance_private (dlg); + dlg->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID); + pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Close"), "window-close", GTK_RESPONSE_CLOSE); pluma_dialog_add_button (GTK_DIALOG (dlg), _("_Help"), "help-browser", GTK_RESPONSE_HELP); @@ -1425,11 +1275,11 @@ pluma_preferences_dialog_init (PlumaPreferencesDialog *dlg) g_object_unref (dlg->priv->notebook); gtk_container_set_border_width (GTK_CONTAINER (dlg->priv->notebook), 5); - gtk_widget_add_events (dlg->priv->notebook, GDK_SCROLL_MASK); - g_signal_connect (dlg->priv->notebook, - "scroll-event", - G_CALLBACK (on_notebook_scroll_event), - NULL); + gtk_widget_add_events (dlg->priv->notebook, GDK_SCROLL_MASK); + g_signal_connect (dlg->priv->notebook, + "scroll-event", + G_CALLBACK (on_notebook_scroll_event), + NULL); setup_editor_page (dlg); setup_view_page (dlg); |