summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcadmio <gioresta87@gmail.com>2023-11-01 10:59:17 +0100
committercadmio <gioresta87@gmail.com>2023-11-01 10:59:17 +0100
commit0452a830afa9a4abc5c00c4ed2868e860f87c293 (patch)
treea587ad7cb1c6abaf737d1ad2f7bd190963480fba
parent6b30634535d61cddd7e4e2b8ffd4141ba4b6c950 (diff)
downloadlitos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.tar.gz
litos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.tar.bz2
litos4-0452a830afa9a4abc5c00c4ed2868e860f87c293.zip
update all
-rw-r--r--Makefile8
-rw-r--r--litosapp.c16
-rw-r--r--litosappprefs.c28
-rw-r--r--litosappwin.c60
-rw-r--r--main.c8
5 files changed, 77 insertions, 43 deletions
diff --git a/Makefile b/Makefile
index ccb6563..f17654a 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
diff --git a/litosapp.c b/litosapp.c
index 65ed722..faa5352 100644
--- a/litosapp.c
+++ b/litosapp.c
@@ -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;
diff --git a/main.c b/main.c
index 8169ec1..515a916 100644
--- a/main.c
+++ b/main.c
@@ -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);
}