#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; }