summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcadmio <gioresta87@gmail.com>2023-10-06 17:01:45 +0200
committercadmio <gioresta87@gmail.com>2023-10-06 17:01:45 +0200
commitb3745915c3cf92c0101f6cc96dca4b0b27ec9b41 (patch)
tree5e356f330f209fd05d4e74682b8b162a171111f4
parent6509f88cb041224279899a95a5b4493233596037 (diff)
downloadlitos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.tar.gz
litos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.tar.bz2
litos4-b3745915c3cf92c0101f6cc96dca4b0b27ec9b41.zip
update all
-rw-r--r--gears-menu.ui6
-rw-r--r--litosaccels.c62
-rw-r--r--litosappwin.c4
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);
-
}
}