Package movement fixes

pull/41/head
parent c393c7afbd
commit b0c5b13725

@ -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){ void on_move_storage_changed(GtkWidget *self, repo_add_window *window){
GtkWidget *RepoCombo = NULL; gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveTargetRepoEntry));
GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self))); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->MoveSourceRepoEntry));
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; GtkTreeIter iter,itar;
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); 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); 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); 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)){ for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->tree_copy),&itar)){
char *target; char *target;
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,2,&target,-1); 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); 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){ void on_move_repo_changed(GtkWidget *self, repo_add_window *window){
GtkWidget *ArchCombo = NULL; GtkWidget *ArchCombo = NULL;
GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self))); ArchCombo = self==window->MoveSourceRepoEntry?window->MoveSourceArchEntry:window->MoveTargetArchEntry;
ArchCombo = (GtkWidget*)g_list_nth_data(list,5);
g_list_free(list);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(ArchCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(ArchCombo));
GtkTreeIter iter,itar; GtkTreeIter iter,itar;
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(self)); 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->MoveSourceRepoEntry,0);
gtk_widget_set_sensitive(window->MoveSourceArchEntry,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->MoveTargetRepoEntry,0);
gtk_widget_set_sensitive(window->MoveTargetArchEntry,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->MoveSourceRepoEntry,1);
gtk_widget_set_sensitive(window->MoveSourceArchEntry,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->MoveTargetRepoEntry,1);
gtk_widget_set_sensitive(window->MoveTargetArchEntry,1); gtk_widget_set_sensitive(window->MoveTargetArchEntry,1);
} }
@ -671,10 +666,13 @@ void on_move_accept(GtkWidget *self, repo_add_window *window){
config_str packages = NULL; config_str packages = NULL;
GtkTreeIter iter,itar; GtkTreeIter iter,itar;
for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){ for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){
char *target; char *target=NULL;
gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,3,&target,-1); gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,2,&target,-1);
if (!yon_char_is_empty(target)){ 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); yon_char_parsed_add_or_create_if_exists(packages,&size,target);
free(target);
}
} }
if (size){ 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->MoveSourceRepoEntry),GTK_TREE_MODEL(window->tree_copy),&iter);
@ -685,10 +683,10 @@ void on_move_accept(GtkWidget *self, repo_add_window *window){
source_path = yon_char_divide(source_repo,yon_char_find_last(source_repo,'/')); 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,'/')); 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," ")); 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); system(command);
} }
} }
}
void on_move_clicked(GtkWidget *self, main_window *widgets){ void on_move_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new(); repo_add_window *window = yon_repo_add_window_new();
@ -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->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->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->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->MoveTargetArchEntry),"changed",G_CALLBACK(on_move_arch_changed),window);

@ -278,6 +278,7 @@
<child> <child>
<object class="GtkComboBoxText" id="MoveTargetStorageEntry"> <object class="GtkComboBoxText" id="MoveTargetStorageEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
</object> </object>
<packing> <packing>

Loading…
Cancel
Save