diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index 9333d1a..ba0e388 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -422,7 +422,8 @@ void on_repo_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_repo_accept_clicked),dict); - + gtk_entry_set_text(GTK_ENTRY(window->RepoNameEntry),target); + window->name = yon_char_new(target); int size; config_str parsed = yon_char_parse(config(REPOSITORY(target)),&size,";"); if (size){ @@ -453,10 +454,8 @@ void on_repo_edit(GtkWidget *,main_window *widgets){ 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); - } + if (size<3||yon_char_is_empty(parsed[3])||strcmp(parsed[3],"disable")){ //disable + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->EnabledCheck),1); } } gtk_widget_show(window->Window); @@ -493,6 +492,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ } } } + window->name = full_name; char *parameter = config(REPOPUBLIC_WEB_full(full_name)); int size; config_str parsed = yon_char_parse(parameter,&size,":"); @@ -542,6 +542,7 @@ void on_mirror_edit(GtkWidget *,main_window *widgets){ 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); + window->name = target; char *parameter = config(REPOPUBLIC_CACHE_full(target)); int size; config_str parsed = yon_char_parse(parameter,&size,","); @@ -581,13 +582,13 @@ void on_repo_accept_clicked(GtkWidget *, 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*); - int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck)); const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->RepoNameEntry)); if (yon_char_is_empty(repo_name)){ yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(window->RepoNameEntry); return; } + int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck)); char *sources = ""; GList *list = gtk_container_get_children(GTK_CONTAINER(window->SourceBox)); for (guint i=0;iname)&&strcmp(repo_name,window->name)){ + yon_config_remove_by_key(REOSITORY_command(window->name)); + } yon_config_register(REPOSITORY(repo_name),REOSITORY_command(repo_name),final); yon_interface_update(widgets); gtk_widget_destroy(window->Window); @@ -663,6 +667,9 @@ void on_web_publish_accept(GtkWidget *, dictionary *dict){ } 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?yon_char_is_empty(encryption)? user_password:encryption:"",":",username_check?!yon_char_is_empty(encryption)?user_password:"":"",NULL); + if (!yon_char_is_empty(window->name)&&strcmp(final_name,window->name)){ + yon_config_remove_by_key(REPOPUBLIC_WEB_command(window->name)); + } yon_config_register(REPOPUBLIC_WEB_full(final_name),REPOPUBLIC_WEB_command(final_name),final); yon_interface_update(widgets); gtk_widget_destroy(window->Window); @@ -683,6 +690,9 @@ void on_mirror_accept(GtkWidget *,dictionary *dict){ g_list_free(container); } g_list_free(list); + if (!yon_char_is_empty(window->name)&&strcmp(name,window->name)){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full(window->name)); + } yon_config_register(REPOPUBLIC_CACHE_full(name),REPOPUBLIC_CACHE_full_command(name),paths); yon_interface_update(widgets); gtk_widget_destroy(window->Window); @@ -779,6 +789,7 @@ repo_add_window *yon_repo_add_window_new(){ window->SourceBox = yon_gtk_builder_get_widget(builder,"SourceBox"); window->RepoSourceAddButton = yon_gtk_builder_get_widget(builder,"RepoSourceAddButton"); + window->name=NULL; g_signal_connect(G_OBJECT(window->RepoSourceButton),"clicked",G_CALLBACK(on_file_chooser_open),window->RepoSourceEntry); g_signal_connect(G_OBJECT(window->RepoSourceAddButton),"clicked",G_CALLBACK(on_repo_source_add),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); @@ -810,6 +821,7 @@ web_publication_add_window *yon_web_publication_add_window_new(){ window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer")); + window->name=NULL; g_signal_connect(G_OBJECT(window->SelectionCellRenderer),"toggled",G_CALLBACK(on_cell_renderer_toggle_toggled),window->RepositoriesTree); g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_file_chooser_open),window->PathEntry); g_signal_connect(G_OBJECT(window->PathEntry),"changed",G_CALLBACK(on_web_publish_path_changed),window); @@ -867,6 +879,8 @@ mirror_add_window *yon_mirror_add_window_new(){ window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); window->PathBox = yon_gtk_builder_get_widget(builder,"PathBox"); + window->name=NULL; + g_signal_connect(G_OBJECT(window->TypeButton),"clicked",G_CALLBACK(on_file_chooser_open),window->TypeEntry); g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_mirror_path_add),window); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h index f21640b..ee27502 100644 --- a/source/ubl-settings-update.h +++ b/source/ubl-settings-update.h @@ -46,6 +46,8 @@ #define config_get_global_only_parameters "" #define config_get_local_only_parameters "" +#define get_publication_list_command "sed -rn \"s/^\\[(.*)\\]$/\1/p;/^\\[options\\]$/d\" /etc/pacman.conf" + #define REPOSITORY(target) yon_char_unite("REPOSITORY[",target,"]",NULL) #define REPOSITORY_parameter "REPOSITORY" #define REOSITORY_command(target) yon_char_unite("ubconfig --source global get [update] REPOSITORY[",target,"]",NULL) @@ -141,6 +143,8 @@ typedef struct { GtkWidget *EnabledCheck; GtkWidget *AcceptButton; GtkWidget *CancelButton; + + char *name; } repo_add_window; typedef struct { @@ -163,6 +167,8 @@ typedef struct { GtkWidget *CancelButton; GtkListStore *list; GtkCellRenderer *SelectionCellRenderer; + + char *name; } web_publication_add_window; typedef struct { @@ -177,6 +183,8 @@ typedef struct { GtkWidget *TypeEntry; GtkWidget *TypeButton; GtkWidget *PathBox; + + char *name; } mirror_add_window; typedef struct {