From 648e82c7711af0966933451da1fba5e91254e5dd Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 18 Oct 2024 18:12:17 +0600 Subject: [PATCH] Repository edit window WIP --- source/ubl-settings-update.c | 136 +++++++++++++++++- ubl-settings-update-web-publication-add.glade | 4 +- 2 files changed, 132 insertions(+), 8 deletions(-) diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index dfb38f6..9333d1a 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -212,10 +212,15 @@ void yon_interface_update(main_window *widgets){ gtk_list_store_set(widgets->WebPublicationList,&iter,5,parsed[3],-1); } if (cur_size>4&&!yon_char_is_empty(parsed[4])){ - gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1); - } - if (cur_size>5&&!yon_char_is_empty(parsed[5])){ - gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1); + if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ + gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1); + gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1); + } else { + gtk_list_store_set(widgets->WebPublicationList,&iter,6,parsed[4],-1); + if (cur_size>5&&!yon_char_is_empty(parsed[5])){ + gtk_list_store_set(widgets->WebPublicationList,&iter,7,parsed[5],-1); + } + } } } } @@ -409,10 +414,52 @@ void on_repo_edit(GtkWidget *,main_window *widgets){ repo_add_window *window = yon_repo_add_window_new(); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"add_repo_window"); + GtkTreeIter iter; + char *target; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepositoriesTree)),NULL,&iter); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->ReposList),&iter,1,&target,-1); 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->AcceptButton),"clicked",G_CALLBACK(on_repo_accept_clicked),dict); + + int size; + config_str parsed = yon_char_parse(config(REPOSITORY(target)),&size,";"); + if (size){ + { + int cur_size; + config_str repos = yon_char_parse(parsed[0],&cur_size,","); + for (int i=0;iStatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->RepoSourceEntry); + return; + } + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->RepoSourceCombo)); + char *full_name = yon_char_append(type,target); + gtk_entry_set_text(GTK_ENTRY(window->RepoSourceEntry),""); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path); + gtk_box_pack_start(GTK_BOX(window->SourceBox),yon_gtk_builder_get_widget(builder,"PathRemovalBox"),0,0,2); + gtk_entry_set_text(GTK_ENTRY(gtk_builder_get_object(builder,"PathEntry")),full_name); + g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),gtk_builder_get_object(builder,"PathRemovalBox")); + g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),gtk_builder_get_object(builder,"PathRemovalBox")); + } + } + if (size>1&&!yon_char_is_empty(parsed[1])){ //siglevel + int cur_size; + config_str siglevel = yon_char_parse(parsed[1],&cur_size,","); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignCheckCombo),siglevel[0]); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->RepoSignConditionCombo),siglevel[1]); + } + if (size>2&&!yon_char_is_empty(parsed[2])){} //usage + if (size>3&&!yon_char_is_empty(parsed[3])){ //disable + if (strcmp(parsed[3],"disable")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnabledCheck),1); + } + } + } + gtk_widget_show(window->Window); } void on_web_publish_edit(GtkWidget *,main_window *widgets){ @@ -423,6 +470,62 @@ void on_web_publish_edit(GtkWidget *,main_window *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); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_web_publish_accept),dict); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),NULL,&iter)){ + char *storage; + char *repos; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,-1); + gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage); + while(gtk_events_pending()) gtk_main_iteration(); + char *full_name = storage; + if(!yon_char_is_empty(repos)){ + int size; + config_str parsed = yon_char_parse(repos,&size,"\n"); + full_name = yon_char_unite(storage,":",yon_char_replace(repos,"\n",","),NULL); + if (size){ + GtkTreeIter itar; + for_iter(GTK_TREE_MODEL(window->list),&itar){ + char *target; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&itar,1,&target,-1); + if (yon_char_parsed_check_exist(parsed,size,target)==-1){ + gtk_list_store_set(window->list,&itar,0,0,-1); + } + } + } + } + char *parameter = config(REPOPUBLIC_WEB_full(full_name)); + int size; + config_str parsed = yon_char_parse(parameter,&size,":"); + if (size){ + if (!strcmp(parsed[0],"enable")||!strcmp(parsed[0],"yes")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck),1); + } + if (size>1&&!strcmp(parsed[1],"listing")){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck),1); + } + if (size>2&&!yon_char_is_empty(parsed[2])){ + gtk_entry_set_text(GTK_ENTRY(window->PortEntry),parsed[2]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortCheck),1); + } + if (size>3&&!yon_char_is_empty(parsed[3])){ + gtk_entry_set_text(GTK_ENTRY(window->UsernameEntry),parsed[3]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UsernameCheck),1); + } + if (size>4&&!yon_char_is_empty(parsed[4])){ + if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]); + gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[5]); + + } else { + gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[4]); + if (size>5) + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),""); + } + } + } + } + + gtk_widget_show(window->Window); } void on_mirror_edit(GtkWidget *,main_window *widgets){ @@ -436,15 +539,31 @@ void on_mirror_edit(GtkWidget *,main_window *widgets){ char *target; GtkTreeIter iter; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),NULL,&iter); gtk_tree_model_get(GTK_TREE_MODEL(widgets->MirrorList),&iter,0,&target,-1); + gtk_entry_set_text(GTK_ENTRY(window->NameEntry),target); char *parameter = config(REPOPUBLIC_CACHE_full(target)); int size; config_str parsed = yon_char_parse(parameter,&size,","); for (int i=0;iStatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->TypeEntry); + return; + } + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo)); + char *full_name = yon_char_unite(type,"@",target,NULL); + gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),""); GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path); + gtk_box_pack_start(GTK_BOX(window->PathBox),yon_gtk_builder_get_widget(builder,"PathRemovalBox"),0,0,2); + gtk_entry_set_text(GTK_ENTRY(gtk_builder_get_object(builder,"PathEntry")),full_name); + g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),gtk_builder_get_object(builder,"PathRemovalBox")); + g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),gtk_builder_get_object(builder,"PathRemovalBox")); + g_object_unref(G_OBJECT(builder)); } - + gtk_widget_show(window->Window); } void on_mirror_configure(GtkWidget *,main_window *widgets){ @@ -518,6 +637,7 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ int username_check = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsernameCheck)); char *username = (char*)gtk_entry_get_text(GTK_ENTRY(window->UsernameEntry)); char *user_password = (char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry)); + char *encryption = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->UserPasswordCombo)); char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); char *full_name = ""; @@ -542,7 +662,7 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ return; } char *final_name = yon_char_is_empty(full_name)||!disabled ? name : yon_char_unite(name,":",full_name,NULL); - char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",username_check?user_password:"",NULL); + char *final = yon_char_unite(enabled?"enable":"disable",":",enable_browser?"listing":"",":",port_enabled?port:"",":",username_check?username:"",":",username_check?yon_char_is_empty(encryption)? user_password:encryption:"",":",username_check?!yon_char_is_empty(encryption)?user_password:"":"",NULL); yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final); yon_interface_update(widgets); gtk_widget_destroy(window->Window); @@ -831,6 +951,10 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->PublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->WebPublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->MirrorTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets); + + g_signal_connect(G_OBJECT(widgets->MirrorEditButton),"clicked",G_CALLBACK(on_mirror_edit),widgets); + g_signal_connect(G_OBJECT(widgets->WebPublicationEditButton),"clicked",G_CALLBACK(on_web_publish_edit),widgets); + g_signal_connect(G_OBJECT(widgets->RepositoriesEditButton),"clicked",G_CALLBACK(on_repo_edit),widgets); } { yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->MirrorTree)); diff --git a/ubl-settings-update-web-publication-add.glade b/ubl-settings-update-web-publication-add.glade index a223689..3c13554 100644 --- a/ubl-settings-update-web-publication-add.glade +++ b/ubl-settings-update-web-publication-add.glade @@ -346,8 +346,8 @@ 0 Not encrypted - Encrypted with SHA256 - Encrypted with SHA512 + Encrypted with SHA256 + Encrypted with SHA512