From 2c2a395e42daef8a83a52211fb6451be16111072 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 28 Oct 2025 11:15:59 +0600 Subject: [PATCH 1/2] Added .yaml and .json support for saving --- source/libublsettingsui-gtk3-save.c | 36 +++++++++++++++++++++++++---- source/libublsettingsui-gtk3.h | 3 +++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/source/libublsettingsui-gtk3-save.c b/source/libublsettingsui-gtk3-save.c index 4e28174..6968f1c 100644 --- a/source/libublsettingsui-gtk3-save.c +++ b/source/libublsettingsui-gtk3-save.c @@ -513,10 +513,18 @@ char *yon_custom_config_init(GtkFileChooserAction type){ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),NULL,template_app_information.app_title,yon_char_unite("com.ublinux.",template_app_information.app_tech_name,NULL),"ConfigFilechooserWindow"); gtk_label_set_text(GTK_LABEL(dialog->HeaderTopic),template_app_information.app_title); - GtkFileFilter *filter = gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter,"*.ini"); - gtk_file_filter_set_name(filter, "*.ini"); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.ini"); + gtk_file_filter_set_name(filter, "*.ini"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + GtkFileFilter *filter_json = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter_json,"*.json"); + gtk_file_filter_set_name(filter_json, "*.json"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_json); + GtkFileFilter *filter_yaml = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter_yaml,"*.yaml"); + gtk_file_filter_set_name(filter_yaml, "*.yaml"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_yaml); if (type==GTK_FILE_CHOOSER_ACTION_SAVE){ // yon_file_chooser_set_button_label(yon_char_get_localised_from_lib(LOAD_CONFIG_LABEL)); @@ -665,4 +673,24 @@ template_saving_window *yon_exit_window_new(){ gtk_tree_view_remove_column(GTK_TREE_VIEW(window->ParametersTree),gtk_tree_view_get_column(GTK_TREE_VIEW(window->ParametersTree),0)); return window; +} + +GtkWidget *yon_config_save_window_new(){ + GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); + gtk_window_set_icon_name(GTK_WINDOW(dialog),template_app_information.app_tech_name); + gtk_window_set_title(GTK_WINDOW(dialog),template_app_information.app_title); + gtk_widget_show(dialog); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.ini"); + gtk_file_filter_set_name(filter, "*.ini"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); + GtkFileFilter *filter_json = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter_json,"*.json"); + gtk_file_filter_set_name(filter_json, "*.json"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_json); + GtkFileFilter *filter_yaml = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter_yaml,"*.yaml"); + gtk_file_filter_set_name(filter_yaml, "*.yaml"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter_yaml); + return dialog; } \ No newline at end of file diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index 1e0ec4a..e1901da 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -484,6 +484,9 @@ typedef struct { const char *old_password; } yon_password_window; + +GtkWidget *yon_config_save_window_new(); + /// @brief /// @param window окно с паролем /// @param hashes массив с названиями типов хэша From e336257d67fb7a4ad95b189ef94de8225e680bf9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 28 Oct 2025 11:27:54 +0600 Subject: [PATCH 2/2] Warning fix --- source/libublsettingsui-gtk3-save.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libublsettingsui-gtk3-save.c b/source/libublsettingsui-gtk3-save.c index 6968f1c..22e5f37 100644 --- a/source/libublsettingsui-gtk3-save.c +++ b/source/libublsettingsui-gtk3-save.c @@ -538,7 +538,7 @@ char *yon_custom_config_init(GtkFileChooserAction type){ char *command_creation = ubconfig_file_create(file); struct passwd *user = getpwnam(yon_ubl_root_user_get()); int a = system(command_creation); - chown(file,user->pw_uid,user->pw_gid); + if (chown(file,user->pw_uid,user->pw_gid)){}; free(command_creation); if (access(file,0)!=F_OK){ yon_ubl_status_box_render(CUSTOM_CONFIG_CREATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);