From 4b23651dd64031d3ffcd53ab74eeae0bcb0c9e48 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 27 Nov 2025 18:50:06 +0600 Subject: [PATCH] WIP Move up and move down buttons fix --- source/CMakeLists.txt | 3 + source/ubl-settings-update-mirror.c | 414 ++++++++++++++++++ source/ubl-settings-update-repo.c | 58 +++ source/ubl-settings-update-web.c | 248 +++++++++++ source/ubl-settings-update.c | 646 +--------------------------- source/ubl-settings-update.h | 8 +- ubl-settings-update.glade | 33 +- 7 files changed, 739 insertions(+), 671 deletions(-) create mode 100644 source/ubl-settings-update-mirror.c create mode 100644 source/ubl-settings-update-repo.c create mode 100644 source/ubl-settings-update-web.c diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 68a6c0c..c2258c3 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -78,6 +78,9 @@ endif() set(SOURCE_FILES ubl-settings-update.c + ubl-settings-update-web.c + ubl-settings-update-mirror.c + ubl-settings-update-repo.c ubl-settings-update.h ubl-strings.h ) diff --git a/source/ubl-settings-update-mirror.c b/source/ubl-settings-update-mirror.c new file mode 100644 index 0000000..5ea4a4d --- /dev/null +++ b/source/ubl-settings-update-mirror.c @@ -0,0 +1,414 @@ +#include "ubl-settings-update.h" + +void on_mirror_add(GtkWidget *,main_window *widgets){ + gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree))); + mirror_add_window *window = yon_mirror_add_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window"); + + 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_mirror_accept),dict); + +} + +void on_mirror_remove(GtkWidget *self,main_window *widgets){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text=REMOVE_REPO_WARNING_LABEL; + data->function=(void(*)(void*,void*))on_mirror_remove_accept; + data->data = widgets; + yon_confirmation_dialog_call(self,data); + +} + +void on_mirror_remove_accept(GtkWidget *, main_window *widgets){ + GtkTreeModel *model=NULL; + GtkTreeIter iter; + if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&iter)) { + return; + } + char *repo; + gtk_tree_model_get(model,&iter,0,&repo,-1); + yon_config_remove_by_key(REPOPUBLIC_CACHE_full(repo)); + yon_interface_update(widgets); +} + +void on_mirror_edit(GtkWidget *,main_window *widgets){ + mirror_add_window *window = yon_mirror_add_window_new(); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),EDIT_WEB_LABEL); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_WEB_LABEL,icon_path,"mirror_window"); + + 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_mirror_accept),dict); + + char *target; + GtkTreeIter iter; + GtkTreeModel *model; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&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,","); + for (int i=0;iPathRemovalBox = yon_gtk_builder_get_widget(builder,"PathRemovalBox"); + section->PathEditButton = yon_gtk_builder_get_widget(builder,"PathEditButton"); + section->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); + section->PathRemoveButton = yon_gtk_builder_get_widget(builder,"PathRemoveButton"); + section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); + section->edits=0; + + char *type = yon_char_divide_search(parsed[i],"@",-1); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),type); + yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); + + gtk_entry_set_text(GTK_ENTRY(section->PathEntry),parsed[i]); + gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); + + g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); + g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); + + } + gtk_widget_show(window->Window); +} + + +void on_mirror_configure(GtkWidget *,main_window *widgets){ + mirror_configure_window *window = yon_mirror_configure_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window"); + + 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_mirror_configure_accept),dict); + + char *port_str = config(REPOPUBLIC_CACHE_full("port")); + if (!yon_char_is_empty(port_str)){ + double port = atof(port_str); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortDefaultCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PortSpin),port); + } + char *cache = config(REPOPUBLIC_CACHE_full("cache_dir")); + if (!yon_char_is_empty(cache)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CacheDefaultCheck),0); + gtk_entry_set_text(GTK_ENTRY(window->CacheEntry),cache); + } + char *inactivity = config(REPOPUBLIC_CACHE_full("purge_files_after")); + if (!yon_char_is_empty(inactivity)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->InactivityDurationDefaultCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->InactivityDurationSpin),atof(inactivity)); + } + char *timeout = config(REPOPUBLIC_CACHE_full("download_timeout")); + if (!yon_char_is_empty(timeout)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CacheTimeoutDefaultCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->CacheTimeoutSpin),atof(timeout)); + } + char *proxy = config(REPOPUBLIC_CACHE_full("http_proxy")); + if (!yon_char_is_empty(proxy)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ProxyCheck),1); + gtk_entry_set_text(GTK_ENTRY(window->ProxyEntry),proxy); + } + char *agent = config(REPOPUBLIC_CACHE_full("user_agent")); + if (!yon_char_is_empty(agent)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->AgentDefaultCheck),0); + gtk_entry_set_text(GTK_ENTRY(window->AgentEntry),agent); + } + char *cron = config(REPOPUBLIC_CACHE_full("prefetch.cron")); + if (!yon_char_is_empty(cron)){ + gtk_entry_set_text(GTK_ENTRY(window->CronEntry),cron); + } + char *delay = config(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days")); + if (!yon_char_is_empty(delay)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UpdatesDelayDefaultCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->UpdatesDelaySpin),atof(delay)); + } + char *request_delay = config(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days")); + if (!yon_char_is_empty(request_delay)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UpdatesRequestDelayDefaultCheck),0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->UpdatesRequestDelaySpin),atof(request_delay)); + } + + gtk_widget_show(window->Window); + +} + +void on_mirror_accept(GtkWidget *,dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + mirror_add_window *window = yon_dictionary_get_data(dict->first->next,mirror_add_window*); + if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->NameEntry)))){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->NameEntry); + return; + } + if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)))) { + 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 *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)); + char *paths = ""; + if (window->sections){ + dictionary *dact = NULL; + for_dictionaries (dact, window->sections){ + char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); + char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL); + if (!yon_char_is_empty(paths)) free(paths); + paths = temp; + } + } + char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)); + if (!yon_char_is_empty(source_main)) { + char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo)); + source_main = yon_char_unite(type?type:"",type?"@":"",source_main,NULL); + char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",source_main,NULL); + if (!yon_char_is_empty(paths)) free(paths); + paths = temp; + } + 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); +} + +void on_mirror_configure_accept(GtkWidget *, dictionary *dict){ + // main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + mirror_configure_window *window = yon_dictionary_get_data(dict->first->next,mirror_configure_window*); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("port")); + } else { + long port = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortSpin)); + yon_config_register(REPOPUBLIC_CACHE_full("port"),REPOPUBLIC_CACHE_full_command("port"),yon_char_from_long(port)); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->CacheDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("cache_dir")); + } else { + char *cache_path = (char*)gtk_entry_get_text(GTK_ENTRY(window->CacheEntry)); + if (!yon_char_is_empty(cache_path)){ + yon_config_register(REPOPUBLIC_CACHE_full("cache_dir"),REPOPUBLIC_CACHE_full_command("cache_dir"),cache_path); + } else { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->CacheEntry); + return; + } + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->InactivityDurationDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("purge_files_after")); + } else { + long duration_inactivity = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->InactivityDurationSpin)); + char *duration_str = yon_char_from_long(duration_inactivity); + yon_config_register(REPOPUBLIC_CACHE_full("purge_files_after"),REPOPUBLIC_CACHE_full_command("purge_files_after"),duration_str); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->CacheTimeoutDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("download_timeout")); + } else{ + long duration_inactivity = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->CacheTimeoutSpin)); + char *duration_str = yon_char_from_long(duration_inactivity); + yon_config_register(REPOPUBLIC_CACHE_full("download_timeout"),REPOPUBLIC_CACHE_full_command("download_timeout"),duration_str); + } + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ProxyCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("http_proxy")); + } else { + char *proxy = (char*)gtk_entry_get_text(GTK_ENTRY(window->ProxyEntry)); + yon_config_register(REPOPUBLIC_CACHE_full("http_proxy"),REPOPUBLIC_CACHE_full_command("http_proxy"),proxy); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AgentDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("user_agent")); + } else { + char *agent = (char*)gtk_entry_get_text(GTK_ENTRY(window->AgentEntry)); + yon_config_register(REPOPUBLIC_CACHE_full("user_agent"),REPOPUBLIC_CACHE_full_command("user_agent"),agent); + } + char *expression = (char*)gtk_entry_get_text(GTK_ENTRY(window->CronEntry)); + if (!yon_char_is_empty(expression)){ + yon_config_register(REPOPUBLIC_CACHE_full("prefetch.cron"),REPOPUBLIC_CACHE_full_command("prefetch.cron"),expression); + } else { + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.cron")); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UpdatesDelayDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days")); + } else { + char *agent = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->UpdatesDelaySpin))); + yon_config_register(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days"),REPOPUBLIC_CACHE_full_command("prefetch.ttl_unaccessed_in_days"),agent); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UpdatesRequestDelayDefaultCheck))){ + yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days")); + } else { + char *agent = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->UpdatesRequestDelaySpin))); + yon_config_register(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days"),REPOPUBLIC_CACHE_full_command("prefetch.ttl_unupdated_in_days"),agent); + } + + gtk_widget_destroy(window->Window); +} + + +void on_mirror_path_removed(GtkWidget *self, mirror_add_window *window){ + int found=0; + dictionary *dict = NULL; + for_dictionaries(dict, window->sections){ + if (self == ((path_section*)dict->data)->PathRemoveButton){ + found =1; + break; + } + } + if (!found) return; + if (GTK_IS_WIDGET(((path_section*)dict->data)->PathRemovalBox)){ + gtk_widget_destroy(((path_section*)dict->data)->PathRemovalBox); + window->sections = yon_dictionary_rip(dict); + } +} + +void on_mirror_path_edit(GtkWidget *self,mirror_add_window *window){ + int active = 0; + dictionary *cur = NULL; + dictionary *dict = NULL; + for_dictionaries(dict, window->sections){ + if (self == ((path_section*)dict->data)->PathEditButton){ + + cur = dict; + break; + } + if (((path_section*)dict->data)->edits) { + active = 1; + } + } + if (!cur||active) return; + if (gtk_editable_get_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry))){ + ((path_section*)dict->data)->edits=1; + gtk_editable_set_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry),0); + gtk_widget_set_sensitive(((path_section*)dict->data)->TypeCombo,0); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(((path_section*)dict->data)->PathEditButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),edit_icon_name,GTK_ICON_SIZE_BUTTON); + } else { + ((path_section*)dict->data)->edits=0; + gtk_widget_set_sensitive(((path_section*)dict->data)->TypeCombo,1); + gtk_editable_set_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry),1); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(((path_section*)dict->data)->PathEditButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),accept_icon_name,GTK_ICON_SIZE_BUTTON); + } +} + +void on_mirror_path_add(GtkWidget *, mirror_add_window *window){ + const char *target = gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)); + 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; + } + GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path); + + path_section *section = malloc(sizeof(path_section)); + section->PathRemovalBox = yon_gtk_builder_get_widget(builder,"PathRemovalBox"); + section->PathEditButton = yon_gtk_builder_get_widget(builder,"PathEditButton"); + section->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); + section->PathRemoveButton = yon_gtk_builder_get_widget(builder,"PathRemoveButton"); + section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); + section->edits=0; + + gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo))); + yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); + + gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target); + gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),""); + gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); + + g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); + g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); + +} + +mirror_configure_window *yon_mirror_configure_window_new(){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_configure_path); + mirror_configure_window *window = malloc(sizeof(mirror_configure_window)); + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); + window->PortDefaultCheck = yon_gtk_builder_get_widget(builder,"PortDefaultCheck"); + window->PortSpin = yon_gtk_builder_get_widget(builder,"PortSpin"); + window->CacheDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheDefaultCheck"); + window->CacheEntry = yon_gtk_builder_get_widget(builder,"CacheEntry"); + window->CacheButton = yon_gtk_builder_get_widget(builder,"CacheButton"); + window->InactivityDurationDefaultCheck = yon_gtk_builder_get_widget(builder,"InactivityDurationDefaultCheck"); + window->InactivityDurationSpin = yon_gtk_builder_get_widget(builder,"InactivityDurationSpin"); + window->CacheTimeoutDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheTimeoutDefaultCheck"); + window->CacheTimeoutSpin = yon_gtk_builder_get_widget(builder,"CacheTimeoutSpin"); + window->ProxyCheck = yon_gtk_builder_get_widget(builder,"ProxyCheck"); + window->ProxyEntry = yon_gtk_builder_get_widget(builder,"ProxyEntry"); + window->AgentDefaultCheck = yon_gtk_builder_get_widget(builder,"AgentDefaultCheck"); + window->AgentEntry = yon_gtk_builder_get_widget(builder,"AgentEntry"); + window->CronEntry = yon_gtk_builder_get_widget(builder,"CronEntry"); + window->UpdatesDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesDelayDefaultCheck"); + window->UpdatesDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesDelaySpin"); + window->UpdatesRequestDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayDefaultCheck"); + window->UpdatesRequestDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelaySpin"); + + + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->PortDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin); + g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry); + g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton); + g_signal_connect(G_OBJECT(window->CacheButton),"clicked",G_CALLBACK(on_file_chooser_open),window->CacheEntry); + g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin); + g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin); + g_signal_connect(G_OBJECT(window->ProxyCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry); + g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry); + g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin); + g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin); + gtk_widget_show(window->Window); + + return window; +} + +void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window){ + int active = gtk_combo_box_get_active(self); + if (active == 0){ + gtk_widget_set_sensitive(window->TypeButton,0); + gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"http://repo.ublinux.ru/2405"); + } else if (active == 1){ + gtk_widget_set_sensitive(window->TypeButton,0); + gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"http://proxy.localnet.ru:8080"); + } else if (active == 2){ + gtk_widget_set_sensitive(window->TypeButton,1); + gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"/etc/pacman.d/reflector_mirrorlis"); + } +} + +mirror_add_window *yon_mirror_add_window_new(){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_add_path); + mirror_add_window *window = malloc(sizeof(mirror_add_window)); + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); + window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry"); + window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); + window->TypeEntry = yon_gtk_builder_get_widget(builder,"TypeEntry"); + window->TypeButton = yon_gtk_builder_get_widget(builder,"TypeButton"); + window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); + window->PathBox = yon_gtk_builder_get_widget(builder,"PathBox"); + yon_gtk_entry_block_symbols(GTK_ENTRY(window->NameEntry),"$"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->TypeEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/1234567890!$.#-_()~$&;{}[]|<>^:?+\\,'*`%"); + + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->NameEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_$"); + + window->sections = NULL; + 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); + g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_mirror_type_changed),window); + gtk_widget_show(window->Window); + + return window; +} \ No newline at end of file diff --git a/source/ubl-settings-update-repo.c b/source/ubl-settings-update-repo.c new file mode 100644 index 0000000..fc297d5 --- /dev/null +++ b/source/ubl-settings-update-repo.c @@ -0,0 +1,58 @@ +#include "ubl-settings-update.h" + +void on_repo_move_up(GtkWidget *,main_window *widgets){ + GtkTreeModel *model; + GtkTreeIter iter,*previter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepositoriesTree)),&model,&iter)){ + char *source; + gtk_tree_model_get(model,&iter,1,&source,-1); + char *source_param = REPOSITORY(source); + previter = gtk_tree_iter_copy(&iter); + if (gtk_tree_model_iter_previous(model,previter)){ + char *target; + gtk_tree_model_get(model,previter,1,&target,-1); + char *target_param = REPOSITORY(target); + gtk_list_store_move_before(widgets->ReposList,&iter,previter); + gtk_tree_iter_free(previter); + yon_config_move_before(source_param,target_param); + yon_config_set_status(source_param,1); + + int size; + config_str params = yon_config_get_all_by_key(REPOSITORY_search,&size); + for (int i=0;iRepositoriesTree)),&model,&iter)){ + char *source; + gtk_tree_model_get(model,&iter,1,&source,-1); + char *source_param = REPOSITORY(source); + previter = gtk_tree_iter_copy(&iter); + if (gtk_tree_model_iter_next(model,previter)){ + char *target; + gtk_tree_model_get(model,previter,1,&target,-1); + char *target_param = REPOSITORY(target); + gtk_list_store_move_after(widgets->ReposList,&iter,previter); + gtk_tree_iter_free(previter); + yon_config_move_after(source_param,target_param); + + int size; + config_str params = yon_config_get_all_by_key(REPOSITORY_search,&size); + for (int i=0;ifirst,main_window*); + web_publication_add_window *window = yon_dictionary_get_data(dict->first->next,web_publication_add_window*); + + int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck)); + int port_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortCheck)); + char *port = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortEntry))); + int enable_browser = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck)); + + 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 = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry))); + char *encryption = user_password[6]=='|'?yon_char_divide(user_password,6):NULL; + + if (username_check&&yon_char_is_empty(username)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->UsernameEntry); + return; + } + if (strpbrk(username,"!@#%^&*\'")){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ENTRY_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->UsernameEntry); + return; + } + if (username_check&&strpbrk(user_password,"!@#%^&*\'")){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->UserPasswordEntry); + return; + } + // if (username_check&&encryption&&!yon_char_is_empty(encryption)&&(strlen(user_password)!=128&&strlen(user_password)!=64)){ + + // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + // yon_ubl_status_highlight_incorrect(window->UserPasswordEntry); + // return; + // } + + char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); + char *full_name = ""; + GtkTreeIter iter; + int disabled=0; + int overall=0; + for_iter (GTK_TREE_MODEL(window->list),&iter){ + overall++; + int chosen; + char *repos; + gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&chosen,1,&repos,-1); + if (chosen){ + char *temp = yon_char_unite(full_name,yon_char_is_empty(full_name)?"":",",repos,NULL); + if (!yon_char_is_empty(full_name)) free(full_name); + full_name = temp; + } else { + disabled++; + } + } + if (overall==disabled) { + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NO_SHARED_REPOS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->PathEntry); + 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?yon_char_is_empty(encryption)?user_password:encryption:"",":", + username_check?!yon_char_is_empty(user_password)&&!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_full(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); +} + +web_publication_add_window *yon_web_publication_add_window_new(){ + GtkBuilder *builder = gtk_builder_new_from_resource(glade_web_publish_add_path); + web_publication_add_window *window = malloc(sizeof(web_publication_add_window)); + window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); + window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); + window->EnablePublishCheck = yon_gtk_builder_get_widget(builder,"EnablePublishCheck"); + window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); + window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); + window->RepositoriesTree = yon_gtk_builder_get_widget(builder,"RepositoriesTree"); + window->PortCheck = yon_gtk_builder_get_widget(builder,"PortCheck"); + window->PortEntry = yon_gtk_builder_get_widget(builder,"PortEntry"); + window->EnableWebFileBrowserCheck = yon_gtk_builder_get_widget(builder,"EnableWebFileBrowserCheck"); + window->UsernameCheck = yon_gtk_builder_get_widget(builder,"UsernameCheck"); + window->UsernameEntry = yon_gtk_builder_get_widget(builder,"UsernameEntry"); + window->UserPasswordCheck = yon_gtk_builder_get_widget(builder,"UserPasswordCheck"); + window->UserPasswordCombo = yon_gtk_builder_get_widget(builder,"UserPasswordCombo"); + window->UserPasswordEntry = yon_gtk_builder_get_widget(builder,"UserPasswordEntry"); + window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); + window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); + window->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton"); + window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); + window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer")); + + yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry)); + 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); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(on_password_open),window); + g_signal_connect(G_OBJECT(window->UsernameCheck),"toggled",G_CALLBACK(on_web_user_check),window); + g_signal_connect(G_OBJECT(window->PortCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->PortEntry); + g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->PasswordButton); + g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->UserPasswordEntry); + g_signal_connect(G_OBJECT(window->PortEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL); + gtk_widget_show(window->Window); + + return window; +} + + +void on_web_user_check(GtkToggleButton *self, web_publication_add_window *window){ + int status = gtk_toggle_button_get_active(self); + int status2 = gtk_combo_box_get_active(GTK_COMBO_BOX(window->UserPasswordCombo)); + gtk_widget_set_sensitive(window->UsernameEntry,status); + gtk_widget_set_sensitive(window->UserPasswordCombo,status); + gtk_widget_set_sensitive(window->PasswordButton,status&&status2); + gtk_widget_set_sensitive(window->UserPasswordEntry,(status&&status2)); +} + +void on_web_publish_path_changed(GtkWidget *, web_publication_add_window *window){ + gtk_list_store_clear(window->list); + char *path = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); + if (yon_char_is_empty(path) || access(path,F_OK)) return; + int size; + config_str parsed = yon_dir_get_contents(path,&size); + GtkTreeIter iter; + for (int i=0;ilist,&iter); + gtk_list_store_set(window->list,&iter,0,1,1,parsed[i],-1); + } + free(cur_path); + } + yon_char_parsed_free(parsed,size); +} + +void on_web_publish_add(GtkWidget *,main_window *widgets){ + gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree))); + web_publication_add_window *window = yon_web_publication_add_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"web_publish_window"); + + 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_web_publish_accept),dict); +} + +void on_web_publish_remove(GtkWidget *self,main_window *widgets){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text=REMOVE_REPO_WARNING_LABEL; + data->function=(void(*)(void*,void*))on_web_publish_remove_accept; + data->data = widgets; + yon_confirmation_dialog_call(self,data); +} + +void on_web_publish_remove_accept(GtkWidget *, main_window *widgets){ + GtkTreeModel *model=NULL; + GtkTreeIter iter; + if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)) { + return; + } + char *full_name = NULL; + gtk_tree_model_get(model,&iter,8,&full_name,-1); + yon_config_remove_by_key(full_name); + yon_interface_update(widgets); +} +void on_web_publish_edit(GtkWidget *,main_window *widgets){ + web_publication_add_window *window = yon_web_publication_add_window_new(); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),EDIT_WEB_LABEL); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_WEB_LABEL,icon_path,"web_publish_window"); + + 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_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; + char *full; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,8,&full,-1); + gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage); + while(gtk_events_pending()) gtk_main_iteration(); + if(!yon_char_is_empty(repos)){ + int size; + config_str parsed = yon_char_parse(repos,&size,"\n"); + 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); + } + } + } + } + window->name = full; + char *parameter = config(full); + 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_spin_button_set_value(GTK_SPIN_BUTTON(window->PortEntry),atol(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>5&&!yon_char_is_empty(parsed[4])&&!yon_char_is_empty(parsed[5])){ + gtk_combo_box_set_active(GTK_COMBO_BOX(window->UserPasswordCombo),1); + if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]); + char *temp = yon_char_unite(parsed[4],"|",parsed[5],NULL); + gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),temp); + free(temp); + + } 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); +} \ No newline at end of file diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index 379b7e2..977cf1e 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -560,14 +560,6 @@ char *on_save_repos(main_window *widgets){ return yon_char_parsed_to_string(parameters,param_size," "); } -void on_web_user_check(GtkToggleButton *self, web_publication_add_window *window){ - int status = gtk_toggle_button_get_active(self); - int status2 = gtk_combo_box_get_active(GTK_COMBO_BOX(window->UserPasswordCombo)); - gtk_widget_set_sensitive(window->UsernameEntry,status); - gtk_widget_set_sensitive(window->UserPasswordCombo,status); - gtk_widget_set_sensitive(window->PasswordButton,status&&status2); - gtk_widget_set_sensitive(window->UserPasswordEntry,(status&&status2)); -} void on_config_save(GtkWidget *, main_window *){ main_config.save_config=YON_CONFIG_BOTH; @@ -689,36 +681,7 @@ void on_selection_changed(GtkWidget *self, main_window *widgets){ } } -void on_web_publish_path_changed(GtkWidget *, web_publication_add_window *window){ - gtk_list_store_clear(window->list); - char *path = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); - if (yon_char_is_empty(path) || access(path,F_OK)) return; - int size; - config_str parsed = yon_dir_get_contents(path,&size); - GtkTreeIter iter; - for (int i=0;ilist,&iter); - gtk_list_store_set(window->list,&iter,0,1,1,parsed[i],-1); - } - free(cur_path); - } - yon_char_parsed_free(parsed,size); -} - -void on_web_publish_add(GtkWidget *,main_window *widgets){ - gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree))); - web_publication_add_window *window = yon_web_publication_add_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"web_publish_window"); - 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_web_publish_accept),dict); -} void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, repo_add_window *window){ if (allocation->height<100){ @@ -742,17 +705,6 @@ void on_repo_add(GtkWidget *, main_window *widgets){ } -void on_mirror_add(GtkWidget *,main_window *widgets){ - gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree))); - mirror_add_window *window = yon_mirror_add_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window"); - - 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_mirror_accept),dict); - -} void on_password_encryption_changed(GtkComboBox *self, password_window *dialog){ int active = gtk_combo_box_get_active(self); @@ -797,22 +749,7 @@ void on_password_open(GtkWidget *, web_publication_add_window *window){ yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(window->Window),PASSWORD_INPUT_LABEL,icon_path,"password_window"); } -void on_web_publish_remove(GtkWidget *self,main_window *widgets){ - dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); - data->action_text=REMOVE_REPO_WARNING_LABEL; - data->function=(void(*)(void*,void*))on_web_publish_remove_accept; - data->data = widgets; - yon_confirmation_dialog_call(self,data); -} -void on_mirror_remove(GtkWidget *self,main_window *widgets){ - dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); - data->action_text=REMOVE_REPO_WARNING_LABEL; - data->function=(void(*)(void*,void*))on_mirror_remove_accept; - data->data = widgets; - yon_confirmation_dialog_call(self,data); - -} void on_repo_remove(GtkWidget *self, main_window *widgets){ dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); @@ -822,29 +759,7 @@ void on_repo_remove(GtkWidget *self, main_window *widgets){ yon_confirmation_dialog_call(self,data); } -void on_web_publish_remove_accept(GtkWidget *, main_window *widgets){ - GtkTreeModel *model=NULL; - GtkTreeIter iter; - if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)) { - return; - } - char *full_name = NULL; - gtk_tree_model_get(model,&iter,8,&full_name,-1); - yon_config_remove_by_key(full_name); - yon_interface_update(widgets); -} -void on_mirror_remove_accept(GtkWidget *, main_window *widgets){ - GtkTreeModel *model=NULL; - GtkTreeIter iter; - if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&iter)) { - return; - } - char *repo; - gtk_tree_model_get(model,&iter,0,&repo,-1); - yon_config_remove_by_key(REPOPUBLIC_CACHE_full(repo)); - yon_interface_update(widgets); -} void on_repositories_remove_accept(GtkWidget *, main_window *widgets){ GtkTreeModel *model=NULL; @@ -971,180 +886,6 @@ void on_repo_edit(GtkWidget *,main_window *widgets){ gtk_widget_show(window->Window); } -void on_web_publish_edit(GtkWidget *,main_window *widgets){ - web_publication_add_window *window = yon_web_publication_add_window_new(); - gtk_label_set_text(GTK_LABEL(window->HeadLabel),EDIT_WEB_LABEL); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_WEB_LABEL,icon_path,"web_publish_window"); - - 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_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; - char *full; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->WebPublicationList),&iter,1,&storage,2,&repos,8,&full,-1); - gtk_entry_set_text(GTK_ENTRY(window->PathEntry),storage); - while(gtk_events_pending()) gtk_main_iteration(); - if(!yon_char_is_empty(repos)){ - int size; - config_str parsed = yon_char_parse(repos,&size,"\n"); - 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); - } - } - } - } - window->name = full; - char *parameter = config(full); - 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_spin_button_set_value(GTK_SPIN_BUTTON(window->PortEntry),atol(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>5&&!yon_char_is_empty(parsed[4])&&!yon_char_is_empty(parsed[5])){ - gtk_combo_box_set_active(GTK_COMBO_BOX(window->UserPasswordCombo),1); - if (!strcmp(parsed[4],"sha256")||!strcmp(parsed[4],"sha512")){ - gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->UserPasswordCombo),parsed[4]); - char *temp = yon_char_unite(parsed[4],"|",parsed[5],NULL); - gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),temp); - free(temp); - - } 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){ - mirror_add_window *window = yon_mirror_add_window_new(); - gtk_label_set_text(GTK_LABEL(window->HeadLabel),EDIT_WEB_LABEL); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_WEB_LABEL,icon_path,"mirror_window"); - - 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_mirror_accept),dict); - - char *target; - GtkTreeIter iter; - GtkTreeModel *model; - gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&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,","); - for (int i=0;iPathRemovalBox = yon_gtk_builder_get_widget(builder,"PathRemovalBox"); - section->PathEditButton = yon_gtk_builder_get_widget(builder,"PathEditButton"); - section->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); - section->PathRemoveButton = yon_gtk_builder_get_widget(builder,"PathRemoveButton"); - section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); - section->edits=0; - - char *type = yon_char_divide_search(parsed[i],"@",-1); - gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),type); - yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); - - gtk_entry_set_text(GTK_ENTRY(section->PathEntry),parsed[i]); - gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); - - g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); - g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); - - } - gtk_widget_show(window->Window); -} - -void on_mirror_configure(GtkWidget *,main_window *widgets){ - mirror_configure_window *window = yon_mirror_configure_window_new(); - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"mirror_window"); - - 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_mirror_configure_accept),dict); - - char *port_str = config(REPOPUBLIC_CACHE_full("port")); - if (!yon_char_is_empty(port_str)){ - double port = atof(port_str); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PortDefaultCheck),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PortSpin),port); - } - char *cache = config(REPOPUBLIC_CACHE_full("cache_dir")); - if (!yon_char_is_empty(cache)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CacheDefaultCheck),0); - gtk_entry_set_text(GTK_ENTRY(window->CacheEntry),cache); - } - char *inactivity = config(REPOPUBLIC_CACHE_full("purge_files_after")); - if (!yon_char_is_empty(inactivity)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->InactivityDurationDefaultCheck),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->InactivityDurationSpin),atof(inactivity)); - } - char *timeout = config(REPOPUBLIC_CACHE_full("download_timeout")); - if (!yon_char_is_empty(timeout)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CacheTimeoutDefaultCheck),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->CacheTimeoutSpin),atof(timeout)); - } - char *proxy = config(REPOPUBLIC_CACHE_full("http_proxy")); - if (!yon_char_is_empty(proxy)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ProxyCheck),1); - gtk_entry_set_text(GTK_ENTRY(window->ProxyEntry),proxy); - } - char *agent = config(REPOPUBLIC_CACHE_full("user_agent")); - if (!yon_char_is_empty(agent)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->AgentDefaultCheck),0); - gtk_entry_set_text(GTK_ENTRY(window->AgentEntry),agent); - } - char *cron = config(REPOPUBLIC_CACHE_full("prefetch.cron")); - if (!yon_char_is_empty(cron)){ - gtk_entry_set_text(GTK_ENTRY(window->CronEntry),cron); - } - char *delay = config(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days")); - if (!yon_char_is_empty(delay)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UpdatesDelayDefaultCheck),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->UpdatesDelaySpin),atof(delay)); - } - char *request_delay = config(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days")); - if (!yon_char_is_empty(request_delay)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->UpdatesRequestDelayDefaultCheck),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->UpdatesRequestDelaySpin),atof(request_delay)); - } - - gtk_widget_show(window->Window); - -} void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); @@ -1227,189 +968,7 @@ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){ } -void on_web_publish_accept(GtkWidget *, dictionary *dict){ - main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - web_publication_add_window *window = yon_dictionary_get_data(dict->first->next,web_publication_add_window*); - - int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnablePublishCheck)); - int port_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortCheck)); - char *port = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortEntry))); - int enable_browser = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnableWebFileBrowserCheck)); - - 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 = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->UserPasswordEntry))); - char *encryption = user_password[6]=='|'?yon_char_divide(user_password,6):NULL; - - if (username_check&&yon_char_is_empty(username)){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->UsernameEntry); - return; - } - if (strpbrk(username,"!@#%^&*\'")){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),ENTRY_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->UsernameEntry); - return; - } - if (username_check&&strpbrk(user_password,"!@#%^&*\'")){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->UserPasswordEntry); - return; - } - // if (username_check&&encryption&&!yon_char_is_empty(encryption)&&(strlen(user_password)!=128&&strlen(user_password)!=64)){ - - // yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_RESTRICTED_SYMBOL_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - // yon_ubl_status_highlight_incorrect(window->UserPasswordEntry); - // return; - // } - - char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); - char *full_name = ""; - GtkTreeIter iter; - int disabled=0; - int overall=0; - for_iter (GTK_TREE_MODEL(window->list),&iter){ - overall++; - int chosen; - char *repos; - gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,0,&chosen,1,&repos,-1); - if (chosen){ - char *temp = yon_char_unite(full_name,yon_char_is_empty(full_name)?"":",",repos,NULL); - if (!yon_char_is_empty(full_name)) free(full_name); - full_name = temp; - } else { - disabled++; - } - } - if (overall==disabled) { - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NO_SHARED_REPOS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->PathEntry); - 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?yon_char_is_empty(encryption)?user_password:encryption:"",":", - username_check?!yon_char_is_empty(user_password)&&!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_full(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); -} - -void on_mirror_accept(GtkWidget *,dictionary *dict){ - main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - mirror_add_window *window = yon_dictionary_get_data(dict->first->next,mirror_add_window*); - if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->NameEntry)))){ - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->NameEntry); - return; - } - if (!window->sections&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)))) { - 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 *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)); - char *paths = ""; - if (window->sections){ - dictionary *dact = NULL; - for_dictionaries (dact, window->sections){ - char *cur = yon_char_unite(gtk_combo_box_get_active_id(GTK_COMBO_BOX(((path_section*)dact->data)->TypeCombo)),"@",(char*)gtk_entry_get_text(GTK_ENTRY(((path_section*)dact->data)->PathEntry)),NULL); - char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",cur,NULL); - if (!yon_char_is_empty(paths)) free(paths); - paths = temp; - } - } - char *source_main = (char*)gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)); - if (!yon_char_is_empty(source_main)) { - char *type = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo)); - source_main = yon_char_unite(type?type:"",type?"@":"",source_main,NULL); - char *temp = yon_char_unite(paths,!yon_char_is_empty(paths)?",":"",source_main,NULL); - if (!yon_char_is_empty(paths)) free(paths); - paths = temp; - } - 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); -} - -void on_mirror_configure_accept(GtkWidget *, dictionary *dict){ - // main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); - mirror_configure_window *window = yon_dictionary_get_data(dict->first->next,mirror_configure_window*); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->PortDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("port")); - } else { - long port = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->PortSpin)); - yon_config_register(REPOPUBLIC_CACHE_full("port"),REPOPUBLIC_CACHE_full_command("port"),yon_char_from_long(port)); - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->CacheDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("cache_dir")); - } else { - char *cache_path = (char*)gtk_entry_get_text(GTK_ENTRY(window->CacheEntry)); - if (!yon_char_is_empty(cache_path)){ - yon_config_register(REPOPUBLIC_CACHE_full("cache_dir"),REPOPUBLIC_CACHE_full_command("cache_dir"),cache_path); - } else { - yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - yon_ubl_status_highlight_incorrect(window->CacheEntry); - return; - } - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->InactivityDurationDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("purge_files_after")); - } else { - long duration_inactivity = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->InactivityDurationSpin)); - char *duration_str = yon_char_from_long(duration_inactivity); - yon_config_register(REPOPUBLIC_CACHE_full("purge_files_after"),REPOPUBLIC_CACHE_full_command("purge_files_after"),duration_str); - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->CacheTimeoutDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("download_timeout")); - } else{ - long duration_inactivity = gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->CacheTimeoutSpin)); - char *duration_str = yon_char_from_long(duration_inactivity); - yon_config_register(REPOPUBLIC_CACHE_full("download_timeout"),REPOPUBLIC_CACHE_full_command("download_timeout"),duration_str); - } - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ProxyCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("http_proxy")); - } else { - char *proxy = (char*)gtk_entry_get_text(GTK_ENTRY(window->ProxyEntry)); - yon_config_register(REPOPUBLIC_CACHE_full("http_proxy"),REPOPUBLIC_CACHE_full_command("http_proxy"),proxy); - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AgentDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("user_agent")); - } else { - char *agent = (char*)gtk_entry_get_text(GTK_ENTRY(window->AgentEntry)); - yon_config_register(REPOPUBLIC_CACHE_full("user_agent"),REPOPUBLIC_CACHE_full_command("user_agent"),agent); - } - char *expression = (char*)gtk_entry_get_text(GTK_ENTRY(window->CronEntry)); - if (!yon_char_is_empty(expression)){ - yon_config_register(REPOPUBLIC_CACHE_full("prefetch.cron"),REPOPUBLIC_CACHE_full_command("prefetch.cron"),expression); - } else { - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.cron")); - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UpdatesDelayDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days")); - } else { - char *agent = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->UpdatesDelaySpin))); - yon_config_register(REPOPUBLIC_CACHE_full("prefetch.ttl_unaccessed_in_days"),REPOPUBLIC_CACHE_full_command("prefetch.ttl_unaccessed_in_days"),agent); - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UpdatesRequestDelayDefaultCheck))){ - yon_config_remove_by_key(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days")); - } else { - char *agent = yon_char_from_long(gtk_spin_button_get_value(GTK_SPIN_BUTTON(window->UpdatesRequestDelaySpin))); - yon_config_register(REPOPUBLIC_CACHE_full("prefetch.ttl_unupdated_in_days"),REPOPUBLIC_CACHE_full_command("prefetch.ttl_unupdated_in_days"),agent); - } - gtk_widget_destroy(window->Window); -} char *yon_password_unencrypted_password_get(password_window *window){ const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); @@ -1514,81 +1073,10 @@ void on_password_accept(GtkWidget *,dictionary *dict){ gtk_widget_destroy(window->Window); } -void on_mirror_path_removed(GtkWidget *self, mirror_add_window *window){ - int found=0; - dictionary *dict = NULL; - for_dictionaries(dict, window->sections){ - if (self == ((path_section*)dict->data)->PathRemoveButton){ - found =1; - break; - } - } - if (!found) return; - if (GTK_IS_WIDGET(((path_section*)dict->data)->PathRemovalBox)){ - gtk_widget_destroy(((path_section*)dict->data)->PathRemovalBox); - window->sections = yon_dictionary_rip(dict); - } -} -void on_mirror_path_edit(GtkWidget *self,mirror_add_window *window){ - int active = 0; - dictionary *cur = NULL; - dictionary *dict = NULL; - for_dictionaries(dict, window->sections){ - if (self == ((path_section*)dict->data)->PathEditButton){ - - cur = dict; - break; - } - if (((path_section*)dict->data)->edits) { - active = 1; - } - } - if (!cur||active) return; - if (gtk_editable_get_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry))){ - ((path_section*)dict->data)->edits=1; - gtk_editable_set_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry),0); - gtk_widget_set_sensitive(((path_section*)dict->data)->TypeCombo,0); - GtkWidget *image = gtk_button_get_image(GTK_BUTTON(((path_section*)dict->data)->PathEditButton)); - gtk_image_set_from_icon_name(GTK_IMAGE(image),edit_icon_name,GTK_ICON_SIZE_BUTTON); - } else { - ((path_section*)dict->data)->edits=0; - gtk_widget_set_sensitive(((path_section*)dict->data)->TypeCombo,1); - gtk_editable_set_editable(GTK_EDITABLE(((path_section*)dict->data)->PathEntry),1); - GtkWidget *image = gtk_button_get_image(GTK_BUTTON(((path_section*)dict->data)->PathEditButton)); - gtk_image_set_from_icon_name(GTK_IMAGE(image),accept_icon_name,GTK_ICON_SIZE_BUTTON); - } -} -void on_mirror_path_add(GtkWidget *, mirror_add_window *window){ - const char *target = gtk_entry_get_text(GTK_ENTRY(window->TypeEntry)); - 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; - } - GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_path_add_path); - - path_section *section = malloc(sizeof(path_section)); - section->PathRemovalBox = yon_gtk_builder_get_widget(builder,"PathRemovalBox"); - section->PathEditButton = yon_gtk_builder_get_widget(builder,"PathEditButton"); - section->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); - section->PathRemoveButton = yon_gtk_builder_get_widget(builder,"PathRemoveButton"); - section->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); - section->edits=0; - - gtk_combo_box_set_active_id(GTK_COMBO_BOX(section->TypeCombo),gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->TypeCombo))); - yon_dictionary_add_or_create_if_exists_with_data(window->sections,(char*)target,section); - - gtk_entry_set_text(GTK_ENTRY(section->PathEntry),target); - gtk_entry_set_text(GTK_ENTRY(window->TypeEntry),""); - gtk_box_pack_start(GTK_BOX(window->PathBox),section->PathRemovalBox,0,0,0); - - g_signal_connect(gtk_builder_get_object(builder,"PathEditButton"),"clicked",G_CALLBACK(on_mirror_path_edit),window); - g_signal_connect(gtk_builder_get_object(builder,"PathRemoveButton"),"clicked",G_CALLBACK(on_mirror_path_removed),window); - -} + void on_repo_source_add(GtkWidget *, repo_add_window *window){ char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry)); @@ -1777,135 +1265,7 @@ repo_add_window *yon_repo_add_window_new(){ return window; } -web_publication_add_window *yon_web_publication_add_window_new(){ - GtkBuilder *builder = gtk_builder_new_from_resource(glade_web_publish_add_path); - web_publication_add_window *window = malloc(sizeof(web_publication_add_window)); - window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); - window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); - window->EnablePublishCheck = yon_gtk_builder_get_widget(builder,"EnablePublishCheck"); - window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry"); - window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); - window->RepositoriesTree = yon_gtk_builder_get_widget(builder,"RepositoriesTree"); - window->PortCheck = yon_gtk_builder_get_widget(builder,"PortCheck"); - window->PortEntry = yon_gtk_builder_get_widget(builder,"PortEntry"); - window->EnableWebFileBrowserCheck = yon_gtk_builder_get_widget(builder,"EnableWebFileBrowserCheck"); - window->UsernameCheck = yon_gtk_builder_get_widget(builder,"UsernameCheck"); - window->UsernameEntry = yon_gtk_builder_get_widget(builder,"UsernameEntry"); - window->UserPasswordCheck = yon_gtk_builder_get_widget(builder,"UserPasswordCheck"); - window->UserPasswordCombo = yon_gtk_builder_get_widget(builder,"UserPasswordCombo"); - window->UserPasswordEntry = yon_gtk_builder_get_widget(builder,"UserPasswordEntry"); - window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); - window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); - window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); - window->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton"); - window->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); - window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer")); - yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry)); - 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); - g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(on_password_open),window); - g_signal_connect(G_OBJECT(window->UsernameCheck),"toggled",G_CALLBACK(on_web_user_check),window); - g_signal_connect(G_OBJECT(window->PortCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->PortEntry); - g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->PasswordButton); - g_signal_connect(G_OBJECT(window->UserPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box_inversed),window->UserPasswordEntry); - g_signal_connect(G_OBJECT(window->PortEntry),"insert-text",G_CALLBACK(yon_on_text_insert_only_digits),NULL); - gtk_widget_show(window->Window); - - return window; -} - -mirror_configure_window *yon_mirror_configure_window_new(){ - GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_configure_path); - mirror_configure_window *window = malloc(sizeof(mirror_configure_window)); - window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); - window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); - window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); - window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); - window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); - window->PortDefaultCheck = yon_gtk_builder_get_widget(builder,"PortDefaultCheck"); - window->PortSpin = yon_gtk_builder_get_widget(builder,"PortSpin"); - window->CacheDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheDefaultCheck"); - window->CacheEntry = yon_gtk_builder_get_widget(builder,"CacheEntry"); - window->CacheButton = yon_gtk_builder_get_widget(builder,"CacheButton"); - window->InactivityDurationDefaultCheck = yon_gtk_builder_get_widget(builder,"InactivityDurationDefaultCheck"); - window->InactivityDurationSpin = yon_gtk_builder_get_widget(builder,"InactivityDurationSpin"); - window->CacheTimeoutDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheTimeoutDefaultCheck"); - window->CacheTimeoutSpin = yon_gtk_builder_get_widget(builder,"CacheTimeoutSpin"); - window->ProxyCheck = yon_gtk_builder_get_widget(builder,"ProxyCheck"); - window->ProxyEntry = yon_gtk_builder_get_widget(builder,"ProxyEntry"); - window->AgentDefaultCheck = yon_gtk_builder_get_widget(builder,"AgentDefaultCheck"); - window->AgentEntry = yon_gtk_builder_get_widget(builder,"AgentEntry"); - window->CronEntry = yon_gtk_builder_get_widget(builder,"CronEntry"); - window->UpdatesDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesDelayDefaultCheck"); - window->UpdatesDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesDelaySpin"); - window->UpdatesRequestDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayDefaultCheck"); - window->UpdatesRequestDelaySpin = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelaySpin"); - - - g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); - g_signal_connect(G_OBJECT(window->PortDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PortSpin); - g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheEntry); - g_signal_connect(G_OBJECT(window->CacheDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheButton); - g_signal_connect(G_OBJECT(window->CacheButton),"clicked",G_CALLBACK(on_file_chooser_open),window->CacheEntry); - g_signal_connect(G_OBJECT(window->InactivityDurationDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->InactivityDurationSpin); - g_signal_connect(G_OBJECT(window->CacheTimeoutDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->CacheTimeoutSpin); - g_signal_connect(G_OBJECT(window->ProxyCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->ProxyEntry); - g_signal_connect(G_OBJECT(window->AgentDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->AgentEntry); - g_signal_connect(G_OBJECT(window->UpdatesDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesDelaySpin); - g_signal_connect(G_OBJECT(window->UpdatesRequestDelayDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UpdatesRequestDelaySpin); - gtk_widget_show(window->Window); - - return window; -} - -void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window){ - int active = gtk_combo_box_get_active(self); - if (active == 0){ - gtk_widget_set_sensitive(window->TypeButton,0); - gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"http://repo.ublinux.ru/2405"); - } else if (active == 1){ - gtk_widget_set_sensitive(window->TypeButton,0); - gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"http://proxy.localnet.ru:8080"); - } else if (active == 2){ - gtk_widget_set_sensitive(window->TypeButton,1); - gtk_entry_set_placeholder_text(GTK_ENTRY(window->TypeEntry),"/etc/pacman.d/reflector_mirrorlis"); - } -} - -mirror_add_window *yon_mirror_add_window_new(){ - GtkBuilder *builder = gtk_builder_new_from_resource(glade_mirror_add_path); - mirror_add_window *window = malloc(sizeof(mirror_add_window)); - window->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); - window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox"); - window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry"); - window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo"); - window->TypeEntry = yon_gtk_builder_get_widget(builder,"TypeEntry"); - window->TypeButton = yon_gtk_builder_get_widget(builder,"TypeButton"); - window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton"); - window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); - window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); - window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel"); - window->PathBox = yon_gtk_builder_get_widget(builder,"PathBox"); - yon_gtk_entry_block_symbols(GTK_ENTRY(window->NameEntry),"$"); - yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->TypeEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/1234567890!$.#-_()~$&;{}[]|<>^:?+\\,'*`%"); - - yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->NameEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_$"); - - window->sections = NULL; - 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); - g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_mirror_type_changed),window); - gtk_widget_show(window->Window); - - return window; -} void on_cell_renderer_toggle_toggled(GtkWidget *, gchar* path, GtkWidget *table){ GtkTreeIter iter; @@ -2003,6 +1363,8 @@ void yon_main_window_complete(main_window *widgets){ widgets->MirrorList = GTK_LIST_STORE(gtk_builder_get_object(builder,"MirrorList")); } { + g_signal_connect(G_OBJECT(widgets->RepositoriesMoveUpButton),"clicked",G_CALLBACK(on_repo_move_up),widgets); + g_signal_connect(G_OBJECT(widgets->RepositoriesMoveDownButton),"clicked",G_CALLBACK(on_repo_move_down),widgets); g_signal_connect(G_OBJECT(widgets->RepositoriesCreateButton),"clicked",G_CALLBACK(on_repo_add),widgets); g_signal_connect(G_OBJECT(widgets->WebPublicationAddButton),"clicked",G_CALLBACK(on_web_publish_add),widgets); g_signal_connect(G_OBJECT(widgets->MirrorAddButton),"clicked",G_CALLBACK(on_mirror_add),widgets); @@ -2125,7 +1487,7 @@ void yon_main_window_complete(main_window *widgets){ } int main(int argc, char *argv[]){ - local=setlocale(LC_ALL, ""); + setlocale(LC_ALL, ""); textdomain (LocaleName); config_init(); diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h index 581925e..8f9e0a6 100644 --- a/source/ubl-settings-update.h +++ b/source/ubl-settings-update.h @@ -94,12 +94,11 @@ #define AUTOUPDATE_timestamp_command "ubconfig --source global get [update] AUTOUPDATE[timestamp]" -extern template_app_info template_app_information; typedef char* string; -string version_application; -char *local; +__attribute__((unused)) static \ +string version_application; typedef struct { template_config_fields @@ -387,4 +386,7 @@ char *yon_password_hash_get(password_window *window); void yon_hash_entry_sensitiveness_update(GtkWidget *, password_window *dialog); void on_password_hash_sensitiveness(GtkWidget *,password_window *window); void on_update_clicked(GtkWidget *, main_window *widgets); +void on_repo_move_up(GtkWidget *,main_window *widgets); +void on_repo_move_down(GtkWidget *,main_window *widgets); + #endif \ No newline at end of file diff --git a/ubl-settings-update.glade b/ubl-settings-update.glade index 19fe760..6e3e4b1 100644 --- a/ubl-settings-update.glade +++ b/ubl-settings-update.glade @@ -1,5 +1,5 @@ -