pull/108/head
parent 7b42068aa6
commit c3ddc4df0a
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -77,6 +77,7 @@ set(SOURCE_FILES
ubl-settings-repomanager-remove.c
ubl-settings-repomanager-storage-list.c
ubl-settings-repomanager-storage-window.c
ubl-settings-repomanager-key.c
ubl-settings-repomanager.h
ubl-strings.h
)

@ -249,6 +249,28 @@ repo_add_window *yon_repo_add_window_new(){
return window;
}
void yon_add_window_add_chosen_packages(main_window *widgets, repo_add_window *window){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->RepoFileList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL,&iter)){
char *target, *path;
gtk_tree_model_get(model,&iter,1,&target,2,&path,-1);
gtk_list_store_append(window->PackagesList,&iter);
gtk_list_store_set(window->PackagesList,&iter,1,target,2,path,-1);
}
GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoPackagesTree)),NULL);
GList *liter;
if (list){
for (liter=list;liter;liter=liter->next){
gtk_tree_model_get_iter(model,&iter,(GtkTreePath*)liter->data);
char *target, *path;
gtk_tree_model_get(model,&iter,2,&target,-1);
gtk_list_store_append(window->PackagesList,&iter);
gtk_list_store_set(window->PackagesList,&iter,1,target,-1);
}
}
}
void on_add_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),ADD_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
@ -286,24 +308,6 @@ void on_add_clicked(GtkWidget *self, main_window *widgets){
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_add_window_set_selected(widgets,window);
GtkTreeModel *model;
GList *list = NULL;
char *full_path;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&iter)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&full_path,-1);
if (list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoPackagesTree)),&model)){
for (int i=0; i<g_list_length(list);i++){
GtkTreeIter itar;
char *path;
gtk_tree_model_get_iter(model, &iter,g_list_nth_data(list,i));
gtk_tree_model_get(model,&iter,1,&path,-1);
gtk_list_store_append(window->PackagesList,&itar);
char *temp = yon_char_unite(full_path,"/",path,NULL);
free(full_path);
full_path = temp;
gtk_list_store_set(window->PackagesList,&itar,1,path,2,full_path,-1);
}
}
}
// yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
}

@ -0,0 +1,173 @@
#include "ubl-settings-repomanager.h"
void on_calendar_open(GtkWidget *self,key_creation_window *window){
yon_calendar_popover_open(GTK_ENTRY(window->ExpireEntry),self);
}
void on_key_generate_accept(GtkWidget *self, key_creation_window* window){
const char *name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
const char *type = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
const char *email = gtk_entry_get_text(GTK_ENTRY(window->EmailEntry));
char *strength = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->KeyStrengthSpin)));
const char *comment = gtk_entry_get_text(GTK_ENTRY(window->CommentsEntry));
if (!yon_char_is_empty(name)&&strlen(name)<5){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_SHORT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->NameEntry);
return;
}
GtkWidget *highlight_target=NULL;
if (yon_char_is_empty(name)){
highlight_target=window->NameEntry;
} else if (yon_char_is_empty(type)){
highlight_target=window->EncryptionCombo;
} else if (yon_char_is_empty(email)){
highlight_target=window->EmailEntry;
} else if (yon_char_is_empty(strength)){
highlight_target=window->KeyStrengthSpin;
}
if (highlight_target){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(highlight_target);
return;
}
char *expire = NULL;
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ExpireCombo))==1){
GDateTime *datetime = g_date_time_new_from_unix_local(yon_calendar_get_last_date());
expire = g_date_time_format(datetime,"%Y%m%dT000000");
g_date_time_unref(datetime);
}
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
const char *password_confirm = gtk_entry_get_text(GTK_ENTRY(window->PasswordConfirmationEntry));
int ex_status=0;
if (yon_char_is_empty(password)&&yon_char_is_empty(password_confirm)){
yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password));
ex_status = system(yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password)));
} else if (!strcmp(password,password_confirm)){
yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password));
ex_status = system(yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password)));
} else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_INCORRECT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordConfirmationEntry);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
if (!ex_status)
yon_ubl_status_box_render(KEY_CREATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
else
yon_ubl_status_box_render(KEY_CREATION_FAILURE_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
gtk_widget_destroy(window->Window);
yon_sign_list_update();
}
key_creation_window *yon_key_creation_window_new(){
key_creation_window *window = malloc(sizeof(key_creation_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_key);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
window->EmailEntry = yon_gtk_builder_get_widget(builder,"EmailEntry");
window->CommentsEntry = yon_gtk_builder_get_widget(builder,"CommentsEntry");
window->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
window->KeyStrengthSpin = yon_gtk_builder_get_widget(builder,"KeyStrengthSpin");
window->ExpireCombo = yon_gtk_builder_get_widget(builder,"ExpireCombo");
window->ExpireEntry = yon_gtk_builder_get_widget(builder,"ExpireEntry");
window->ExpireButton = yon_gtk_builder_get_widget(builder,"ExpireButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->PasswordConfirmationEntry = yon_gtk_builder_get_widget(builder,"PasswordConfirmationEntry");
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordConfirmationEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireButton);
g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireEntry);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->ExpireButton),"clicked",G_CALLBACK(on_calendar_open),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_key_generate_accept),window);
int size;
config_str encription_keys = yon_file_open(key_encription_path,&size);
window->expire_time=0;
for (int i=1;i<size;i++){
yon_char_remove_last_symbol(encription_keys[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(encription_keys[i],&parsed_size,";");
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[2],parsed[0]);
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->EncryptionCombo),"RSA");
return window;
}
void on_key_clicked(GtkWidget *self, main_window *widgets){
key_creation_window *window = yon_key_creation_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEY_CREATION_TITLE_LABEL,icon_path,"key-create-window");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),KEY_CREATION_TITLE_LABEL);
gtk_widget_show(window->Window);
}
void on_sign_window_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
sign_window *window = yon_dictionary_get_data(dict->first->next,sign_window*);
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
char *arch;
char *repo;
char *storage;
char *signature = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->SignCombo));
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&arch,-1);
char *full_path = yon_char_new(arch);
repo = yon_char_divide(arch,yon_char_find_last(arch,'/'));
storage = yon_char_divide(repo,yon_char_find_last(repo,'/'));
storage = yon_char_append(storage,"/");
GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL);
char *targets = "";
for (int i=0;i<g_list_length(list);i++){
char *pack;
gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->RepoFileList),&iter,(GtkTreePath*)g_list_nth_data(list,i));
gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoFileList),&iter,2,&pack,-1);
char *temp = yon_char_unite(targets, " ", full_path,"/",pack,NULL);
if (!yon_char_is_empty(targets)) free(targets);
targets=temp;
}
if (!system(yon_debug_output("%s\n",yon_sign_package(storage,repo,arch,targets,signature)))){
yon_ubl_status_box_render(SIGN_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
}
on_subwindow_close(window->Window);
}
}
sign_window *yon_sign_window_new(){
sign_window *window = malloc(sizeof(sign_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_sign);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->SignCombo = yon_gtk_builder_get_widget(builder,"SignCombo");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->SignButton = yon_gtk_builder_get_widget(builder,"SignButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void on_packages_sign(GtkWidget *self, main_window *widgets){
sign_window *window = yon_sign_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),SIGNATURE_TITLE_LABEL,icon_path,"sign-window");
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->SignCombo));
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,"window",window);
g_signal_connect(G_OBJECT(window->SignButton),"clicked",G_CALLBACK(on_sign_window_accept),dict);
gtk_widget_show(window->Window);
}

@ -83,11 +83,12 @@ void on_move_add_accept(GtkWidget *self, dictionary *dict){
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');
char *full_path = yon_char_unite(packages[i],"/",files[k],NULL);
config_str name = yon_config_load(yon_get_package_name_from_filename(full_path),&temp_size);
if (name&&!yon_char_is_empty(name[0]))
yon_char_remove_last_symbol(name[0],'\n');
gtk_list_store_append(window->PackagesList,&iter);
gtk_list_store_set(window->PackagesList,&iter,1,name[0],2,full_path,-1);
gtk_list_store_set(window->PackagesList,&iter,1,name&&!yon_char_is_empty(name[0])?name[0]:"",2,full_path,-1);
free(full_path);
}
}
@ -159,7 +160,7 @@ void on_move_add_package(GtkWidget *self, repo_add_window *window){
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->MainFileChooser),"current-folder-changed",G_CALLBACK(on_folder_changed),dict);
yon_file_chooser_set_root(dialog,target);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
on_move_add_accept(self,dict);
}
@ -308,6 +309,7 @@ repo_add_window *on_move_clicked(GtkWidget *self, main_window *widgets){
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_move_accept),dict);
// g_signal_connect(G_OBJECT(window->MoveSourceRepoEntry),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_move_window_set_selected(widgets,window);
yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
return window;
}

@ -1,4 +1,4 @@
// #include "ubl-settings-repomanager.h"
#include "ubl-settings-repomanager.h"
// void on_remove_arch_selection_changed(GtkWidget *self, repo_add_window *window){
@ -9,126 +9,109 @@
// }
// }
// void on_remove_accept(GtkWidget *self, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
// GtkTreeModel *model;
// GtkTreeIter iter;
// 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));
// 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);
// int size=0;
// config_str packages=NULL;
// for_iter(GTK_TREE_MODEL(window->PackagesList),&iter){
// char *target;
// gtk_tree_model_get(GTK_TREE_MODEL(window->PackagesList),&iter,1,&target,-1);
// yon_char_parsed_add_or_create_if_exists(packages,&size,target);
// }
// if (size){
// char *sign = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// char *command;
// if (yon_char_is_empty(sign)){
// command = yon_delete_packages_command(storage_path,arch,repo,yon_char_parsed_to_string(packages,size," "));
// } else {
// command = yon_delete_packages_sign_command(storage_path,arch,repo,sign,yon_char_parsed_to_string(packages,size," "));
// }
// yon_debug_output("%s\n",command);
// if (!system(command)){
// yon_ubl_status_box_render(PACKAGES_REMOVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),NULL);
// gtk_tree_store_clear(widgets->RepoList);
// yon_gtk_tree_store_copy_full(window->tree_copy,widgets->RepoList);
// gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ReposTree),GTK_TREE_MODEL(widgets->RepoList));
// const char *id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->ArchitectureCombo));
// if (!yon_char_is_empty(id)){
// gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->RepoList),&iter,id);
// gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),gtk_tree_path_new_from_string(id));
// gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&iter);
// on_main_tree_selection_changed(NULL,widgets);
// }
// }
// yon_config_load_update(widgets);
// } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// return;
// }
// }else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// return;
// }
// gtk_widget_destroy(window->MainWindow);
// }
void on_remove_accept(GtkWidget *self, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
const char *storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
const char *repo = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->RepositoryCombo));
const char *arch = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->ArchitectureCombo));
const char *sign = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSignCombo));
// 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_new();
// yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow");
// gtk_label_set_text(GTK_LABEL(dialog->HeadLabel),CHOSE_PACKAGES_TITLE_LABEL);
// 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);
// g_signal_connect(G_OBJECT(dialog->FileChooserWidget),"file-activated",G_CALLBACK(on_file_chooser_file_activate),dict);
// gtk_widget_show(dialog->Window);
// }
// }
if (!yon_char_is_empty(storage_path)){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(window->PackagesList);
int size;
config_str packages=NULL;
for_iter(model,&iter){
char *target;
gtk_tree_model_get(model,&iter,2,&target,-1);
char *filename = yon_char_divide(target,yon_char_find_last(target,'/'));
yon_char_parsed_add_or_create_if_exists(packages,&size,target);
}
if (size){
char *final = yon_char_parsed_to_string(packages,size," ");
char *command = remove_packages_command(storage_path,arch,repo,final,sign);
if (system(yon_debug_output("%s\n",command))){
// repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets){
// repo_add_window *window = yon_repo_add_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),REMOVE_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGES_TITLE_LABEL);
// GtkTreeIter iter;
// for_iter (window->tree_copy,&iter){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(window->tree_copy),&iter,3,&current,-1);
// if (!yon_char_is_empty(current)){
// char *path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(window->tree_copy),&iter);
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),path,current);
// }
// }
// gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),REMOVE_PACKAGES_LABEL);
// yon_sign_list_update();
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
// gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
// gtk_button_set_label(GTK_BUTTON(window->AddButton),REMOVE_LABEL);
// 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,"window",window);
// 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);
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),dict);
// 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);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
// yon_add_window_set_selected(widgets,window);
// gtk_widget_show(window->MainWindow);
// return window;
// }
}
}
}
gtk_widget_destroy(window->MainWindow);
free(window);
yon_interface_update(widgets);
}
void on_remove_add_package(GtkWidget *self, repo_add_window *window){
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ArchitectureCombo))>-1){
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->MainWindow),CHOSE_PACKAGES_TITLE_LABEL,icon_path,"ChooseMoveFileChooserWindow");
gtk_label_set_text(GTK_LABEL(dialog->HeaderTopic),CHOSE_PACKAGES_TITLE_LABEL);
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->MainFileChooser),filter);
GtkTreeIter iter,itar;
char *target;
const char* storage_path = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->StorageCombo));
storage_struct *storage = g_hash_table_lookup(main_config.storages,storage_path);
if (storage){
const char *repo_name = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepositoryCombo));
repo_struct *repo = g_hash_table_lookup(storage->repos,repo_name);
if (repo){
target = repo->path;
}
gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog->MainFileChooser),1);
gtk_widget_show(dialog->ChooseFolderCheck);
}
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->MainFileChooser),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);
yon_file_chooser_set_root(dialog,target);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
on_move_add_accept(self,dict);
}
}
}
repo_add_window *on_remove_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),REMOVE_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window");
gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGES_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(window->PackagesToAddLabel),REMOVE_PACKAGES_LABEL);
int size;
config_str storages = (config_str)g_hash_table_get_keys_as_array(main_config.storages,&size);
for (int i=0;i<size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->StorageCombo),storages[i],storages[i]);
}
yon_sign_list_update();
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->RepoSignCombo));
yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->PackageSignCombo));
gtk_combo_box_set_active(GTK_COMBO_BOX(window->RepoSignCombo),0);
gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
gtk_button_set_label(GTK_BUTTON(window->AddButton),REMOVE_LABEL);
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,"window",window);
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_add_target_package_selection_changed),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_remove_accept),dict);
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);
// g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window);
yon_add_window_set_selected(widgets,window);
yon_add_window_add_chosen_packages(widgets,window);
gtk_widget_show(window->MainWindow);
return window;
}

@ -5,34 +5,6 @@ config main_config;
// // filechooser window section
// void on_file_chooser_entry_changed(GtkEntry *self, file_chooser_window *window){
// const char *text = gtk_entry_get_text(self);
// GtkFileFilter *filter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(window->FileChooserWidget));
// gtk_file_chooser_remove_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter);
// filter = gtk_file_filter_new();
// char *pattern = !yon_char_is_empty(text)?yon_char_unite("*",text,"*.pkg.tar*[^.sig]",NULL) : "*.pkg.tar*[^.sig]";
// gtk_file_filter_add_pattern(filter,pattern);
// gtk_file_filter_set_name(filter,"*.pkg.tar*");
// gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(window->FileChooserWidget),filter);
// if (!yon_char_is_empty(text)) free(pattern);
// }
// file_chooser_window *yon_file_chooser_new(){
// file_chooser_window *window = malloc(sizeof(file_chooser_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_filechooser);
// window->Window = yon_gtk_builder_get_widget(builder,"Window");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel2");
// window->ChooseButton = yon_gtk_builder_get_widget(builder,"ChooseButton");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
// window->FileChooserWidget = yon_gtk_builder_get_widget(builder,"FileChooserWidget");
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// g_signal_connect(G_OBJECT(window->NameEntry),"changed",G_CALLBACK(on_file_chooser_entry_changed),window);
// return window;
// }
// // main window
void on_folder_changed(GtkFileChooser *self, dictionary *dict){
@ -77,7 +49,6 @@ void yon_remove_config_storages(char *key,storage_struct *storage,void*){
}
int yon_storages_load(main_window *widgets){
// g_hash_table_foreach_remove(main_config.storages,(GHRFunc)yon_remove_config_storages,NULL);
g_hash_table_remove_all(main_config.storages);
gsize size;
@ -138,90 +109,21 @@ void yon_interface_update(main_window *widgets){
gtk_tree_store_clear(widgets->RepoList);
gtk_list_store_clear(widgets->RepoFileList);
gtk_list_store_clear(widgets->RepoPackagesList);
GtkTreeIter iter;
GtkTreeModel *model;
GtkTreePath *path = NULL;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
path = gtk_tree_model_get_path(model,&iter);
}
yon_storages_load(widgets);
g_hash_table_foreach(main_config.storages,(GHFunc)yon_repo_tree_build_storage,widgets);
if (path){
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),path);
gtk_tree_path_free(path);
}
}
// void yon_config_load_update(main_window *widgets){
// gtk_tree_store_clear(widgets->RepoList);
// gsize size=0;
// config_str storages = yon_window_config_get_section("storage_info",&size);
// GtkTreeIter iter,itar,childiter;
// for (int i=0;i<size;i++){
// char *name = yon_char_new(storages[i]);
// free(yon_char_divide(name,yon_char_find_last(name,'/')));
// gtk_tree_store_append(widgets->RepoList,&iter,NULL);
// gtk_tree_store_set(widgets->RepoList,&iter,0,folder_no_edits,2,name,3,storages[i],-1);
// free(name);
// yon_window_config_get_parameter("storage_info",storages[i],&name,YON_TYPE_STRING);
// if (!yon_char_is_empty(name)){
// int parsed_size;
// config_str name_parsed = yon_char_parse(name,&parsed_size,",");
// for (int j=0;j<parsed_size;j++){
// char *nm = yon_char_new(name_parsed[j]);
// free(yon_char_divide(nm,yon_char_find_last(nm,'/')));
// gtk_tree_store_append(widgets->RepoList,&itar,&iter);
// gtk_tree_store_set(widgets->RepoList,&itar,2,nm,3,name_parsed[j],-1);
// int size;
// config_str dirs = yon_file_list_dirs(name_parsed[j],&size);
// for (int k=0;k<size;k++){
// if (strcmp(dirs[k],"pool")&&strcmp(dirs[k],nm)){
// char *arch_path = yon_char_unite(name_parsed[j],"/",dirs[k],NULL);
// int arch_status = system(yon_debug_output("%s\n",yon_repo_get_signature_status_arch(storages[i],nm,dirs[k])));
// arch_status = WEXITSTATUS(arch_status);
// int packages_status = system(yon_debug_output("%s\n",yon_repo_get_signature_status_packages(storages[i],nm,dirs[k])));
// char *sign_status_image = "";
// if (!arch_status&&!packages_status){
// sign_status_image = key_icon_name;
// } else if (!arch_status&&packages_status==2)
// sign_status_image = warning_icon_name;
// else if (arch_status==2&&packages_status==2)
// sign_status_image = "";
// else
// sign_status_image = warning_icon_name;
// gtk_tree_store_append(widgets->RepoList,&childiter,&itar);
// gtk_tree_store_set(widgets->RepoList,&childiter,0,sign_status_image,2,dirs[k],3,arch_path,-1);
// }
// }
// free(nm);
// }
// yon_char_parsed_free(name_parsed,parsed_size);
// }
// }
// if (size)
// yon_char_parsed_free(storages,size);
// }
// config_str yon_tree_store_storage_get_archs(GtkTreeStore *target, GtkTreeIter *storage, int *size){
// config_str final = NULL;
// GtkTreeIter iter,itar;
// int repos_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,storage);
// for (;repos_valid;repos_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
// int archs_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&itar,&iter);
// for (;archs_valid;archs_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&itar)){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(target),&itar,2,&current,-1);
// if (yon_char_parsed_check_exist(final,*size,current)==-1)
// yon_char_parsed_add_or_create_if_exists(final,size,current);
// }
// }
// return final;
// }
// config_str yon_tree_store_repo_get_archs(GtkTreeStore *target, GtkTreeIter *repo, int *size){
// config_str final = NULL;
// GtkTreeIter iter;
// int repos_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,repo);
// for (;repos_valid;repos_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
// char *current;
// gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,2,&current,-1);
// if (yon_char_parsed_check_exist(final,*size,current)==-1)
// yon_char_parsed_add_or_create_if_exists(final,size,current);
// }
// return final;
// }
// char *yon_signature_get(GtkTreeView *target, GtkTreeIter *iter){
// GtkTreeIter itar;
@ -387,115 +289,6 @@ void on_ubl_settings_update_launch(){
yon_launch_app_with_arguments(ubl_settings_update_command,NULL);
}
// void on_calendar_open(GtkWidget *self,key_creation_window *window){
// yon_calendar_popover_open(GTK_ENTRY(window->ExpireEntry),self);
// }
// void on_key_generate_accept(GtkWidget *self, key_creation_window* window){
// const char *name = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
// const char *type = gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->EncryptionCombo));
// const char *email = gtk_entry_get_text(GTK_ENTRY(window->EmailEntry));
// char *strength = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->KeyStrengthSpin)));
// const char *comment = gtk_entry_get_text(GTK_ENTRY(window->CommentsEntry));
// if (!yon_char_is_empty(name)&&strlen(name)<5){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NAME_SHORT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(window->NameEntry);
// return;
// }
// GtkWidget *highlight_target=NULL;
// if (yon_char_is_empty(name)){
// highlight_target=window->NameEntry;
// } else if (yon_char_is_empty(type)){
// highlight_target=window->EncryptionCombo;
// } else if (yon_char_is_empty(email)){
// highlight_target=window->EmailEntry;
// } else if (yon_char_is_empty(strength)){
// highlight_target=window->KeyStrengthSpin;
// }
// if (highlight_target){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(highlight_target);
// return;
// }
// char *expire = NULL;
// if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->ExpireCombo))==1){
// GDateTime *datetime = g_date_time_new_from_unix_local(yon_calendar_get_last_date());
// expire = g_date_time_format(datetime,"%Y%m%dT000000");
// g_date_time_unref(datetime);
// }
// const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
// const char *password_confirm = gtk_entry_get_text(GTK_ENTRY(window->PasswordConfirmationEntry));
// int ex_status=0;
// if (yon_char_is_empty(password)&&yon_char_is_empty(password_confirm)){
// yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password));
// ex_status = system(yon_debug_output("%s\n",yon_generate_key_no_password_command(type,name,email,strength,comment,expire,password)));
// } else if (!strcmp(password,password_confirm)){
// yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password));
// ex_status = system(yon_debug_output("%s\n",yon_generate_key_command(type,name,email,strength,comment,expire,password)));
// } else {
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_INCORRECT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(window->PasswordConfirmationEntry);
// yon_ubl_status_highlight_incorrect(window->PasswordEntry);
// return;
// }
// if (!ex_status)
// yon_ubl_status_box_render(KEY_CREATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// else
// yon_ubl_status_box_render(KEY_CREATION_FAILURE_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
// gtk_widget_destroy(window->Window);
// yon_sign_list_update();
// }
// key_creation_window *yon_key_creation_window_new(){
// key_creation_window *window = malloc(sizeof(key_creation_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_key);
// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
// window->EmailEntry = yon_gtk_builder_get_widget(builder,"EmailEntry");
// window->CommentsEntry = yon_gtk_builder_get_widget(builder,"CommentsEntry");
// window->EncryptionCombo = yon_gtk_builder_get_widget(builder,"EncryptionCombo");
// window->KeyStrengthSpin = yon_gtk_builder_get_widget(builder,"KeyStrengthSpin");
// window->ExpireCombo = yon_gtk_builder_get_widget(builder,"ExpireCombo");
// window->ExpireEntry = yon_gtk_builder_get_widget(builder,"ExpireEntry");
// window->ExpireButton = yon_gtk_builder_get_widget(builder,"ExpireButton");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
// window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
// window->PasswordConfirmationEntry = yon_gtk_builder_get_widget(builder,"PasswordConfirmationEntry");
// yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordConfirmationEntry));
// yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
// g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireButton);
// g_signal_connect(G_OBJECT(window->ExpireCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),window->ExpireEntry);
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// g_signal_connect(G_OBJECT(window->ExpireButton),"clicked",G_CALLBACK(on_calendar_open),window);
// g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_key_generate_accept),window);
// int size;
// config_str encription_keys = yon_file_open(key_encription_path,&size);
// window->expire_time=0;
// for (int i=1;i<size;i++){
// yon_char_remove_last_symbol(encription_keys[i],'\n');
// int parsed_size;
// config_str parsed = yon_char_parse(encription_keys[i],&parsed_size,";");
// gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->EncryptionCombo),parsed[2],parsed[0]);
// yon_char_parsed_free(parsed,parsed_size);
// }
// gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->EncryptionCombo),"RSA");
// return window;
// }
// void on_key_clicked(GtkWidget *self, main_window *widgets){
// key_creation_window *window = yon_key_creation_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),KEY_CREATION_TITLE_LABEL,icon_path,"key-create-window");
// gtk_label_set_text(GTK_LABEL(window->HeadLabel),KEY_CREATION_TITLE_LABEL);
// gtk_widget_show(window->Window);
// }
void on_tree_view_activate(GtkWidget *self, GtkTreePath* path, GtkTreeViewColumn* column, main_window *widgets){
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->ReposTree),path);
@ -523,101 +316,18 @@ void on_update_clicked(GtkWidget *self, main_window *widgets){
yon_interface_update(widgets);
}
// void on_sign_window_accept(GtkWidget *self, dictionary *dict){
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
// sign_window *window = yon_dictionary_get_data(dict->first->next,sign_window*);
// GtkTreeModel *model;
// GtkTreeIter iter;
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter)){
// char *arch;
// char *repo;
// char *storage;
// char *signature = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->SignCombo));
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoList),&iter,3,&arch,-1);
// char *full_path = yon_char_new(arch);
// repo = yon_char_divide(arch,yon_char_find_last(arch,'/'));
// storage = yon_char_divide(repo,yon_char_find_last(repo,'/'));
// storage = yon_char_append(storage,"/");
// GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),NULL);
// char *targets = "";
// for (int i=0;i<g_list_length(list);i++){
// char *pack;
// gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->RepoFileList),&iter,(GtkTreePath*)g_list_nth_data(list,i));
// gtk_tree_model_get(GTK_TREE_MODEL(widgets->RepoFileList),&iter,2,&pack,-1);
// char *temp = yon_char_unite(targets, " ", full_path,"/",pack,NULL);
// if (!yon_char_is_empty(targets)) free(targets);
// targets=temp;
// }
// if (!system(yon_debug_output("%s\n",yon_sign_package(storage,repo,arch,targets,signature)))){
// yon_ubl_status_box_render(SIGN_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
// }
// on_subwindow_close(window->Window);
// }
// }
// sign_window *yon_sign_window_new(){
// sign_window *window = malloc(sizeof(sign_window));
// GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_sign);
// window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
// window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
// window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
// window->SignCombo = yon_gtk_builder_get_widget(builder,"SignCombo");
// window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
// window->SignButton = yon_gtk_builder_get_widget(builder,"SignButton");
// g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
// return window;
// }
// void on_packages_sign(GtkWidget *self, main_window *widgets){
// sign_window *window = yon_sign_window_new();
// yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),SIGNATURE_TITLE_LABEL,icon_path,"sign-window");
// yon_combo_box_text_set_signs(GTK_COMBO_BOX_TEXT(window->SignCombo));
// 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,"window",window);
// g_signal_connect(G_OBJECT(window->SignButton),"clicked",G_CALLBACK(on_sign_window_accept),dict);
// gtk_widget_show(window->Window);
// }
// int yon_tree_is_selected(void *widget){
// main_window *widgets = (main_window*)widget;
// GtkTreeModel *model;
// GtkTreeIter iter, itar;
// if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){
// gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&itar);
// if (gtk_tree_store_iter_depth(widgets->RepoList,&itar)==2){
// return 1;
// }
// }
// return 0;
// }
// void on_rmb_remove(GtkWidget *self, main_window *widgets){
// repo_add_window *window = on_remove_clicked(NULL,widgets);
// GtkTreeModel *model;
// GtkTreeIter iter;
// char *path;
// gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter);
// gtk_tree_model_get(model,&iter,3,&path,-1);
// GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model);
// for (int i=0;i<g_list_length(list);i++){
// GtkTreeIter itar;
// char *filename, *name;
// gtk_tree_model_get_iter(model,&iter,g_list_nth_data(list,i));
// gtk_tree_model_get(model,&iter,1,&name,2,&filename,-1);
// char *full_path = yon_char_unite(path,"/",filename,NULL);
// gtk_list_store_append(window->PackagesList,&itar);
// gtk_list_store_set(window->PackagesList,&itar,1,name,2,full_path,-1);
// free(full_path);
// free(filename);
// free(name);
// }
// }
int yon_tree_is_selected(void *widget){
main_window *widgets = (main_window*)widget;
GtkTreeModel *model;
GtkTreeIter iter, itar;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model,&iter)){
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),NULL,&itar);
if (gtk_tree_store_iter_depth(widgets->RepoList,&itar)==2){
return 1;
}
}
return 0;
}
main_window *yon_main_window_complete(main_window *widgets){
widgets = yon_remalloc(widgets,sizeof(main_window));
@ -654,20 +364,20 @@ main_window *yon_main_window_complete(main_window *widgets){
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->KeyMenuItem),"menuitemtop");
gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop");
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle");
// g_signal_connect(G_OBJECT(widgets->KeyMenuItem),"activate",G_CALLBACK(on_key_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->KeyMenuItem),"activate",G_CALLBACK(on_key_clicked),widgets);
}
main_config.tree_store = widgets->RepoList;
// rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets,
// SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets,
// MOVE_PACKAGES_TITLE_LABEL,move_icon,G_CALLBACK(on_rmb_move),widgets,
// REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_rmb_remove),widgets,
// NULL);
rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets,
SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets,
MOVE_PACKAGES_TITLE_LABEL,move_icon,G_CALLBACK(on_move_clicked),widgets,
REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_remove_clicked),widgets,
NULL);
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->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);
g_signal_connect(G_OBJECT(widgets->ReposTree),"cursor-changed",G_CALLBACK(on_main_tree_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CloudButton),"clicked",G_CALLBACK(on_ubl_settings_update_launch),widgets);
g_signal_connect(G_OBJECT(widgets->RepoFileTree),"cursor-changed",G_CALLBACK(on_package_selection_changed),widgets);

@ -65,7 +65,7 @@ typedef char* string;
#define add_packages_sign_command(path,arch,name,repo_sign,pack_sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S ",repo_sign," -s ",pack_sign," ",packages_path,NULL)
#define add_packages_package_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -s '",sign,"' ",packages_path,NULL)
#define add_packages_repo_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",sign,"' ",packages_path,NULL)
#define remove_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager remove -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL)
#define remove_packages_command(path,arch,name,packages_path,sign) yon_char_unite("repo-manager remove -r '",name,"' -a '",arch,"' -d '", path,"' ",sign?"-S ":"",sign?sign:"",sign?" ":"",packages_path,NULL)
#define repo_sign_command(storage_path, repo, sign) yon_char_unite("repo-manager add -f -r '",repo,"' -d '", storage_path, "' -S ", sign,NULL)
@ -410,4 +410,7 @@ void yon_storage_struct_add_repo(storage_struct *storage,repo_struct *repo);
void yon_repo_struct_sign(storage_struct *storage, repo_struct *repo,const char *sign);
void yon_storage_remove(char *key, storage_struct *storage,void*);
config_str yon_arch_struct_get_packages(arch_struct *arch, int *size);
void yon_move_window_set_selected(main_window *widgets, repo_add_window *window);
void yon_move_window_set_selected(main_window *widgets, repo_add_window *window);
void on_move_add_package(GtkWidget *self, repo_add_window *window);
void on_packages_sign(GtkWidget *self, main_window *widgets);
void yon_add_window_add_chosen_packages(main_window *widgets, repo_add_window *window);
Loading…
Cancel
Save