diff options
author | cadmio <gioresta87@gmail.com> | 2023-10-08 13:38:40 +0200 |
---|---|---|
committer | cadmio <gioresta87@gmail.com> | 2023-10-08 13:38:40 +0200 |
commit | b41e8d78a770677135347091d01be85e63ba58b4 (patch) | |
tree | 176c352b8ec76057aadf6c01655bb52c99d760e8 | |
parent | e5e2665ba873090d4612db827aea2c9051cd5d45 (diff) | |
download | litos4-b41e8d78a770677135347091d01be85e63ba58b4.tar.gz litos4-b41e8d78a770677135347091d01be85e63ba58b4.tar.bz2 litos4-b41e8d78a770677135347091d01be85e63ba58b4.zip |
update all
-rw-r--r-- | litosaccels.c | 77 | ||||
-rw-r--r-- | litosappwin.c | 30 |
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); |