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);
}