diff options
author | cadmio <gioresta87@gmail.com> | 2023-11-01 10:59:17 +0100 |
---|---|---|
committer | cadmio <gioresta87@gmail.com> | 2023-11-01 10:59:17 +0100 |
commit | 0452a830afa9a4abc5c00c4ed2868e860f87c293 (patch) | |
tree | a587ad7cb1c6abaf737d1ad2f7bd190963480fba | |
parent | 6b30634535d61cddd7e4e2b8ffd4141ba4b6c950 (diff) | |
download | litos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.tar.gz litos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.tar.bz2 litos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.zip |
update all
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | litosapp.c | 16 | ||||
-rw-r--r-- | litosappprefs.c | 28 | ||||
-rw-r--r-- | litosappwin.c | 60 | ||||
-rw-r--r-- | main.c | 8 |
5 files changed, 77 insertions, 43 deletions
@@ -44,9 +44,11 @@ clean: rm -f litos uninstall: - rm -f $(DESKTOPDIR)$(DESKTOP) - rm -f $(ICONDIR)$(ICON) - rm -f $(BINDIR)$(TARGET) + rm -f $(DESKTOPDIR)/$(DESKTOP) + rm -f $(ICONDIR)/$(ICON) + rm -f $(BINDIR)/$(TARGET) + rm -f $(SCHEMADIR)/$(SCHEMA) + $(GLIB_COMPILE_SCHEMAS) $(SCHEMADIR) install: install $(TARGET) $(BINDIR) install $(DESKTOP) $(DESKTOPDIR) @@ -18,6 +18,10 @@ void quit_activated (GSimpleAction *action, GVariant *parameter, gpointer app); struct _LitosApp { GtkApplication parent; + + GSettings *settings; + + GtkCssProvider *css_provider; }; G_DEFINE_TYPE(LitosApp, litos_app, GTK_TYPE_APPLICATION); @@ -25,6 +29,8 @@ G_DEFINE_TYPE(LitosApp, litos_app, GTK_TYPE_APPLICATION); static void litos_app_init (LitosApp *app) { + app->settings = g_settings_new("org.gtk.litos"); + app->css_provider = gtk_css_provider_new (); } static void @@ -150,3 +156,13 @@ litos_app_new (void) "flags", G_APPLICATION_HANDLES_OPEN, NULL); } + +GSettings *litos_app_get_settings(LitosApp *app) +{ + return app->settings; +} + +GtkCssProvider * litos_app_get_css_provider(LitosApp *app) +{ + return app->css_provider; +} diff --git a/litosappprefs.c b/litosappprefs.c index 27aee28..27c0f7a 100644 --- a/litosappprefs.c +++ b/litosappprefs.c @@ -4,11 +4,13 @@ #include "litosappwin.h" #include "litosappprefs.h" +void litos_app_window_update_font (); +GSettings *litos_app_get_settings(LitosApp *app); + struct _LitosAppPrefs { GtkDialog parent; - GSettings *settings; GtkWidget *font; }; @@ -52,13 +54,11 @@ pos_to_transition (const GValue *value, } } -static void -litos_app_prefs_init (LitosAppPrefs *prefs) +void _application_set_font(LitosAppPrefs *prefs) { - gtk_widget_init_template (GTK_WIDGET (prefs)); - prefs->settings = g_settings_new ("org.gtk.litos"); + LitosApp *app = LITOS_APP(g_application_get_default()); - g_settings_bind_with_mapping (prefs->settings, "font", + g_settings_bind_with_mapping (litos_app_get_settings(app), "font", prefs->font, "font-desc", G_SETTINGS_BIND_DEFAULT, string_to_font_desc, @@ -67,14 +67,22 @@ litos_app_prefs_init (LitosAppPrefs *prefs) } static void +litos_app_prefs_init (LitosAppPrefs *prefs) +{ + gtk_widget_init_template (GTK_WIDGET (prefs)); + + g_signal_connect(prefs->font, "font-set", G_CALLBACK (litos_app_window_update_font), NULL); + + g_signal_connect(G_OBJECT(prefs), "notify::application", G_CALLBACK (_application_set_font), NULL); +} + +static void litos_app_prefs_dispose (GObject *object) { LitosAppPrefs *prefs; prefs = LITOS_APP_PREFS (object); - g_clear_object (&prefs->settings); - G_OBJECT_CLASS (litos_app_prefs_parent_class)->dispose (object); } @@ -91,5 +99,7 @@ litos_app_prefs_class_init (LitosAppPrefsClass *class) LitosAppPrefs * litos_app_prefs_new (LitosAppWindow *win) { - return g_object_new (LITOS_APP_PREFS_TYPE, "transient-for", win, "use-header-bar", TRUE, NULL); + LitosAppPrefs *prefs = g_object_new (LITOS_APP_PREFS_TYPE, "transient-for", win, "use-header-bar", TRUE, NULL); + gtk_window_set_application(GTK_WINDOW(prefs), GTK_APPLICATION(g_application_get_default())); + return prefs; } diff --git a/litosappwin.c b/litosappwin.c index 46a9d0b..4174bb5 100644 --- a/litosappwin.c +++ b/litosappwin.c @@ -19,6 +19,9 @@ GtkWidget * litos_file_get_lbl(LitosFile *file); GtkWidget * litos_file_get_tabbox(LitosFile *file); gboolean litos_file_load (LitosFile *file, GError **error); +GtkCssProvider * litos_app_get_css_provider(LitosApp *app); +GSettings *litos_app_get_settings(LitosApp *app);; + GtkWidget* MyNewSourceview(); gboolean litos_app_window_remove_child(LitosAppWindow *win); @@ -119,8 +122,8 @@ next_match(GtkWidget *close_btn, gpointer user_data) } } -static -GtkSourceView * litos_app_window_set_search_context(LitosAppWindow *win, const char *stringToSearch) +static GtkSourceView * +litos_app_window_set_search_context(LitosAppWindow *win, const char *stringToSearch) { GtkSourceSearchSettings *settings = gtk_source_search_settings_new (); @@ -360,6 +363,36 @@ gboolean litos_app_window_quit (GtkWindow *window, gpointer user_data) return TRUE; } +void +litos_app_window_update_font () +{ + LitosApp *app = LITOS_APP(g_application_get_default()); + + PangoFontDescription *font_desc; + gchar *font, *css_string; + GtkCssProvider *css_provider; + + font = g_settings_get_string (litos_app_get_settings(app),"font"); + + font_desc = pango_font_description_from_string (font); + css_provider = litos_app_get_css_provider(app); + g_free (font); + + /* update font */ + css_string = g_strdup_printf ("textview { font: %dpt %s; }", + pango_font_description_get_size (font_desc) / PANGO_SCALE, + pango_font_description_get_family (font_desc)); + gtk_css_provider_load_from_data (css_provider, css_string, -1); + + gtk_style_context_add_provider_for_display (gdk_display_get_default(), + GTK_STYLE_PROVIDER (css_provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + /* cleanup */ + pango_font_description_free (font_desc); + g_free (css_string); +} + static void litos_app_window_init (LitosAppWindow *win) { @@ -380,12 +413,12 @@ litos_app_window_init (LitosAppWindow *win) win->search_context = NULL; win->litosFileList = g_ptr_array_new_full(0, g_object_unref); - //g_signal_connect (win->settings, "changed::font-desc", G_CALLBACK (litos_app_window_font_changed_cb), win->litosFileList); + litos_app_window_update_font(); g_signal_connect (GTK_WINDOW(win), "close-request", G_CALLBACK (litos_app_window_quit), win); g_signal_connect (win->down_search, "clicked", G_CALLBACK(next_match), win); //g_signal_connect (win->up_search, "clicked", G_CALLBACK(previous_match), win); - + g_object_bind_property (win->search, "active", win->searchbar, "search-mode-enabled", G_BINDING_BIDIRECTIONAL); @@ -491,21 +524,6 @@ void litos_app_error_dialog(GtkWindow *window, GError *error, char *filename) g_error_free(error); } -void litos_app_window_apply_tag(LitosAppWindow *win, GtkTextBuffer *buffer) -{ - GtkTextTag *tag; - GtkTextIter start_iter, end_iter; - tag = gtk_text_buffer_create_tag (buffer, NULL, NULL); - - g_settings_bind (win->settings, "font", - tag, "font", - G_SETTINGS_BIND_DEFAULT); - - gtk_text_buffer_get_start_iter (buffer, &start_iter); - gtk_text_buffer_get_end_iter (buffer, &end_iter); - gtk_text_buffer_apply_tag (buffer, tag, &start_iter, &end_iter); -} - static LitosFile * litos_app_window_new_tab(LitosAppWindow *win, struct Page *page) { @@ -572,8 +590,6 @@ LitosFile * litos_app_window_open(LitosAppWindow *win, GFile *gf) { litos_file_highlight_buffer(file); - litos_app_window_apply_tag(win, page.buffer); - g_signal_connect(G_OBJECT(file), "notify::saved", G_CALLBACK (_file_monitor_saved_change), win); return file; @@ -592,8 +608,6 @@ LitosFile * litos_app_window_new_file(LitosAppWindow *win) LitosFile *file = litos_app_window_new_tab(win,&page); - litos_app_window_apply_tag(win, page.buffer); - g_signal_connect(G_OBJECT(file), "notify::saved", G_CALLBACK (_file_monitor_saved_change), win); return file; @@ -1,16 +1,8 @@ #include <gtk/gtk.h> - #include "litosapp.h" int main (int argc, char *argv[]) { - /* Since this example is running uninstalled, - * we have to help it find its schema. This - * is *not* necessary in properly installed - * application. - */ - //g_setenv ("GSETTINGS_SCHEMA_DIR", ".", TRUE); - return g_application_run (G_APPLICATION (litos_app_new ()), argc, argv); } |