Added ability to choose multiple packages in file chooser

pull/41/head
parent 4603c352ba
commit fa626a0225

@ -414,7 +414,7 @@ void on_add_target_repo_selection_changed(GtkWidget *target,repo_add_window *win
void on_add_target_arch_selection_changed(GtkWidget *target,repo_add_window *window){
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo));
if (!yon_char_is_empty(path_str)){
if (!yon_char_is_empty(path_str)){
GtkTreeIter iter, itar;
GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
if (gtk_tree_model_get_iter(GTK_TREE_MODEL(window->tree_copy),&iter,path)){
@ -430,7 +430,21 @@ void on_add_target_arch_selection_changed(GtkWidget *target,repo_add_window *win
}
}
}
}
gtk_widget_set_sensitive(window->RepoSignCombo,1);
} else {
gtk_widget_set_sensitive(window->RepoSignCombo,0);
}
}
void on_arch_chosen(GtkWidget *target,repo_add_window *window){
char *path_str = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
if (!yon_char_is_empty(path_str)){
gtk_widget_set_sensitive(window->PackageSignCombo,1);
} else {
gtk_widget_set_sensitive(window->PackageSignCombo,0);
}
}
void on_add_target_package_selection_changed(GtkWidget *target,repo_add_window *window){
@ -522,6 +536,10 @@ void on_add_accept(GtkWidget *self, dictionary *dict){
if (yon_char_parsed_check_exist(parsed,size,current)==-1){
int name_size;
config_str name = yon_config_load(yon_get_package_name_from_filename(current),&name_size);
if (name_size<=0){
yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
yon_char_remove_last_symbol(name[0],'\n');
if (name_size<=0){
yon_ubl_status_box_spawn(GTK_CONTAINER(dialog->StatusBox),PACKAGE_NAME_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
@ -568,16 +586,7 @@ void on_remove_package(GtkWidget *self, repo_add_window *window){
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,id);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(window->PackagesTree)),&model,&itar)){
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,2,&repo,3,&path,-1);
char *temp = yon_char_divide(path,yon_char_find_last(path,'/'));
free(path);
path=temp;
free(yon_char_divide(path,yon_char_find_last(path,'/')));
char *cur_name, *cur_path;
gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&itar,1,&cur_name,2,&cur_path,-1);
char *command = remove_packages_command(storage,path,repo,cur_name);
yon_debug_output("%s\n",command);
yon_launch(command);
on_add_target_package_selection_changed(window->ArchitectureCombo,window);
gtk_list_store_remove(window->PackagesList,&itar);
}
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(window->tree_copy),&iter)){
gtk_widget_set_sensitive(window->StorageCombo,1);
@ -726,6 +735,7 @@ void on_add_clicked(GtkWidget *self, main_window *widgets){
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_add_target_package_selection_changed),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_add_packages_accept),dict);
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_add_package),window);
@ -991,6 +1001,7 @@ void on_remove_clicked(GtkWidget *self, main_window *widgets){
gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_arch_chosen),window);
g_signal_connect(G_OBJECT(window->StorageCombo),"changed",G_CALLBACK(on_add_target_repo_selection_changed),window);
g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_add_target_arch_selection_changed),window);
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_remove_arch_selection_changed),window);
@ -1090,16 +1101,21 @@ void on_main_tree_selection_changed(GtkWidget *self, main_window *widgets){
char *packages;
int size;
config_str parsed = yon_file_ls(target,&size);
for (int i=0;i<size;i++){
if (strstr(parsed[i],".tar.")&&!strstr(parsed[i],".files.")&&!strstr(parsed[i],".db.")&&!strstr(parsed[i],".sig")){
gtk_list_store_append(widgets->RepoFileList,&itar);
char *name = yon_char_new(parsed[i]);
char *temp = yon_char_divide_search(name,".",-1);
free(name);
name=temp;
gtk_list_store_set(widgets->RepoFileList,&itar,1,name,3,parsed[i],-1);
}
for (int i=0;i<size;i++){
if (strstr(parsed[i],".tar.")&&!strstr(parsed[i],".files.")&&!strstr(parsed[i],".db.")&&!strstr(parsed[i],".sig")){
int load_size;
gtk_list_store_append(widgets->RepoFileList,&itar);
char *name = yon_char_unite(target,"/",parsed[i]);
config_str load = yon_config_load(yon_get_package_name_from_filename(name),&load_size);
yon_char_remove_last_symbol(load[i],'\n');
char *temp = load[0];
free(name);
name=temp;
gtk_list_store_set(widgets->RepoFileList,&itar,1,name,3,parsed[i],-1);
free(name);
yon_char_parsed_free(load,load_size);
}
}
}
break;
}

@ -372,6 +372,7 @@
<child>
<object class="GtkComboBoxText" id="PackageSignCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
</object>
<packing>
@ -408,6 +409,7 @@
<child>
<object class="GtkComboBoxText" id="RepoSignCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
</object>
<packing>

@ -47,6 +47,7 @@
<object class="GtkFileChooserWidget" id="FileChooserWidget">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="select-multiple">True</property>
</object>
<packing>
<property name="expand">False</property>

@ -280,6 +280,7 @@
<property name="primary-icon-name">edit-find-symbolic</property>
<property name="primary-icon-activatable">False</property>
<property name="primary-icon-sensitive">False</property>
<property name="placeholder-text" translatable="yes">Pakcage search</property>
</object>
<packing>
<property name="expand">False</property>

Loading…
Cancel
Save