From 74696cddf819be79fcd11339bbbbc6073ded5e8c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 24 Jul 2023 10:49:51 +0600 Subject: [PATCH] Updated folder icons; Improved saving --- ...ings-repomanager.folder-green-symbolic.svg | 49 ++++++++++++++- ...ttings-repomanager.folder-red-symbolic.svg | 49 ++++++++++++++- source/ubl-settings-repomanager.c | 61 ++++++++++++++----- 3 files changed, 142 insertions(+), 17 deletions(-) diff --git a/com.ublinux.ubl-settings-repomanager.folder-green-symbolic.svg b/com.ublinux.ubl-settings-repomanager.folder-green-symbolic.svg index 9373086..935dacf 100644 --- a/com.ublinux.ubl-settings-repomanager.folder-green-symbolic.svg +++ b/com.ublinux.ubl-settings-repomanager.folder-green-symbolic.svg @@ -1 +1,48 @@ - \ No newline at end of file + + + + + + + + + diff --git a/com.ublinux.ubl-settings-repomanager.folder-red-symbolic.svg b/com.ublinux.ubl-settings-repomanager.folder-red-symbolic.svg index 9373086..ad9da41 100644 --- a/com.ublinux.ubl-settings-repomanager.folder-red-symbolic.svg +++ b/com.ublinux.ubl-settings-repomanager.folder-red-symbolic.svg @@ -1 +1,48 @@ - \ No newline at end of file + + + + + + + + + diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 7a33a5f..439ddba 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -120,7 +120,8 @@ void on_save(){ char *add_flagged = NULL; char *origin_flagged = NULL; char *name_flagged = NULL; - GtkTreeIter iter, childIter; + char *packnames = ""; + GtkTreeIter iter, childIter, *deleteIter; int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter); for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){ remove_flagged = NULL; @@ -131,33 +132,45 @@ void on_save(){ *(add) = 1; char *old_name=NULL; gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,1,&name_flagged,3,&origin_flagged,4,&repostatus,6,&old_name,7,&renamed,-1); - if (repostatus==-1) { - yon_window_config_erase_custom_parameter(yon_char_unite(origin_flagged,"/",name_flagged,NULL),"repos"); - remove_command = yon_char_unite("rm -rdf ",origin_flagged,"/",name_flagged,NULL); - system (remove_command); - gtk_tree_store_remove(main_config.tree_store,&iter); - continue; } - else if (repostatus==1) - yon_window_config_add_custom_parameter(yon_char_unite(origin_flagged,"/",name_flagged,NULL),"repos",add,YON_TYPE_INT); // if (!strstr(name_flagged,".db.tar.gz")) name_flagged = yon_char_append(name_flagged,".db.tar.gz"); remove_command = yon_char_unite(command," remove -d ", origin_flagged, " -r ", name_flagged, NULL); - add_command = yon_char_unite(command," add -d ", origin_flagged, " -r ", name_flagged, NULL); - int valid_child=gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter); + add_command = yon_char_unite(command," add -d ", origin_flagged,"/",name_flagged, " -r ", name_flagged, NULL); + gboolean valid_child=gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter); for (;valid_child;valid_child=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&childIter)){ int status = 0,deleted = 0; char *path=NULL; - gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,3,&path,4,&status,5,&deleted,-1); + char *name=NULL; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,1,&name,3,&path,4,&status,5,&deleted,-1); + if (name) + packnames = yon_char_unite(packnames, strcmp(packnames,"")!=0 ? " " : "", name, NULL); gtk_tree_store_set(main_config.tree_store,&childIter,4,0,5,0,-1); - if (status==-1) { remove_flagged = yon_char_unite(remove_flagged ? yon_char_append(remove_flagged,",") : " -p ",path,NULL); /*gtk_tree_store_remove(main_config.tree_store,&childIter);*/} + if (status==-1) { remove_flagged = yon_char_unite(remove_flagged ? yon_char_append(remove_flagged,",") : " -p ",path,NULL);} else if (status == 1&&deleted==0) { add_flagged = yon_char_unite(add_flagged ? yon_char_append(add_flagged,",") : " -p ",path,NULL);gtk_tree_store_set(main_config.tree_store,&childIter,0,"com.ublinux.ubl-settings-repomanager.document-symbolic",-1); } } + if (repostatus==1){ + mkdir((origin_flagged = yon_char_unite(origin_flagged,"/",name_flagged,NULL)),0766); + yon_window_config_add_custom_parameter(yon_char_unite(origin_flagged,"/",name_flagged,NULL),"repos",packnames,YON_TYPE_STRING); + gtk_tree_store_set(main_config.tree_store,&iter,0,folder_no_edits,4,0,-1); + } if (origin_flagged) remove_command = remove_flagged ? yon_char_unite(remove_command,remove_flagged,NULL) : NULL; add_command = add_flagged ? yon_char_unite(add_command, add_flagged,NULL) : add_command; printf("%s\n%s\n",remove_command,add_command); if (remove_command) system(remove_command); if (add_command) system(add_command); + if (repostatus==-1) { + yon_window_config_erase_custom_parameter(yon_char_unite(origin_flagged,"/",name_flagged,NULL),"repos"); + remove_command = yon_char_unite("rm -rdf ",origin_flagged,"/",name_flagged,NULL); + system (remove_command); + deleteIter = gtk_tree_iter_copy(&iter); + if (gtk_tree_model_iter_previous(GTK_TREE_MODEL(main_config.tree_store),&iter)) + gtk_tree_store_remove(main_config.tree_store,deleteIter); + else { + gtk_tree_store_remove(main_config.tree_store,deleteIter); + return; + } + continue; } } } @@ -389,11 +402,29 @@ void yon_repo_remove_package(main_window *widgets){ } void yon_repo_remove(main_window *widgets){ - GtkTreeIter iter; + GtkTreeIter iter, childIter, *deletecopy; 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_store_iter_depth(main_config.tree_store,&iter)==0){ - gtk_tree_store_set(main_config.tree_store,&iter,4,-1,0,folder_deleted,-1); + int repostatus=0; + gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,4,&repostatus,-1); + if (repostatus ==0){ + gtk_tree_store_set(main_config.tree_store,&iter,4,-1,0,folder_deleted,-1); + int valid=gtk_tree_model_iter_children(model,&childIter,&iter); + for (;valid;valid=gtk_tree_model_iter_next(model,&childIter)){ + int status=0; + gtk_tree_model_get(model,&childIter,4,&status,-1); + if (status==1){ + deletecopy = gtk_tree_iter_copy(&childIter); + gtk_tree_model_iter_previous(model,&childIter); + gtk_tree_store_remove(main_config.tree_store,deletecopy); + } else if (status == 0){ + gtk_tree_store_set(main_config.tree_store,&childIter, 0,document_deleted,4,-1,5,1,-1); + } + } + } else if (repostatus == 1) { + gtk_tree_store_remove(main_config.tree_store,&iter); + } }else yon_ubl_status_box_render(CHOOSE_REPO_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); }