|
|
|
|
@ -11,10 +11,26 @@ void on_repo_removed(GtkWidget *self,storage_config_window *window){
|
|
|
|
|
char *repo = (char*)gtk_entry_get_text(GTK_ENTRY(g_list_nth_data(list,0)));
|
|
|
|
|
GtkTreeIter iter, itar;
|
|
|
|
|
char *storage;
|
|
|
|
|
gtk_combo_box_get_active_iter(GTK_COMBO_BOX(window->StoragePathCombo),&iter);
|
|
|
|
|
gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(window->StorageFilter),&itar,&iter);
|
|
|
|
|
gtk_tree_store_remove(GTK_TREE_STORE(window->storages_copy),&itar);
|
|
|
|
|
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
|
|
|
|
|
if (!yon_char_is_empty(id)){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&iter,id);
|
|
|
|
|
int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(window->storages_copy),&itar,&iter);
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->storages_copy),&itar)){
|
|
|
|
|
char *target;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,2,&target,-1);
|
|
|
|
|
if (!strcmp(target,repo)){
|
|
|
|
|
gtk_tree_store_remove(window->storages_copy,&itar);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_storage_config_update(window);
|
|
|
|
|
// gtk_combo_box_get_active_iter(GTK_COMBO_BOX(window->StoragePathCombo),&iter);
|
|
|
|
|
// gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(window->StorageFilter),&itar,&iter);
|
|
|
|
|
// if (yon_gtk_tree_store_find_full(GTK_TREE_MODEL(window->storages_copy),&itar,2,repo)){
|
|
|
|
|
// gtk_tree_store_remove(GTK_TREE_STORE(window->storages_copy),&itar);
|
|
|
|
|
// yon_storage_config_update(window);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_storage_config_update(storage_config_window *window){
|
|
|
|
|
@ -22,14 +38,14 @@ void yon_storage_config_update(storage_config_window *window){
|
|
|
|
|
for (int i=0;i<g_list_length(children);i++){
|
|
|
|
|
gtk_widget_destroy((GtkWidget*)g_list_nth_data(children,i));
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter iter,itar, childiter;
|
|
|
|
|
if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(window->StoragePathCombo),&iter)){
|
|
|
|
|
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(window->StorageFilter),&itar,&iter);
|
|
|
|
|
if (gtk_tree_model_iter_children(GTK_TREE_MODEL(window->storages_copy),&childiter,&itar)){
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
if (yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->StoragePathCombo),GTK_TREE_MODEL(window->storages_copy),&iter)){
|
|
|
|
|
|
|
|
|
|
if (gtk_tree_model_iter_children(GTK_TREE_MODEL(window->storages_copy),&itar,&iter)){
|
|
|
|
|
int valid = 1;
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->storages_copy),&childiter)){
|
|
|
|
|
for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(window->storages_copy),&itar)){
|
|
|
|
|
char *repo;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&childiter,2,&repo,-1);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,2,&repo,-1);
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_block);
|
|
|
|
|
GtkWidget *box = yon_gtk_builder_get_widget(builder,"MainBox");
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(window->ReposBox),box,0,0,0);
|
|
|
|
|
@ -41,15 +57,6 @@ void yon_storage_config_update(storage_config_window *window){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gboolean yon_gtk_tree_iter_get_from_combo_box_id(GtkComboBox *combo, GtkTreeModel *model, GtkTreeIter *iter){
|
|
|
|
|
g_return_val_if_fail(GTK_IS_COMBO_BOX(combo),0);
|
|
|
|
|
g_return_val_if_fail(GTK_IS_TREE_MODEL(model),0);
|
|
|
|
|
const char *id = gtk_combo_box_get_active_id(combo);
|
|
|
|
|
if (yon_char_is_empty(id)) return 0;
|
|
|
|
|
gtk_tree_model_get_iter_from_string(model,iter,id);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// filechooser window section
|
|
|
|
|
|
|
|
|
|
file_chooser_window *yon_file_chooser_window_new(){
|
|
|
|
|
@ -268,7 +275,6 @@ storage_config_window *yon_storage_config_window_new(){
|
|
|
|
|
g_signal_connect(G_OBJECT(window->DeleteButton),"clicked",G_CALLBACK(on_storage_remove),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddRepoButton),"clicked",G_CALLBACK(on_repo_add),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(on_storage_changed),window);
|
|
|
|
|
gtk_combo_box_set_model(GTK_COMBO_BOX(window->StoragePathCombo),GTK_TREE_MODEL(window->storages_copy));
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
@ -277,9 +283,13 @@ void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){
|
|
|
|
|
storage_config_window *window = yon_storage_config_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,icon_path,"storage-configuration-window");
|
|
|
|
|
gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window));
|
|
|
|
|
window->StorageFilter = gtk_tree_model_filter_new(GTK_TREE_MODEL(window->storages_copy),NULL);
|
|
|
|
|
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(window->StorageFilter),yon_storage_filter_func,widgets,NULL);
|
|
|
|
|
gtk_combo_box_set_model(GTK_COMBO_BOX(window->StoragePathCombo),GTK_TREE_MODEL(window->StorageFilter));
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
for_iter(window->storages_copy,&iter){
|
|
|
|
|
char *storage;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&iter,3,&storage,-1);
|
|
|
|
|
char *id = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->storages_copy),&iter);
|
|
|
|
|
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),id,storage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dictionary *dict = NULL;
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
|
|
|
|
|
@ -292,9 +302,7 @@ void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//repo-add window section
|
|
|
|
|
gboolean yon_storage_filter_func(GtkTreeModel *model,
|
|
|
|
|
GtkTreeIter *iter,
|
|
|
|
|
gpointer data){
|
|
|
|
|
gboolean yon_storage_filter_func(GtkTreeModel *model,GtkTreeIter *iter,gpointer data){
|
|
|
|
|
GtkTreeIter parent;
|
|
|
|
|
if (gtk_tree_model_iter_parent(model, &parent, iter))
|
|
|
|
|
return 0;
|
|
|
|
|
@ -636,14 +644,20 @@ void on_move_add_accept(GtkWidget *self, dictionary *dict){
|
|
|
|
|
for (int k=0;k<size;k++){
|
|
|
|
|
if (strstr(files[k],".pkg.tar")&&!strstr(files[k],".sig")){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int temp_size;
|
|
|
|
|
config_str name = yon_config_load(yon_get_package_name_from_filename(files[k]),&temp_size);
|
|
|
|
|
yon_char_remove_last_symbol(name[0],'\n');
|
|
|
|
|
gtk_list_store_append(window->PackagesList,&iter);
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&iter,2,files[k],-1);
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,files[k],-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int temp_size;
|
|
|
|
|
config_str name = yon_config_load(yon_get_package_name_from_filename(path),&temp_size);
|
|
|
|
|
yon_char_remove_last_symbol(name[0],'\n');
|
|
|
|
|
gtk_list_store_append(window->PackagesList,&iter);
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&iter,2,path,-1);
|
|
|
|
|
gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,path,-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -672,7 +686,7 @@ void on_move_add_package(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),GTK_TREE_MODEL(window->tree_copy),&iter);
|
|
|
|
|
char *target;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&target,-1);
|
|
|
|
|
yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->MoveSourceStorageEntry),GTK_TREE_MODEL(window->tree_copy),&itar);
|
|
|
|
|
yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->ArchitectureCombo),GTK_TREE_MODEL(window->tree_copy),&itar);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&dialog->root_path,-1);
|
|
|
|
|
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->FileChooserWidget),target);
|
|
|
|
|
|
|
|
|
|
@ -761,10 +775,45 @@ void on_move_clicked(GtkWidget *self, main_window *widgets){
|
|
|
|
|
gtk_widget_show(window->MainWindow);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_remove_add_package(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))>-1){
|
|
|
|
|
file_chooser_window *dialog = yon_file_chooser_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow");
|
|
|
|
|
GtkFileFilter *filter = gtk_file_filter_new();
|
|
|
|
|
gtk_file_filter_add_pattern(filter,"*.pkg.tar*[^.sig]");
|
|
|
|
|
gtk_file_filter_set_name(filter,"*.pkg.tar.*");
|
|
|
|
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->FileChooserWidget),filter);
|
|
|
|
|
GtkTreeIter iter,itar;
|
|
|
|
|
yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->ArchitectureCombo),GTK_TREE_MODEL(window->tree_copy),&iter);
|
|
|
|
|
char *target;
|
|
|
|
|
int temp_size=0;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&target,-1);
|
|
|
|
|
yon_gtk_tree_iter_get_from_combo_box_id(GTK_COMBO_BOX(window->ArchitectureCombo),GTK_TREE_MODEL(window->tree_copy),&itar);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&itar,3,&dialog->root_path,-1);
|
|
|
|
|
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->FileChooserWidget),target);
|
|
|
|
|
|
|
|
|
|
dictionary *dict = NULL;
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
|
|
|
|
|
yon_dictionary_add_or_create_if_exists_with_data(dict,"dialog",dialog);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"current-folder-changed",G_CALLBACK(on_folder_changed),dialog);
|
|
|
|
|
g_signal_connect(G_OBJECT(dialog->ChooseButton),"clicked",G_CALLBACK(on_move_add_accept),dict);
|
|
|
|
|
gtk_widget_show(dialog->Window);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_remove_arch_selection_changed(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))==-1){
|
|
|
|
|
gtk_widget_set_sensitive(window->AddPackageButton,0);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_widget_set_sensitive(window->AddPackageButton,1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_remove_accept(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
|
|
|
|
|
const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
|
|
|
|
|
char *storage_path;
|
|
|
|
|
char *repo = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
|
|
|
|
|
char *arch = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
|
|
|
|
|
@ -772,9 +821,6 @@ void on_remove_accept(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
if (!yon_char_is_empty(storage_id)){
|
|
|
|
|
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->tree_copy),&iter,storage_id);
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&storage_path,-1);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
int size;
|
|
|
|
|
config_str packages=NULL;
|
|
|
|
|
for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){
|
|
|
|
|
@ -788,6 +834,7 @@ void on_remove_accept(GtkWidget *self, repo_add_window *window){
|
|
|
|
|
system(command);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_remove_clicked(GtkWidget *self, main_window *widgets){
|
|
|
|
|
repo_add_window *window = yon_repo_add_window_new();
|
|
|
|
|
@ -804,9 +851,9 @@ void on_remove_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_add_target_package_selection_changed),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_move_add_package),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->ArchitectureCombo),"changed",G_CALLBACK(on_remove_arch_selection_changed),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->AddPackageButton),"clicked",G_CALLBACK(on_remove_add_package),window);
|
|
|
|
|
g_signal_connect(G_OBJECT(window->RemoveButton),"clicked",G_CALLBACK(on_move_remove_package),window);
|
|
|
|
|
gtk_widget_show(window->MainWindow);
|
|
|
|
|
}
|
|
|
|
|
|