You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubl-settings-repomanager/source/ubl-settings-repomanager.c

166 lines
9.2 KiB

#include "ubl-settings-repomanager.h"
config main_config;
//storage-configure window section
storage_config_window *yon_storage_config_window_new(){
storage_config_window *window = malloc(sizeof(storage_config_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_storage_config);
window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->StoragePathEntry = yon_gtk_builder_get_widget(builder,"StoragePathEntry");
window->OpenExistingButton = yon_gtk_builder_get_widget(builder,"OpenExistingButton");
window->CreateNewButton = yon_gtk_builder_get_widget(builder,"CreateNewButton");
window->DisableButton = yon_gtk_builder_get_widget(builder,"DisableButton");
window->DeleteButton = yon_gtk_builder_get_widget(builder,"DeleteButton");
window->ReposBox = yon_gtk_builder_get_widget(builder,"ReposBox");
window->AddEntry = yon_gtk_builder_get_widget(builder,"AddEntry");
window->AddRepoButton = yon_gtk_builder_get_widget(builder,"AddRepoButton");
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void on_storage_configure_clicked(GtkWidget *self, main_window *widgets){
storage_config_window *window = yon_storage_config_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,"com.ublinux.ubl-settings-repomanager","storage-configuration-window");
gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window));
gtk_widget_show(window->MainWindow);
}
//repo-add window section
repo_add_window *yon_repo_add_window_new(){
repo_add_window *window = malloc(sizeof(repo_add_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_repo_add);
window->MainWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->StorageCombo = yon_gtk_builder_get_widget(builder,"StorageCombo");
window->HeadLabel = yon_gtk_builder_get_widget(builder,"HeadLabel");
window->RepositoryCombo = yon_gtk_builder_get_widget(builder,"RepositoryCombo");
window->ArchitectureCombo = yon_gtk_builder_get_widget(builder,"ArchitectureCombo");
window->MoveSourceFrame = yon_gtk_builder_get_widget(builder,"MoveSourceFrame");
window->MoveSourceStorageEntry = yon_gtk_builder_get_widget(builder,"MoveSourceStorageEntry");
window->MoveSourceRepoEntry = yon_gtk_builder_get_widget(builder,"MoveSourceRepoEntry");
window->MoveSourceArchEntry = yon_gtk_builder_get_widget(builder,"MoveSourceArchEntry");
window->MoveTargetFrame = yon_gtk_builder_get_widget(builder,"MoveTargetFrame");
window->MoveTargetStorageEntry = yon_gtk_builder_get_widget(builder,"MoveTargetStorageEntry");
window->MoveTargetRepoEntry = yon_gtk_builder_get_widget(builder,"MoveTargetRepoEntry");
window->MoveTargetArchEntry = yon_gtk_builder_get_widget(builder,"MoveTargetArchEntry");
window->PackageSignCombo = yon_gtk_builder_get_widget(builder,"PackageSignCombo");
window->RepoSignCombo = yon_gtk_builder_get_widget(builder,"RepoSignCombo");
window->AddPackageButton = yon_gtk_builder_get_widget(builder,"AddPackageButton");
window->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
window->PackagesTree = yon_gtk_builder_get_widget(builder,"PackagesTree");
window->InfoLabel = yon_gtk_builder_get_widget(builder,"InfoLabel");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->PackagesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PackagesList"));
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}
void on_add_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,"com.ublinux.ubl-settings-repomanager","add-repo-window");
gtk_widget_show(window->MainWindow);
}
void on_move_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,"com.ublinux.ubl-settings-repomanager","add-repo-window");
gtk_widget_show(window->MoveSourceFrame);
gtk_widget_show(window->MoveTargetFrame);
gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
gtk_widget_show(window->MainWindow);
}
void on_remove_clicked(GtkWidget *self, main_window *widgets){
repo_add_window *window = yon_repo_add_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window),TITLE_LABEL,"com.ublinux.ubl-settings-repomanager","add-repo-window");
gtk_widget_hide(gtk_widget_get_parent(window->PackageSignCombo));
gtk_widget_show(window->MainWindow);
}
/* setup functions */
void config_init(){
main_config.tree_store=NULL;
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_window *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);
// Custom widgets configuration
{
widgets->UpdateButton = yon_gtk_builder_get_widget(builder,"UpdateButton");
widgets->DBConfigurationButton = yon_gtk_builder_get_widget(builder,"DBConfigurationButton");
widgets->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
widgets->MoveButton = yon_gtk_builder_get_widget(builder,"MoveButton");
widgets->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
widgets->CloudButton = yon_gtk_builder_get_widget(builder,"CloudButton");
widgets->ReposTree = yon_gtk_builder_get_widget(builder,"ReposTree");
widgets->SearchEntry = yon_gtk_builder_get_widget(builder,"SearchEntry");
widgets->RepoFileTree = yon_gtk_builder_get_widget(builder,"RepoFileTree");
widgets->RepoPackagesTree = yon_gtk_builder_get_widget(builder,"RepoPackagesTree");
widgets->InformationLabel = yon_gtk_builder_get_widget(builder,"InformationLabel");
widgets->RepoList = GTK_TREE_STORE(gtk_builder_get_object(builder,"RepoStore"));
widgets->RepoFileList = GTK_LIST_STORE(gtk_builder_get_object(builder,"RepoFileList"));
widgets->RepoPackagesTre = GTK_LIST_STORE(gtk_builder_get_object(builder,"RepoPackagesTre"));
g_signal_connect(G_OBJECT(widgets->DBConfigurationButton),"clicked",G_CALLBACK(on_storage_configure_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->AddButton),"clicked",G_CALLBACK(on_add_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->MoveButton),"clicked",G_CALLBACK(on_move_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->RemoveButton),"clicked",G_CALLBACK(on_remove_clicked),widgets);
gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL);
/* Widget registration for config monitoring | Регистрация виджетов для мониторинга конфига */
/* Localisation | Локализация */
gtk_widget_show(widgets->Window);
return widgets;
}
}
int main(int argc, char *argv[]){
local=setlocale(LC_ALL, "");
textdomain (LocaleName);
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);
template_main_window *widgets = yon_ubl_window_setup();
gtk_widget_hide(gtk_menu_get_attach_widget(GTK_MENU(gtk_widget_get_parent(widgets->SaveMenuItem))));
gtk_widget_hide(gtk_menu_get_attach_widget(GTK_MENU(gtk_widget_get_parent(widgets->LoadGlobalMenuItem))));
widgets = (template_main_window*)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){
yon_ubl_status_box_render("",BACKGROUND_IMAGE_SUCCESS_TYPE);
}
gtk_main();
return 0;
}