[gnome-builder/wip/gtk4-port] libide/gui: start loading some preferences
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port] libide/gui: start loading some preferences
- Date: Thu, 31 Mar 2022 08:47:29 +0000 (UTC)
commit 89fa8f5ddbdbc58d164204aa608f0edb3ff3eaef
Author: Christian Hergert <chergert redhat com>
Date: Thu Mar 31 01:47:24 2022 -0700
libide/gui: start loading some preferences
We still have a lot to do to copy Text Editor's work for showing light or
dark properly here, but this is a start on the plumbing.
src/libide/gui/ide-preferences-builtin.c | 74 ++++++++++++++++++++++++++++++++
src/libide/gui/ide-preferences-window.c | 1 +
2 files changed, 75 insertions(+)
---
diff --git a/src/libide/gui/ide-preferences-builtin.c b/src/libide/gui/ide-preferences-builtin.c
index 79624b50c..d21b8d10b 100644
--- a/src/libide/gui/ide-preferences-builtin.c
+++ b/src/libide/gui/ide-preferences-builtin.c
@@ -600,6 +600,10 @@ static const IdePreferenceGroupEntry groups[] = {
{ "languages/*", "indentation", 30, "Indentation" },
};
+static const IdePreferenceItemEntry items[] = {
+ { "appearance", "accessories", "grid", 0, ide_preferences_window_toggle, "Show Grid Pattern", "Display a
grid pattern underneath source code", "org.gnome.builder.editor", NULL, "show-grid-lines" },
+};
+
static const IdePreferenceItemEntry lang_items[] = {
{ "languages/*", "general", "trim", 0, ide_preferences_window_toggle, "Trim Trailing Whitespace", "Upon
saving, trailing whitepsace from modified lines will be trimmed.", "org.gnome.builder.editor.language", "/*",
"trim-trailing-whitespace" },
{ "languages/*", "general", "overwrite", 0, ide_preferences_window_toggle, "Overwrite Braces", "Overwrite
closing braces", "org.gnome.builder.editor.language", "/*", "overwrite-brances" },
@@ -673,6 +677,73 @@ ide_preferences_builtin_add_languages (IdePreferencesWindow *window)
g_free (lpages);
}
+static void
+ide_preferences_builtin_add_schemes (const char *page_name,
+ const IdePreferenceItemEntry *entry,
+ AdwPreferencesGroup *group,
+ gpointer user_data)
+{
+ IdePreferencesWindow *window = user_data;
+ g_autoptr(GtkSourceBuffer) buffer = NULL;
+ GtkSourceStyleSchemeManager *manager;
+ const char * const *scheme_ids;
+ GtkSourceLanguage *language;
+ GtkSourceView *preview;
+ GtkFlowBox *flowbox;
+ GtkFrame *frame;
+
+ g_assert (IDE_IS_PREFERENCES_WINDOW (window));
+ g_assert (entry != NULL);
+ g_assert (ADW_IS_PREFERENCES_GROUP (group));
+
+#define PREVIEW_TEXT "\
+#include <glib.h>\n\
+"
+
+ language = gtk_source_language_manager_get_language (gtk_source_language_manager_get_default (), "c");
+ buffer = g_object_new (GTK_SOURCE_TYPE_BUFFER,
+ "language", language,
+ "text", PREVIEW_TEXT,
+ NULL);
+ preview = g_object_new (GTK_SOURCE_TYPE_VIEW,
+ "buffer", buffer,
+ "monospace", TRUE,
+ "left-margin", 6,
+ "top-margin", 6,
+ "bottom-margin", 6,
+ "right-margin", 6,
+ "show-line-numbers", TRUE,
+ "highlight-current-line", TRUE,
+ "show-right-margin", TRUE,
+ "right-margin-position", 60,
+ NULL);
+ frame = g_object_new (GTK_TYPE_FRAME,
+ "child", preview,
+ "margin-bottom", 12,
+ NULL);
+ adw_preferences_group_add (group, GTK_WIDGET (frame));
+
+ manager = gtk_source_style_scheme_manager_get_default ();
+ scheme_ids = gtk_source_style_scheme_manager_get_scheme_ids (manager);
+
+ flowbox = g_object_new (GTK_TYPE_FLOW_BOX,
+ "activate-on-single-click", TRUE,
+ "column-spacing", 6,
+ "row-spacing", 6,
+ "max-children-per-line", 4,
+ NULL);
+
+ for (guint i = 0; scheme_ids[i]; i++)
+ {
+ GtkSourceStyleScheme *scheme = gtk_source_style_scheme_manager_get_scheme (manager, scheme_ids[i]);
+ GtkWidget *selector = gtk_source_style_scheme_preview_new (scheme);
+
+ gtk_flow_box_append (flowbox, selector);
+ }
+
+ adw_preferences_group_add (group, GTK_WIDGET (flowbox));
+}
+
void
_ide_preferences_builtin_register (IdePreferencesWindow *window)
{
@@ -686,6 +757,9 @@ _ide_preferences_builtin_register (IdePreferencesWindow *window)
{
ide_preferences_window_add_pages (window, pages, G_N_ELEMENTS (pages), NULL);
ide_preferences_window_add_groups (window, groups, G_N_ELEMENTS (groups), NULL);
+ ide_preferences_window_add_items (window, items, G_N_ELEMENTS (items), window, NULL);
+ ide_preferences_window_add_item (window, "appearance", "preview", "scheme", 0,
+ ide_preferences_builtin_add_schemes, window, NULL);
ide_preferences_builtin_add_languages (window);
}
diff --git a/src/libide/gui/ide-preferences-window.c b/src/libide/gui/ide-preferences-window.c
index 78254d737..9f17ef724 100644
--- a/src/libide/gui/ide-preferences-window.c
+++ b/src/libide/gui/ide-preferences-window.c
@@ -968,6 +968,7 @@ ide_preferences_window_add_item (IdePreferencesWindow *self,
entry.page = g_intern_string (page);
entry.group = g_intern_string (group);
entry.name = g_intern_string (name);
+ entry.callback = callback;
entry.user_data = user_data;
g_ptr_array_add (self->info.items, g_memdup2 (&entry, sizeof entry));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]