summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcadmio <gioresta87@gmail.com>2023-10-08 13:38:40 +0200
committercadmio <gioresta87@gmail.com>2023-10-08 13:38:40 +0200
commitb41e8d78a770677135347091d01be85e63ba58b4 (patch)
tree176c352b8ec76057aadf6c01655bb52c99d760e8
parente5e2665ba873090d4612db827aea2c9051cd5d45 (diff)
downloadlitos4-b41e8d78a770677135347091d01be85e63ba58b4.tar.gz
litos4-b41e8d78a770677135347091d01be85e63ba58b4.tar.bz2
litos4-b41e8d78a770677135347091d01be85e63ba58b4.zip
update all
-rw-r--r--litosaccels.c77
-rw-r--r--litosappwin.c30
2 files changed, 71 insertions, 36 deletions
diff --git a/litosaccels.c b/litosaccels.c
index 046db3f..f4ac859 100644
--- a/litosaccels.c
+++ b/litosaccels.c
@@ -6,6 +6,9 @@
gboolean litos_file_load (LitosFile *file, GError **error);
GtkTextBuffer *litos_file_get_buffer(LitosFile *file);
+GFile *litos_file_get_gfile(LitosFile* file);
+gchar *litos_file_get_name(LitosFile *file);
+void litos_file_set_saved(LitosFile* file);
gboolean litos_app_window_remove_child(LitosAppWindow *win);
void litos_app_window_save(LitosAppWindow *win, LitosFile *file);
@@ -13,7 +16,10 @@ void litos_app_window_save_as(LitosAppWindow *app);
LitosFile * litos_app_window_new_tab(LitosAppWindow *win, GFile *gf);
LitosFile * litos_app_window_open(LitosAppWindow *win, GFile *gf);
+LitosFile * litos_app_window_open_tmpl(LitosAppWindow *win, GFile *gf);
+
LitosFile * litos_app_window_current_file(LitosAppWindow *win);
+guint litos_app_window_get_array_len(LitosAppWindow *win);
gboolean litos_app_window_quit (GtkWindow *window, gpointer user_data);
void litos_app_error_dialog(GtkWindow *window, GError *error, char *filename);
@@ -49,6 +55,38 @@ open_cb (GtkWidget *dialog, gint response, gpointer win)
}
static void
+open_activated(GSimpleAction *action, GVariant *parameter, gpointer app)
+{
+ GtkWidget *dialog;
+
+ GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (app));
+ LitosAppWindow *win = LITOS_APP_WINDOW(window);
+
+ dialog = gtk_file_chooser_dialog_new ("Open File",
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ "Cancel",
+ GTK_RESPONSE_CANCEL,
+ "Open",
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (litos_app_window_get_array_len(win) != 0)
+ {
+ GError *error = NULL;
+ LitosFile *file = litos_app_window_current_file(win);
+ if (!gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_file_get_parent(litos_file_get_gfile(file)), &error))
+ litos_app_error_dialog(GTK_WINDOW(win), error, "Current Folder");
+ }
+
+ gtk_window_set_transient_for(GTK_WINDOW(dialog), window);
+
+ gtk_widget_show(dialog);
+
+ g_signal_connect (dialog, "response", G_CALLBACK (open_cb), window);
+}
+
+static void
open_tmpl_cb (GtkWidget *dialog, gint response, gpointer win)
{
if (response == GTK_RESPONSE_ACCEPT)
@@ -57,18 +95,17 @@ open_tmpl_cb (GtkWidget *dialog, gint response, gpointer win)
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);
+ LitosFile * file = litos_app_window_new_tab(LITOS_APP_WINDOW(win), NULL);
- if (!litos_file_load(file,&error))
- litos_app_error_dialog(GTK_WINDOW(win), error, gfile_name);
- }
+ char *contents;
- g_free(gfile_name);
+ g_file_get_contents (g_file_get_path(gfile), &contents, NULL, NULL);
+
+ gtk_text_buffer_set_text (litos_file_get_buffer(file), contents, strlen(contents));
+ }
}
gtk_window_destroy (GTK_WINDOW (dialog));
@@ -107,29 +144,6 @@ open_tmpl (GSimpleAction *action,
}
static void
-open_activated(GSimpleAction *action, GVariant *parameter, gpointer app)
-{
- GtkWidget *dialog;
-
- 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);
-
- gtk_window_set_transient_for(GTK_WINDOW(dialog), win);
-
- gtk_widget_show(dialog);
-
- g_signal_connect (dialog, "response", G_CALLBACK (open_cb), win);
-}
-
-static void
save(GSimpleAction *action, GVariant *parameter, gpointer app)
{
GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (app));
@@ -170,7 +184,8 @@ close_activated (GSimpleAction *action, GVariant *parameter, gpointer app)
litos_app_window_remove_child(win);
}
-static void quit_activated (GSimpleAction *action, GVariant *parameter, gpointer app)
+static void
+quit_activated (GSimpleAction *action, GVariant *parameter, gpointer app)
{
GtkWindow *window = gtk_application_get_active_window (GTK_APPLICATION (app));
LitosAppWindow *win = LITOS_APP_WINDOW(window);
diff --git a/litosappwin.c b/litosappwin.c
index 2368f1f..133b7ae 100644
--- a/litosappwin.c
+++ b/litosappwin.c
@@ -105,8 +105,17 @@ void next_match(GtkWidget *close_btn, gpointer user_data)
GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(view));
gtk_text_buffer_select_range (buffer, &match_start, &match_end);
- gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW(view), &match_start,
- 0.0, FALSE, 0.0, 0.0);
+
+ GtkTextMark *insert;
+
+ gtk_text_buffer_select_range (buffer,
+ &match_start,
+ &match_end);
+
+ insert = gtk_text_buffer_get_insert (buffer);
+
+ gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (view),
+ insert);
}
}
@@ -165,10 +174,20 @@ search_text_changed (GtkEntry *entry,
if (gtk_source_search_context_forward (win->search_context, &start, &match_start, &match_end, FALSE))
{
- gtk_text_buffer_select_range (buffer, &match_start, &match_end);
+ GtkTextMark *insert;
+
+ gtk_text_buffer_select_range (buffer,
+ &match_start,
+ &match_end);
+
+ insert = gtk_text_buffer_get_insert (buffer);
+
+ gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (view),
+ insert);
+ /*gtk_text_buffer_select_range (buffer, &match_start, &match_end);
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);
+ gtk_text_buffer_move_mark (buffer, mark, &match_end);*/
}
}
@@ -196,7 +215,7 @@ litos_app_window_save_finalize (GtkWidget *dialog, gint response, gpointer win)
litos_file_save_as (file, gfile);
- gtk_label_set_text (GTK_LABEL(litos_file_get_lbl(file)), litos_file_get_name(file));
+ gtk_label_set_text (GTK_LABEL(litos_file_get_lbl(file)), litos_file_get_name(file));
}
gtk_window_destroy (GTK_WINDOW (dialog));
@@ -515,6 +534,7 @@ LitosFile * litos_app_window_open(LitosAppWindow *win, GFile *gf)
struct Page page;
page.name = g_file_get_basename(gf);
+
page.gf = gf;
LitosFile *file = litos_app_window_set_page(win,&page);