Repository edit window WIP

pull/13/head
parent 2ac710f0f2
commit 648e82c771

@ -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;i<cur_size;i++){
char *target = repos[i];
if (yon_char_is_empty(target)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),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;i<size;i++){
char *target = parsed[i];
if (yon_char_is_empty(target)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),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));

@ -346,8 +346,8 @@
<property name="active">0</property>
<items>
<item translatable="yes">Not encrypted</item>
<item translatable="yes">Encrypted with SHA256</item>
<item translatable="yes">Encrypted with SHA512</item>
<item id="sha256" translatable="yes">Encrypted with SHA256</item>
<item id="sha512" translatable="yes">Encrypted with SHA512</item>
</items>
</object>
<packing>

Loading…
Cancel
Save