From 0a9588ef63e4f5e15245fd7af4f13d62895ba0f3 Mon Sep 17 00:00:00 2001 From: JosephMcc Date: Sat, 21 Jan 2017 18:44:15 -0800 Subject: [PATCH] Clean up our GSettings use a bit more --- xed/dialogs/xed-preferences-dialog.c | 2 +- xed/xed-app.c | 4 +- xed/xed-app.h | 2 +- xed/xed-document.c | 57 +++--- xed/xed-settings.c | 291 +-------------------------- xed/xed-settings.h | 6 +- xed/xed-view.c | 2 +- 7 files changed, 48 insertions(+), 316 deletions(-) diff --git a/xed/dialogs/xed-preferences-dialog.c b/xed/dialogs/xed-preferences-dialog.c index 7f31a51..00023db 100755 --- a/xed/dialogs/xed-preferences-dialog.c +++ b/xed/dialogs/xed-preferences-dialog.c @@ -382,7 +382,7 @@ on_use_default_font_changed (GSettings *settings, static void setup_font_colors_page_font_section (XedPreferencesDialog *dlg) { - GSettings *settings; + GObject *settings; gboolean use_default_font; gchar *system_font = NULL; gchar *label; diff --git a/xed/xed-app.c b/xed/xed-app.c index fe71b44..460fc39 100644 --- a/xed/xed-app.c +++ b/xed/xed-app.c @@ -69,7 +69,7 @@ struct _XedAppPrivate GtkPageSetup *page_setup; GtkPrintSettings *print_settings; - GSettings *settings; + GObject *settings; GSettings *window_settings; PeasExtensionSet *extensions; @@ -886,7 +886,7 @@ _xed_app_set_default_print_settings (XedApp *app, app->priv->print_settings = g_object_ref (settings); } -GSettings * +GObject * _xed_app_get_settings (XedApp *app) { g_return_val_if_fail (XED_IS_APP (app), NULL); diff --git a/xed/xed-app.h b/xed/xed-app.h index f60acd5..5266d88 100644 --- a/xed/xed-app.h +++ b/xed/xed-app.h @@ -99,7 +99,7 @@ GtkPrintSettings *_xed_app_get_default_print_settings (XedApp *app); void _xed_app_set_default_print_settings (XedApp *app, GtkPrintSettings *settings); -GSettings *_xed_app_get_settings (XedApp *app); +GObject *_xed_app_get_settings (XedApp *app); G_END_DECLS diff --git a/xed/xed-document.c b/xed/xed-document.c index f2e9195..a851666 100644 --- a/xed/xed-document.c +++ b/xed/xed-document.c @@ -878,51 +878,60 @@ get_default_content_type (void) static void xed_document_init (XedDocument *doc) { + XedDocumentPrivate *priv; GtkSourceStyleScheme *style_scheme; - gint undo_actions; - gboolean bracket_matching; - gboolean search_hl; xed_debug (DEBUG_DOCUMENT); doc->priv = XED_DOCUMENT_GET_PRIVATE (doc); + priv = doc->priv; - doc->priv->editor_settings = g_settings_new ("org.x.editor.preferences.editor"); + priv->editor_settings = g_settings_new ("org.x.editor.preferences.editor"); - doc->priv->location = NULL; - doc->priv->untitled_number = get_untitled_number (); + priv->location = NULL; + priv->untitled_number = get_untitled_number (); - doc->priv->metadata_info = NULL; + priv->metadata_info = NULL; - doc->priv->content_type = get_default_content_type (); + priv->content_type = get_default_content_type (); - doc->priv->readonly = FALSE; + priv->readonly = FALSE; - doc->priv->stop_cursor_moved_emission = FALSE; + priv->stop_cursor_moved_emission = FALSE; - doc->priv->last_save_was_manually = TRUE; - doc->priv->language_set_by_user = FALSE; + priv->last_save_was_manually = TRUE; + priv->language_set_by_user = FALSE; - doc->priv->dispose_has_run = FALSE; + priv->dispose_has_run = FALSE; - doc->priv->mtime.tv_sec = 0; - doc->priv->mtime.tv_usec = 0; + priv->mtime.tv_sec = 0; + priv->mtime.tv_usec = 0; g_get_current_time (&doc->priv->time_of_last_save_or_load); - doc->priv->encoding = xed_encoding_get_utf8 (); + priv->encoding = xed_encoding_get_utf8 (); - doc->priv->newline_type = XED_DOCUMENT_NEWLINE_TYPE_DEFAULT; + priv->newline_type = XED_DOCUMENT_NEWLINE_TYPE_DEFAULT; - undo_actions = g_settings_get_int (doc->priv->editor_settings, XED_SETTINGS_MAX_UNDO_ACTIONS); - bracket_matching = g_settings_get_boolean (doc->priv->editor_settings, XED_SETTINGS_BRACKET_MATCHING); - search_hl = g_settings_get_boolean (doc->priv->editor_settings, XED_SETTINGS_SEARCH_HIGHLIGHTING); + g_settings_bind (priv->editor_settings, + XED_SETTINGS_MAX_UNDO_ACTIONS, + doc, + "max-undo-levels", + G_SETTINGS_BIND_GET); - gtk_source_buffer_set_max_undo_levels (GTK_SOURCE_BUFFER (doc), undo_actions); - gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (doc), bracket_matching); - xed_document_set_enable_search_highlighting (doc, search_hl); + g_settings_bind (priv->editor_settings, + XED_SETTINGS_BRACKET_MATCHING, + doc, + "highlight-matching-brackets", + G_SETTINGS_BIND_GET); - style_scheme = get_default_style_scheme (doc->priv->editor_settings); + g_settings_bind (priv->editor_settings, + XED_SETTINGS_SEARCH_HIGHLIGHTING, + doc, + "enable-search-highlighting", + G_SETTINGS_BIND_GET); + + style_scheme = get_default_style_scheme (priv->editor_settings); if (style_scheme != NULL) { gtk_source_buffer_set_style_scheme (GTK_SOURCE_BUFFER (doc), style_scheme); diff --git a/xed/xed-settings.c b/xed/xed-settings.c index 64686d7..c3eac5a 100644 --- a/xed/xed-settings.c +++ b/xed/xed-settings.c @@ -45,12 +45,11 @@ struct _XedSettingsPrivate GSettings *interface; GSettings *editor; GSettings *ui; - GSettings *plugins; gchar *old_scheme; }; -G_DEFINE_TYPE (XedSettings, xed_settings, G_TYPE_SETTINGS) +G_DEFINE_TYPE (XedSettings, xed_settings, G_TYPE_OBJECT) static void xed_settings_finalize (GObject *object) @@ -85,12 +84,6 @@ xed_settings_dispose (GObject *object) xs->priv->ui = NULL; } - if (xs->priv->plugins != NULL) - { - g_object_unref (xs->priv->plugins); - xs->priv->plugins = NULL; - } - G_OBJECT_CLASS (xed_settings_parent_class)->dispose (object); } @@ -107,7 +100,7 @@ set_font (XedSettings *xs, for (l = views; l != NULL; l = g_list_next (l)) { - /* Note: we use def=FALSE to avoid XedView to query gconf */ + /* Note: we use def=FALSE to avoid XedView to query dconf */ xed_view_set_font (XED_VIEW (l->data), FALSE, font); gtk_source_view_set_tab_width (GTK_SOURCE_VIEW (l->data), ts); @@ -275,28 +268,6 @@ on_auto_save_interval_changed (GSettings *settings, g_list_free (docs); } -static void -on_undo_actions_limit_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *docs, *l; - gint ul; - - g_settings_get (settings, key, "u", &ul); - - ul = CLAMP (ul, -1, 250); - - docs = xed_app_get_documents (xed_app_get_default ()); - - for (l = docs; l != NULL; l = g_list_next (l)) - { - gtk_source_buffer_set_max_undo_levels (GTK_SOURCE_BUFFER (l->data), ul); - } - - g_list_free (docs); -} - static void on_wrap_mode_changed (GSettings *settings, const gchar *key, @@ -317,192 +288,6 @@ on_wrap_mode_changed (GSettings *settings, g_list_free (views); } -static void -on_tabs_size_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - guint ts; - - g_settings_get (settings, key, "u", &ts); - - ts = CLAMP (ts, 1, 24); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_tab_width (GTK_SOURCE_VIEW (l->data), ts); - } - - g_list_free (views); -} - -/* FIXME: insert_spaces and line_numbers are mostly the same it just changes - the func called, maybe typedef the func and refactorize? */ -static void -on_insert_spaces_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gboolean spaces; - - spaces = g_settings_get_boolean (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_insert_spaces_instead_of_tabs (GTK_SOURCE_VIEW (l->data), spaces); - } - - g_list_free (views); -} - -static void -on_auto_indent_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gboolean enable; - - enable = g_settings_get_boolean (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_auto_indent (GTK_SOURCE_VIEW (l->data), enable); - } - - g_list_free (views); -} - -static void -on_display_line_numbers_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gboolean line_numbers; - - line_numbers = g_settings_get_boolean (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (l->data), line_numbers); - } - - g_list_free (views); -} - -static void -on_hl_current_line_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gboolean hl; - - hl = g_settings_get_boolean (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (l->data), hl); - } - - g_list_free (views); -} - -static void -on_bracket_matching_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *docs, *l; - gboolean enable; - - enable = g_settings_get_boolean (settings, key); - - docs = xed_app_get_documents (xed_app_get_default ()); - - for (l = docs; l != NULL; l = g_list_next (l)) - { - gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (l->data), enable); - } - - g_list_free (docs); -} - -static void -on_display_right_margin_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gboolean display; - - display = g_settings_get_boolean (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_show_right_margin (GTK_SOURCE_VIEW (l->data), display); - } - - g_list_free (views); -} - -static void -on_right_margin_position_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *views, *l; - gint pos; - - g_settings_get (settings, key, "u", &pos); - - pos = CLAMP (pos, 1, 160); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_right_margin_position (GTK_SOURCE_VIEW (l->data), pos); - } - - g_list_free (views); -} - -static void -on_smart_home_end_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GtkSourceSmartHomeEndType smart_he; - GList *views, *l; - - smart_he = g_settings_get_enum (settings, key); - - views = xed_app_get_views (xed_app_get_default ()); - - for (l = views; l != NULL; l = g_list_next (l)) - { - gtk_source_view_set_smart_home_end (GTK_SOURCE_VIEW (l->data), smart_he); - } - - g_list_free (views); -} - static void on_syntax_highlighting_changed (GSettings *settings, const gchar *key, @@ -540,26 +325,6 @@ on_syntax_highlighting_changed (GSettings *settings, } } -static void -on_search_highlighting_changed (GSettings *settings, - const gchar *key, - XedSettings *xs) -{ - GList *docs, *l; - gboolean enable; - - enable = g_settings_get_boolean (settings, key); - - docs = xed_app_get_documents (xed_app_get_default ()); - - for (l = docs; l != NULL; l = g_list_next (l)) - { - xed_document_set_enable_search_highlighting (XED_DOCUMENT (l->data), enable); - } - - g_list_free (docs); -} - static void on_enable_tab_scrolling_changed (GSettings *settings, const gchar *key, @@ -597,23 +362,13 @@ xed_settings_init (XedSettings *xs) xs->priv = XED_SETTINGS_GET_PRIVATE (xs); xs->priv->old_scheme = NULL; -} - -static void -initialize (XedSettings *xs) -{ - GSettings *prefs; - - prefs = g_settings_get_child (G_SETTINGS (xs), "preferences"); - xs->priv->editor = g_settings_get_child (prefs, "editor"); - xs->priv->ui = g_settings_get_child (prefs, "ui"); - g_object_unref (prefs); - xs->priv->plugins = g_settings_get_child (G_SETTINGS (xs), "plugins"); + xs->priv->editor = g_settings_new ("org.x.editor.preferences.editor"); + xs->priv->ui = g_settings_new ("org.x.editor.preferences.ui"); /* Load settings */ xs->priv->interface = g_settings_new ("org.gnome.desktop.interface"); - g_signal_connect (xs->priv->interface, "changed", + g_signal_connect (xs->priv->interface, "changed::monospace-font-name", G_CALLBACK (on_system_font_changed), xs); /* editor changes */ @@ -627,32 +382,8 @@ initialize (XedSettings *xs) G_CALLBACK (on_auto_save_changed), xs); g_signal_connect (xs->priv->editor, "changed::auto-save-interval", G_CALLBACK (on_auto_save_interval_changed), xs); - g_signal_connect (xs->priv->editor, "changed::undo-actions-limit", - G_CALLBACK (on_undo_actions_limit_changed), xs); - g_signal_connect (xs->priv->editor, "changed::wrap-mode", - G_CALLBACK (on_wrap_mode_changed), xs); - g_signal_connect (xs->priv->editor, "changed::tabs-size", - G_CALLBACK (on_tabs_size_changed), xs); - g_signal_connect (xs->priv->editor, "changed::insert-spaces", - G_CALLBACK (on_insert_spaces_changed), xs); - g_signal_connect (xs->priv->editor, "changed::auto-indent", - G_CALLBACK (on_auto_indent_changed), xs); - g_signal_connect (xs->priv->editor, "changed::display-line-numbers", - G_CALLBACK (on_display_line_numbers_changed), xs); - g_signal_connect (xs->priv->editor, "changed::highlight-current-line", - G_CALLBACK (on_hl_current_line_changed), xs); - g_signal_connect (xs->priv->editor, "changed::bracket-matching", - G_CALLBACK (on_bracket_matching_changed), xs); - g_signal_connect (xs->priv->editor, "changed::display-right-margin", - G_CALLBACK (on_display_right_margin_changed), xs); - g_signal_connect (xs->priv->editor, "changed::right-margin-position", - G_CALLBACK (on_right_margin_position_changed), xs); - g_signal_connect (xs->priv->editor, "changed::smart-home-end", - G_CALLBACK (on_smart_home_end_changed), xs); g_signal_connect (xs->priv->editor, "changed::syntax-highlighting", G_CALLBACK (on_syntax_highlighting_changed), xs); - g_signal_connect (xs->priv->editor, "changed::search-highlighting", - G_CALLBACK (on_search_highlighting_changed), xs); g_signal_connect (xs->priv->ui, "changed::enable-tab-scrolling", G_CALLBACK (on_enable_tab_scrolling_changed), xs); @@ -672,18 +403,10 @@ xed_settings_class_init (XedSettingsClass *klass) g_type_class_add_private (object_class, sizeof (XedSettingsPrivate)); } -GSettings * +GObject * xed_settings_new () { - XedSettings *settings; - - settings = g_object_new (XED_TYPE_SETTINGS, - "schema", "org.x.editor", - NULL); - - initialize (settings); - - return G_SETTINGS (settings); + return g_object_new (XED_TYPE_SETTINGS, NULL); } gchar * diff --git a/xed/xed-settings.h b/xed/xed-settings.h index 3da7182..262f10f 100644 --- a/xed/xed-settings.h +++ b/xed/xed-settings.h @@ -45,14 +45,14 @@ typedef struct _XedSettingsPrivate XedSettingsPrivate; struct _XedSettings { - GSettings parent; + GObject parent; XedSettingsPrivate *priv; }; struct _XedSettingsClass { - GSettingsClass parent_class; + GObjectClass parent_class; }; // typedef enum { @@ -64,7 +64,7 @@ struct _XedSettingsClass GType xed_settings_get_type (void) G_GNUC_CONST; -GSettings *xed_settings_new (void); +GObject *xed_settings_new (void); // XedLockdownMask xed_settings_get_lockdown (XedSettings *xs); diff --git a/xed/xed-view.c b/xed/xed-view.c index 74022bd..7363d13 100644 --- a/xed/xed-view.c +++ b/xed/xed-view.c @@ -844,7 +844,7 @@ xed_view_set_font (XedView *view, if (def) { - GSettings *settings; + GObject *settings; gchar *font; settings = _xed_app_get_settings (xed_app_get_default ());