diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 4ed4894..ad79537 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -392,28 +392,25 @@ void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window * } 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)); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry)); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry)); GtkTreeIter iter,itar; char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveTargetStorageEntry),id); 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); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry),child_id,target); + gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry),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); + ArchCombo = self==window->MoveSourceRepoEntry?window->MoveSourceArchEntry:window->MoveTargetArchEntry; 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)); @@ -616,7 +613,6 @@ void on_move_add_accept(GtkWidget *self, dictionary *dict){ 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); } @@ -660,7 +656,6 @@ void on_move_remove_package(GtkWidget *self, repo_add_window *window){ 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); } @@ -671,11 +666,14 @@ void on_move_accept(GtkWidget *self, repo_add_window *window){ 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); + char *target=NULL; + gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,2,&target,-1); if (!yon_char_is_empty(target)){ + free(yon_char_divide(target,yon_char_find_last(target,'/'))); yon_char_parsed_add_or_create_if_exists(packages,&size,target); + free(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); @@ -685,9 +683,9 @@ void on_move_accept(GtkWidget *self, repo_add_window *window){ 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," ")); + yon_debug_output("%s\n",command); system(command); } - } } void on_move_clicked(GtkWidget *self, main_window *widgets){ @@ -711,7 +709,6 @@ void on_move_clicked(GtkWidget *self, main_window *widgets){ 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); diff --git a/ubl-settings-repomanager-add.glade b/ubl-settings-repomanager-add.glade index 314e922..09d695c 100644 --- a/ubl-settings-repomanager-add.glade +++ b/ubl-settings-repomanager-add.glade @@ -278,6 +278,7 @@ True + False False