diff --git a/source/ubl-settings-update.c b/source/ubl-settings-update.c index 15490b2..b68d17d 100644 --- a/source/ubl-settings-update.c +++ b/source/ubl-settings-update.c @@ -97,7 +97,36 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ } else if (self == widgets->RepositoriesRepoListConfigurationCheck||self == widgets->RepositoriesDisableSystemReposCheck){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesRepoListConfigurationCheck))){ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesDisableSystemReposCheck))){ + int disable_repo_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesDisableSystemReposCheck)); + GtkTreeModel *model = GTK_TREE_MODEL(widgets->ReposList); + GtkTreeIter iter; + // int size; + // int existing_size; + // config_str existing = yon_config_get_all_by_key(REPOSITORY_search,&existing_size); + // for (int i=0;iReposList,&iter,5,!disable_repo_active,-1); + } else { + gtk_list_store_set(widgets->ReposList,&iter,5,1,-1); + } + } + if (disable_repo_active){ yon_config_register(REPOSITORY_parameter,REPOSITORY_parameter_command,"only"); } else { yon_config_register(REPOSITORY_parameter,REPOSITORY_parameter_command,"enable"); @@ -114,23 +143,10 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RecieveDBFromNetCheck))){ if (!repo_net) repo_net = ",db"; else repo_net = yon_char_unite(repo_net,",","db",NULL); - }else { - repo_net = yon_char_unite(repo_net,",",NULL); } - } else { - repo_net = "disable"; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RecieveDBFromNetCheck))){ - if (!repo_net) repo_net = ",db"; - else repo_net = yon_char_unite(repo_net,",","db",NULL); - } else { - repo_net = yon_char_unite(repo_net,",",NULL); - } - } - if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck))){ - yon_config_remove_by_key(REPOPUBLIC_NET_parameter); - } else { char *repos = ""; GtkTreeIter iter; + int disabled_count=0; for_iter(GTK_TREE_MODEL(widgets->PublicationList),&iter){ char *target; int status; @@ -139,11 +155,24 @@ void on_toggle_button_toggled(GtkWidget *self, main_window *widgets){ char *temp = yon_char_unite(repos,!yon_char_is_empty(repos)?",":"",target,NULL); if (!yon_char_is_empty(repos)) free(repos); repos = temp; + } else { + disabled_count++; } } - if (!yon_char_is_empty(repos)){ + if (!yon_char_is_empty(repos)&&disabled_count){ repo_net = yon_char_unite(repo_net,",",repos,NULL); } + } else { + repo_net = "disable"; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RecieveDBFromNetCheck))){ + if (!repo_net) repo_net = ",db"; + else repo_net = yon_char_unite(repo_net,",","db",NULL); + } else { + // repo_net = yon_char_unite(repo_net,",",NULL); + } + } + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->PublicationCheck))){ + yon_config_remove_by_key(REPOPUBLIC_NET_parameter); } yon_config_register(REPOPUBLIC_NET_parameter,REPOPUBLIC_NET_parameter_command,repo_net); @@ -217,6 +246,12 @@ void yon_interface_update(main_window *widgets){ hour = atoi(time_parsed[0]); minute = atoi(time_parsed[1]); GDateTime *datetime = g_date_time_new_utc(year,month,day,hour,minute,0.0); + if (yon_char_is_empty(main_config.date_format)){ + yon_window_config_get_parameter("settings","date_format",&main_config.date_format,YON_TYPE_STRING); + if (yon_char_is_empty(main_config.date_format)){ + main_config.date_format="%d.%m.%Y %H:%M"; + } + } char *time_label = g_date_time_format(datetime,main_config.date_format); gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),time_label); g_date_time_unref(datetime); @@ -227,34 +262,48 @@ void yon_interface_update(main_window *widgets){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesRepoListConfigurationCheck),0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesDisableSystemReposCheck),0); if (!yon_char_is_empty(repo_config)){ + config_str repos = yon_config_get_all_by_key(REPOSITORY_search,&size); + for (int i=0;iReposList,&iter); + char *temp = strstr(parsed[0],",")?yon_char_replace(parsed[0],",","\n"):parsed[0]; + parsed[0] = temp; + gtk_list_store_set(widgets->ReposList,&iter,0,(cur_size>3&&!strcmp(parsed[3],""))||cur_size<3?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",5,1,-1); + + } + free(key); + free(current); + } + yon_char_parsed_free(repos,size); if (!strcmp(repo_config,"disable")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesRepoListConfigurationCheck),0); } else if (!strcmp(repo_config,"enable")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesRepoListConfigurationCheck),1); }else if (!strcmp(repo_config,"only")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesDisableSystemReposCheck),1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesRepoListConfigurationCheck),1); + int disable_repo_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->RepositoriesDisableSystemReposCheck)); + GtkTreeModel *model = GTK_TREE_MODEL(widgets->ReposList); + GtkTreeIter iter; + for_iter(model,&iter){ + char *name; + gtk_tree_model_get(model,&iter,1,&name,-1); + char *compare_value = REPOSITORY(name); + if (!config(compare_value)||yon_config_check_ignore(compare_value)||yon_config_get_status(compare_value)<0){ + gtk_list_store_set(widgets->ReposList,&iter,5,!disable_repo_active,-1); + } else { + gtk_list_store_set(widgets->ReposList,&iter,5,1,-1); + } + } } } - config_str repos = yon_config_get_all_by_key(REPOSITORY_search,&size); - for (int i=0;iReposList,&iter); - char *temp = strstr(parsed[0],",")?yon_char_replace(parsed[0],",","\n"):parsed[0]; - parsed[0] = temp; - gtk_list_store_set(widgets->ReposList,&iter,0,(cur_size>3&&!strcmp(parsed[3],""))||cur_size<3?1:0,1,key,2,parsed[0],3,cur_size>1?parsed[1]:"",4,cur_size>2?parsed[2]:"",-1); - - } - free(key); - free(current); - } - yon_char_parsed_free(repos,size); } { int repos_size; @@ -409,6 +458,7 @@ void yon_interface_update(main_window *widgets){ gtk_list_store_append(widgets->WebPublicationList,&iter); char *cur = yon_char_new(web_publish[i]); char *key = yon_char_divide_search(cur,"=",-1); + char *full_key = yon_char_new(key); free(yon_char_divide_search(key,"[",-1)); key[strlen(key)-1]='\0'; char *path = NULL; @@ -419,10 +469,18 @@ void yon_interface_update(main_window *widgets){ path = yon_char_divide_search(key,":",-1); } int repos_size; - config_str repos = yon_char_parse(key,&repos_size,","); - + config_str repos = NULL; + if (!yon_char_is_empty(key)){ + repos = yon_char_parse(key,&repos_size,","); + } else { + repos = yon_file_list_dirs(path,&repos_size); + int pool_pos = yon_char_parsed_check_exist(repos,repos_size,"pool"); + if (pool_pos!=-1){ + repos = yon_char_parsed_rip(repos,&repos_size,pool_pos); + } + } + if (repos_size){ char *repos_paths = yon_char_parsed_to_string(repos,repos_size,","); - char *full_path = yon_char_unite(path,!yon_char_is_empty(repos_paths)?":":"",!yon_char_is_empty(repos_paths)?repos_paths:"",NULL); if (!yon_char_is_empty(repos_paths)) free(repos_paths); if (!repos_size){ int temp_size; @@ -439,9 +497,11 @@ void yon_interface_update(main_window *widgets){ } repos_paths = yon_char_parsed_to_string(repos,repos_size,"\n"); - gtk_list_store_set(widgets->WebPublicationList,&iter,1,path,2,repos_paths,8,full_path,-1); + gtk_list_store_set(widgets->WebPublicationList,&iter,2,repos_paths,8,full_key,-1); free(repos_paths); - free(full_path); + } + + gtk_list_store_set(widgets->WebPublicationList,&iter,1,path,-1); int cur_size; config_str parsed = yon_char_parse(cur,&cur_size,":"); if (cur_size){ @@ -591,9 +651,6 @@ void config_init(){ main_config.lock_save_local=0; main_config.load_mode=1; main_config.date_format=NULL; - if (!yon_window_config_get_parameter("usage","date_format",&main_config.date_format,YON_TYPE_STRING)){ - main_config.date_format="%d.%m.%Y %H:%M"; - } } @@ -922,7 +979,7 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ } } window->name = full; - char *parameter = config(REPOPUBLIC_WEB_full(full)); + char *parameter = config(full); int size; config_str parsed = yon_char_parse(parameter,&size,":"); if (size){ @@ -940,11 +997,13 @@ void on_web_publish_edit(GtkWidget *,main_window *widgets){ 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 (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]); - gtk_entry_set_text(GTK_ENTRY(window->UserPasswordEntry),parsed[5]); + 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]); @@ -1361,7 +1420,9 @@ void on_password_accept(GtkWidget *,dictionary *dict){ int size; config_str hash = yon_config_load(yon_debug_output("%s\n",!strcmp(encryption,"sha512")?sha512_encrypt_command(password):sha256_encrypt_command(password)),&size); yon_char_remove_last_symbol(hash[0],'\n'); - gtk_entry_set_text(GTK_ENTRY(target),hash[0]); + char *temp = yon_char_unite(encryption,"|",hash[0],NULL); + gtk_entry_set_text(GTK_ENTRY(target),temp); + yon_char_parsed_free(hash,size); } } @@ -1590,8 +1651,8 @@ repo_add_window *yon_repo_add_window_new(){ g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableSearchCheck); g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageEnableUpdateCheck); g_signal_connect(G_OBJECT(window->UsageDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->UsageSysupgradeCheck); - yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoNameEntry)); - yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->RepoSourceEntry)); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->RepoSourceEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/1234567890!$.#-_()~$&;{}[]|<>^:?+\\,'*`%"); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->RepoNameEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/1234567890.-_"); g_signal_connect(G_OBJECT(window->SignDefaultCheck),"toggled",G_CALLBACK(on_sign_check_toggled),window); g_signal_connect(G_OBJECT(window->SignCell),"toggled",G_CALLBACK(on_sign_cell_toggled),window); g_signal_connect(G_OBJECT(window->RepoSourceCombo),"changed",G_CALLBACK(on_repo_source_changed),window); @@ -1626,7 +1687,6 @@ web_publication_add_window *yon_web_publication_add_window_new(){ window->SelectionCellRenderer = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"SelectionCellRenderer")); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->UserPasswordEntry)); - yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->PathEntry)); yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->UsernameEntry)); window->name=NULL; g_signal_connect(G_OBJECT(window->SelectionCellRenderer),"toggled",G_CALLBACK(on_cell_renderer_toggle_toggled),window->RepositoriesTree); @@ -1689,10 +1749,15 @@ mirror_configure_window *yon_mirror_configure_window_new(){ void on_mirror_type_changed(GtkComboBox *self, mirror_add_window *window){ int active = gtk_combo_box_get_active(self); - if (active == 2){ - gtk_widget_set_sensitive(window->TypeButton,1); - } else { + 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"); } } @@ -1711,7 +1776,7 @@ 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"); yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->NameEntry)); - yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->TypeEntry)); + yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->TypeEntry),"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/1234567890!$.#-_()~$&;{}[]|<>^:?+\\,'*`%"); window->sections = NULL; window->name=NULL; @@ -1842,6 +1907,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->UpdateIntervalCombo); g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->UpdateIntervalSpin); g_signal_connect(G_OBJECT(widgets->UpdateIntervalDefaultCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->BootCheck); + // g_signal_connect(G_OBJECT(widgets->RepositoriesDisableSystemReposCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->RepositoriesTree); GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->WebPublicationTree)); for (unsigned int i=0;iBootCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); + g_signal_connect(G_OBJECT(widgets->PublicationCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->UpdateIntervalSpin),"changed",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->UpdateIntervalCombo),"changed",G_CALLBACK(on_toggle_button_toggled),widgets); g_signal_connect(G_OBJECT(widgets->AutoUpdateCheck),"toggled",G_CALLBACK(on_toggle_button_toggled),widgets); diff --git a/source/ubl-settings-update.h b/source/ubl-settings-update.h index e3e409f..e262540 100644 --- a/source/ubl-settings-update.h +++ b/source/ubl-settings-update.h @@ -53,6 +53,7 @@ #define config_get_global_only_parameters "" #define config_get_local_only_parameters "" +#define get_all_standard_repos "ubconfig --source default get [update] REPOSITORY[*]" #define get_publication_list_command "sed -rn \"/^[[:blank:]]*\\[options\\][[:blank:]]*$/d;s/^\\[(.*)\\]$/\\1/p\" /etc/pacman.conf" #define REPOSITORY(target) yon_char_unite("REPOSITORY[",target,"]",NULL) diff --git a/ubl-settings-update-mirror-add.glade b/ubl-settings-update-mirror-add.glade index 77ac8ea..c654958 100644 --- a/ubl-settings-update-mirror-add.glade +++ b/ubl-settings-update-mirror-add.glade @@ -1,5 +1,5 @@ - + @@ -162,6 +162,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si True True Resource link of file path + http://repo.ublinux.ru/2405 True diff --git a/ubl-settings-update-web-publication-add.glade b/ubl-settings-update-web-publication-add.glade index 4729aae..827c1b1 100644 --- a/ubl-settings-update-web-publication-add.glade +++ b/ubl-settings-update-web-publication-add.glade @@ -100,6 +100,7 @@ True True Storage path to publish + url True diff --git a/ubl-settings-update.glade b/ubl-settings-update.glade index 5c4160d..f8febc6 100644 --- a/ubl-settings-update.glade +++ b/ubl-settings-update.glade @@ -55,6 +55,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + @@ -791,6 +793,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 5 0 @@ -806,6 +809,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. end + 5 1 @@ -821,6 +825,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. end + 5 2 @@ -837,6 +842,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 125 + 5 3 @@ -850,6 +856,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. end + 5 4