WIP Move up and move down buttons fix

pull/118/head
parent 827b488976
commit 4b23651dd6

@ -78,6 +78,9 @@ endif()
set(SOURCE_FILES set(SOURCE_FILES
ubl-settings-update.c ubl-settings-update.c
ubl-settings-update-web.c
ubl-settings-update-mirror.c
ubl-settings-update-repo.c
ubl-settings-update.h ubl-settings-update.h
ubl-strings.h ubl-strings.h
) )

@ -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;i<size;i++){
char *target = parsed[i];
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;
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;
}

@ -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;i<size;i++){
// yon_config_compare_ignore_set(params[i],1);
yon_config_set_status(params[i],1);
}
free(target_param);
}
free(source_param);
}
}
void on_repo_move_down(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_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;i<size;i++){
// yon_config_compare_ignore_set(params[i],1);
yon_config_set_status(params[i],1);
}
free(target_param);
}
free(source_param);
}
}

@ -0,0 +1,248 @@
#include "ubl-settings-update.h"
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);
}
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;i<size;i++){
struct stat path_stat;
char *cur_path = yon_char_unite(path,"/",parsed[i],NULL);
stat(cur_path, &path_stat);
if (S_ISDIR(path_stat.st_mode)&&strcmp(parsed[i],"pool")&&strcmp(parsed[i],"..")&&strcmp(parsed[i],".")){
gtk_list_store_append(window->list,&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);
}

@ -560,14 +560,6 @@ char *on_save_repos(main_window *widgets){
return yon_char_parsed_to_string(parameters,param_size," "); 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 *){ void on_config_save(GtkWidget *, main_window *){
main_config.save_config=YON_CONFIG_BOTH; 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;i<size;i++){
struct stat path_stat;
char *cur_path = yon_char_unite(path,"/",parsed[i],NULL);
stat(cur_path, &path_stat);
if (S_ISDIR(path_stat.st_mode)&&strcmp(parsed[i],"pool")&&strcmp(parsed[i],"..")&&strcmp(parsed[i],".")){
gtk_list_store_append(window->list,&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){ void on_scrolled_window_size_allocate(GtkWidget *, GdkRectangle *allocation, repo_add_window *window){
if (allocation->height<100){ 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){ void on_password_encryption_changed(GtkComboBox *self, password_window *dialog){
int active = gtk_combo_box_get_active(self); 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"); 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){ void on_repo_remove(GtkWidget *self, main_window *widgets){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); 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); 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){ void on_repositories_remove_accept(GtkWidget *, main_window *widgets){
GtkTreeModel *model=NULL; GtkTreeModel *model=NULL;
@ -971,180 +886,6 @@ void on_repo_edit(GtkWidget *,main_window *widgets){
gtk_widget_show(window->Window); 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;i<size;i++){
char *target = parsed[i];
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;
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){ void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); 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){ char *yon_password_unencrypted_password_get(password_window *window){
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry)); 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); 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){ void on_repo_source_add(GtkWidget *, repo_add_window *window){
char *target = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry)); 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; 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){ void on_cell_renderer_toggle_toggled(GtkWidget *, gchar* path, GtkWidget *table){
GtkTreeIter iter; 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")); 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->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->WebPublicationAddButton),"clicked",G_CALLBACK(on_web_publish_add),widgets);
g_signal_connect(G_OBJECT(widgets->MirrorAddButton),"clicked",G_CALLBACK(on_mirror_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[]){ int main(int argc, char *argv[]){
local=setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
textdomain (LocaleName); textdomain (LocaleName);
config_init(); config_init();

@ -94,12 +94,11 @@
#define AUTOUPDATE_timestamp_command "ubconfig --source global get [update] AUTOUPDATE[timestamp]" #define AUTOUPDATE_timestamp_command "ubconfig --source global get [update] AUTOUPDATE[timestamp]"
extern template_app_info template_app_information;
typedef char* string; typedef char* string;
string version_application;
char *local; __attribute__((unused)) static \
string version_application;
typedef struct { typedef struct {
template_config_fields 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 yon_hash_entry_sensitiveness_update(GtkWidget *, password_window *dialog);
void on_password_hash_sensitiveness(GtkWidget *,password_window *window); void on_password_hash_sensitiveness(GtkWidget *,password_window *window);
void on_update_clicked(GtkWidget *, main_window *widgets); 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 #endif

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 <!-- Generated with glade 3.40.0
ubl-settings-update - ubl-settings-update -
Copyright (C) UBGroup Copyright (C) UBGroup
@ -664,20 +664,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Move up</property> <property name="tooltip-text" translatable="yes">Move up</property>
<child> <child>
<object class="GtkMenuButton"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-up-symbolic</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="direction">up</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="noborder"/>
</style>
</object> </object>
</child> </child>
<style> <style>
@ -700,19 +690,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Move down</property> <property name="tooltip-text" translatable="yes">Move down</property>
<child> <child>
<object class="GtkMenuButton"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-down-symbolic</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="noborder"/>
</style>
</object> </object>
</child> </child>
<style> <style>

Loading…
Cancel
Save