diff options
author | cadmio <gioresta87@gmail.com> | 2023-10-06 17:01:45 +0200 |
---|---|---|
committer | cadmio <gioresta87@gmail.com> | 2023-10-06 17:01:45 +0200 |
commit | b3745915c3cf92c0101f6cc96dca4b0b27ec9b41 (patch) | |
tree | 5e356f330f209fd05d4e74682b8b162a171111f4 | |
parent | 6509f88cb041224279899a95a5b4493233596037 (diff) | |
download | litos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.tar.gz litos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.tar.bz2 litos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.zip |
update all
-rw-r--r-- | gears-menu.ui | 6 | ||||
-rw-r--r-- | litosaccels.c | 62 | ||||
-rw-r--r-- | litosappwin.c | 4 |
3 files changed, 69 insertions, 3 deletions
diff --git a/gears-menu.ui b/gears-menu.ui index 247ee12..ae8e867 100644 --- a/gears-menu.ui +++ b/gears-menu.ui @@ -21,6 +21,12 @@ </section> <section> <item> + <attribute name="label" translatable="yes">_Open From Template</attribute> + <attribute name="action">app.open_tmpl</attribute> + </item> + </section> + <section> + <item> <attribute name="label" translatable="yes">_Save_As</attribute> <attribute name="action">app.save_as</attribute> </item> diff --git a/litosaccels.c b/litosaccels.c index 5794095..1bd473c 100644 --- a/litosaccels.c +++ b/litosaccels.c @@ -23,7 +23,8 @@ void litos_app_error_dialog(GtkWindow *window, GError *error, char *filename); gboolean litos_app_check_duplicate(char *filename, LitosAppWindow *win); -static void open_cb (GtkWidget *dialog, gint response, gpointer win) +static void +open_cb (GtkWidget *dialog, gint response, gpointer win) { if (response == GTK_RESPONSE_ACCEPT) { @@ -51,6 +52,63 @@ static void open_cb (GtkWidget *dialog, gint response, gpointer win) } static void +open_tmpl_cb (GtkWidget *dialog, gint response, gpointer win) +{ + if (response == GTK_RESPONSE_ACCEPT) + { + GError *error = NULL; + GFile *gfile = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + + LitosAppWindow *lwin = LITOS_APP_WINDOW(win); + char *gfile_name = g_file_get_path(gfile); + + if (gfile != NULL) + { + LitosFile *file = litos_app_window_open(lwin,gfile); + litos_file_load(file,&error); + if (!litos_file_load(file,&error)) + litos_app_error_dialog(GTK_WINDOW(win), error, gfile_name); + } + + g_free(gfile_name); + } + + gtk_window_destroy (GTK_WINDOW (dialog)); +} + +static void +open_tmpl (GSimpleAction *action, + GVariant *parameter, + gpointer app) +{ + GtkWidget *dialog; + + GError *error; + + GFile *gfile = g_file_new_for_path("~/Templates"); + + GtkWindow *win = gtk_application_get_active_window (GTK_APPLICATION (app)); + + dialog = gtk_file_chooser_dialog_new ("Open File", + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + "Cancel", + GTK_RESPONSE_CANCEL, + "Open", + GTK_RESPONSE_ACCEPT, + NULL); + + if (gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), gfile, &error)) + litos_app_error_dialog(GTK_WINDOW(win), error, "Templates"); + + gtk_window_set_transient_for(GTK_WINDOW(dialog), win); + + gtk_widget_show(dialog); + + g_signal_connect (dialog, "response", G_CALLBACK (open_tmpl_cb), win); +} + +static void open_activated(GSimpleAction *action, GVariant *parameter, gpointer app) { GtkWidget *dialog; @@ -90,6 +148,7 @@ save_as_dialog (GSimpleAction *action, GVariant *parameter, gpointer app) litos_app_window_save_as(LITOS_APP_WINDOW(win)); } + static void preferences_activated (GSimpleAction *action, GVariant *parameter, @@ -204,6 +263,7 @@ void setAccels (GApplication *app) {"insert_html", insertHtmlTags, "s", NULL, NULL, {0,0,0}}, {"insert_char", insertChar, "s", NULL, NULL, {0,0,0}}, {"open", open_activated, NULL, NULL, NULL}, + {"open_tmpl", open_tmpl, NULL, NULL, NULL}, {"new", new_file, NULL, NULL, NULL}, {"save", save, NULL, NULL, NULL, {0,0,0}}, {"save_as", save_as_dialog, NULL, NULL, NULL, {0,0,0}}, diff --git a/litosappwin.c b/litosappwin.c index 84a80b4..44e2b61 100644 --- a/litosappwin.c +++ b/litosappwin.c @@ -144,7 +144,8 @@ search_text_changed (GtkEntry *entry, GtkTextIter start, match_start, match_end; GtkTextMark* mark; - if (win->search_context != NULL){ + if (win->search_context != NULL) + { g_object_unref(win->search_context); win->search_context = NULL; } @@ -170,7 +171,6 @@ search_text_changed (GtkEntry *entry, gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW(view), &match_start, 0.0, FALSE, 0.0, 0.0); gtk_text_buffer_move_mark (buffer, mark, &match_end); - } } |