WIP Storage configuration window

pull/104/head
parent 9a7869a4de
commit e9df273e48

@ -1,5 +1,8 @@
#include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
void yon_arch_sturct_free_full(arch_struct *arch);
void yon_repo_sturct_free_full(repo_struct *repo);
void yon_storage_fill_repos(storage_struct *storage, config_str repos, int repos_size){ void yon_storage_fill_repos(storage_struct *storage, config_str repos, int repos_size){
for (int i=0;i<repos_size;i++){ for (int i=0;i<repos_size;i++){
repo_struct *repo = yon_repo_struct_new(); repo_struct *repo = yon_repo_struct_new();
@ -11,6 +14,17 @@ void yon_storage_fill_repos(storage_struct *storage, config_str repos, int repos
} }
} }
void yon_storage_sturct_free_full(storage_struct *storage){
if (!yon_char_is_empty(storage->name)) free(storage->name);
if (!yon_char_is_empty(storage->path)) free(storage->path);
GList *repos = g_hash_table_get_values(storage->repos);
GList *iter;
for (iter=repos;iter;iter=iter->next){
yon_repo_sturct_free_full((repo_struct*)iter->data);
}
free(storage);
}
storage_struct *yon_storage_struct_new(){ storage_struct *yon_storage_struct_new(){
storage_struct *storage = malloc(sizeof(storage_struct)); storage_struct *storage = malloc(sizeof(storage_struct));
storage->name=NULL; storage->name=NULL;
@ -36,6 +50,18 @@ void yon_repo_fill_archs(repo_struct *repo){
} }
} }
void yon_repo_sturct_free_full(repo_struct *repo){
if (!yon_char_is_empty(repo->name)) free(repo->name);
if (!yon_char_is_empty(repo->path)) free(repo->path);
if (!yon_char_is_empty(repo->storage_path)) free(repo->storage_path);
GList *archs = g_hash_table_get_values(repo->archs);
GList *iter;
for (iter=archs;iter;iter=iter->next){
yon_arch_sturct_free_full((arch_struct*)iter->data);
}
free(repo);
}
repo_struct *yon_repo_struct_new(){ repo_struct *yon_repo_struct_new(){
repo_struct *storage = malloc(sizeof(repo_struct)); repo_struct *storage = malloc(sizeof(repo_struct));
storage->name=NULL; storage->name=NULL;
@ -59,6 +85,18 @@ void yon_arch_fill_packages(arch_struct *arch){
} }
} }
void yon_arch_sturct_free_full(arch_struct *arch){
if (!yon_char_is_empty(arch->name)) free(arch->name);
if (!yon_char_is_empty(arch->path)) free(arch->path);
if (!yon_char_is_empty(arch->storage_path)) free(arch->storage_path);
GList *archs = g_hash_table_get_values(arch->packages);
GList *iter;
for (iter=archs;iter;iter=iter->next){
free(iter->data);
}
free(arch);
}
arch_struct *yon_arch_struct_new(){ arch_struct *yon_arch_struct_new(){
arch_struct *storage = malloc(sizeof(arch_struct)); arch_struct *storage = malloc(sizeof(arch_struct));
storage->name=NULL; storage->name=NULL;
@ -68,3 +106,72 @@ arch_struct *yon_arch_struct_new(){
storage->packages = g_hash_table_new(g_str_hash,g_str_equal); storage->packages = g_hash_table_new(g_str_hash,g_str_equal);
return storage; return storage;
} }
void yon_package_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){
GList *list = g_hash_table_get_keys(source_hash);
GList *iter;
for (iter = list;iter;iter=iter->next){
char *key = (char*)iter->data;
char *package_name = g_hash_table_lookup(source_hash,key);
g_hash_table_insert(target_hash,key,yon_char_new(package_name));
}
}
arch_struct *yon_arch_copy_full(arch_struct *repo){
arch_struct *copy = yon_arch_struct_new();
copy->name=yon_char_new(repo->name);
copy->path=yon_char_new(repo->name);
copy->storage_path=yon_char_new(repo->storage_path);
copy->repo_name=yon_char_new(repo->repo_name);
yon_package_hash_table_clone(repo->packages,copy->packages);
return copy;
}
void yon_arch_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){
GList *list = g_hash_table_get_values(source_hash);
GList *iter;
for (iter = list;iter;iter=iter->next){
arch_struct *storage = (arch_struct*)iter->data;
arch_struct *storage_copy = yon_arch_copy_full(storage);
g_hash_table_insert(target_hash,storage_copy->name,storage_copy);
}
}
repo_struct *yon_repo_copy_full(repo_struct *repo){
repo_struct *copy = yon_repo_struct_new();
copy->name=yon_char_new(repo->name);
copy->path=yon_char_new(repo->name);
copy->storage_path=yon_char_new(repo->storage_path);
copy->sign_status=repo->sign_status;
yon_arch_hash_table_clone(repo->archs,copy->archs);
return copy;
}
void yon_repo_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){
GList *list = g_hash_table_get_values(source_hash);
GList *iter;
for (iter = list;iter;iter=iter->next){
repo_struct *storage = (repo_struct*)iter->data;
repo_struct *storage_copy = yon_repo_copy_full(storage);
g_hash_table_insert(target_hash,storage_copy->name,storage_copy);
}
}
storage_struct *yon_storage_copy_full(storage_struct *storage){
storage_struct *copy = yon_storage_struct_new();
copy->name=yon_char_new(storage->name);
copy->path=yon_char_new(storage->name);
copy->sign_status=storage->sign_status;
yon_repo_hash_table_clone(storage->repos,copy->repos);
return copy;
}
void yon_storage_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash){
GList *list = g_hash_table_get_values(source_hash);
GList *iter;
for (iter = list;iter;iter=iter->next){
storage_struct *storage = (storage_struct*)iter->data;
storage_struct *storage_copy = yon_storage_copy_full(storage);
g_hash_table_insert(target_hash,storage_copy->path,storage_copy);
}
}

@ -1,75 +1,53 @@
#include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
void on_repo_signed(){ void on_repo_signed(GtkWidget *self, storage_repo_block *block){
storage_config_window *window = g_object_get_data(G_OBJECT(self),"window");
const char *sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(block->SignatureCombo));
if (!yon_char_is_empty(block->sign_request)) free(block->sign_request);
block->sign_request = yon_char_new(sign);
} }
void on_repo_removed(GtkWidget *self,storage_config_window *window){ void on_repo_removed(GtkWidget *self,storage_repo_block *block){
GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self))); storage_config_window *window = g_object_get_data(G_OBJECT(self),"window");
char *repo = (char*)gtk_entry_get_text(GTK_ENTRY(g_list_nth_data(list,0))); const char *storage_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
GtkTreeIter iter, itar; storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_id);
char *storage; if (g_hash_table_lookup(storage->repos,block->repo_name)){
char *id = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); g_hash_table_remove(storage->repos,block->repo_name);
if (!yon_char_is_empty(id)){ gtk_widget_destroy(block->MainBox);
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&iter,id); yon_storage_repo_block_destroy(block);
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);
} }
// void on_repo_sign_changed(GtkWidget *self, storage_repo_block *block){
// GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_widget_get_parent(self)));
// const char *sign = gtk_combo_box_get_active_id(GTK_COMBO_BOX(g_list_nth_data(list,2)));
// char *target_repo = (char*)gtk_entry_get_text(GTK_ENTRY(g_list_nth_data(list,0)));
// if (!yon_char_is_empty(target_repo)){
// GtkTreeIter iter,itar;
// int size;
// char *storage_path;
// int found = yon_char_parsed_check_exist(repos,size,target_repo);
// if (found>-1){
// char *child_id = yon_char_unite((char*)id,":",yon_char_from_int(found),NULL);
// if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&itar,child_id)){
// if (!yon_char_is_empty(sign)){
// gtk_tree_store_set(window->storages_copy,&itar,6,1,5,sign,-1);
// if (system(yon_debug_output("%s\n",yon_sign_repo(storage_path,target_repo,sign)))){
// gtk_combo_box_set_active(GTK_COMBO_BOX((GtkWidget*)g_list_nth_data(list,2)),0);
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),REPO_SIGN_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// }
// }else
// gtk_tree_store_set(window->storages_copy,&itar,6,-1,5,NULL,-1);
// }
// }
// }
// }
storage_repo_block *yon_storage_repo_block_new(){ storage_repo_block *yon_storage_repo_block_new(){
storage_repo_block *block = malloc(sizeof(storage_repo_block)); storage_repo_block *block = malloc(sizeof(storage_repo_block));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_block); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_block);
block->MainBox = yon_gtk_builder_get_widget(builder,"MainBox"); block->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
block->SignatureCombo = yon_gtk_builder_get_widget(builder,"SignatureCombo"); block->SignatureCombo = yon_gtk_builder_get_widget(builder,"SignatureCombo");
block->SignatureButton = yon_gtk_builder_get_widget(builder,"SignatureButton");
block->RepoNameEntry = yon_gtk_builder_get_widget(builder,"RepoNameEntry"); block->RepoNameEntry = yon_gtk_builder_get_widget(builder,"RepoNameEntry");
block->RepoRemoveButton = yon_gtk_builder_get_widget(builder,"RepoRemoveButton"); block->RepoRemoveButton = yon_gtk_builder_get_widget(builder,"RepoRemoveButton");
block->repo_name=NULL; block->repo_name=NULL;
block->storage_path=NULL; block->storage_path=NULL;
block->sign_request=NULL;
// g_signal_connect(block->SignatureButton,"clicked",G_CALLBACK(on_repo_signed),block); g_object_set_data(G_OBJECT(block->MainBox),"repo_block",block);
// g_signal_connect(block->RepoRemoveButton,"clicked",G_CALLBACK(on_repo_removed),block); g_object_set_data(G_OBJECT(block->SignatureCombo),"repo_block",block);
// g_signal_connect(block->SignatureButton,"clicked",G_CALLBACK(on_repo_sign_changed),block); g_object_set_data(G_OBJECT(block->RepoRemoveButton),"repo_block",block);
g_object_set_data(G_OBJECT(block->MainBox),"block_data",block);
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(block->SignatureCombo)); yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(block->SignatureCombo));
gtk_combo_box_set_active(GTK_COMBO_BOX(block->SignatureCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(block->SignatureCombo),0);
g_signal_connect(block->SignatureCombo,"changed",G_CALLBACK(on_repo_signed),block);
g_signal_connect(block->RepoRemoveButton,"clicked",G_CALLBACK(on_repo_removed),block);
return block;
}
void yon_storage_repo_block_destroy(storage_repo_block *block){
if (!yon_char_is_empty(block->repo_name)) free(block->repo_name);
if (!yon_char_is_empty(block->storage_path)) free(block->storage_path);
free(block);
} }

@ -1,208 +1,119 @@
// #include "ubl-settings-repomanager.h" #include "ubl-settings-repomanager.h"
// // storage-configure window section // // storage-configure window section
// void on_storage_open(GtkWidget *self, storage_config_window *window){ void on_storage_open(GtkWidget *self, storage_config_window *window){
// GtkWidget *dialog = gtk_file_chooser_dialog_new(CHOSE_FOLDER_TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,CLOSE_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
// yon_gtk_window_setup(GTK_WINDOW(dialog),GTK_WINDOW(window->MainWindow),CHOSE_FOLDER_TITLE_LABEL,icon_path,"file_chooser"); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
// int responce = gtk_dialog_run(GTK_DIALOG(dialog)); if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
// if (responce == GTK_RESPONSE_ACCEPT){ char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->MainFileChooser));
// char *path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); storage_struct *storage = yon_storage_struct_new();
// if (!yon_char_is_empty(path)){ storage->path=dialog->last_success_selection;
// int size; storage->name = yon_char_new(storage->path);
// config_str files = yon_file_list_dirs(path,&size); free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/')));
// if (!files){ g_hash_table_insert(window->storages_copy,storage->path,storage);
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_FOLDER_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path);
// gtk_widget_destroy(dialog);
// return; }
// } else { }
// yon_char_parsed_free(files,size);
// GtkTreeIter iter, itar; void on_storage_create(GtkWidget *self, storage_config_window *window){
// gtk_tree_store_append(window->storages_copy,&iter,NULL); filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
// char *name = yon_char_new(path); if (yon_file_chooser_start(dialog)==GTK_RESPONSE_APPLY){
// free(yon_char_divide(name,yon_char_find_last(name,'/'))); storage_struct *storage = yon_storage_struct_new();
// gtk_tree_store_set(window->storages_copy,&iter,2,name,3,path,-1); storage->path=dialog->last_success_selection;
// gtk_entry_set_text(GTK_ENTRY(window->AddEntry),""); storage->name = yon_char_new(storage->path);
// char *iterpath = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->storages_copy),&iter); free(yon_char_divide(storage->name,yon_char_find_last(storage->name,'/')));
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),iterpath,path); g_hash_table_insert(window->storages_copy,storage->path,storage);
// char *repos=NULL; gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage->path,storage->path);
// int repos_size=0; }
// g_signal_handlers_block_by_func(G_OBJECT(window->StoragePathCombo),on_storage_changed,window); }
// yon_gtk_combo_box_text_find(window->StoragePathCombo,path);
// g_signal_handlers_unblock_by_func(G_OBJECT(window->StoragePathCombo),on_storage_changed,window); void on_storage_disable(GtkWidget *self, storage_config_window *window){
// yon_window_config_add_instant_parameter(path,"storage_info","",YON_TYPE_STRING); const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// config_str repos_list = yon_file_list_dirs(path,&repos_size); storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target);
// for (int i=0;i<repos_size;i++){ if (storage){
// if (strcmp(repos_list[i],"pool")){ gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo)));
// char *render_name = yon_char_new(repos_list[i]); gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0);
// free(yon_char_divide(render_name,yon_char_find_last(render_name,'/'))); g_hash_table_remove(window->storages_copy,storage_target);
// gtk_entry_set_text(GTK_ENTRY(window->AddEntry),render_name); yon_storage_sturct_free_full(storage);
// on_repo_add(self,window); }
// free(render_name); }
// }
// } void on_storage_remove(GtkWidget *self, storage_config_window *window){
// yon_char_parsed_free(repos_list,repos_size); const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// } storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target);
if (storage){
// } gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo)));
// } gtk_combo_box_set_active(GTK_COMBO_BOX(window->StoragePathCombo),0);
// yon_storage_config_update(window); g_hash_table_remove(window->storages_copy,storage_target);
// gtk_widget_destroy(dialog); yon_storage_sturct_free_full(storage);
// } yon_char_parsed_add_or_create_if_exists(window->delete_storages,&window->delete_storages_size,(char*)storage_target);
}
// void on_storage_create(GtkWidget *self, storage_config_window *window){ }
// GtkWidget *dialog = gtk_file_chooser_dialog_new(CHOSE_FOLDER_TITLE_LABEL,GTK_WINDOW(window->MainWindow),GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,CLOSE_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
// yon_gtk_window_setup(GTK_WINDOW(dialog),GTK_WINDOW(window->MainWindow),CHOSE_FOLDER_TITLE_LABEL,icon_path,"file_chooser"); void on_repo_add(GtkWidget *self, storage_config_window *window){
// int responce = gtk_dialog_run(GTK_DIALOG(dialog)); const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->AddEntry));
// if (responce == GTK_RESPONSE_ACCEPT){ if (yon_char_is_empty(repo_name)){
// char *path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// if (!yon_char_is_empty(path)){ yon_ubl_status_highlight_incorrect(window->AddEntry);
// int size; return;
// config_str files = yon_file_list_dirs(path,&size); }
// if (files){ const char *storage_target = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),FILES_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); storage_struct *storage = g_hash_table_lookup(window->storages_copy,storage_target);
// gtk_widget_destroy(dialog); if (g_hash_table_lookup(storage->repos,repo_name)){
// return; yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ALREADY_EXIST_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// } else { yon_ubl_status_highlight_incorrect(window->AddEntry);
// yon_char_parsed_free(files,size); return;
// GtkTreeIter iter; }
// gtk_tree_store_append(window->storages_copy,&iter,NULL); char *new_repo = yon_char_new(repo_name);
// char *name = yon_char_new(path); repo_struct *repo = yon_repo_struct_new();
// free(yon_char_divide(name,yon_char_find_last(name,'/'))); storage_repo_block *block = yon_storage_repo_block_new();
// gtk_tree_store_set(window->storages_copy,&iter,2,name,3,path,-1); g_object_set_data(G_OBJECT(block->SignatureCombo),"repo_storage",repo);
// char *iterpath = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->storages_copy),&iter); g_object_set_data(G_OBJECT(block->SignatureCombo),"window",window);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),iterpath,path); g_object_set_data(G_OBJECT(block->RepoRemoveButton),"window",window);
// g_signal_handlers_block_by_func(G_OBJECT(window->StoragePathCombo),on_storage_changed,window); repo->name=new_repo;
// yon_gtk_combo_box_text_find(window->StoragePathCombo,path); block->repo_name=new_repo;
// g_signal_handlers_unblock_by_func(G_OBJECT(window->StoragePathCombo),on_storage_changed,window); repo->path = yon_char_unite(storage_target,"/",new_repo,NULL);
// gtk_entry_set_text(GTK_ENTRY(window->AddEntry),""); repo->storage_path = yon_char_new(storage_target);
// yon_window_config_add_instant_parameter(path,"storage_info","",YON_TYPE_STRING); gtk_entry_set_text(GTK_ENTRY(block->RepoNameEntry),new_repo);
// } gtk_box_pack_start(GTK_BOX(window->ReposBox),block->MainBox,0,0,0);
// } g_hash_table_insert(storage->repos,repo->name,repo);
// } gtk_entry_set_text(GTK_ENTRY(window->AddEntry),"");
// yon_storage_config_update(window); }
// gtk_widget_destroy(dialog);
// } void yon_storage_config_update(storage_config_window *window){
GList *children = gtk_container_get_children(GTK_CONTAINER(window->ReposBox));
// void on_storage_disable(GtkWidget *self, storage_config_window *window){ if (children){
// dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); GList *iter;
// data->action_text=DISABLE_CONFIRMATION_LABEL; for(iter=children;iter;iter=iter->next){
// GtkTreeIter iter,itar; gtk_widget_destroy(GTK_WIDGET(iter->data));
// if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(window->StoragePathCombo),&iter)){ }
// if (yon_confirmation_dialog_call(self,data)){ }
// char *storage; const char *active = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo)); if (active){
// if (id){ storage_struct *storage = g_hash_table_lookup(window->storages_copy,active);
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&itar,id); GList *repos = g_hash_table_get_values(storage->repos);
// gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,3,&storage,-1); if (repos){
// char *repos; GList *iter;
// yon_window_config_get_parameter("storage_info",storage,&repos,YON_TYPE_STRING); for (iter = repos;iter;iter=iter->next){
// int repo_size; repo_struct *cur_repo = (repo_struct*)iter->data;
// config_str repo_list = yon_char_parse(repos,&repo_size,","); storage_repo_block *cur_block = NULL;
// for (int i=0;i<repo_size;i++){ cur_block = yon_storage_repo_block_new();
// yon_window_config_erase_instant_parameter(repo_list[i],"repo_info"); g_object_set_data(G_OBJECT(cur_block->SignatureCombo),"repo_storage",cur_repo);
// } g_object_set_data(G_OBJECT(cur_block->SignatureCombo),"window",window);
// if (repo_size) g_object_set_data(G_OBJECT(cur_block->RepoRemoveButton),"window",window);
// yon_char_parsed_free(repo_list,repo_size); cur_block->repo_name=yon_char_new(cur_repo->name);
// yon_window_config_erase_instant_parameter(storage,"storage_info"); gtk_entry_set_text(GTK_ENTRY(cur_block->RepoNameEntry),cur_repo->name);
// gtk_tree_store_remove(window->storages_copy,&itar); gtk_box_pack_start(GTK_BOX(window->ReposBox),cur_block->MainBox,0,0,0);
// gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo))); }
// } }
// } }
// yon_storage_config_update(window); }
// }
// } void on_storage_accept(GtkWidget *self, dictionary *dict){
// void on_storage_remove(GtkWidget *self, storage_config_window *window){
// dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
// data->action_text=REMOVE_CONFIRMATION_LABEL;
// if (yon_confirmation_dialog_call(self,data)){
// GtkTreeIter itar;
// char *storage;
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// if (id){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&itar,id);
// gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,3,&storage,-1);
// char *repos;
// yon_window_config_get_parameter("storage_info",storage,&repos,YON_TYPE_STRING);
// int repo_size;
// config_str repo_list = yon_char_parse(repos,&repo_size,",");
// for (int i=0;i<repo_size;i++){
// yon_window_config_erase_instant_parameter(repo_list[i],"repo_info");
// }
// if (repo_size)
// yon_char_parsed_free(repo_list,repo_size);
// yon_window_config_erase_instant_parameter(storage,"storage_info");
// yon_dir_remove(storage);
// gtk_tree_store_remove(window->storages_copy,&itar);
// gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),gtk_combo_box_get_active(GTK_COMBO_BOX(window->StoragePathCombo)));
// }
// }
// yon_storage_config_update(window);
// }
// void on_repo_add(GtkWidget *self, storage_config_window *window){
// char *new_repo = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->AddEntry)));
// gtk_entry_set_text(GTK_ENTRY(window->AddEntry),"");
// if (yon_char_is_empty(new_repo)){
// yon_ubl_status_highlight_incorrect(window->AddEntry);
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_NAME_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// return;
// }
// GtkTreeIter iter,itar, childiter;
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// if (id){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&itar,id);
// char *path;
// gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,3,&path,-1);
// char *child_path = yon_char_unite(path,"/",new_repo,NULL);
// gtk_tree_store_append(window->storages_copy,&childiter,&itar);
// gtk_tree_store_set(window->storages_copy,&childiter,2,new_repo,3,child_path,-1);
// yon_storage_config_update(window);
// char *old;
// yon_window_config_get_parameter("storage_info",path,&old,YON_TYPE_STRING);
// int old_repos_size;
// config_str old_repos_parsed = yon_char_parse(old,&old_repos_size,",");
// if (yon_char_parsed_check_exist(old_repos_parsed,old_repos_size,child_path)==-1){
// yon_char_parsed_add_or_create_if_exists(old_repos_parsed,&old_repos_size,child_path);
// }
// yon_window_config_add_instant_parameter(path,"storage_info",yon_char_parsed_to_string(old_repos_parsed,old_repos_size,","),YON_TYPE_STRING);
// yon_char_parsed_free(old_repos_parsed,old_repos_size);
// yon_debug_output("%s\n",create_storage_command(path, new_repo));
// yon_launch(create_storage_command(path, new_repo));
// int size;
// config_str dirs = yon_file_list_dirs(child_path,&size);
// for (int i=0;i<size;i++){
// char *arch_path = yon_char_unite(child_path,"/",dirs[i],NULL);
// gtk_tree_store_append(window->storages_copy,&iter,&childiter);
// gtk_tree_store_set(window->storages_copy,&iter,2,dirs[i],3,arch_path,-1);
// if (!yon_char_is_empty(arch_path)&&!access(arch_path,F_OK)){
// config_str final = NULL;
// int final_size=0;
// DIR *current_dir = opendir(arch_path);
// struct dirent* cur_dir;
// while ((cur_dir=readdir(current_dir))){
// if (strlen(cur_dir->d_name)>8){
// char *extension = yon_char_new(cur_dir->d_name);
// free(yon_char_divide(extension,yon_char_find_last(extension,'.')-4));
// if ((strcmp(cur_dir->d_name, ".") && strcmp(cur_dir->d_name, ".."))&&strstr(extension,"tar.")){
// yon_char_parsed_add_or_create_if_exists(final,&final_size,cur_dir->d_name);
// }
// }
// }
// closedir(current_dir);
// if (size)
// yon_window_config_add_instant_parameter(arch_path,"package_info",yon_char_parsed_to_string(final,final_size,","),YON_TYPE_STRING);
// }
// }
// yon_char_parsed_free(dirs,size);
// }
// free(new_repo);
// }
// void on_storage_accept(GtkWidget *self, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); // main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// storage_config_window *window = yon_dictionary_get_data(dict->first->next,storage_config_window*); // storage_config_window *window = yon_dictionary_get_data(dict->first->next,storage_config_window*);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL); // gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL);
@ -221,59 +132,59 @@
// on_subwindow_close(self); // on_subwindow_close(self);
// yon_config_load_update(widgets); // yon_config_load_update(widgets);
// yon_ubl_status_box_render(STORAGES_SAVED_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); // yon_ubl_status_box_render(STORAGES_SAVED_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// } }
// void on_storage_changed(GtkWidget *self, storage_config_window *window){ void on_storage_changed(GtkWidget *self, storage_config_window *window){
// yon_storage_config_update(window); yon_storage_config_update(window);
// } }
// storage_config_window *yon_storage_config_window_new(){ storage_config_window *yon_storage_config_window_new(){
// storage_config_window *window = malloc(sizeof(storage_config_window)); storage_config_window *window = malloc(sizeof(storage_config_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_storage_config); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_storage_config);
// window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow"); window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->StoragePathCombo = yon_gtk_builder_get_widget(builder,"StoragePathCombo"); window->StoragePathCombo = yon_gtk_builder_get_widget(builder,"StoragePathCombo");
// window->OpenExistingButton = yon_gtk_builder_get_widget(builder,"OpenExistingButton"); window->OpenExistingButton = yon_gtk_builder_get_widget(builder,"OpenExistingButton");
// window->CreateNewButton = yon_gtk_builder_get_widget(builder,"CreateNewButton"); window->CreateNewButton = yon_gtk_builder_get_widget(builder,"CreateNewButton");
// window->DisableButton = yon_gtk_builder_get_widget(builder,"DisableButton"); window->DisableButton = yon_gtk_builder_get_widget(builder,"DisableButton");
// window->DeleteButton = yon_gtk_builder_get_widget(builder,"DeleteButton"); window->DeleteButton = yon_gtk_builder_get_widget(builder,"DeleteButton");
// window->ReposBox = yon_gtk_builder_get_widget(builder,"ReposBox"); window->ReposBox = yon_gtk_builder_get_widget(builder,"ReposBox");
// window->AddEntry = yon_gtk_builder_get_widget(builder,"AddEntry"); window->AddEntry = yon_gtk_builder_get_widget(builder,"AddEntry");
// window->AddRepoButton = yon_gtk_builder_get_widget(builder,"AddRepoButton"); window->AddRepoButton = yon_gtk_builder_get_widget(builder,"AddRepoButton");
// window->storages_copy = gtk_tree_store_new(7,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_BOOLEAN,G_TYPE_STRING,G_TYPE_INT); window->storages_copy = g_hash_table_new(g_str_hash,g_str_equal);
// yon_gtk_tree_store_copy_full(main_config.tree_store,window->storages_copy); window->delete_storages=NULL;
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); window->delete_storages_size=0;
// g_signal_connect(G_OBJECT(window->OpenExistingButton),"clicked",G_CALLBACK(on_storage_open),window);
// g_signal_connect(G_OBJECT(window->CreateNewButton),"clicked",G_CALLBACK(on_storage_create),window); yon_storage_hash_table_clone(main_config.storages,window->storages_copy);
// g_signal_connect(G_OBJECT(window->DisableButton),"clicked",G_CALLBACK(on_storage_disable),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// g_signal_connect(G_OBJECT(window->DeleteButton),"clicked",G_CALLBACK(on_storage_remove),window); g_signal_connect(G_OBJECT(window->OpenExistingButton),"clicked",G_CALLBACK(on_storage_open),window);
// g_signal_connect(G_OBJECT(window->AddRepoButton),"clicked",G_CALLBACK(on_repo_add),window); g_signal_connect(G_OBJECT(window->CreateNewButton),"clicked",G_CALLBACK(on_storage_create),window);
// g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(on_storage_changed),window); // g_signal_connect(G_OBJECT(window->DisableButton),"clicked",G_CALLBACK(on_storage_disable),window);
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);
// return window; g_signal_connect(G_OBJECT(window->StoragePathCombo),"changed",G_CALLBACK(on_storage_changed),window);
// }
// void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){ return window;
// storage_config_window *window = yon_storage_config_window_new(); }
// yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),MANAGE_STORAGES_TITLE_LABEL,icon_path,"storage-configuration-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),MANAGE_STORAGES_TITLE_LABEL); void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){
// gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window)); storage_config_window *window = yon_storage_config_window_new();
// GtkTreeIter iter,itar; yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),MANAGE_STORAGES_TITLE_LABEL,icon_path,"storage-configuration-window");
// for_iter(window->storages_copy,&iter){ GtkTreeIter iter,itar;
// char *storage; GList *storages = g_hash_table_get_values(main_config.storages);
// gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&iter,3,&storage,-1); GList *listiter;
for (listiter = storages;listiter;listiter=listiter->next){
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),storage,storage); storage_struct *cur_storage = (storage_struct*)listiter->data;
// } gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StoragePathCombo),cur_storage->name,cur_storage->path);
}
// dictionary *dict = NULL; dictionary *dict = NULL;
// yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
// yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
// g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_storage_accept),dict); // g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_storage_accept),dict);
// gtk_widget_show(window->MainWindow); gtk_widget_show(window->MainWindow);
// } }

@ -3,46 +3,6 @@
config main_config; config main_config;
// void yon_storage_config_update(storage_config_window *window){
// GList *children = gtk_container_get_children(GTK_CONTAINER(window->ReposBox));
// for (int i=0;i<g_list_length(children);i++){
// gtk_widget_destroy((GtkWidget*)g_list_nth_data(children,i));
// }
// GtkTreeIter iter,itar;
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StoragePathCombo));
// if (id){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->storages_copy),&iter,id);
// 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),&itar)){
// char *storage = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->StoragePathCombo));
// char *repo;
// gtk_tree_model_get(GTK_TREE_MODEL(window->storages_copy),&itar,2,&repo,-1);
// storage_repo_block *block = yon_storage_repo_block_new();
// block->repo_name = yon_char_new(repo);
// block->storage_path = yon_char_new(storage);
// gtk_box_pack_start(GTK_BOX(window->ReposBox),block->MainBox,0,0,0);
// gtk_entry_set_text(GTK_ENTRY(block->RepoNameEntry),repo);
// int sign_size;
// char *command = yon_repo_get_signature(storage,repo);
// yon_debug_output("%s\n",command);
// config_str sign = yon_config_load(command,&sign_size);
// if (sign_size>0){
// yon_char_remove_last_symbol(sign[2],'\n');
// char *mail = strstr(sign[2],"\"");
// if (!yon_char_is_empty(mail)){
// char *email = yon_char_new(mail);
// yon_char_remove_brackets(email);
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(block->SignatureCombo),email);
// free(email);
// }
// yon_char_parsed_free(sign,sign_size);
// }
// }
// }
// }
// }
// // filechooser window section // // filechooser window section
// void on_file_chooser_entry_changed(GtkEntry *self, file_chooser_window *window){ // void on_file_chooser_entry_changed(GtkEntry *self, file_chooser_window *window){
@ -91,7 +51,7 @@ void config_init(){
main_config.tree_store=NULL; main_config.tree_store=NULL;
main_config.signs=NULL; main_config.signs=NULL;
main_config.signs_size=0; main_config.signs_size=0;
// yon_sign_list_update(); yon_sign_list_update();
main_config.last_selection = NULL; main_config.last_selection = NULL;
main_config.storages = g_hash_table_new(g_str_hash,g_str_equal); main_config.storages = g_hash_table_new(g_str_hash,g_str_equal);
} }
@ -354,28 +314,27 @@ void on_package_selection_changed(GtkWidget *self, main_window *widgets){
} }
} }
// void yon_combo_box_text_set_signs(GtkComboBoxText *target){ void yon_combo_box_text_set_signs(GtkComboBoxText *target){
// g_return_if_fail(GTK_IS_COMBO_BOX_TEXT(target)); g_return_if_fail(GTK_IS_COMBO_BOX_TEXT(target));
// gtk_combo_box_text_remove_all(target); gtk_combo_box_text_remove_all(target);
// gtk_combo_box_text_append_text(target,DO_NOT_SIGN_LABEL); gtk_combo_box_text_append_text(target,DO_NOT_SIGN_LABEL);
// for (int i=0;i<main_config.signs_size;i++){ for (int i=0;i<main_config.signs_size;i++){
// char *temp = yon_char_new(main_config.signs[i]); char *temp = main_config.signs[i];
// if (strstr(temp,"<")) int size;
// free(yon_char_divide_search(temp,"<",-1)); config_str parsed = yon_char_parse(temp,&size,";");
// if (strstr(temp,">")) char *text = yon_char_wrap_to_length_str(parsed[0],50);
// yon_char_remove_last_symbol(temp,'>'); gtk_combo_box_text_append(target,parsed[1],text);
// gtk_combo_box_text_append(target,temp,main_config.signs[i]); yon_char_parsed_free(parsed,size);
// free(temp); }
// } }
// }
// void yon_sign_list_update(){ void yon_sign_list_update(){
// if (main_config.signs&&main_config.signs_size) yon_char_parsed_free(main_config.signs,main_config.signs_size); if (main_config.signs&&main_config.signs_size) yon_char_parsed_free(main_config.signs,main_config.signs_size);
// main_config.signs = yon_config_load(get_gpg_keys_command,&main_config.signs_size); main_config.signs = yon_config_load(get_gpg_keys_command,&main_config.signs_size);
// for (int i=0;i<main_config.signs_size;i++){ for (int i=0;i<main_config.signs_size;i++){
// yon_char_remove_last_symbol(main_config.signs[i],'\n'); yon_char_remove_last_symbol(main_config.signs[i],'\n');
// } }
// } }
void on_ubl_settings_update_launch(){ void on_ubl_settings_update_launch(){
yon_launch_app_with_arguments(ubl_settings_update_command,NULL); yon_launch_app_with_arguments(ubl_settings_update_command,NULL);
@ -501,28 +460,6 @@ void on_repo_item_activate(GtkWidget *self, GtkTreePath *path, GtkTreeViewColumn
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeSelection *tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)); GtkTreeSelection *tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree));
gtk_tree_selection_get_selected(tree_selection,&model,&iter); gtk_tree_selection_get_selected(tree_selection,&model,&iter);
// storage_struct *target_struct;
// gtk_tree_model_get(model,&iter,7,&target_struct,-1);
// if (gtk_tree_model_iter_has_child(model,&iter)){
// GtkTreeModel *submodel;
// GtkTreeIter subiter;
// if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&submodel,&subiter)) return;
// char *target;
// gtk_tree_model_get(submodel,&subiter,1,&target,-1);
// GtkTreeIter childiter;
// gtk_tree_model_iter_children(model,&childiter, &iter);
// for_iter(model,&childiter){
// char *check_target;
// gtk_tree_model_get(model,&childiter,2,&check_target,-1);
// if (!strcmp(check_target,target)){
// GtkTreePath *path = gtk_tree_model_get_path(model,&iter);
// gtk_tree_selection_select_path(tree_selection,path);
// g_signal_emit_by_name(G_OBJECT(widgets->ReposTree),"cursor-changed",widgets,G_TYPE_NONE,NULL);
// }
// }
// }
if (gtk_tree_store_iter_depth(GTK_TREE_STORE(widgets->RepoList),&iter)<2){ if (gtk_tree_store_iter_depth(GTK_TREE_STORE(widgets->RepoList),&iter)<2){
char *path_id = gtk_tree_model_get_string_from_iter(model,&iter); char *path_id = gtk_tree_model_get_string_from_iter(model,&iter);
char *target_id = gtk_tree_path_to_string(path); char *target_id = gtk_tree_path_to_string(path);
@ -680,7 +617,7 @@ main_window *yon_main_window_complete(main_window *widgets){
// REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_rmb_remove),widgets, // REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_rmb_remove),widgets,
// NULL); // NULL);
// g_signal_connect(G_OBJECT(widgets->DBConfigurationButton),"clicked",G_CALLBACK(on_storage_configure_clicked),widgets); g_signal_connect(G_OBJECT(widgets->DBConfigurationButton),"clicked",G_CALLBACK(on_storage_configure_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets); // g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets); // g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets);
// g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets); // g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);

@ -83,7 +83,23 @@ typedef char* string;
#define yon_get_filename_from_package_name(target) yon_char_unite("find ${PATH} -maxdepth 1 -regextype egrep -regex \".*/",target,"-[^-]+-[^-]+-[^-]+\\.pkg\\.tar\\.[^-.]*\"",NULL) #define yon_get_filename_from_package_name(target) yon_char_unite("find ${PATH} -maxdepth 1 -regextype egrep -regex \".*/",target,"-[^-]+-[^-]+-[^-]+\\.pkg\\.tar\\.[^-.]*\"",NULL)
#define get_gpg_keys_command yon_char_unite(yon_ubl_check_root()==1 ? yon_char_unite("su - ",yon_ubl_root_user_get()," -c \"gpg --list-signatures\"",NULL):"gpg --list-signatures"," | grep '^uid' | cut -d' ' -f10,11,12,13- | sort -u |sed -e 's/[0-9]*-[0-9]*-[0-9]* //g'",NULL) #define get_gpg_keys_command "gpg --list-keys | awk ' \
/^pub/ { \
key=\"\"; \
getline; \
if (match($0, /[0-9A-F]{8,}/)) \
key=substr($0, RSTART, RLENGTH); \
} \
/^uid/ { \
$1=\"\"; sub(/^ +/, \"\"); \
if (match($0, /<[^>]+>/)) { \
email = substr($0, RSTART+1, RLENGTH-2); \
print $0 \";\" email; \
} else { \
print $0 \";\" key; \
} \
}'"
#define yon_sign_package(storage,repo,arch,target,sign) yon_char_unite("repo-manager add -r ''",repo,"'' -a '",arch,"' -d '", storage,"' -s '",sign,"' ",target,NULL) #define yon_sign_package(storage,repo,arch,target,sign) yon_char_unite("repo-manager add -r ''",repo,"'' -a '",arch,"' -d '", storage,"' -s '",sign,"' ",target,NULL)
#define yon_sign_repo(storage,repo,sign) yon_char_unite("repo-manager add -f -r ''",repo,"'' -d '", storage,"' --sign-repo='",sign,"'",NULL) #define yon_sign_repo(storage,repo,sign) yon_char_unite("repo-manager add -f -r ''",repo,"'' -d '", storage,"' --sign-repo='",sign,"'",NULL)
@ -215,9 +231,9 @@ typedef struct {
GtkWidget *AddEntry; GtkWidget *AddEntry;
GtkWidget *AddRepoButton; GtkWidget *AddRepoButton;
GtkWidget *TestTree; GtkWidget *TestTree;
GtkListStore *StorageList; GHashTable *storages_copy;
GtkTreeStore *storages_copy; int delete_storages_size;
GtkTreeModel *StorageFilter; config_str delete_storages;
} storage_config_window; } storage_config_window;
typedef struct { typedef struct {
@ -263,11 +279,11 @@ typedef struct {
GtkWidget *MainBox; GtkWidget *MainBox;
GtkWidget *RepoNameEntry; GtkWidget *RepoNameEntry;
GtkWidget *SignatureCombo; GtkWidget *SignatureCombo;
GtkWidget *SignatureButton;
GtkWidget *RepoRemoveButton; GtkWidget *RepoRemoveButton;
char *storage_path; char *storage_path;
char *repo_name; char *repo_name;
char *sign_request;
} storage_repo_block; } storage_repo_block;
@ -362,7 +378,7 @@ void on_storage_disable(GtkWidget *self, storage_config_window *window);
void on_storage_create(GtkWidget *self, storage_config_window *window); void on_storage_create(GtkWidget *self, storage_config_window *window);
void on_storage_open(GtkWidget *self, storage_config_window *window); void on_storage_open(GtkWidget *self, storage_config_window *window);
void on_repo_signed(); void on_repo_signed();
void on_repo_removed(GtkWidget *self,storage_config_window *window); void on_repo_removed(GtkWidget *self,storage_repo_block *block);
void on_repo_sign_changed(GtkWidget *self, storage_repo_block *block); void on_repo_sign_changed(GtkWidget *self, storage_repo_block *block);
void on_add_clicked(GtkWidget *self, main_window *widgets); void on_add_clicked(GtkWidget *self, main_window *widgets);
void on_rmb_move(GtkWidget *self, main_window *widgets); void on_rmb_move(GtkWidget *self, main_window *widgets);
@ -389,3 +405,6 @@ void yon_repo_tree_build_arch(char *key, arch_struct *arch, struct repo_tree_bui
void yon_interface_update(main_window *widgets); void yon_interface_update(main_window *widgets);
void yon_sublist_packages_build(char *key, char *file, main_window *widgets); void yon_sublist_packages_build(char *key, char *file, main_window *widgets);
void yon_sublist_build(char *key, storage_struct *storage, main_window *widgets); void yon_sublist_build(char *key, storage_struct *storage, main_window *widgets);
void yon_storage_repo_block_destroy(storage_repo_block *block);
void yon_storage_hash_table_clone(GHashTable *source_hash, GHashTable *target_hash);
void yon_storage_sturct_free_full(storage_struct *storage);

@ -206,6 +206,7 @@
<object class="GtkBox" id="ReposBox"> <object class="GtkBox" id="ReposBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-end">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
@ -222,6 +223,7 @@
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-end">10</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkEntry" id="AddEntry"> <object class="GtkEntry" id="AddEntry">

@ -3,11 +3,6 @@
<interface domain="ubl-settings-repomanager"> <interface domain="ubl-settings-repomanager">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-repomanager.css --> <!-- interface-css-provider-path ubl-settings-repomanager.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.key-symbolic</property>
</object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -53,23 +48,6 @@
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton" id="SignatureButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Sign repo</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child> <child>
<object class="GtkButton" id="RepoRemoveButton"> <object class="GtkButton" id="RepoRemoveButton">
<property name="visible">True</property> <property name="visible">True</property>

Loading…
Cancel
Save