From c393c7afbd4c36ff32c93f81931f3b1469bef2a2 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 21 May 2024 15:50:28 +0600 Subject: [PATCH] Package movement WIP --- gresource.xml | 1 + source/CMakeLists.txt | 1 + source/ubl-settings-repomanager.c | 294 +++++++++++++++++---- source/ubl-settings-repomanager.h | 12 + ubl-settings-repomanager-add.glade | 11 - ubl-settings-repomanager-filechooser.glade | 100 +++++-- 6 files changed, 338 insertions(+), 81 deletions(-) diff --git a/gresource.xml b/gresource.xml index 162aec7..eb85a99 100644 --- a/gresource.xml +++ b/gresource.xml @@ -5,6 +5,7 @@ ubl-settings-repomanager-add.glade ubl-settings-repomanager-configuration.glade ubl-settings-repomanager-repo-block.glade + ubl-settings-repomanager-filechooser.glade ubl-settings-repomanager.css diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index a5251e3..1fe07f1 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -38,6 +38,7 @@ set(DEPENDFILES ../ubl-settings-repomanager.glade ../ubl-settings-repomanager-add.glade ../ubl-settings-repomanager-configuration.glade + ../ubl-settings-repomanager-filechooser.glade ../ubl-settings-repomanager-repo-block.glade ../gresource.xml ../ubl-settings-repomanager-banner.png diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 34f92e3..4ed4894 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -41,7 +41,31 @@ void yon_storage_config_update(storage_config_window *window){ } } -//storage-configure window section +gboolean yon_gtk_tree_iter_get_from_combo_box_id(GtkComboBox *combo, GtkTreeModel *model, GtkTreeIter *iter){ + g_return_val_if_fail(GTK_IS_COMBO_BOX(combo),0); + g_return_val_if_fail(GTK_IS_TREE_MODEL(model),0); + const char *id = gtk_combo_box_get_active_id(combo); + if (yon_char_is_empty(id)) return 0; + gtk_tree_model_get_iter_from_string(model,iter,id); + return 1; +} + +// filechooser window section + +file_chooser_window *yon_file_chooser_window_new(){ + file_chooser_window *window = malloc(sizeof(file_chooser_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_filechooser_config); + window->Window = yon_gtk_builder_get_widget(builder,"Window"); + window->ChooseButton = yon_gtk_builder_get_widget(builder,"ChooseButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry"); + window->FileChooserWidget = yon_gtk_builder_get_widget(builder,"FileChooserWidget"); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + + return window; +} + +// storage-configure window section void on_storage_open(GtkWidget *self, storage_config_window *window){ GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,CLOSE_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); @@ -367,47 +391,96 @@ void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window * } } -void on_add_package(GtkWidget *self, repo_add_window *window){ - GtkWidget *dialog = gtk_file_chooser_dialog_new(TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL); - gtk_widget_show(dialog); - GtkFileFilter *filter = gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter,"*.tar.*"); - gtk_file_filter_set_name(filter,"*.tar.*"); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter); - int responce = gtk_dialog_run(GTK_DIALOG(dialog)); - if (responce == GTK_RESPONSE_ACCEPT){ - char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); - char *path; - GtkTreeIter iter,itar,itor; - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); - gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&path,-1); - char *packages; - yon_window_config_get_parameter("package_info",path,&packages,YON_TYPE_STRING); - int size; - config_str parsed = yon_char_parse(packages,&size,","); - GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog)); - for (int i=0;iRepositoryCombo)); - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&itor,repo_store_path); - char *repo_name; - gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itor,3,&repo_name,-1); - char *repo_pack = yon_char_divide(repo_name,yon_char_find_last(repo_name,'/')); - yon_debug_output("%s\n",add_packages_command(repo_pack,repo_name,current)); - if (!system(add_packages_command(repo_pack,repo_name,current))){ - gtk_list_store_append(window->PackagesList,&itar); - gtk_list_store_set(window->PackagesList,&itar,1,name,2,current,3,1,-1); - yon_char_parsed_add_or_create_if_exists(parsed,&size,name); - yon_window_config_add_instant_parameter(path,"package_info",yon_char_parsed_to_string(parsed,size,","),YON_TYPE_STRING); +void on_move_storage_changed(GtkWidget *self, repo_add_window *window){ + GtkWidget *RepoCombo = NULL; + GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self))); + RepoCombo = (GtkWidget*)g_list_nth_data(list,3); + g_list_free(list); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(RepoCombo)); + GtkTreeIter iter,itar; + char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); + int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&target,-1); + char *child_id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(RepoCombo),child_id,target); + } +} + +void on_move_repo_changed(GtkWidget *self, repo_add_window *window){ + GtkWidget *ArchCombo = NULL; + GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self))); + ArchCombo = (GtkWidget*)g_list_nth_data(list,5); + g_list_free(list); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(ArchCombo)); + GtkTreeIter iter,itar; + char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); + int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->tree_copy),&itar,&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&target,-1); + char *child_id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&itar); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(ArchCombo),child_id,target); + } + +} + +void on_move_arch_changed(GtkWidget *self, repo_add_window *window){ + +} + +void on_add_accept(GtkWidget *self, dictionary *dict){ + repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*); + file_chooser_window *dialog = yon_dictionary_get_data(dict->first->next,file_chooser_window*); + char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo)); + char *path; + GtkTreeIter iter,itar,itor; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id); + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&path,-1); + char *packages; + yon_window_config_get_parameter("package_info",path,&packages,YON_TYPE_STRING); + int size; + config_str parsed = yon_char_parse(packages,&size,","); + GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog->FileChooserWidget)); + for (int i=0;iRepositoryCombo)); + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&itor,repo_store_path); + char *repo_name; + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itor,3,&repo_name,-1); + char *repo_pack = yon_char_divide(repo_name,yon_char_find_last(repo_name,'/')); + yon_debug_output("%s\n",add_packages_command(repo_pack,repo_name,current)); + if (!system(add_packages_command(repo_pack,repo_name,current))){ + gtk_list_store_append(window->PackagesList,&itar); + gtk_list_store_set(window->PackagesList,&itar,1,name,2,current,3,1,-1); + yon_char_parsed_add_or_create_if_exists(parsed,&size,name); + yon_window_config_add_instant_parameter(path,"package_info",yon_char_parsed_to_string(parsed,size,","),YON_TYPE_STRING); - } } } } - gtk_widget_destroy(dialog); + gtk_widget_destroy(dialog->Window); +} + +void on_add_package(GtkWidget *self, repo_add_window *window){ + file_chooser_window *dialog = yon_file_chooser_window_new(); + yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),TITLE_LABEL,icon_path,"filechooserWindow"); + gtk_widget_show(dialog->Window); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.pkg.tar*"); + gtk_file_filter_set_name(filter,"*.pkg.tar*"); + dictionary *dict = NULL; + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter); + g_signal_connect(G_OBJECT(dialog->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_add_accept),dict); } void on_remove_package(GtkWidget *self, repo_add_window *window){ @@ -473,16 +546,11 @@ repo_add_window *yon_repo_add_window_new(){ window->arch_filter=gtk_tree_model_filter_new(GTK_TREE_MODEL(window->tree_copy),NULL); window->package_filter=gtk_tree_model_filter_new(GTK_TREE_MODEL(window->tree_copy),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(window->TestTree),GTK_TREE_MODEL(window->tree_copy)); - window->added_packages_archs = NULL; - window->removed_packages_archs = NULL; - g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window); - g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window); - g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window); - g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_remove_package),window); + + window->added_packages_archs = NULL; + window->removed_packages_archs = NULL; return window; } @@ -500,9 +568,128 @@ void on_add_clicked(GtkWidget *self, main_window *widgets){ gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),path,current); } } + + g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window); + g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window); + g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window); + g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window); + g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_remove_package),window); gtk_widget_show(window->MainWindow); } +void on_folder_changed(GtkFileChooser *self, file_chooser_window *dialog){ + const char *current = gtk_file_chooser_get_current_folder(self); + if (!strstr(current,dialog->root_path)){ + gtk_file_chooser_set_current_folder(self,dialog->root_path); + } +} + +void on_move_add_accept(GtkWidget *self, dictionary *dict){ + repo_add_window *window = yon_dictionary_get_data(dict->first,repo_add_window*); + file_chooser_window *dialog = yon_dictionary_get_data(dict->first->next,file_chooser_window*); + GSList *list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog->FileChooserWidget)); + for (int i=0;iPackagesList,&iter); + gtk_list_store_set(window->PackagesList,&iter,2,files[k],-1); + } + } + } else { + GtkTreeIter iter; + gtk_list_store_append(window->PackagesList,&iter); + gtk_list_store_set(window->PackagesList,&iter,2,path,-1); + + } + } + gtk_widget_destroy(dialog->Window); + free(dialog); + GtkTreeIter iter; + if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->tree_copy),&iter)){ + gtk_widget_set_sensitive(window->MoveSourceStorageEntry,0); + gtk_widget_set_sensitive(window->MoveSourceRepoEntry,0); + gtk_widget_set_sensitive(window->MoveSourceArchEntry,0); + + gtk_widget_set_sensitive(window->MoveTargetStorageEntry,0); + gtk_widget_set_sensitive(window->MoveTargetRepoEntry,0); + gtk_widget_set_sensitive(window->MoveTargetArchEntry,0); + } +} + +void on_move_add_package(GtkWidget *self, repo_add_window *window){ + if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->MoveTargetArchEntry))>-1&>k_combo_box_get_active(GTK_COMBO_BOX(window->MoveSourceStorageEntry))>-1){ + file_chooser_window *dialog = yon_file_chooser_window_new(); + yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow"); + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]"); + gtk_file_filter_set_name(filter,"*.pkg.tar.*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter); + GtkTreeIter iter,itar; + yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),GTK_TREE_MODEL(window->tree_copy),&iter); + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&target,-1); + yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry),GTK_TREE_MODEL(window->tree_copy),&itar); + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&dialog->root_path,-1); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->FileChooserWidget),target); + + dictionary *dict = NULL; + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog); + + g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"current-folder-changed",G_CALLBACK(on_folder_changed),dialog); + g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_move_add_accept),dict); + gtk_widget_show(dialog->Window); + } +} + +void on_move_remove_package(GtkWidget *self, repo_add_window *window){ + GtkTreeIter iter; + GtkTreeModel *model; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&iter)){ + gtk_list_store_remove(window->PackagesList,&iter); + } + if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->PackagesList),&iter)){ + + gtk_widget_set_sensitive(window->MoveSourceStorageEntry,1); + gtk_widget_set_sensitive(window->MoveSourceRepoEntry,1); + gtk_widget_set_sensitive(window->MoveSourceArchEntry,1); + + gtk_widget_set_sensitive(window->MoveTargetStorageEntry,1); + gtk_widget_set_sensitive(window->MoveTargetRepoEntry,1); + gtk_widget_set_sensitive(window->MoveTargetArchEntry,1); + } +} + +void on_move_accept(GtkWidget *self, repo_add_window *window){ + int size = 0; + config_str packages = NULL; + GtkTreeIter iter,itar; + for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,3,&target,-1); + if (!yon_char_is_empty(target)){ + yon_char_parsed_add_or_create_if_exists(packages,&size,target); + } + if (size){ + yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceRepoEntry),GTK_TREE_MODEL(window->tree_copy),&iter); + yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveTargetRepoEntry),GTK_TREE_MODEL(window->tree_copy),&itar); + char *source_path, *source_repo, *target_path, *target_repo; + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&source_repo,-1); + gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&target_repo,-1); + source_path = yon_char_divide(source_repo,yon_char_find_last(source_repo,'/')); + target_path = yon_char_divide(target_repo,yon_char_find_last(target_repo,'/')); + char *command = yon_move_packages_command(source_path,source_repo, target_repo, yon_char_parsed_to_string(packages,size," ")); + system(command); + } + } +} + void on_move_clicked(GtkWidget *self, main_window *widgets){ repo_add_window *window = yon_repo_add_window_new(); yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"move-repo-window"); @@ -515,9 +702,22 @@ void on_move_clicked(GtkWidget *self, main_window *widgets){ gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,¤t,-1); if (!yon_char_is_empty(current)){ char *path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&iter); - gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),path,current); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceStorageEntry),path,current); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetStorageEntry),path,current); } } + gtk_widget_destroy(gtk_widget_get_parent(window->StorageCombo)); + g_signal_connect(G_OBJECT(window->MoveSourceStorageEntry),"changed",G_CALLBACK(on_move_storage_changed),window); + g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window); + g_signal_connect(G_OBJECT(window->MoveSourceArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window); + + g_signal_connect(G_OBJECT(window->MoveTargetStorageEntry),"changed",G_CALLBACK(on_move_storage_changed),window); + g_signal_connect(G_OBJECT(window->MoveTargetRepoEntry),"changed",G_CALLBACK(on_move_repo_changed),window); + g_signal_connect(G_OBJECT(window->MoveTargetArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window); + + g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_move_add_package),window); + g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window); + g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_move_accept),window); gtk_widget_show(window->MainWindow); } diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index 0fe750a..6bd8f42 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -25,6 +25,7 @@ #define glade_path_repo_add "/com/ublinux/ui/ubl-settings-repomanager-add.glade" #define glade_path_storage_config "/com/ublinux/ui/ubl-settings-repomanager-configuration.glade" #define glade_path_repo_block "/com/ublinux/ui/ubl-settings-repomanager-repo-block.glade" +#define glade_path_filechooser_config "/com/ublinux/ui/ubl-settings-repomanager-filechooser.glade" #define banner_path "/com/ublinux/images/ubl-settings-repomanager-banner.png" #define CssPath "/com/ublinux/css/ubl-settings-repomanager.css" #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) @@ -48,6 +49,8 @@ typedef char* string; #define add_packages_command(path,name,packages_path) yon_char_unite("repo-manager add -r '",name,"' -d '", path,"' ",packages_path,NULL) #define remove_packages_command(path,name,packages_path) yon_char_unite("repo-manager remove -r '",name,"' -d '", path,"' ",packages_path,NULL) +#define yon_move_packages_command(storage, source_repo, target_repo, packages) yon_char_unite("repo-manager move -d '",storage,"' -R '",source_repo,"' -r '",target_repo,"' ", packages,NULL) + string version_application; char *local; @@ -131,6 +134,15 @@ typedef struct { GtkTreeModel *StorageFilter; } storage_config_window; +typedef struct { + GtkWidget *Window; + GtkWidget *CancelButton; + GtkWidget *ChooseButton; + GtkWidget *NameEntry; + GtkWidget *FileChooserWidget; + char *root_path; +} file_chooser_window; + main_window *setup_window(); void yon_storage_config_update(storage_config_window *window); \ No newline at end of file diff --git a/ubl-settings-repomanager-add.glade b/ubl-settings-repomanager-add.glade index 97caa61..314e922 100644 --- a/ubl-settings-repomanager-add.glade +++ b/ubl-settings-repomanager-add.glade @@ -505,17 +505,6 @@ - - - Type - - - - 0 - - - - Name diff --git a/ubl-settings-repomanager-filechooser.glade b/ubl-settings-repomanager-filechooser.glade index 51e6354..cd8524e 100644 --- a/ubl-settings-repomanager-filechooser.glade +++ b/ubl-settings-repomanager-filechooser.glade @@ -12,51 +12,105 @@ False com.ublinux.libublsettingsui-gtk3.cancel-uncolored-symbolic - + False - dialog - + True + + True False vertical - 2 - - + + + True False - end + vertical - - Cancel + + + + + False + True + 0 + + + + + True + False + 5 + vertical + 5 + + True - True - True - image2 + False - True + False True - 0 + 1 - - Choose + True - True - True - image1 + False + 5 + 5 + 5 + + + True + True + + + True + True + 0 + + + + + Cancel + True + True + True + image2 + + + False + True + 1 + + + + + Choose + True + True + True + image1 + + + False + True + 2 + + - True + False True - 1 + 2 False - False - 0 + True + 1