|
|
|
|
@ -1,406 +1,417 @@
|
|
|
|
|
#include "ubl-settings-update.h"
|
|
|
|
|
|
|
|
|
|
config main_config;
|
|
|
|
|
render_data render;
|
|
|
|
|
|
|
|
|
|
void on_close_subwindow(GtkWidget *self){
|
|
|
|
|
gtk_widget_destroy(gtk_widget_get_toplevel(self));
|
|
|
|
|
//functions
|
|
|
|
|
|
|
|
|
|
void yon_load_proceed(YON_CONFIG_TYPE type){
|
|
|
|
|
yon_config_clean();
|
|
|
|
|
if (!yon_char_is_empty(config_get_default_command))
|
|
|
|
|
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
|
|
|
|
|
if (type==YON_CONFIG_GLOBAL){
|
|
|
|
|
yon_config_load_config(type,config_get_global_command,NULL);
|
|
|
|
|
} else if (type==YON_CONFIG_LOCAL){
|
|
|
|
|
yon_config_load_config(type,config_get_local_command,NULL);
|
|
|
|
|
} else if (type==YON_CONFIG_CUSTOM){
|
|
|
|
|
char *path="";
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
|
|
|
|
|
GtkFileFilter *filter = gtk_file_filter_new();
|
|
|
|
|
gtk_file_filter_add_pattern(filter,"*.ini");
|
|
|
|
|
gtk_file_filter_set_name(filter, "*.ini");
|
|
|
|
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
|
|
|
|
|
gtk_widget_show(dialog);
|
|
|
|
|
int response = gtk_dialog_run(GTK_DIALOG(dialog));
|
|
|
|
|
if (response == GTK_RESPONSE_ACCEPT){
|
|
|
|
|
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
|
|
|
|
|
if (!yon_char_is_empty(file)){
|
|
|
|
|
path=file;
|
|
|
|
|
}
|
|
|
|
|
gtk_widget_destroy(dialog);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_widget_destroy(dialog);
|
|
|
|
|
}
|
|
|
|
|
char *command = yon_config_get_custom_command(path);
|
|
|
|
|
yon_config_load_config(type,command,NULL);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_open_browser(GtkWidget *self, char *link){
|
|
|
|
|
yon_ubl_browser_window_open(link,TITLE_LABEL);
|
|
|
|
|
// standard functions
|
|
|
|
|
|
|
|
|
|
/**config_init()
|
|
|
|
|
* [EN]
|
|
|
|
|
*
|
|
|
|
|
* [RU]
|
|
|
|
|
* Функция инициализации всех параметров конфигурации
|
|
|
|
|
*/
|
|
|
|
|
void config_init(){
|
|
|
|
|
main_config.always_open_documentation=0;
|
|
|
|
|
main_config.socket_id=-1;
|
|
|
|
|
main_config.save_socket_id=-1;
|
|
|
|
|
main_config.load_socket_id=-1;
|
|
|
|
|
main_config.lock_help=0;
|
|
|
|
|
main_config.lock_help=0;
|
|
|
|
|
main_config.lock_load_global=0;
|
|
|
|
|
main_config.lock_save_global=0;
|
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
|
main_config.load_mode=1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_open_documentation_confirmation(GtkWidget *self, char *link){
|
|
|
|
|
if (main_config.always_open_documentation==0){
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
documentation_confirmation_window *widgets = malloc(sizeof(documentation_confirmation_window));
|
|
|
|
|
widgets->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow");
|
|
|
|
|
widgets->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton");
|
|
|
|
|
widgets->CloseButton = yon_gtk_builder_get_widget(builder,"CancelHelpButton");
|
|
|
|
|
widgets->HatText = yon_gtk_builder_get_widget(builder,"webHeaderNameLabel");
|
|
|
|
|
widgets->HeaderText = yon_gtk_builder_get_widget(builder,"helpHeader");
|
|
|
|
|
widgets->InfoText = yon_gtk_builder_get_widget(builder,"helpText");
|
|
|
|
|
widgets->AlwaysOpenCheck = yon_gtk_builder_get_widget(builder,"AlwaysOpenDocumentationCheckbox");
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->HatText),TITLE_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->HeaderText),HELP_TITLE_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->InfoText),HELP_INFO_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->AcceptButton),OPEN_HELP_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->AlwaysOpenCheck),HELP_ALWAYS_OPEN_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->CloseButton),CANCEL_LABEL);
|
|
|
|
|
gtk_widget_show_all(widgets->Window);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->CloseButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AcceptButton),"clicked",G_CALLBACK(yon_open_browser),yon_char_new(link));
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->AcceptButton),"clicked",G_CALLBACK(on_close_subwindow),NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
yon_open_browser(self,link);
|
|
|
|
|
void on_selection_changed(GtkWidget *self, main_window *widgets){
|
|
|
|
|
GtkTreeModel *model;
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
if (self == widgets->RepositoriesTree){
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepositoriesTree)),&model,&iter)){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesMoveUpButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesMoveDownButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesEditButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesDeleteButton,1);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesMoveUpButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesMoveDownButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesEditButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->RepositoriesDeleteButton,0);
|
|
|
|
|
}
|
|
|
|
|
} else if (self == widgets->WebPublicationTree){
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->WebPublicationTree)),&model,&iter)){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->WebPublicationEditButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->WebPublicationRemoveButton,1);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_widget_set_sensitive(widgets->WebPublicationEditButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->WebPublicationRemoveButton,0);
|
|
|
|
|
}
|
|
|
|
|
} else if (self == widgets->MirrorTree){
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->MirrorTree)),&model,&iter)){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorConfigureButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorEditButton,1);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorRemoveButton,1);
|
|
|
|
|
} else {
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorConfigureButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorEditButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->MirrorRemoveButton,0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_link(GtkWidget *self, char* uri, gpointer user_data){
|
|
|
|
|
gtk_widget_destroy(self);
|
|
|
|
|
on_open_documentation_confirmation(self,uri);
|
|
|
|
|
}
|
|
|
|
|
void on_repo_add(GtkWidget *, main_window *widgets){
|
|
|
|
|
repo_add_window *window = yon_repo_add_window_new();
|
|
|
|
|
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),ADD_REPO_LABEL,icon_path,"add_repo_window");
|
|
|
|
|
|
|
|
|
|
void on_about(){
|
|
|
|
|
GtkBuilder *builder=gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow");
|
|
|
|
|
GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic");
|
|
|
|
|
GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide");
|
|
|
|
|
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application);
|
|
|
|
|
gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window),PROJECT_HOME_LABEL);
|
|
|
|
|
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),TITLE_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(title),TITLE_LABEL);
|
|
|
|
|
g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL);
|
|
|
|
|
gtk_widget_set_visible(hideButtonBox,0);
|
|
|
|
|
gtk_widget_destroy(hideButtonBox);
|
|
|
|
|
gtk_widget_show(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_repo_accept_clicked),dict);
|
|
|
|
|
|
|
|
|
|
void on_repos_add(GtkWidget *self, repo_window *repo){
|
|
|
|
|
char *distr = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(repo->repoDistributionEntry)));
|
|
|
|
|
char *address = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(repo->repoTypeEntry)));
|
|
|
|
|
if ((distr&&address)||(strcmp(distr,"")!=0&&strcmp(address,"")!=0)){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
gtk_list_store_append(main_config.list,&iter);
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,1,address,2,distr,-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_repos_delete(GtkWidget *self, GtkWidget *tree){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
|
|
|
|
|
gtk_list_store_remove(main_config.list,&iter);
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(render,NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void on_web_publish_add(GtkWidget *,main_window *widgets){
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
void on_repos_edit(GtkWidget *self, repo_window *widgets){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model=GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree)),&model,&iter)){
|
|
|
|
|
char *adress=yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(widgets->repoTypeEntry)));
|
|
|
|
|
char *distro=yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(widgets->repoDistributionEntry)));
|
|
|
|
|
if ((distro&&adress)||(strcmp(distro,"")!=0&&strcmp(adress,"")!=0))
|
|
|
|
|
gtk_list_store_set(main_config.list,&iter,1,adress,2,distro,-1);
|
|
|
|
|
}
|
|
|
|
|
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_repo_window_open_edit(GtkWidget *self, GtkWidget *tree){
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
GtkTreeModel *model=GTK_TREE_MODEL(main_config.list);
|
|
|
|
|
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),&model,&iter)){
|
|
|
|
|
repo_window *widgets=NULL;
|
|
|
|
|
widgets=malloc(sizeof(repo_window));
|
|
|
|
|
widgets->builder= gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
|
|
|
|
|
|
|
|
|
|
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
|
|
|
|
|
widgets->repoTypeEntry=yon_gtk_builder_get_widget(widgets->builder, "repoAdressEntry");
|
|
|
|
|
widgets->repoDistributionLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionLabel");
|
|
|
|
|
widgets->repoDistributionEntry=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionEntry");
|
|
|
|
|
|
|
|
|
|
widgets->repoCancelButton=yon_gtk_builder_get_widget(widgets->builder, "repoCancelButton");
|
|
|
|
|
widgets->repoAcceptButton=yon_gtk_builder_get_widget(widgets->builder, "repoAcceptButton");
|
|
|
|
|
widgets->tree=tree;
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoCancelButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_repos_edit), widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
|
|
|
|
|
char *adress = NULL;
|
|
|
|
|
char *distro = NULL;
|
|
|
|
|
gtk_tree_model_get(GTK_TREE_MODEL(main_config.list),&iter,1,&adress,2,&distro,-1);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->repoTypeEntry),adress);
|
|
|
|
|
gtk_entry_set_text(GTK_ENTRY(widgets->repoDistributionEntry),distro);
|
|
|
|
|
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->repoTypeLabel),ADRESS_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->repoDistributionLabel),DISTRIBUTION_LABEL);
|
|
|
|
|
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repoCancelButton),CANCEL_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repoAcceptButton),SAVE_LABEL);
|
|
|
|
|
gtk_widget_show_all(widgets->window);
|
|
|
|
|
} else {
|
|
|
|
|
yon_ubl_status_box_render(render,NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_mirror_add(GtkWidget *,main_window *widgets){
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
repo_window *on_repo_window_open_create(GtkWidget *self){
|
|
|
|
|
repo_window *widgets=NULL;
|
|
|
|
|
widgets=malloc(sizeof(repo_window));
|
|
|
|
|
widgets->builder= gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
widgets->window=yon_gtk_builder_get_widget(widgets->builder, "RepoWindow");
|
|
|
|
|
|
|
|
|
|
widgets->repoTypeLabel=yon_gtk_builder_get_widget(widgets->builder, "repoAdressLabel");
|
|
|
|
|
widgets->repoTypeEntry=yon_gtk_builder_get_widget(widgets->builder, "repoAdressEntry");
|
|
|
|
|
widgets->repoDistributionLabel=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionLabel");
|
|
|
|
|
widgets->repoDistributionEntry=yon_gtk_builder_get_widget(widgets->builder, "repoDistributionEntry");
|
|
|
|
|
|
|
|
|
|
widgets->repoCancelButton=yon_gtk_builder_get_widget(widgets->builder, "repoCancelButton");
|
|
|
|
|
widgets->repoAcceptButton=yon_gtk_builder_get_widget(widgets->builder, "repoAcceptButton");
|
|
|
|
|
void on_web_publish_remove(GtkWidget *self,main_window *widgets){
|
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
|
data->action_text=REMOVE_REPO_WARNING_LABEL;
|
|
|
|
|
data->function=(void(*)(void*,void*))on_remove_accept;
|
|
|
|
|
data->data = widgets->WebPublicationTree;
|
|
|
|
|
yon_confirmation_dialog_call(self,data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoCancelButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_repos_add), widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repoAcceptButton), "clicked", G_CALLBACK(on_close_subwindow), NULL);
|
|
|
|
|
void on_mirror_remove(GtkWidget *self,main_window *widgets){
|
|
|
|
|
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
|
|
|
|
|
data->action_text=REMOVE_REPO_WARNING_LABEL;
|
|
|
|
|
data->function=(void(*)(void*,void*))on_remove_accept;
|
|
|
|
|
data->data = widgets->MirrorTree;
|
|
|
|
|
yon_confirmation_dialog_call(self,data);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_web_publish_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
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,"mirror_window");
|
|
|
|
|
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->repoTypeLabel),ADRESS_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->repoDistributionLabel),DISTRIBUTION_LABEL);
|
|
|
|
|
void on_mirror_edit(GtkWidget *,main_window *widgets){
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repoCancelButton),CANCEL_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repoAcceptButton),SAVE_LABEL);
|
|
|
|
|
gtk_widget_show_all(widgets->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 init(GtkListStore *list){
|
|
|
|
|
main_config.always_open_documentation=0;
|
|
|
|
|
main_config.win_height=600;
|
|
|
|
|
main_config.win_width=800;
|
|
|
|
|
main_config.win_pos_x=0;
|
|
|
|
|
main_config.win_pos_y=0;
|
|
|
|
|
main_config.socket_id=-1;
|
|
|
|
|
main_config.save_socket_id=-1;
|
|
|
|
|
main_config.load_socket_id=-1;
|
|
|
|
|
main_config.lock_help=0;
|
|
|
|
|
main_config.lock_help=0;
|
|
|
|
|
main_config.lock_load_global=0;
|
|
|
|
|
main_config.lock_save_global=0;
|
|
|
|
|
main_config.lock_save_local=0;
|
|
|
|
|
main_config.list=list;
|
|
|
|
|
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_accept),dict);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main_window *setup_window(){
|
|
|
|
|
main_window *widgets=NULL;
|
|
|
|
|
widgets=malloc(sizeof(main_window));
|
|
|
|
|
widgets->builder=gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
widgets->window=yon_gtk_builder_get_widget(widgets->builder,"MainWindow");
|
|
|
|
|
|
|
|
|
|
widgets->HeaderTopic=yon_gtk_builder_get_widget(widgets->builder,"headerTopic");
|
|
|
|
|
|
|
|
|
|
widgets->PlugBox=yon_gtk_builder_get_widget(widgets->builder,"plugBox");
|
|
|
|
|
widgets->RightBox=yon_gtk_builder_get_widget(widgets->builder,"LeftBox");
|
|
|
|
|
widgets->LeftBox=yon_gtk_builder_get_widget(widgets->builder,"RightBox");
|
|
|
|
|
|
|
|
|
|
widgets->generalSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"generalTabLabel");
|
|
|
|
|
widgets->repositoriesSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"repositoriesTabLabel");
|
|
|
|
|
widgets->extraSettingsTabLabel=yon_gtk_builder_get_widget(widgets->builder,"extraTabLabel");
|
|
|
|
|
|
|
|
|
|
widgets->generalSettingsHideNoUpdatesCheck=yon_gtk_builder_get_widget(widgets->builder,"hideIfNoUpdatesCheck");
|
|
|
|
|
widgets->generalSettingsUpdatesCheckFreqLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqLabel");
|
|
|
|
|
widgets->generalSettingsUpdatesCheckFreqCombo=yon_gtk_builder_get_widget(widgets->builder,"UpdateCheckFreqCombo");
|
|
|
|
|
widgets->generalSettingsDownloadAutoCheck=yon_gtk_builder_get_widget(widgets->builder,"DownloadAutoCheck");
|
|
|
|
|
|
|
|
|
|
widgets->repositoriesSettingsActivateAURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateAURCheck");
|
|
|
|
|
widgets->repositoriesSettingsActivateUBURCheck=yon_gtk_builder_get_widget(widgets->builder,"AcivateUBURCheck");
|
|
|
|
|
widgets->repositoriesSettingsMoveUpButton=yon_gtk_builder_get_widget(widgets->builder,"MoveUpButton");
|
|
|
|
|
widgets->repositoriesSettingsMoveDownButton=yon_gtk_builder_get_widget(widgets->builder,"MoveDownButton");
|
|
|
|
|
widgets->repositoriesSettingsCreateButton=yon_gtk_builder_get_widget(widgets->builder,"CreateButton");
|
|
|
|
|
widgets->repositoriesSettingsEditButton=yon_gtk_builder_get_widget(widgets->builder,"EditButton");
|
|
|
|
|
widgets->repositoriesSettingsDeleteButton=yon_gtk_builder_get_widget(widgets->builder,"DeleteButton");
|
|
|
|
|
widgets->repositoriesSettingsRepositoriesTreeView=yon_gtk_builder_get_widget(widgets->builder,"RepositoriesTreeView");
|
|
|
|
|
widgets->repositoriesSettingsEnabledColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"EnabledColumn"));
|
|
|
|
|
widgets->repositoriesSettingsURIColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"URIColumn"));
|
|
|
|
|
widgets->repositoriesSettingsDistributionColumn=GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder,"DistributionColumn"));
|
|
|
|
|
|
|
|
|
|
widgets->extraSettingsPackageManagerLabel=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerLabel");
|
|
|
|
|
widgets->extraSettingsPackageManagerEntry=yon_gtk_builder_get_widget(widgets->builder,"PackageManagerEntry");
|
|
|
|
|
widgets->extraSettingsUpdateCommandLabel=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandLabel");
|
|
|
|
|
widgets->extraSettingsUpdateCommandEntry=yon_gtk_builder_get_widget(widgets->builder,"UpdateCommandEntry");
|
|
|
|
|
widgets->extraSettingsCacheCleanlabel=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandLabel");
|
|
|
|
|
widgets->extraSettingsCacheCleanEntry=yon_gtk_builder_get_widget(widgets->builder,"CleanCommandEntry");
|
|
|
|
|
widgets->extraSettingsLaunchPackageManagerButton=yon_gtk_builder_get_widget(widgets->builder,"LaunchPackageManagerButton");
|
|
|
|
|
|
|
|
|
|
widgets->headerLoadConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerLoadConfigLabel");
|
|
|
|
|
widgets->headerLoadGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadGlobalConfigurationMenuItem");
|
|
|
|
|
widgets->headerLoadLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"LoadLocalConfigurationMenuItem");
|
|
|
|
|
|
|
|
|
|
widgets->headerSaveConfigLabel=yon_gtk_builder_get_widget(widgets->builder,"headerSaveConfigLabel");
|
|
|
|
|
widgets->headerSaveGlobalLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalLocalConfigurationMenuItem");
|
|
|
|
|
widgets->headerSaveGlobalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveGlobalConfigurationMenuItem");
|
|
|
|
|
widgets->headerSaveLocalConfigButton=yon_gtk_builder_get_widget(widgets->builder,"SaveLocalConfigurationMenuItem");
|
|
|
|
|
|
|
|
|
|
widgets->headerDocumentationButton=yon_gtk_builder_get_widget(widgets->builder,"DocumentationMenuItem");
|
|
|
|
|
widgets->headerAboutButton=yon_gtk_builder_get_widget(widgets->builder,"AboutMenuItem");
|
|
|
|
|
|
|
|
|
|
widgets->mainCheckForUpdatesButton=yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
|
|
|
|
|
|
|
|
|
|
widgets->mainCheckForUpdatesButton = yon_gtk_builder_get_widget(widgets->builder,"checkForUpdatesButton");
|
|
|
|
|
widgets->statusBox = yon_gtk_builder_get_widget(widgets->builder,"mainStatusBox");
|
|
|
|
|
widgets->statusIcon = yon_gtk_builder_get_widget(widgets->builder,"mainStatusIcon");
|
|
|
|
|
widgets->statusLabel = yon_gtk_builder_get_widget(widgets->builder,"mainStatusLabel");
|
|
|
|
|
|
|
|
|
|
main_config.list=GTK_LIST_STORE(gtk_builder_get_object(widgets->builder,"liststore1"));
|
|
|
|
|
|
|
|
|
|
if (main_config.lock_load_global == 1){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->headerLoadGlobalConfigButton,0);
|
|
|
|
|
}
|
|
|
|
|
if (main_config.lock_save_global == 1){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->headerSaveGlobalConfigButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->headerSaveGlobalLocalConfigButton,0);
|
|
|
|
|
void on_repo_accept_clicked(GtkWidget *, dictionary *dict){
|
|
|
|
|
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
|
|
|
|
|
// int enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->EnabledCheck));
|
|
|
|
|
const char *repo_name = gtk_entry_get_text(GTK_ENTRY(window->RepoNameEntry));
|
|
|
|
|
if (yon_char_is_empty(repo_name)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->RepoNameEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (main_config.lock_save_local == 1){
|
|
|
|
|
gtk_widget_set_sensitive(widgets->headerSaveLocalConfigButton,0);
|
|
|
|
|
gtk_widget_set_sensitive(widgets->headerSaveGlobalLocalConfigButton,0);
|
|
|
|
|
// int source_mode = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSourceCombo));
|
|
|
|
|
const char *source_path = gtk_entry_get_text(GTK_ENTRY(window->RepoSourceEntry));
|
|
|
|
|
if (yon_char_is_empty(source_path)){
|
|
|
|
|
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
yon_ubl_status_highlight_incorrect(window->RepoSourceEntry);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_window_set_title(GTK_WINDOW(widgets->window),TITLE_LABEL);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->HeaderTopic),TITLE_LABEL);
|
|
|
|
|
// int sign_level_package = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSignCheckCombo));
|
|
|
|
|
// int sign_level_condiition = gtk_combo_box_get_active(GTK_COMBO_BOX(window->RepoSignConditionCombo));
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->generalSettingsTabLabel),GENERAL_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->repositoriesSettingsTabLabel),REPOSITORIES_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsTabLabel),EXTRA_LABEL);
|
|
|
|
|
// int usage_level_default = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageDefaultCheck));
|
|
|
|
|
// int usage_level_enable_update = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableUpdateCheck));
|
|
|
|
|
// int usage_level_enable_search = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableSearchCheck));
|
|
|
|
|
// int usage_level_enable_install = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageEnableInsallCheck));
|
|
|
|
|
// int usage_level_sysupgrade = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UsageSysupgradeCheck));
|
|
|
|
|
gtk_widget_destroy(window->Window);
|
|
|
|
|
free(window);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->generalSettingsUpdatesCheckFreqLabel),CHECK_FREQUENCY_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsHideNoUpdatesCheck),HIDE_NO_UPDATES_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->generalSettingsDownloadAutoCheck),AUTO_UPDATE_LABEL);
|
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_1_HOUR_LABEL);
|
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_2_HOURS_LABEL);
|
|
|
|
|
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->generalSettingsUpdatesCheckFreqCombo),EVERY_3_HOURS_LABEL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateAURCheck),AUR_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsActivateUBURCheck),UBUR_LABEL);
|
|
|
|
|
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsCreateButton),_("Create"));
|
|
|
|
|
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsEditButton),_("Edit"));
|
|
|
|
|
// gtk_button_set_label(GTK_BUTTON(widgets->repositoriesSettingsDeleteButton),_("Delete"));
|
|
|
|
|
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsEnabledColumn),ENABLED_LABEL);
|
|
|
|
|
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsURIColumn),URI_LABEL);
|
|
|
|
|
gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->repositoriesSettingsDistributionColumn),DISTIBUTION_LABEL);
|
|
|
|
|
void on_web_publish_accept(GtkWidget *, dictionary *){
|
|
|
|
|
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsPackageManagerLabel),PACKAGE_MANAGER_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsUpdateCommandLabel),UPDATE_COMMAND_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->extraSettingsCacheCleanlabel),CACHE_CLEAN_LABEL);
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->extraSettingsLaunchPackageManagerButton),LAUNCH_PACKAGE_MANAGER_LABEL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->headerLoadConfigLabel),LOAD_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadGlobalConfigButton),LOAD_GLOBAL_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerLoadLocalConfigButton),LOAD_LOCAL_LABEL);
|
|
|
|
|
void on_mirror_accept(GtkWidget *,dictionary *){
|
|
|
|
|
// main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
|
|
|
|
|
// repo_add_window *window = yon_dictionary_get_data(dict->first->next,repo_add_window*);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(widgets->headerSaveConfigLabel),SAVE_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalLocalConfigButton),SAVE_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveGlobalConfigButton),SAVE_GLOBAL_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerSaveLocalConfigButton),SAVE_LOCAL_LABEL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerDocumentationButton),DOCUMENTATION_LABEL);
|
|
|
|
|
gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->headerAboutButton),ABOUT_LABEL);
|
|
|
|
|
void on_remove_accept(GtkWidget *, GtkWidget *){
|
|
|
|
|
|
|
|
|
|
gtk_button_set_label(GTK_BUTTON(widgets->mainCheckForUpdatesButton),CHECK_FOR_UPDATES_LABEL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
repo_add_window *yon_repo_add_window_new(){
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_repo_add_path);
|
|
|
|
|
repo_add_window *window = malloc(sizeof(repo_add_window));
|
|
|
|
|
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
|
|
|
|
|
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
|
|
|
|
|
window->EnabledCheck = yon_gtk_builder_get_widget(builder,"EnabledCheck");
|
|
|
|
|
window->RepoNameEntry = yon_gtk_builder_get_widget(builder,"RepoNameEntry");
|
|
|
|
|
window->RepoSourceCombo = yon_gtk_builder_get_widget(builder,"RepoSourceCombo");
|
|
|
|
|
window->RepoSourceEntry = yon_gtk_builder_get_widget(builder,"RepoSourceEntry");
|
|
|
|
|
window->RepoSourceButton = yon_gtk_builder_get_widget(builder,"RepoSourceButton");
|
|
|
|
|
window->RepoSignCheckCombo = yon_gtk_builder_get_widget(builder,"RepoSignCheckCombo");
|
|
|
|
|
window->RepoSignConditionCombo = yon_gtk_builder_get_widget(builder,"RepoSignConditionCombo");
|
|
|
|
|
window->UsageDefaultCheck = yon_gtk_builder_get_widget(builder,"UsageDefaultCheck");
|
|
|
|
|
window->UsageEnableUpdateCheck = yon_gtk_builder_get_widget(builder,"UsageEnableUpdateCheck");
|
|
|
|
|
window->UsageEnableSearchCheck = yon_gtk_builder_get_widget(builder,"UsageEnableSearchCheck");
|
|
|
|
|
window->UsageEnableInsallCheck = yon_gtk_builder_get_widget(builder,"UsageEnableInsallCheck");
|
|
|
|
|
window->UsageSysupgradeCheck = yon_gtk_builder_get_widget(builder,"UsageSysupgradeCheck");
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
gtk_widget_show(window->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");
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GtkWidget *Header = yon_gtk_builder_get_widget(widgets->builder,"boxColor");
|
|
|
|
|
GtkWidget *Image = yon_gtk_builder_get_widget(widgets->builder,"HeadBackgroundImage");
|
|
|
|
|
GtkWidget *Overlay = yon_gtk_builder_get_widget(widgets->builder,"HeadOverlay");
|
|
|
|
|
|
|
|
|
|
GtkWidget *UnderNoteOverlay = yon_gtk_builder_get_widget(widgets->builder,"UnderNoteOverlay");
|
|
|
|
|
GtkWidget *headLabel = yon_gtk_builder_get_widget(widgets->builder,"headLabel");
|
|
|
|
|
GtkWidget *headInfoLabel = yon_gtk_builder_get_widget(widgets->builder,"headInfoLabel");
|
|
|
|
|
yon_ubl_header_setup(Overlay,Header,Image,image_path);
|
|
|
|
|
gtk_overlay_add_overlay(GTK_OVERLAY(UnderNoteOverlay),widgets->mainCheckForUpdatesButton);
|
|
|
|
|
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(headLabel),TITLE_LABEL);
|
|
|
|
|
gtk_label_set_text(GTK_LABEL(headInfoLabel),TITLE_INFO_LABEL);
|
|
|
|
|
gtk_widget_show_all(widgets->window);
|
|
|
|
|
|
|
|
|
|
render.box=widgets->statusBox;
|
|
|
|
|
render.icon=widgets->statusIcon;
|
|
|
|
|
render.label=widgets->statusLabel;
|
|
|
|
|
yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id);
|
|
|
|
|
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->PortEntry = yon_gtk_builder_get_widget(builder,"PortEntry");
|
|
|
|
|
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->InactivityDurationEntry = yon_gtk_builder_get_widget(builder,"InactivityDurationEntry");
|
|
|
|
|
window->CacheTimeoutDefaultCheck = yon_gtk_builder_get_widget(builder,"CacheTimeoutDefaultCheck");
|
|
|
|
|
window->CacheTimeoutEntry = yon_gtk_builder_get_widget(builder,"CacheTimeoutEntry");
|
|
|
|
|
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->UpdatesDelayEntry = yon_gtk_builder_get_widget(builder,"UpdatesDelayEntry");
|
|
|
|
|
window->UpdatesRequestDelayDefaultCheck = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayDefaultCheck");
|
|
|
|
|
window->UpdatesRequestDelayEntry = yon_gtk_builder_get_widget(builder,"UpdatesRequestDelayEntry");
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsCreateButton), "clicked", G_CALLBACK(on_repo_window_open_create), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsEditButton), "clicked", G_CALLBACK(on_repo_window_open_edit), widgets->repositoriesSettingsRepositoriesTreeView);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->repositoriesSettingsDeleteButton), "clicked", G_CALLBACK(on_repos_delete), widgets->repositoriesSettingsRepositoriesTreeView);
|
|
|
|
|
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->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");
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
|
|
|
|
|
gtk_widget_show(window->Window);
|
|
|
|
|
|
|
|
|
|
return window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->headerAboutButton), "activate", G_CALLBACK(on_about), NULL);
|
|
|
|
|
/**yon_main_window_complete(main_window *widgets)
|
|
|
|
|
* [EN]
|
|
|
|
|
*
|
|
|
|
|
* [RU]
|
|
|
|
|
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
|
|
|
|
|
*/
|
|
|
|
|
void yon_main_window_complete(main_window *widgets){
|
|
|
|
|
widgets = yon_remalloc(widgets,sizeof(main_window));
|
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
|
|
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->headerDocumentationButton), "activate", G_CALLBACK(on_open_documentation_confirmation), WIKI_LINK);
|
|
|
|
|
{
|
|
|
|
|
gtk_builder_add_callback_symbol(builder,"yon_gtk_widget_set_sensitive_from_toggle_button_inversed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed));
|
|
|
|
|
}
|
|
|
|
|
// Custom widgets configuration
|
|
|
|
|
{
|
|
|
|
|
widgets->AutoUpdateCheck = yon_gtk_builder_get_widget(builder,"AutoUpdateCheck");
|
|
|
|
|
widgets->UpdateCheckFreqCombo = yon_gtk_builder_get_widget(builder,"UpdateCheckFreqCombo");
|
|
|
|
|
widgets->UpdateCheckIntervalCombo = yon_gtk_builder_get_widget(builder,"UpdateCheckIntervalCombo");
|
|
|
|
|
widgets->UpdateRepoListCombo = yon_gtk_builder_get_widget(builder,"UpdateRepoListCombo");
|
|
|
|
|
widgets->UpdateRepoTree = yon_gtk_builder_get_widget(builder,"UpdateRepoTree");
|
|
|
|
|
widgets->RepositoriesRepoListConfigurationCheck = yon_gtk_builder_get_widget(builder,"RepositoriesRepoListConfigurationCheck");
|
|
|
|
|
widgets->RepositoriesDisableSystemReposCheck = yon_gtk_builder_get_widget(builder,"RepositoriesDisableSystemReposCheck");
|
|
|
|
|
widgets->RepositoriesTree = yon_gtk_builder_get_widget(builder,"RepositoriesTree");
|
|
|
|
|
widgets->RepositoriesUpdateButton = yon_gtk_builder_get_widget(builder,"RepositoriesUpdateButton");
|
|
|
|
|
widgets->RepositoriesMoveUpButton = yon_gtk_builder_get_widget(builder,"RepositoriesMoveUpButton");
|
|
|
|
|
widgets->RepositoriesMoveDownButton = yon_gtk_builder_get_widget(builder,"RepositoriesMoveDownButton");
|
|
|
|
|
widgets->RepositoriesCreateButton = yon_gtk_builder_get_widget(builder,"RepositoriesCreateButton");
|
|
|
|
|
widgets->RepositoriesEditButton = yon_gtk_builder_get_widget(builder,"RepositoriesEditButton");
|
|
|
|
|
widgets->RepositoriesDeleteButton = yon_gtk_builder_get_widget(builder,"RepositoriesDeleteButton");
|
|
|
|
|
widgets->PublicationConnectPublicCheck = yon_gtk_builder_get_widget(builder,"PublicationConnectPublicCheck");
|
|
|
|
|
widgets->RecieveDBFromNetCheck = yon_gtk_builder_get_widget(builder,"RecieveDBFromNetCheck");
|
|
|
|
|
widgets->PublicationTree = yon_gtk_builder_get_widget(builder,"PublicationTree");
|
|
|
|
|
widgets->PublicationUpdateButton = yon_gtk_builder_get_widget(builder,"PublicationUpdateButton");
|
|
|
|
|
widgets->WebPublicationUpdateButton = yon_gtk_builder_get_widget(builder,"WebPublicationUpdateButton");
|
|
|
|
|
widgets->WebPublicationAddButton = yon_gtk_builder_get_widget(builder,"WebPublicationAddButton");
|
|
|
|
|
widgets->WebPublicationEditButton = yon_gtk_builder_get_widget(builder,"WebPublicationEditButton");
|
|
|
|
|
widgets->WebPublicationRemoveButton = yon_gtk_builder_get_widget(builder,"WebPublicationRemoveButton");
|
|
|
|
|
widgets->WebPublicationTree = yon_gtk_builder_get_widget(builder,"WebPublicationTree");
|
|
|
|
|
widgets->MirrorPublicCheck = yon_gtk_builder_get_widget(builder,"MirrorPublicCheck");
|
|
|
|
|
widgets->MirrorTree = yon_gtk_builder_get_widget(builder,"MirrorTree");
|
|
|
|
|
widgets->MirrorUpdateButton = yon_gtk_builder_get_widget(builder,"MirrorUpdateButton");
|
|
|
|
|
widgets->MirrorAddButton = yon_gtk_builder_get_widget(builder,"MirrorAddButton");
|
|
|
|
|
widgets->MirrorEditButton = yon_gtk_builder_get_widget(builder,"MirrorEditButton");
|
|
|
|
|
widgets->MirrorRemoveButton = yon_gtk_builder_get_widget(builder,"MirrorRemoveButton");
|
|
|
|
|
widgets->MirrorConfigureButton = yon_gtk_builder_get_widget(builder,"MirrorConfigureButton");
|
|
|
|
|
widgets->UpdateRepoList = GTK_LIST_STORE(gtk_builder_get_object(builder,"UpdateRepoList"));
|
|
|
|
|
widgets->ReposList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ReposList"));
|
|
|
|
|
widgets->PublicationList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PublicationList"));
|
|
|
|
|
widgets->WebPublicationList = GTK_LIST_STORE(gtk_builder_get_object(builder,"WebPublicationList"));
|
|
|
|
|
widgets->MirrorList = GTK_LIST_STORE(gtk_builder_get_object(builder,"MirrorList"));
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->RepositoriesCreateButton),"clicked",G_CALLBACK(on_repo_add),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->WebPublicationAddButton),"clicked",G_CALLBACK(on_web_publish_add),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MirrorAddButton),"clicked",G_CALLBACK(on_mirror_add),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->RepositoriesTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->PublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->WebPublicationTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
g_signal_connect(G_OBJECT(widgets->MirrorTree),"cursor-changed",G_CALLBACK(on_selection_changed),widgets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
|
int main(int argc, char *argv[]){
|
|
|
|
|
local=setlocale(LC_ALL, "");
|
|
|
|
|
textdomain (LocaleName);
|
|
|
|
|
init(NULL);
|
|
|
|
|
int option_index=0;
|
|
|
|
|
int show_help=0;
|
|
|
|
|
{
|
|
|
|
|
struct option long_options[] = {
|
|
|
|
|
{"help", 0, 0, 'h'},
|
|
|
|
|
{"version", 0, 0, 'V'},
|
|
|
|
|
{"lock-help", 0,0, 1},
|
|
|
|
|
{"lock-save", 0,0, 2},
|
|
|
|
|
{"lock-save-local", 0,0, 3},
|
|
|
|
|
{"lock-save-global", 0,0, 4},
|
|
|
|
|
{"lock-load-global", 0,0, 5},
|
|
|
|
|
{"socket-id", 1, 0, 's'},
|
|
|
|
|
{"socket-ext-id", 1,0, 'e'},
|
|
|
|
|
{"socket-trd-id", 1,0, 't'},
|
|
|
|
|
{ NULL, 0, NULL, 0 }
|
|
|
|
|
};
|
|
|
|
|
for (int i=0;i<argc;i++){
|
|
|
|
|
int argument=getopt_long(argc,argv,"hVvs:e:t:",long_options,&option_index);
|
|
|
|
|
switch(argument){
|
|
|
|
|
case 'h':
|
|
|
|
|
show_help=1;
|
|
|
|
|
break;
|
|
|
|
|
case 'v':
|
|
|
|
|
case 'V':
|
|
|
|
|
printf("%s\n",VERSION_LABEL);
|
|
|
|
|
exit(0);
|
|
|
|
|
break;
|
|
|
|
|
case 's':
|
|
|
|
|
if(optarg)
|
|
|
|
|
main_config.socket_id=atoi(optarg);
|
|
|
|
|
break;
|
|
|
|
|
case 'e':
|
|
|
|
|
if(optarg)
|
|
|
|
|
main_config.load_socket_id=atoi(optarg);
|
|
|
|
|
break;
|
|
|
|
|
case 't':
|
|
|
|
|
if(optarg)
|
|
|
|
|
main_config.save_socket_id=atoi(optarg);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
main_config.lock_help=1;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
main_config.lock_save_local=1;
|
|
|
|
|
main_config.lock_save_global=1;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
main_config.lock_save_local=1;
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
main_config.lock_save_global=1;
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
main_config.lock_load_global=1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (show_help==1&&main_config.lock_help!=1){
|
|
|
|
|
printf("%s\n",HELP_LABEL);
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
config_init();
|
|
|
|
|
|
|
|
|
|
yon_ubl_connect_config((_template_config*)&main_config);
|
|
|
|
|
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
|
|
|
|
|
config_str unfound = NULL;
|
|
|
|
|
int size=0;
|
|
|
|
|
yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL);
|
|
|
|
|
gtk_init(&argc,&argv);
|
|
|
|
|
main_window *widgets = setup_window();
|
|
|
|
|
yon_ubl_status_box_render(render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
|
|
|
|
|
GtkCssProvider *css=gtk_css_provider_new();
|
|
|
|
|
gtk_css_provider_load_from_resource(css,CssPath);
|
|
|
|
|
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
|
|
|
|
|
GTK_STYLE_PROVIDER(css),
|
|
|
|
|
-1);
|
|
|
|
|
template_main_window *widgets = yon_ubl_window_setup();
|
|
|
|
|
yon_main_window_complete((main_window*)widgets);
|
|
|
|
|
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
|
|
|
|
|
yon_window_config_load(path);
|
|
|
|
|
if (getuid()!=0){
|
|
|
|
|
textdomain(template_ui_LocaleName);
|
|
|
|
|
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
|
|
|
|
|
textdomain(LocaleName);
|
|
|
|
|
}
|
|
|
|
|
gtk_main();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|