Merge pull request 'master' (#97) from YanTheKaller/ubl-settings-update:master into master

Reviewed-on: #97
pull/109/head^2^2 v2.8
Dmitry Razumov 1 year ago
commit bf057106cd

@ -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;i<existing_size;i++){
// char *temp = yon_char_divide_search(existing[i],"=",-1);
// free(existing[i]);
// existing[i]=temp;
// }
// config_str parsed = yon_config_load(get_all_standard_repos,&size);
// for(int i=0;i<size;i++){
// yon_char_remove_last_symbol(parsed[i],'\n');
// // free(yon_char_divide_search(parsed[i],"[",-1));
// // char *temp = yon_char_divide_search(parsed[i],"]",-1);
// // free(parsed[i]);
// // parsed[i]=temp;
// }
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);
}
}
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;i<size;i++){
char *current = yon_char_new(repos[i]);
char *key = yon_char_divide_search(current,"=",-1);
free(yon_char_divide_search(key,"[",-1));
key[strlen(key)-1]='\0';
int cur_size;
config_str parsed = yon_char_parse(current,&cur_size,";");
if (cur_size){
gtk_list_store_append(widgets->ReposList,&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;i<size;i++){
char *current = yon_char_new(repos[i]);
char *key = yon_char_divide_search(current,"=",-1);
free(yon_char_divide_search(key,"[",-1));
key[strlen(key)-1]='\0';
int cur_size;
config_str parsed = yon_char_parse(current,&cur_size,";");
if (cur_size){
gtk_list_store_append(widgets->ReposList,&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;i<g_list_length(list);i++){
@ -1899,6 +1965,7 @@ void yon_main_window_complete(main_window *widgets){
yon_interface_update(widgets);
g_signal_connect(G_OBJECT(widgets->BootCheck),"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);

@ -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)

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<!-- Generated with glade 3.40.0 -->
<interface domain="ubl-settings-update">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-update.css -->
@ -162,6 +162,7 @@ mirrorlist - mirrors file, make sure server URL is NOT included in this file! Si
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Resource link of file path</property>
<property name="placeholder-text" translatable="yes">http://repo.ublinux.ru/2405</property>
</object>
<packing>
<property name="expand">True</property>

@ -100,6 +100,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="tooltip-text" translatable="yes">Storage path to publish</property>
<property name="input-purpose">url</property>
</object>
<packing>
<property name="expand">True</property>

@ -55,6 +55,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<column type="gchararray"/>
<!-- column-name UsageLevel -->
<column type="gchararray"/>
<!-- column-name active -->
<column type="gboolean"/>
</columns>
</object>
<object class="GtkListStore" id="UpdateRepoList">
@ -791,6 +793,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<child>
<object class="GtkCellRendererToggle"/>
<attributes>
<attribute name="sensitive">5</attribute>
<attribute name="active">0</attribute>
</attributes>
</child>
@ -806,6 +809,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="ellipsize">end</property>
</object>
<attributes>
<attribute name="sensitive">5</attribute>
<attribute name="text">1</attribute>
</attributes>
</child>
@ -821,6 +825,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="ellipsize">end</property>
</object>
<attributes>
<attribute name="sensitive">5</attribute>
<attribute name="text">2</attribute>
</attributes>
</child>
@ -837,6 +842,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="wrap-width">125</property>
</object>
<attributes>
<attribute name="sensitive">5</attribute>
<attribute name="text">3</attribute>
</attributes>
</child>
@ -850,6 +856,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="ellipsize">end</property>
</object>
<attributes>
<attribute name="sensitive">5</attribute>
<attribute name="text">4</attribute>
</attributes>
</child>

Loading…
Cancel
Save