summaryrefslogtreecommitdiff
path: root/pluma/dialogs/pluma-preferences-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'pluma/dialogs/pluma-preferences-dialog.c')
-rw-r--r--pluma/dialogs/pluma-preferences-dialog.c598
1 files changed, 224 insertions, 374 deletions
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);