[devhelp] Settings: move font settings to the libdevhelp
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp] Settings: move font settings to the libdevhelp
- Date: Mon, 21 May 2018 07:57:53 +0000 (UTC)
commit ed2de6e20a8e757ec760a2b6b6ff6022d36784df
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sun May 20 15:57:37 2018 +0200
Settings: move font settings to the libdevhelp
It's the first step to be able to move DhWebView to the libdevhelp.
Loads of boilerplate :-( Handling GSettings in a library is not that
easy, I'm not entirely satisfied with DhSettings. A better solution
would maybe to have a code generation tool that reads a *.gschema.xml
file and creates GVariant properties, convenient getters/setters, bind
functions etc.
data/org.gnome.devhelp.gschema.xml | 18 --
data/org.gnome.libdevhelp-3.gschema.xml | 18 ++
devhelp/dh-settings-builder.c | 32 +++-
devhelp/dh-settings-builder.h | 3 +
devhelp/dh-settings.c | 336 ++++++++++++++++++++++++++++++-
devhelp/dh-settings.h | 25 +++-
docs/reference/devhelp-sections.txt | 9 +
src/dh-preferences.c | 24 +--
src/dh-settings-app.c | 86 --------
src/dh-settings-app.h | 9 -
src/dh-web-view.c | 65 +++---
11 files changed, 462 insertions(+), 163 deletions(-)
---
diff --git a/data/org.gnome.devhelp.gschema.xml b/data/org.gnome.devhelp.gschema.xml
index e3d058a..97f55f1 100644
--- a/data/org.gnome.devhelp.gschema.xml
+++ b/data/org.gnome.devhelp.gschema.xml
@@ -1,7 +1,6 @@
<schemalist gettext-domain="devhelp">
<schema id="org.gnome.devhelp" path="/org/gnome/devhelp/">
<child name="state" schema="org.gnome.devhelp.state"/>
- <child name="fonts" schema="org.gnome.devhelp.fonts"/>
</schema>
<schema id="org.gnome.devhelp.state" path="/org/gnome/devhelp/state/">
<child name="main" schema="org.gnome.devhelp.state.main"/>
@@ -50,21 +49,4 @@
<description>The height of the assistant window.</description>
</key>
</schema>
- <schema id="org.gnome.devhelp.fonts" path="/org/gnome/devhelp/fonts/">
- <key name="use-system-fonts" type="b">
- <default>true</default>
- <summary>Use system fonts</summary>
- <description>Use the system default fonts.</description>
- </key>
- <key name="variable-font" type="s">
- <default>'Sans 12'</default>
- <summary>Font for text</summary>
- <description>Font for text with variable width.</description>
- </key>
- <key name="fixed-font" type="s">
- <default>'Monospace 12'</default>
- <summary>Font for fixed width text</summary>
- <description>Font for text with fixed width, such as code examples.</description>
- </key>
- </schema>
</schemalist>
diff --git a/data/org.gnome.libdevhelp-3.gschema.xml b/data/org.gnome.libdevhelp-3.gschema.xml
index 8580e96..22246f3 100644
--- a/data/org.gnome.libdevhelp-3.gschema.xml
+++ b/data/org.gnome.libdevhelp-3.gschema.xml
@@ -1,6 +1,7 @@
<schemalist gettext-domain="devhelp">
<schema id="org.gnome.libdevhelp-3">
<child name="contents" schema="org.gnome.libdevhelp-3.contents"/>
+ <child name="fonts" schema="org.gnome.libdevhelp-3.fonts"/>
</schema>
<schema id="org.gnome.libdevhelp-3.contents">
<key name="books-disabled" type="as">
@@ -14,4 +15,21 @@
<description>Whether books should be grouped by programming language in the user
interface.</description>
</key>
</schema>
+ <schema id="org.gnome.libdevhelp-3.fonts">
+ <key name="use-system-fonts" type="b">
+ <default>true</default>
+ <summary>Use system fonts</summary>
+ <description>Use the system default fonts.</description>
+ </key>
+ <key name="variable-font" type="s">
+ <default>'Sans 12'</default>
+ <summary>Font for text</summary>
+ <description>Font for text with variable width.</description>
+ </key>
+ <key name="fixed-font" type="s">
+ <default>'Monospace 12'</default>
+ <summary>Font for fixed width text</summary>
+ <description>Font for text with fixed width, such as code examples.</description>
+ </key>
+ </schema>
</schemalist>
diff --git a/devhelp/dh-settings-builder.c b/devhelp/dh-settings-builder.c
index 3d6704c..fbf9aef 100644
--- a/devhelp/dh-settings-builder.c
+++ b/devhelp/dh-settings-builder.c
@@ -53,6 +53,7 @@
struct _DhSettingsBuilderPrivate {
gchar *contents_path;
+ gchar *fonts_path;
};
G_DEFINE_TYPE_WITH_PRIVATE (DhSettingsBuilder, dh_settings_builder, G_TYPE_OBJECT)
@@ -63,6 +64,7 @@ dh_settings_builder_finalize (GObject *object)
DhSettingsBuilder *builder = DH_SETTINGS_BUILDER (object);
g_free (builder->priv->contents_path);
+ g_free (builder->priv->fonts_path);
G_OBJECT_CLASS (dh_settings_builder_parent_class)->finalize (object);
}
@@ -117,6 +119,29 @@ dh_settings_builder_set_contents_path (DhSettingsBuilder *builder,
}
/**
+ * dh_settings_builder_set_fonts_path:
+ * @builder: a #DhSettingsBuilder.
+ * @fonts_path: the path for the "fonts" schema.
+ *
+ * Sets the path for the "fonts" schema.
+ *
+ * If you don't call this function, the default path for this schema will be
+ * used.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_builder_set_fonts_path (DhSettingsBuilder *builder,
+ const gchar *fonts_path)
+{
+ g_return_if_fail (DH_IS_SETTINGS_BUILDER (builder));
+ g_return_if_fail (fonts_path != NULL);
+
+ g_free (builder->priv->fonts_path);
+ builder->priv->fonts_path = g_strdup (fonts_path);
+}
+
+/**
* dh_settings_builder_create_object:
* @builder: a #DhSettingsBuilder.
*
@@ -136,6 +161,11 @@ dh_settings_builder_create_object (DhSettingsBuilder *builder)
// Must be compatible with Devhelp app version 3.28:
dh_settings_builder_set_contents_path (builder, "/org/gnome/devhelp/state/main/contents/");
}
+ if (builder->priv->fonts_path == NULL) {
+ // Must be compatible with Devhelp app version 3.28:
+ dh_settings_builder_set_fonts_path (builder, "/org/gnome/devhelp/fonts/");
+ }
- return _dh_settings_new (builder->priv->contents_path);
+ return _dh_settings_new (builder->priv->contents_path,
+ builder->priv->fonts_path);
}
diff --git a/devhelp/dh-settings-builder.h b/devhelp/dh-settings-builder.h
index e16aa02..bb1f31d 100644
--- a/devhelp/dh-settings-builder.h
+++ b/devhelp/dh-settings-builder.h
@@ -58,6 +58,9 @@ DhSettingsBuilder *
void dh_settings_builder_set_contents_path (DhSettingsBuilder *builder,
const gchar *contents_path);
+void dh_settings_builder_set_fonts_path (DhSettingsBuilder *builder,
+ const gchar *fonts_path);
+
DhSettings * dh_settings_builder_create_object (DhSettingsBuilder *builder);
G_END_DECLS
diff --git a/devhelp/dh-settings.c b/devhelp/dh-settings.c
index af8ba5d..981f4d7 100644
--- a/devhelp/dh-settings.c
+++ b/devhelp/dh-settings.c
@@ -73,24 +73,40 @@
/* libdevhelp GSettings schema IDs */
#define SETTINGS_SCHEMA_ID_CONTENTS "org.gnome.libdevhelp-3.contents"
+#define SETTINGS_SCHEMA_ID_FONTS "org.gnome.libdevhelp-3.fonts"
+
+/* Provided by the gsettings-desktop-schemas module. */
+#define SETTINGS_SCHEMA_ID_DESKTOP_INTERFACE "org.gnome.desktop.interface"
+#define SYSTEM_FIXED_FONT_KEY "monospace-font-name"
+#define SYSTEM_VARIABLE_FONT_KEY "font-name"
struct _DhSettingsPrivate {
GSettings *gsettings_contents;
+ GSettings *gsettings_fonts;
+ GSettings *gsettings_desktop_interface;
/* List of book IDs (gchar*) currently disabled. */
GList *books_disabled;
+ gchar *variable_font;
+ gchar *fixed_font;
+
guint group_books_by_language : 1;
+ guint use_system_fonts : 1;
};
enum {
PROP_0,
PROP_GROUP_BOOKS_BY_LANGUAGE,
+ PROP_USE_SYSTEM_FONTS,
+ PROP_VARIABLE_FONT,
+ PROP_FIXED_FONT,
N_PROPERTIES
};
enum {
SIGNAL_BOOKS_DISABLED_CHANGED,
+ SIGNAL_FONTS_CHANGED,
N_SIGNALS
};
@@ -223,6 +239,18 @@ dh_settings_get_property (GObject *object,
g_value_set_boolean (value, dh_settings_get_group_books_by_language (settings));
break;
+ case PROP_USE_SYSTEM_FONTS:
+ g_value_set_boolean (value, dh_settings_get_use_system_fonts (settings));
+ break;
+
+ case PROP_VARIABLE_FONT:
+ g_value_set_string (value, dh_settings_get_variable_font (settings));
+ break;
+
+ case PROP_FIXED_FONT:
+ g_value_set_string (value, dh_settings_get_fixed_font (settings));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -242,6 +270,18 @@ dh_settings_set_property (GObject *object,
dh_settings_set_group_books_by_language (settings, g_value_get_boolean (value));
break;
+ case PROP_USE_SYSTEM_FONTS:
+ dh_settings_set_use_system_fonts (settings, g_value_get_boolean (value));
+ break;
+
+ case PROP_VARIABLE_FONT:
+ dh_settings_set_variable_font (settings, g_value_get_string (value));
+ break;
+
+ case PROP_FIXED_FONT:
+ dh_settings_set_fixed_font (settings, g_value_get_string (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -254,6 +294,8 @@ dh_settings_dispose (GObject *object)
DhSettings *settings = DH_SETTINGS (object);
g_clear_object (&settings->priv->gsettings_contents);
+ g_clear_object (&settings->priv->gsettings_fonts);
+ g_clear_object (&settings->priv->gsettings_desktop_interface);
G_OBJECT_CLASS (dh_settings_parent_class)->dispose (object);
}
@@ -264,6 +306,8 @@ dh_settings_finalize (GObject *object)
DhSettings *settings = DH_SETTINGS (object);
g_list_free_full (settings->priv->books_disabled, g_free);
+ g_free (settings->priv->variable_font);
+ g_free (settings->priv->fixed_font);
if (default_instance == settings)
default_instance = NULL;
@@ -299,6 +343,58 @@ dh_settings_class_init (DhSettingsClass *klass)
G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS);
+ /**
+ * DhSettings:use-system-fonts:
+ *
+ * Whether to use the system default fonts.
+ *
+ * Since: 3.30
+ */
+ properties[PROP_USE_SYSTEM_FONTS] =
+ g_param_spec_boolean ("use-system-fonts",
+ "use-system-fonts",
+ "",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
+ /**
+ * DhSettings:variable-font:
+ *
+ * Font for text with variable width.
+ *
+ * This property is independent of #DhSettings:use-system-fonts.
+ *
+ * Since: 3.30
+ */
+ properties[PROP_VARIABLE_FONT] =
+ g_param_spec_string ("variable-font",
+ "variable-font",
+ "",
+ "Sans 12",
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
+ /**
+ * DhSettings:fixed-font:
+ *
+ * Font for text with fixed width, such as code examples.
+ *
+ * This property is independent of #DhSettings:use-system-fonts.
+ *
+ * Since: 3.30
+ */
+ properties[PROP_FIXED_FONT] =
+ g_param_spec_string ("fixed-font",
+ "fixed-font",
+ "",
+ "Monospace 12",
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, N_PROPERTIES, properties);
/**
@@ -317,16 +413,57 @@ dh_settings_class_init (DhSettingsClass *klass)
G_STRUCT_OFFSET (DhSettingsClass, books_disabled_changed),
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+
+ /**
+ * DhSettings::fonts-changed:
+ * @settings: the #DhSettings emitting the signal.
+ *
+ * The ::fonts-changed signal is emitted when the return values of
+ * dh_settings_get_selected_fonts() have potentially changed.
+ *
+ * Since: 3.30
+ */
+ signals[SIGNAL_FONTS_CHANGED] =
+ g_signal_new ("fonts-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (DhSettingsClass, fonts_changed),
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 0);
+}
+
+static void
+system_font_changed_cb (GSettings *gsettings,
+ gchar *key,
+ DhSettings *settings)
+{
+ if (settings->priv->use_system_fonts)
+ g_signal_emit (settings, signals[SIGNAL_FONTS_CHANGED], 0);
}
static void
dh_settings_init (DhSettings *settings)
{
settings->priv = dh_settings_get_instance_private (settings);
+
+ settings->priv->gsettings_desktop_interface = g_settings_new (SETTINGS_SCHEMA_ID_DESKTOP_INTERFACE);
+
+ g_signal_connect_object (settings->priv->gsettings_desktop_interface,
+ "changed::" SYSTEM_FIXED_FONT_KEY,
+ G_CALLBACK (system_font_changed_cb),
+ settings,
+ 0);
+
+ g_signal_connect_object (settings->priv->gsettings_desktop_interface,
+ "changed::" SYSTEM_VARIABLE_FONT_KEY,
+ G_CALLBACK (system_font_changed_cb),
+ settings,
+ 0);
}
DhSettings *
-_dh_settings_new (const gchar *contents_path)
+_dh_settings_new (const gchar *contents_path,
+ const gchar *fonts_path)
{
DhSettings *settings;
@@ -336,6 +473,8 @@ _dh_settings_new (const gchar *contents_path)
settings->priv->gsettings_contents = g_settings_new_with_path (SETTINGS_SCHEMA_ID_CONTENTS,
contents_path);
+ settings->priv->gsettings_fonts = g_settings_new_with_path (SETTINGS_SCHEMA_ID_FONTS,
+ fonts_path);
g_signal_connect_object (settings->priv->gsettings_contents,
"changed::books-disabled",
@@ -398,6 +537,7 @@ dh_settings_bind_all (DhSettings *settings)
g_return_if_fail (DH_IS_SETTINGS (settings));
dh_settings_bind_group_books_by_language (settings);
+ dh_settings_bind_fonts (settings);
}
/**
@@ -562,3 +702,197 @@ dh_settings_thaw_books_disabled_changed (DhSettings *settings)
*/
g_signal_emit (settings, signals[SIGNAL_BOOKS_DISABLED_CHANGED], 0);
}
+
+/**
+ * dh_settings_get_selected_fonts:
+ * @settings: a #DhSettings.
+ * @variable_font: (out): location to store the font name for text with variable
+ * width. Free with g_free().
+ * @fixed_font: (out): location to store the font name for text with fixed
+ * width. Free with g_free().
+ *
+ * If #DhSettings:use-system-fonts is %TRUE, returns the system fonts. Otherwise
+ * returns the values of the #DhSettings:variable-font and
+ * #DhSettings:fixed-font properties.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_get_selected_fonts (DhSettings *settings,
+ gchar **variable_font,
+ gchar **fixed_font)
+{
+ g_return_if_fail (DH_IS_SETTINGS (settings));
+ g_return_if_fail (variable_font != NULL && *variable_font == NULL);
+ g_return_if_fail (fixed_font != NULL && *fixed_font == NULL);
+
+ if (settings->priv->use_system_fonts) {
+ *variable_font = g_settings_get_string (settings->priv->gsettings_desktop_interface,
+ SYSTEM_VARIABLE_FONT_KEY);
+ *fixed_font = g_settings_get_string (settings->priv->gsettings_desktop_interface,
+ SYSTEM_FIXED_FONT_KEY);
+ } else {
+ *variable_font = g_strdup (settings->priv->variable_font);
+ *fixed_font = g_strdup (settings->priv->fixed_font);
+ }
+}
+
+/**
+ * dh_settings_get_use_system_fonts:
+ * @settings: a #DhSettings.
+ *
+ * Returns: the value of the #DhSettings:use-system-fonts property.
+ * Since: 3.30
+ */
+gboolean
+dh_settings_get_use_system_fonts (DhSettings *settings)
+{
+ g_return_val_if_fail (DH_IS_SETTINGS (settings), FALSE);
+
+ return settings->priv->use_system_fonts;
+}
+
+/**
+ * dh_settings_set_use_system_fonts:
+ * @settings: a #DhSettings.
+ * @use_system_fonts: the new value.
+ *
+ * Sets the #DhSettings:use-system-fonts property.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_set_use_system_fonts (DhSettings *settings,
+ gboolean use_system_fonts)
+{
+ g_return_if_fail (DH_IS_SETTINGS (settings));
+
+ use_system_fonts = use_system_fonts != FALSE;
+
+ if (settings->priv->use_system_fonts != use_system_fonts) {
+ settings->priv->use_system_fonts = use_system_fonts;
+ g_object_notify_by_pspec (G_OBJECT (settings), properties[PROP_USE_SYSTEM_FONTS]);
+
+ g_signal_emit (settings, signals[SIGNAL_FONTS_CHANGED], 0);
+ }
+}
+
+/**
+ * dh_settings_get_variable_font:
+ * @settings: a #DhSettings.
+ *
+ * Warning: you probably want to use the dh_settings_get_selected_fonts()
+ * function instead, to take into account the #DhSettings:use-system-fonts
+ * property.
+ *
+ * Returns: the value of the #DhSettings:variable-font property.
+ * Since: 3.30
+ */
+const gchar *
+dh_settings_get_variable_font (DhSettings *settings)
+{
+ g_return_val_if_fail (DH_IS_SETTINGS (settings), NULL);
+
+ return settings->priv->variable_font;
+}
+
+/**
+ * dh_settings_set_variable_font:
+ * @settings: a #DhSettings.
+ * @variable_font: the new value.
+ *
+ * Sets the #DhSettings:variable-font property.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_set_variable_font (DhSettings *settings,
+ const gchar *variable_font)
+{
+ g_return_if_fail (DH_IS_SETTINGS (settings));
+ g_return_if_fail (variable_font != NULL);
+
+ if (g_strcmp0 (settings->priv->variable_font, variable_font) != 0) {
+ g_free (settings->priv->variable_font);
+ settings->priv->variable_font = g_strdup (variable_font);
+ g_object_notify_by_pspec (G_OBJECT (settings), properties[PROP_VARIABLE_FONT]);
+
+ if (!settings->priv->use_system_fonts)
+ g_signal_emit (settings, signals[SIGNAL_FONTS_CHANGED], 0);
+ }
+}
+
+/**
+ * dh_settings_get_fixed_font:
+ * @settings: a #DhSettings.
+ *
+ * Warning: you probably want to use the dh_settings_get_selected_fonts()
+ * function instead, to take into account the #DhSettings:use-system-fonts
+ * property.
+ *
+ * Returns: the value of the #DhSettings:fixed-font property.
+ * Since: 3.30
+ */
+const gchar *
+dh_settings_get_fixed_font (DhSettings *settings)
+{
+ g_return_val_if_fail (DH_IS_SETTINGS (settings), NULL);
+
+ return settings->priv->fixed_font;
+}
+
+/**
+ * dh_settings_set_fixed_font:
+ * @settings: a #DhSettings.
+ * @fixed_font: the new value.
+ *
+ * Sets the #DhSettings:fixed-font property.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_set_fixed_font (DhSettings *settings,
+ const gchar *fixed_font)
+{
+ g_return_if_fail (DH_IS_SETTINGS (settings));
+ g_return_if_fail (fixed_font != NULL);
+
+ if (g_strcmp0 (settings->priv->fixed_font, fixed_font) != 0) {
+ g_free (settings->priv->fixed_font);
+ settings->priv->fixed_font = g_strdup (fixed_font);
+ g_object_notify_by_pspec (G_OBJECT (settings), properties[PROP_FIXED_FONT]);
+
+ if (!settings->priv->use_system_fonts)
+ g_signal_emit (settings, signals[SIGNAL_FONTS_CHANGED], 0);
+ }
+}
+
+/**
+ * dh_settings_bind_fonts:
+ * @settings: a #DhSettings.
+ *
+ * Binds the #DhSettings:use-system-fonts, #DhSettings:variable-font and
+ * #DhSettings:fixed-font properties to their corresponding #GSettings keys.
+ *
+ * Since: 3.30
+ */
+void
+dh_settings_bind_fonts (DhSettings *settings)
+{
+ g_return_if_fail (DH_IS_SETTINGS (settings));
+
+ g_settings_bind (settings->priv->gsettings_fonts, "use-system-fonts",
+ settings, "use-system-fonts",
+ G_SETTINGS_BIND_DEFAULT |
+ G_SETTINGS_BIND_NO_SENSITIVITY);
+
+ g_settings_bind (settings->priv->gsettings_fonts, "variable-font",
+ settings, "variable-font",
+ G_SETTINGS_BIND_DEFAULT |
+ G_SETTINGS_BIND_NO_SENSITIVITY);
+
+ g_settings_bind (settings->priv->gsettings_fonts, "fixed-font",
+ settings, "fixed-font",
+ G_SETTINGS_BIND_DEFAULT |
+ G_SETTINGS_BIND_NO_SENSITIVITY);
+}
diff --git a/devhelp/dh-settings.h b/devhelp/dh-settings.h
index ad2b8e9..7d45dd8 100644
--- a/devhelp/dh-settings.h
+++ b/devhelp/dh-settings.h
@@ -48,6 +48,7 @@ struct _DhSettingsClass {
/* Signals */
void (* books_disabled_changed) (DhSettings *settings);
+ void (* fonts_changed) (DhSettings *settings);
/* Padding for future expansion */
gpointer padding[12];
@@ -56,7 +57,8 @@ struct _DhSettingsClass {
GType dh_settings_get_type (void) G_GNUC_CONST;
G_GNUC_INTERNAL
-DhSettings * _dh_settings_new (const gchar *contents_path);
+DhSettings * _dh_settings_new (const gchar *contents_path,
+ const gchar *fonts_path);
DhSettings * dh_settings_get_default (void);
@@ -83,6 +85,27 @@ void dh_settings_freeze_books_disabled_changed (DhSettings *set
void dh_settings_thaw_books_disabled_changed (DhSettings *settings);
+void dh_settings_get_selected_fonts (DhSettings *settings,
+ gchar **variable_font,
+ gchar **fixed_font);
+
+gboolean dh_settings_get_use_system_fonts (DhSettings *settings);
+
+void dh_settings_set_use_system_fonts (DhSettings *settings,
+ gboolean use_system_fonts);
+
+const gchar * dh_settings_get_variable_font (DhSettings *settings);
+
+void dh_settings_set_variable_font (DhSettings *settings,
+ const gchar *variable_font);
+
+const gchar * dh_settings_get_fixed_font (DhSettings *settings);
+
+void dh_settings_set_fixed_font (DhSettings *settings,
+ const gchar *fixed_font);
+
+void dh_settings_bind_fonts (DhSettings *settings);
+
G_END_DECLS
#endif /* DH_SETTINGS_H */
diff --git a/docs/reference/devhelp-sections.txt b/docs/reference/devhelp-sections.txt
index 4ac007f..1bff781 100644
--- a/docs/reference/devhelp-sections.txt
+++ b/docs/reference/devhelp-sections.txt
@@ -252,6 +252,14 @@ dh_settings_is_book_enabled
dh_settings_set_book_enabled
dh_settings_freeze_books_disabled_changed
dh_settings_thaw_books_disabled_changed
+dh_settings_get_selected_fonts
+dh_settings_get_use_system_fonts
+dh_settings_set_use_system_fonts
+dh_settings_get_variable_font
+dh_settings_set_variable_font
+dh_settings_get_fixed_font
+dh_settings_set_fixed_font
+dh_settings_bind_fonts
<SUBSECTION Standard>
DH_IS_SETTINGS
DH_IS_SETTINGS_CLASS
@@ -269,6 +277,7 @@ dh_settings_get_type
DhSettingsBuilder
dh_settings_builder_new
dh_settings_builder_set_contents_path
+dh_settings_builder_set_fonts_path
dh_settings_builder_create_object
<SUBSECTION Standard>
DH_IS_SETTINGS_BUILDER
diff --git a/src/dh-preferences.c b/src/dh-preferences.c
index 648fc94..9478604 100644
--- a/src/dh-preferences.c
+++ b/src/dh-preferences.c
@@ -627,15 +627,13 @@ static void
init_fonts_tab (DhPreferences *prefs)
{
DhPreferencesPrivate *priv = dh_preferences_get_instance_private (prefs);
- DhSettingsApp *settings_app;
- GSettings *fonts_settings;
+ DhSettings *settings;
- settings_app = dh_settings_app_get_singleton ();
- fonts_settings = dh_settings_app_peek_fonts_settings (settings_app);
+ settings = dh_settings_get_default ();
- g_settings_bind (fonts_settings, "use-system-fonts",
- priv->use_system_fonts_checkbutton, "active",
- G_SETTINGS_BIND_DEFAULT);
+ g_object_bind_property (settings, "use-system-fonts",
+ priv->use_system_fonts_checkbutton, "active",
+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
g_object_bind_property (priv->use_system_fonts_checkbutton, "active",
priv->custom_fonts_grid, "sensitive",
@@ -643,13 +641,13 @@ init_fonts_tab (DhPreferences *prefs)
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
- g_settings_bind (fonts_settings, "variable-font",
- priv->variable_font_button, "font",
- G_SETTINGS_BIND_DEFAULT);
+ g_object_bind_property (settings, "variable-font",
+ priv->variable_font_button, "font",
+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
- g_settings_bind (fonts_settings, "fixed-font",
- priv->fixed_font_button, "font",
- G_SETTINGS_BIND_DEFAULT);
+ g_object_bind_property (settings, "fixed-font",
+ priv->fixed_font_button, "font",
+ G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
}
static void
diff --git a/src/dh-settings-app.c b/src/dh-settings-app.c
index bf946f6..382569a 100644
--- a/src/dh-settings-app.c
+++ b/src/dh-settings-app.c
@@ -25,28 +25,13 @@
#define SETTINGS_SCHEMA_ID_WINDOW "org.gnome.devhelp.state.main.window"
#define SETTINGS_SCHEMA_ID_PANED "org.gnome.devhelp.state.main.paned"
#define SETTINGS_SCHEMA_ID_ASSISTANT "org.gnome.devhelp.state.assistant.window"
-#define SETTINGS_SCHEMA_ID_FONTS "org.gnome.devhelp.fonts"
-
-/* Provided by the gsettings-desktop-schemas module. */
-#define SETTINGS_SCHEMA_ID_DESKTOP_INTERFACE "org.gnome.desktop.interface"
-#define SYSTEM_FIXED_FONT_KEY "monospace-font-name"
-#define SYSTEM_VARIABLE_FONT_KEY "font-name"
struct _DhSettingsAppPrivate {
GSettings *settings_window;
GSettings *settings_paned;
GSettings *settings_assistant;
- GSettings *settings_fonts;
- GSettings *settings_desktop_interface;
-};
-
-enum {
- FONTS_CHANGED,
- N_SIGNALS
};
-static guint signals[N_SIGNALS] = { 0 };
-
/* DhSettingsApp is a singleton. */
static DhSettingsApp *singleton = NULL;
@@ -60,8 +45,6 @@ dh_settings_app_dispose (GObject *object)
g_clear_object (&self->priv->settings_window);
g_clear_object (&self->priv->settings_paned);
g_clear_object (&self->priv->settings_assistant);
- g_clear_object (&self->priv->settings_fonts);
- g_clear_object (&self->priv->settings_desktop_interface);
G_OBJECT_CLASS (dh_settings_app_parent_class)->dispose (object);
}
@@ -82,22 +65,6 @@ dh_settings_app_class_init (DhSettingsAppClass *klass)
object_class->dispose = dh_settings_app_dispose;
object_class->finalize = dh_settings_app_finalize;
-
- signals[FONTS_CHANGED] =
- g_signal_new ("fonts-changed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (DhSettingsAppClass, fonts_changed),
- NULL, NULL, NULL,
- G_TYPE_NONE, 0);
-}
-
-static void
-fonts_changed_cb (GSettings *gsettings,
- gchar *key,
- DhSettingsApp *self)
-{
- g_signal_emit (self, signals[FONTS_CHANGED], 0);
}
static void
@@ -108,26 +75,6 @@ dh_settings_app_init (DhSettingsApp *self)
self->priv->settings_window = g_settings_new (SETTINGS_SCHEMA_ID_WINDOW);
self->priv->settings_paned = g_settings_new (SETTINGS_SCHEMA_ID_PANED);
self->priv->settings_assistant = g_settings_new (SETTINGS_SCHEMA_ID_ASSISTANT);
- self->priv->settings_fonts = g_settings_new (SETTINGS_SCHEMA_ID_FONTS);
- self->priv->settings_desktop_interface = g_settings_new (SETTINGS_SCHEMA_ID_DESKTOP_INTERFACE);
-
- g_signal_connect_object (self->priv->settings_fonts,
- "changed",
- G_CALLBACK (fonts_changed_cb),
- self,
- 0);
-
- g_signal_connect_object (self->priv->settings_desktop_interface,
- "changed::" SYSTEM_FIXED_FONT_KEY,
- G_CALLBACK (fonts_changed_cb),
- self,
- 0);
-
- g_signal_connect_object (self->priv->settings_desktop_interface,
- "changed::" SYSTEM_VARIABLE_FONT_KEY,
- G_CALLBACK (fonts_changed_cb),
- self,
- 0);
}
DhSettingsApp *
@@ -171,36 +118,3 @@ dh_settings_app_peek_assistant_settings (DhSettingsApp *self)
g_return_val_if_fail (DH_IS_SETTINGS_APP (self), NULL);
return self->priv->settings_assistant;
}
-
-GSettings *
-dh_settings_app_peek_fonts_settings (DhSettingsApp *self)
-{
- g_return_val_if_fail (DH_IS_SETTINGS_APP (self), NULL);
- return self->priv->settings_fonts;
-}
-
-void
-dh_settings_app_get_selected_fonts (DhSettingsApp *self,
- gchar **font_name_fixed,
- gchar **font_name_variable)
-{
- gboolean use_system_font;
-
- g_return_if_fail (DH_IS_SETTINGS_APP (self));
- g_return_if_fail (font_name_fixed != NULL && *font_name_fixed == NULL);
- g_return_if_fail (font_name_variable != NULL && *font_name_variable == NULL);
-
- use_system_font = g_settings_get_boolean (self->priv->settings_fonts, "use-system-fonts");
-
- if (use_system_font) {
- *font_name_fixed = g_settings_get_string (self->priv->settings_desktop_interface,
- SYSTEM_FIXED_FONT_KEY);
- *font_name_variable = g_settings_get_string (self->priv->settings_desktop_interface,
- SYSTEM_VARIABLE_FONT_KEY);
- } else {
- *font_name_fixed = g_settings_get_string (self->priv->settings_fonts,
- "fixed-font");
- *font_name_variable = g_settings_get_string (self->priv->settings_fonts,
- "variable-font");
- }
-}
diff --git a/src/dh-settings-app.h b/src/dh-settings-app.h
index 6f086ee..b9e0cc5 100644
--- a/src/dh-settings-app.h
+++ b/src/dh-settings-app.h
@@ -44,9 +44,6 @@ struct _DhSettingsApp {
struct _DhSettingsAppClass {
GObjectClass parent;
-
- /* Signals */
- void (*fonts_changed) (DhSettingsApp *settings);
};
GType dh_settings_app_get_type (void);
@@ -61,12 +58,6 @@ GSettings * dh_settings_app_peek_paned_settings (DhSettingsApp *self
GSettings * dh_settings_app_peek_assistant_settings (DhSettingsApp *self);
-GSettings * dh_settings_app_peek_fonts_settings (DhSettingsApp *self);
-
-void dh_settings_app_get_selected_fonts (DhSettingsApp *self,
- gchar **font_name_fixed,
- gchar **font_name_variable);
-
G_END_DECLS
#endif /* DH_SETTINGS_APP_H */
diff --git a/src/dh-web-view.c b/src/dh-web-view.c
index b6319a3..ec8e093 100644
--- a/src/dh-web-view.c
+++ b/src/dh-web-view.c
@@ -21,7 +21,7 @@
#include "dh-web-view.h"
#include <math.h>
#include <glib/gi18n.h>
-#include "dh-settings-app.h"
+#include <devhelp/devhelp.h>
struct _DhWebViewPrivate {
gchar *search_text;
@@ -166,62 +166,59 @@ dh_web_view_button_press_event (GtkWidget *widget,
static void
set_fonts (WebKitWebView *view,
- const gchar *font_name_fixed,
- const gchar *font_name_variable)
+ const gchar *font_name_variable,
+ const gchar *font_name_fixed)
{
- PangoFontDescription *font_desc_fixed;
PangoFontDescription *font_desc_variable;
- guint font_size_fixed;
+ PangoFontDescription *font_desc_fixed;
guint font_size_variable;
- guint font_size_fixed_px;
+ guint font_size_fixed;
guint font_size_variable_px;
+ guint font_size_fixed_px;
WebKitSettings *settings;
- g_return_if_fail (font_name_fixed != NULL);
g_return_if_fail (font_name_variable != NULL);
+ g_return_if_fail (font_name_fixed != NULL);
/* Get the font size. */
- font_desc_fixed = pango_font_description_from_string (font_name_fixed);
font_desc_variable = pango_font_description_from_string (font_name_variable);
- font_size_fixed = pango_font_description_get_size (font_desc_fixed) / PANGO_SCALE;
+ font_desc_fixed = pango_font_description_from_string (font_name_fixed);
font_size_variable = pango_font_description_get_size (font_desc_variable) / PANGO_SCALE;
- font_size_fixed_px = webkit_settings_font_size_to_pixels (font_size_fixed);
+ font_size_fixed = pango_font_description_get_size (font_desc_fixed) / PANGO_SCALE;
font_size_variable_px = webkit_settings_font_size_to_pixels (font_size_variable);
+ font_size_fixed_px = webkit_settings_font_size_to_pixels (font_size_fixed);
/* Set the fonts. */
settings = webkit_web_view_get_settings (view);
webkit_settings_set_zoom_text_only (settings, TRUE);
- webkit_settings_set_monospace_font_family (settings, font_name_fixed);
- webkit_settings_set_default_monospace_font_size (settings, font_size_fixed_px);
webkit_settings_set_serif_font_family (settings, font_name_variable);
webkit_settings_set_default_font_size (settings, font_size_variable_px);
+ webkit_settings_set_monospace_font_family (settings, font_name_fixed);
+ webkit_settings_set_default_monospace_font_size (settings, font_size_fixed_px);
- g_debug ("Set font-fixed to '%s' (%i) and font-variable to '%s' (%i).",
- font_name_fixed, font_size_fixed_px, font_name_variable, font_size_variable_px);
-
- pango_font_description_free (font_desc_fixed);
pango_font_description_free (font_desc_variable);
+ pango_font_description_free (font_desc_fixed);
}
static void
update_fonts (DhWebView *view)
{
- DhSettingsApp *settings;
- gchar *font_fixed = NULL;
- gchar *font_variable = NULL;
+ DhSettings *settings;
+ gchar *variable_font = NULL;
+ gchar *fixed_font = NULL;
- settings = dh_settings_app_get_singleton ();
- dh_settings_app_get_selected_fonts (settings, &font_fixed, &font_variable);
+ settings = dh_settings_get_default ();
+ dh_settings_get_selected_fonts (settings, &variable_font, &fixed_font);
- set_fonts (WEBKIT_WEB_VIEW (view), font_fixed, font_variable);
+ set_fonts (WEBKIT_WEB_VIEW (view), variable_font, fixed_font);
- g_free (font_fixed);
- g_free (font_variable);
+ g_free (variable_font);
+ g_free (fixed_font);
}
static void
-settings_fonts_changed_cb (DhSettingsApp *settings,
- DhWebView *view)
+settings_fonts_changed_cb (DhSettings *settings,
+ DhWebView *view)
{
update_fonts (view);
}
@@ -230,20 +227,20 @@ static void
dh_web_view_constructed (GObject *object)
{
DhWebView *view = DH_WEB_VIEW (object);
- WebKitSettings *settings;
- DhSettingsApp *settings_app;
+ WebKitSettings *webkit_settings;
+ DhSettings *dh_settings;
if (G_OBJECT_CLASS (dh_web_view_parent_class)->constructed != NULL)
G_OBJECT_CLASS (dh_web_view_parent_class)->constructed (object);
/* Disable some things we have no need for. */
- settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view));
- webkit_settings_set_enable_html5_database (settings, FALSE);
- webkit_settings_set_enable_html5_local_storage (settings, FALSE);
- webkit_settings_set_enable_plugins (settings, FALSE);
+ webkit_settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view));
+ webkit_settings_set_enable_html5_database (webkit_settings, FALSE);
+ webkit_settings_set_enable_html5_local_storage (webkit_settings, FALSE);
+ webkit_settings_set_enable_plugins (webkit_settings, FALSE);
- settings_app = dh_settings_app_get_singleton ();
- g_signal_connect_object (settings_app,
+ dh_settings = dh_settings_get_default ();
+ g_signal_connect_object (dh_settings,
"fonts-changed",
G_CALLBACK (settings_fonts_changed_cb),
view,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]