Clean up our GSettings use a bit more
This commit is contained in:
parent
f546598d83
commit
0a9588ef63
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 ());
|
||||
|
|
Loading…
Reference in New Issue