Integrate GSettings, remember View settings.
The org.logdiag ID has been chosen as I haven't found any specific rules and com.github.logdiag seems not to be future-proof. This domain remains available so far, anyway. The schemas are compiled only when installed directly to CMAKE_INSTALL_PREFIX to the root filesystem. When invoking `make install` with DESTDIR, only the XML files are copied over as the schemas would have to be recompiled later anyway.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
|
||||
struct _LdWindowMainPrivate
|
||||
{
|
||||
GSettings *settings;
|
||||
GtkUIManager *ui_manager;
|
||||
GtkActionGroup *action_group;
|
||||
|
||||
@@ -353,6 +354,19 @@ ld_window_main_init (LdWindowMain *self)
|
||||
|
||||
/* Realize the window. */
|
||||
gtk_widget_show_all (GTK_WIDGET (self));
|
||||
|
||||
/* Set up GSettings. */
|
||||
priv->settings = g_settings_new ("org." PROJECT_NAME);
|
||||
|
||||
g_settings_bind (priv->settings, "show-main-toolbar",
|
||||
gtk_action_group_get_action (priv->action_group,
|
||||
"MainToolbar"), "active", G_SETTINGS_BIND_DEFAULT);
|
||||
g_settings_bind (priv->settings, "show-library-toolbar",
|
||||
gtk_action_group_get_action (priv->action_group,
|
||||
"LibraryToolbar"), "active", G_SETTINGS_BIND_DEFAULT);
|
||||
g_settings_bind (priv->settings, "show-grid",
|
||||
gtk_action_group_get_action (priv->action_group,
|
||||
"ShowGrid"), "active", G_SETTINGS_BIND_DEFAULT);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -369,6 +383,7 @@ ld_window_main_finalize (GObject *gobject)
|
||||
g_object_unref (self->priv->diagram);
|
||||
g_object_unref (self->priv->ui_manager);
|
||||
g_object_unref (self->priv->action_group);
|
||||
g_object_unref (self->priv->settings);
|
||||
|
||||
if (self->priv->filename)
|
||||
g_free (self->priv->filename);
|
||||
|
||||
@@ -131,6 +131,15 @@ main (int argc, char *argv[])
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef PROJECT_GSETTINGS_DIR
|
||||
/* This is enabled when the build is set up for developing, so the
|
||||
* application can find it's schema. It might also find use when
|
||||
* installing the application into a location that's missing from
|
||||
* g_get_system_data_dirs(), for example /usr/local or ~/.local.
|
||||
*/
|
||||
g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0);
|
||||
#endif /* PROJECT_GSETTINGS_DIR */
|
||||
|
||||
gtk_window_set_default_icon_name (PROJECT_NAME);
|
||||
|
||||
/* TODO: Be able to open multiple files. */
|
||||
|
||||
Reference in New Issue
Block a user