From 54ce72a128a6fa4846689dbb763c2b56dfec58b1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 25 Jun 2025 18:04:21 +0000 Subject: [PATCH 1/4] Added filechooser window size and position saving --- source/libublsettingsui-gtk3-filechooser.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/libublsettingsui-gtk3-filechooser.c b/source/libublsettingsui-gtk3-filechooser.c index cdb88e0..4930a8c 100644 --- a/source/libublsettingsui-gtk3-filechooser.c +++ b/source/libublsettingsui-gtk3-filechooser.c @@ -4,6 +4,10 @@ void on_file_chooser_accept(GtkWidget *, filechooser_window *window){ switch (gtk_file_chooser_get_action(GTK_FILE_CHOOSER(window->MainFileChooser))){ case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: case GTK_FILE_CHOOSER_ACTION_SAVE: + if (yon_char_is_empty(window->last_success_selection)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(NOTHING_CHOSEN_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); + return; + } window->responce=GTK_RESPONSE_APPLY; break; @@ -84,7 +88,7 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_file_chooser_cancel),window); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_file_chooser_accept),window); g_signal_connect(G_OBJECT(window->Window),"destroy",G_CALLBACK(on_file_chooser_exit),window); - + yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"file_chooser_window"); gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->MainFileChooser),action); switch(action){ case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: -- 2.35.1 From b99f674d78f50e6f1bc37f96a615fe0035e9af35 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 27 Jun 2025 10:37:15 +0000 Subject: [PATCH 2/4] Filechooser update --- source/libublsettingsui-gtk3-filechooser.c | 19 +++++++++++++++++++ source/libublsettingsui-gtk3.h | 3 +++ 2 files changed, 22 insertions(+) diff --git a/source/libublsettingsui-gtk3-filechooser.c b/source/libublsettingsui-gtk3-filechooser.c index 4930a8c..869c2c8 100644 --- a/source/libublsettingsui-gtk3-filechooser.c +++ b/source/libublsettingsui-gtk3-filechooser.c @@ -70,6 +70,23 @@ void on_file_chooser_exit(GtkWidget *, filechooser_window *){ __yon_filechooser_window = NULL; } +void on_file_chooser_check_root(GtkWidget *, filechooser_window *window){ + char *cur_path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(window->MainFileChooser)); + if (!yon_char_is_empty(window->root)&&!strstr(cur_path,window->root)) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(window->MainFileChooser),window->root); +} + +void yon_file_chooser_set_root(filechooser_window *window, char *root_path){ + window->root = yon_char_new(root_path); + g_signal_connect(G_OBJECT(window->MainFileChooser),"current-folder-changed",G_CALLBACK(on_file_chooser_check_root),window); +} + +void yon_file_chooser_remove_root(filechooser_window *window, char *root_path){ + if (!yon_char_is_empty(window->root)) free(window->root); + window->root=NULL; + g_signal_handlers_disconnect_by_func(G_OBJECT(window->MainFileChooser),G_CALLBACK(on_file_chooser_check_root),window); + +} + filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){ if (!__yon_filechooser_window){ filechooser_window *window = malloc(sizeof(filechooser_window)); @@ -84,6 +101,8 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){ window->ChooseFolderCheck = yon_gtk_builder_get_widget(builder,"ChooseFolderCheck"); window->last_any_selection=NULL; window->last_success_selection=NULL; + window->root=NULL; + g_signal_connect(G_OBJECT(window->ChooseFolderCheck),"toggled",G_CALLBACK(on_file_chooser_selected),window); g_signal_connect(G_OBJECT(window->MainFileChooser),"selection-changed",G_CALLBACK(on_file_chooser_selected),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_file_chooser_cancel),window); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_file_chooser_accept),window); diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 98c9faa..f422d7b 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -173,11 +173,14 @@ typedef struct { char *last_success_selection; char *last_any_selection; GtkResponseType responce; + char *root; } filechooser_window; filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action); GtkResponseType yon_file_chooser_start(filechooser_window *window); void yon_file_chooser_set_button_label(char *label); +void yon_file_chooser_set_root(filechooser_window *window, char *root_path); +void yon_file_chooser_remove_root(filechooser_window *window, char *root_path); dialog_confirmation_data *yon_confirmation_dialog_data_new(); -- 2.35.1 From d4e619641f109d9053427b599627382b56cc47f5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 1 Jul 2025 18:02:46 +0600 Subject: [PATCH 3/4] Added new icon; Added debug outputs --- ...ibublsettingsui-gtk3.update-cloud-symbolic.svg} | 0 ...inux.libublsettingsui-gtk3.xmarker-symbolic.svg | 1 + libublsettingsui-gtk3_ru.po | 2 +- source/libublsettingsui-gtk3-service.c | 14 +++++++------- 4 files changed, 9 insertions(+), 8 deletions(-) rename icons/actions/{com.ublinux.libublsettingsui-gtk.update-cloud-symbolic.svg => com.ublinux.libublsettingsui-gtk3.update-cloud-symbolic.svg} (100%) create mode 100644 icons/actions/com.ublinux.libublsettingsui-gtk3.xmarker-symbolic.svg diff --git a/icons/actions/com.ublinux.libublsettingsui-gtk.update-cloud-symbolic.svg b/icons/actions/com.ublinux.libublsettingsui-gtk3.update-cloud-symbolic.svg similarity index 100% rename from icons/actions/com.ublinux.libublsettingsui-gtk.update-cloud-symbolic.svg rename to icons/actions/com.ublinux.libublsettingsui-gtk3.update-cloud-symbolic.svg diff --git a/icons/actions/com.ublinux.libublsettingsui-gtk3.xmarker-symbolic.svg b/icons/actions/com.ublinux.libublsettingsui-gtk3.xmarker-symbolic.svg new file mode 100644 index 0000000..db6aca6 --- /dev/null +++ b/icons/actions/com.ublinux.libublsettingsui-gtk3.xmarker-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libublsettingsui-gtk3_ru.po b/libublsettingsui-gtk3_ru.po index 79ec1ef..8995df7 100644 --- a/libublsettingsui-gtk3_ru.po +++ b/libublsettingsui-gtk3_ru.po @@ -155,7 +155,7 @@ msgstr "Открыть" #: source/libublsettingsui-gtk3.h:420 msgid "Create directory" -msgstr "Создать файл" +msgstr "Создать папку" #: source/libublsettingsui-gtk3.h:421 msgid "Select directory" diff --git a/source/libublsettingsui-gtk3-service.c b/source/libublsettingsui-gtk3-service.c index 60e79ac..0188478 100644 --- a/source/libublsettingsui-gtk3-service.c +++ b/source/libublsettingsui-gtk3-service.c @@ -31,7 +31,7 @@ void __on_service_start_clicked(GtkWidget *, service_window *window){ } void __on_service_stop_clicked(GtkWidget *, service_window *window){ - if (system(window->stop_command)){ + if (system(yon_debug_output("%s\n",window->stop_command))){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; }; @@ -42,7 +42,7 @@ void __on_service_stop_clicked(GtkWidget *, service_window *window){ void __on_service_enable_clicked(GtkWidget *, service_window *window){ - if (system(window->enable_command)){ + if (system(yon_debug_output("%s\n",window->enable_command))){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; }; @@ -52,7 +52,7 @@ void __on_service_enable_clicked(GtkWidget *, service_window *window){ void __on_service_disable_clicked(GtkWidget *, service_window *window){ - if (system(window->disable_command)){ + if (system(yon_debug_output("%s\n",window->disable_command))){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; }; @@ -62,11 +62,11 @@ void __on_service_disable_clicked(GtkWidget *, service_window *window){ void __on_service_restart_clicked(GtkWidget *, service_window *window){ - if (system(window->stop_command)){ + if (system(yon_debug_output("%s\n",window->stop_command))){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; }; - if (system(window->start_command)){ + if (system(yon_debug_output("%s\n",window->start_command))){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),yon_char_get_localised_from_lib(FAIL_LABEL),5,BACKGROUND_IMAGE_FAIL_TYPE); return; }; @@ -83,7 +83,7 @@ void __on_service_status_clicked(GtkWidget *, service_window *window){ } void __on_service_update_clicked(GtkWidget *, service_window *window){ - if (!system(window->check_enable_command)){ + if (!system(yon_debug_output("%s\n",window->check_enable_command))){ gtk_label_set_text(GTK_LABEL(window->EnableLabel),yon_char_get_localised_from_lib(_SERVICE_ENABLE_LABEL)); gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON); } else { @@ -91,7 +91,7 @@ void __on_service_update_clicked(GtkWidget *, service_window *window){ gtk_image_set_from_icon_name(GTK_IMAGE(window->EnableImage),service_stop_status_icon_name,GTK_ICON_SIZE_BUTTON); } - if (!system(window->check_active_command)){ + if (!system(yon_debug_output("%s\n",window->check_active_command))){ gtk_label_set_text(GTK_LABEL(window->ActiveLabel),yon_char_get_localised_from_lib(_SERVICE_ACTIVE_LABEL)); gtk_image_set_from_icon_name(GTK_IMAGE(window->ActiveImage),service_start_status_icon_name,GTK_ICON_SIZE_BUTTON); -- 2.35.1 From 1c7f542ed3f36d798eed8cc8519c0648e46d497a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 7 Jul 2025 15:56:32 +0600 Subject: [PATCH 4/4] Added filder create button at filechooser --- source/libublsettingsui-gtk3-filechooser.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/libublsettingsui-gtk3-filechooser.c b/source/libublsettingsui-gtk3-filechooser.c index 869c2c8..7942dab 100644 --- a/source/libublsettingsui-gtk3-filechooser.c +++ b/source/libublsettingsui-gtk3-filechooser.c @@ -111,6 +111,7 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){ gtk_file_chooser_set_action(GTK_FILE_CHOOSER(window->MainFileChooser),action); switch(action){ case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: + gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(window->MainFileChooser),1); gtk_widget_hide(window->ChooseFolderCheck); gtk_button_set_label(GTK_BUTTON(window->SaveButton),yon_char_get_localised_from_lib(CREATE_FOLDER_LABEL)); break; @@ -120,6 +121,7 @@ filechooser_window *yon_file_chooser_window_new(GtkFileChooserAction action){ break; case GTK_FILE_CHOOSER_ACTION_SAVE: + gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(window->MainFileChooser),1); gtk_widget_hide(window->ChooseFolderCheck); gtk_button_set_label(GTK_BUTTON(window->SaveButton),yon_char_get_localised_from_lib(SAVE_LABEL)); break; -- 2.35.1