diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 6255b16..0043e02 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -134,8 +134,8 @@ void on_repo_add_new(GtkWidget *self, dictionary *dict){ if (!name||strcmp(name,"")!=0){ on_close_subwindow(self); GtkTreeIter *iter = yon_repo_append(widgets, name, YON_REPO_LINE_REPO_TYPE); - gtk_tree_store_set(main_config.tree_store,iter,2,window->BranchesListStore,-1); - gtk_tree_model_foreach(GTK_TREE_MODEL(window->BranchesListStore),yon_add_branches,dict); + gtk_tree_store_set(main_config.tree_store,iter,2,window->BranchesListStore,3,window->path,-1); + // gtk_tree_model_foreach(GTK_TREE_MODEL(window->BranchesListStore),yon_add_branches,dict); yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { yon_ubl_status_box_render(EMPTY_NAME_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); @@ -156,17 +156,13 @@ void on_branch_add(GtkCellRendererText *self, char*path,char *new_text, repo_cre } } -void on_choose_repo_folder(main_window *widgets){ +void on_choose_repo_folder(repo_create_window *window){ GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); int res = gtk_dialog_run(GTK_DIALOG(chooser)); if (res==GTK_RESPONSE_ACCEPT){ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); - while (1){ - char *ret = yon_char_divide_search(filename,"/",-1); - if (strcmp(ret,filename)==0) break; - } - yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE); + window->path=filename; } on_close_subwindow(chooser); } @@ -193,7 +189,7 @@ void on_repo_new (GtkWidget *self, main_window *widgets){ g_object_set_property(G_OBJECT(window->BranchCell),"placeholder-text",val); g_signal_connect(G_OBJECT(window->BranchCell),"edited",G_CALLBACK(on_branch_add),window); g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_repo_add_new),dict); - g_signal_connect(G_OBJECT(window->repoChooseFolderButton),"clicked",G_CALLBACK(on_choose_repo_folder),widgets); + g_signal_connect(G_OBJECT(window->repoChooseFolderButton),"clicked",G_CALLBACK(on_choose_repo_folder),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); } @@ -236,9 +232,11 @@ void on_repo_configure(GtkWidget *self, main_window *widgets){ void on_repo_configure_done(GtkWidget *self, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*); - GtkTreeIter iter; + GtkTreeIter iter, parentIter; GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(main_config.tree_store),&parentIter,&iter)) + iter=parentIter; char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)); gtk_tree_store_set(main_config.tree_store,&iter,1,name,-1); } @@ -265,60 +263,41 @@ GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYP GtkTreeIter iter,parentIter; GdkPixbuf *icon = NULL; GtkIconTheme *theme = gtk_icon_theme_get_default(); + char *name_short = yon_char_new(name); + while(1){ + yon_char_divide_search(name_short,"/",-1); + if (!strstr(name_short,"/")) break; + } GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&parentIter)){ if (type==YON_REPO_LINE_REPO_TYPE){ icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); gtk_tree_store_append(main_config.tree_store,&iter,NULL); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + gtk_tree_store_set(main_config.tree_store,&iter,0, "folder-symbolic", 1, name_short,3,name,-1); retIter = gtk_tree_iter_copy(&iter); } - else if (type==YON_REPO_LINE_BRANCH_TYPE){ - icon = NULL; - if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){ - GtkTreeIter branch; - if (!gtk_tree_model_iter_parent(model,&branch,&iter)){ - gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); - retIter = gtk_tree_iter_copy(&iter); - } else { - gtk_tree_store_append(main_config.tree_store,&iter,&branch); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); - retIter = gtk_tree_iter_copy(&iter); - } - } else { - gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); - retIter = gtk_tree_iter_copy(&iter); - } - yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - } - else if (type==YON_REPO_LINE_FILE_TYPE){ - icon = gtk_icon_theme_load_icon_for_scale(theme,"network-server-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); - if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){ - GtkTreeIter branch; - if (gtk_tree_model_iter_parent(model,&branch,&iter)){ + GtkTreeIter branch; + icon = gtk_icon_theme_load_icon_for_scale(theme,"follder-documents-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); + if (gtk_tree_model_iter_parent(model,&branch,&parentIter)){ GtkTreeIter repo; - if (!gtk_tree_model_iter_parent(model,&repo,&branch)){ - gtk_tree_store_append(main_config.tree_store,&branch,&iter); - gtk_tree_store_set(main_config.tree_store,&branch,0, icon, 1, name,-1); + gtk_tree_store_append(main_config.tree_store,&iter,&branch); + gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,-1); retIter = gtk_tree_iter_copy(&branch); - } + } else { gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + gtk_tree_store_set(main_config.tree_store,&iter,0, "com.ublinux.ubl-settings-repomanager.document-symbolic", 1, name_short,3,name,-1); retIter = gtk_tree_iter_copy(&iter); } yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - } else yon_ubl_status_box_render(CHOOSE_BRANCH_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter); } else if (type==YON_REPO_LINE_REPO_TYPE){ icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); gtk_tree_store_append(main_config.tree_store,&iter,NULL); - gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + gtk_tree_store_set(main_config.tree_store,&iter,0, "folder-symbolic", 1, name_short,3,name,-1); retIter = gtk_tree_iter_copy(&iter); gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter); } else { @@ -333,12 +312,9 @@ void yon_repo_remove_package(main_window *widgets){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ GtkTreeIter iterparent; if (gtk_tree_model_iter_parent(model,&iterparent,&iter)){ - GtkTreeIter parentparent; - if (gtk_tree_model_iter_parent(model,&parentparent,&iterparent)){ gtk_tree_store_remove(main_config.tree_store,&iter); yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - } else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - } + }else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } } @@ -375,10 +351,6 @@ void yon_add_file(main_window *widgets){ if (res==GTK_RESPONSE_ACCEPT){ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); - while (1){ - char *ret = yon_char_divide_search(filename,"/",-1); - if (strcmp(ret,filename)==0) break; - } yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE); } on_close_subwindow(chooser); @@ -472,7 +444,8 @@ main_window *setup_window(){ widgets->ComponentsInfoLabel = yon_gtk_builder_get_widget(builder,"ComponentsInfoLabel"); widgets->SignatureLabel = yon_gtk_builder_get_widget(builder,"SignatureLabel"); widgets->SignatureInfoLabel = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel"); - widgets->Finder = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel"); + widgets->Finder = yon_gtk_builder_get_widget(builder,"RepoFinder"); + widgets->SaveButton = yon_gtk_builder_get_widget(builder,"mainSaveButton"); main_config.tree_store = GTK_TREE_STORE(gtk_builder_get_object(builder,"RepoStore")); if (main_config.lock_load_global == 1){ @@ -503,7 +476,7 @@ main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_repo_configure),widgets); /* Localisation | Локализация */ - gtk_widget_show_all(widgets->Window); + gtk_widget_show(widgets->Window); return widgets; diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index 51d0176..c12885f 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include "ubl-cmake.h" @@ -113,6 +112,7 @@ typedef struct { GtkWidget *SignatureLabel; GtkWidget *SignatureInfoLabel; GtkWidget *Finder; + GtkWidget *SaveButton; } main_window; typedef struct { @@ -125,6 +125,7 @@ typedef struct { GtkWidget *repoChooseFolderButton; GtkListStore *BranchesListStore; + char *path; } repo_create_window; typedef struct {