diff --git a/Makefile b/Makefile index d715cd8..1537dd6 100644 --- a/Makefile +++ b/Makefile @@ -99,6 +99,7 @@ uninstall: @echo "Uninstall: OK" install: check uninstall + @gcc source/ubl-settings-repomanager.c source/ubl-utils.c source/ubl-strings.h -o ubl-settings-repomanager `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ @@ -122,6 +123,7 @@ install: check uninstall @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}-windows.glade" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" @install -dm755 -d "${DESTDIR}${PREFIX}/share/${PKGNAME}/images" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" diff --git a/com.ublinux.ubl-settings-repomanager.svg b/com.ublinux.ubl-settings-repomanager.svg index f636c26..add01b7 100644 --- a/com.ublinux.ubl-settings-repomanager.svg +++ b/com.ublinux.ubl-settings-repomanager.svg @@ -4,8 +4,8 @@ height="180" version="1.0" id="svg8" - sodipodi:docname="ublinux-ubconfig.svg" - inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" + sodipodi:docname="ubl-settings-repomanager.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)" inkscape:export-filename="/media/Data/ShareMX/temp/archtoub_icons/ublinux-logo.png" inkscape:export-xdpi="136.53334" inkscape:export-ydpi="136.53334" @@ -2225,11 +2225,11 @@ + gradientTransform="matrix(3.779602,0,0,3.779602,-193.72728,-7.0470659)"> + + + + + + + + + + + + + + + + + + + + id="filter104568" + x="-0.16132975" + y="-0.15932729" + width="1.2893327" + height="1.2869388"> + id="feFlood104558" /> + id="feComposite104560" /> + id="feGaussianBlur104562" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id="feOffset32783-4" /> + id="feComposite32785-3" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:current-layer="layer3"> + + + inkscape:label="ubinstall_gui" + style="display:none"> - + id="g2035" + transform="matrix(1.7064512,0,0,1.7064512,182.08962,45.305852)" + style="filter:url(#filter104568)"> + + + + + + + + + + + + + cx="4.7361059" + cy="12.475146" + r="3.9282389" + fill="url(#linearGradient3529)" + stroke-width="0.927939" + id="circle34" + style="fill:url(#linearGradient3529)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cx="4.7361059" + cy="12.475146" + r="3.9282389" + fill="url(#linearGradient3529)" + stroke-width="0.927939" + id="circle34-6" + style="fill:url(#linearGradient3529-4)" /> + diff --git a/source/ubl-cmake.h b/source/ubl-cmake.h new file mode 120000 index 0000000..967149f --- /dev/null +++ b/source/ubl-cmake.h @@ -0,0 +1 @@ +/home/superadmin/Документы/ubl-settings-repomanager/compile/ubl-cmake.h \ No newline at end of file diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 647733f..ff794a9 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -98,7 +98,281 @@ void on_about(){ gtk_widget_show(window); } +void on_tree_selection_changed(GtkWidget *self,main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + GtkTreeIter *iter=NULL; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,iter)){ + char *codeName,*branch,*version,*architecture,*components,*signature,*ipAdress,*port; + int serverType=0,trusted=0,published=0; + gtk_tree_model_get(model,iter,3,&codeName,4,&branch,5,&version,6,&architecture,7,&components,8,&signature,9,&trusted,10,&serverType,11,&ipAdress,12,&port,13,published,-1); + // gtk_label_set_text(GTK_LABEL(widgets->srgbe),) + } +} + +int yon_add_branches(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, void *dct){ + printf("%d\n",1); + dictionary *dict=(dictionary*)dct; + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*); + char *name=NULL; + gtk_tree_model_get(model,iter,0,&name,-1); + if(name){ + printf("%s\n",name); + GtkTreeIter ITER,iters; + if(gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&ITER)){ + gtk_tree_store_append(main_config.tree_store,&iters,&ITER); + gtk_tree_store_set(main_config.tree_store,&iters,1,name,-1); + } + } + return 0; +} + +void on_repo_add_new(GtkWidget *self, dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*); + char *name = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry))); + if (!name||strcmp(name,"")!=0){ + on_close_subwindow(self); + GtkTreeIter *iter = yon_repo_append(widgets, name, YON_REPO_LINE_REPO_TYPE); + gtk_tree_store_set(main_config.tree_store,iter,2,window->BranchesListStore,-1); + gtk_tree_model_foreach(GTK_TREE_MODEL(window->BranchesListStore),yon_add_branches,dict); + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } else { + yon_ubl_status_box_render(EMPTY_NAME_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } +} + +void on_branch_add(GtkCellRendererText *self, char*path,char *new_text, repo_create_window *window){ + if (new_text&&strcmp(new_text,"")!=0){ + GtkTreeIter iter; + gboolean used, use=1; + gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(window->BranchesListStore),&iter,path); + gtk_tree_model_get(GTK_TREE_MODEL(window->BranchesListStore),&iter,1,&used,-1); + used; + gtk_list_store_set(window->BranchesListStore,&iter,0,new_text,1,&use,-1); + if (used==0) + gtk_list_store_append(window->BranchesListStore,&iter); + + } +} + +void on_repo_new (GtkWidget *self, main_window *widgets){ + GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path); + repo_create_window *window = new(repo_create_window); + window->Window=yon_gtk_builder_get_widget(builder,"repoCreateWindow"); + window->NameEntry=yon_gtk_builder_get_widget(builder,"repoNameEntry"); + window->CancelButton=yon_gtk_builder_get_widget(builder,"repoCancelButton"); + window->SaveButton=yon_gtk_builder_get_widget(builder,"repoSaveButton"); + window->BranchesTree=yon_gtk_builder_get_widget(builder,"curRepoEditTree"); + window->BranchCell=GTK_CELL_RENDERER(gtk_builder_get_object(builder,"branchTextCell")); + window->BranchesListStore=GTK_LIST_STORE(gtk_builder_get_object(builder,"curRepoEditList")); + gtk_widget_show(window->Window); + GtkTreeIter iter; + gtk_list_store_append(window->BranchesListStore,&iter); + dictionary *dict = yon_dictionary_create_with_data("",widgets); + dict = yon_dictionary_create_with_data_connected(dict,"",window); + GValue *val = g_malloc0(sizeof(GValue)); + g_object_get_property(G_OBJECT(window->BranchCell),"placeholder-text",val); + g_value_set_string(val,TYPE_BRANCH_NAME_LABEL); + g_object_set_property(G_OBJECT(window->BranchCell),"placeholder-text",val); + g_signal_connect(G_OBJECT(window->BranchCell),"edited",G_CALLBACK(on_branch_add),window); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_repo_add_new),dict); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); +} + +void on_repo_add_file(GtkWidget *self, main_window *widgets){ + yon_add_file(widgets); +} + +void on_repo_remove_package(GtkWidget *self, main_window *widgets){ + yon_repo_remove_package(widgets); +} + +void on_repo_remove(GtkWidget *self, main_window *widgets){ + yon_repo_remove(widgets); +} + +void on_repo_configure(GtkWidget *self, main_window *widgets){ + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + GtkTreeIter iter; + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path); + repo_create_window *window = new(repo_create_window); + window->Window=yon_gtk_builder_get_widget(builder,"repoEditWindow"); + window->NameEntry=yon_gtk_builder_get_widget(builder,"repoEditNameEntry"); + window->CancelButton=yon_gtk_builder_get_widget(builder,"repoEditCancelButton"); + window->SaveButton=yon_gtk_builder_get_widget(builder,"repoEditSaveButton"); + window->BranchesTree=yon_gtk_builder_get_widget(builder,"repoEditBranchTree"); + window->BranchesListStore=GTK_LIST_STORE(gtk_builder_get_object(builder,"curRepoEditList")); + gtk_widget_show(window->Window); + dictionary *dict = yon_dictionary_create_with_data("",widgets); + dict = yon_dictionary_create_with_data_connected(dict,"",window); + g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_repo_configure_done),dict); + g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_close_subwindow),NULL); + gtk_list_store_clear(window->BranchesListStore); + // GtkListStore *branches; + // gtk_tree_model_get(model,&iter,2,branches,-1); + // gtk_tree_view_set_model(GTK_TREE_VIEW(window->BranchesTree),GTK_TREE_MODEL(branches)); + } else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); +} + +void on_repo_configure_done(GtkWidget *self, dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + repo_create_window *window = yon_dictionary_get_data(dict->first->next,repo_create_window*); + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + char *name = (char*)gtk_entry_get_text(GTK_ENTRY(window->NameEntry)); + gtk_tree_store_set(main_config.tree_store,&iter,1,name,-1); + } + on_close_subwindow(self); +} + +void on_repo_load_local(GtkWidget *self, main_window *widgets){ + GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); + int res = gtk_dialog_run(GTK_DIALOG(chooser)); + if (res==GTK_RESPONSE_ACCEPT){ + + char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + while (1){ + char *ret = yon_char_divide_search(filename,"/",-1); + if (strcmp(ret,filename)==0) break; + } + yon_repo_append(widgets,filename,YON_REPO_LINE_REPO_TYPE); + } + on_close_subwindow(chooser); +} + +GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYPE type){ + GtkTreeIter *retIter=g_malloc0(sizeof(GtkTreeIter)); + GtkTreeIter iter,parentIter; + GdkPixbuf *icon = NULL; + GtkIconTheme *theme = gtk_icon_theme_get_default(); + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&parentIter)){ + if (type==YON_REPO_LINE_REPO_TYPE){ + icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); + gtk_tree_store_append(main_config.tree_store,&iter,NULL); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + } + else if (type==YON_REPO_LINE_BRANCH_TYPE){ + icon = NULL; + if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){ + GtkTreeIter branch; + if (!gtk_tree_model_iter_parent(model,&branch,&iter)){ + gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + } else { + gtk_tree_store_append(main_config.tree_store,&iter,&branch); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + } + } else { + gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + } + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + + else if (type==YON_REPO_LINE_FILE_TYPE){ + icon = gtk_icon_theme_load_icon_for_scale(theme,"network-server-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); + if (gtk_tree_model_iter_parent(model,&iter,&parentIter)){ + GtkTreeIter branch; + if (gtk_tree_model_iter_parent(model,&branch,&iter)){ + GtkTreeIter repo; + if (!gtk_tree_model_iter_parent(model,&repo,&branch)){ + gtk_tree_store_append(main_config.tree_store,&branch,&iter); + gtk_tree_store_set(main_config.tree_store,&branch,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&branch); + } + } else { + gtk_tree_store_append(main_config.tree_store,&iter,&parentIter); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + } + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } else yon_ubl_status_box_render(CHOOSE_BRANCH_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter); + } + else if (type==YON_REPO_LINE_REPO_TYPE){ + icon = gtk_icon_theme_load_icon_for_scale(theme,"folder-symbolic",16,1,GTK_ICON_LOOKUP_FORCE_SIZE,NULL); + gtk_tree_store_append(main_config.tree_store,&iter,NULL); + gtk_tree_store_set(main_config.tree_store,&iter,0, icon, 1, name,-1); + retIter = gtk_tree_iter_copy(&iter); + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter); + } else { + yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + return retIter; +} + +void yon_repo_remove_package(main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + GtkTreeIter iterparent; + if (gtk_tree_model_iter_parent(model,&iterparent,&iter)){ + GtkTreeIter parentparent; + if (gtk_tree_model_iter_parent(model,&parentparent,&iterparent)){ + gtk_tree_store_remove(main_config.tree_store,&iter); + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + } +} + +void yon_repo_remove(main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + if(gtk_tree_store_iter_depth(main_config.tree_store,&iter)==0){ + gtk_tree_store_remove(main_config.tree_store,&iter); + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + }else yon_ubl_status_box_render(CHOOSE_REPO_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } else yon_ubl_status_box_render(NOTHING_CHOSEN_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); +} + +void yon_repo_configure(main_window *widgets){ + GtkBuilder *builder = gtk_builder_new_from_file(glade_repo_path); + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&model,&iter)){ + GtkTreeIter iterparent; + if (gtk_tree_model_iter_parent(model,&iterparent,&iter)){ + GtkTreeIter parentparent; + if (gtk_tree_model_iter_parent(model,&parentparent,&iterparent)){ + gtk_tree_store_remove(main_config.tree_store,&iter); + yon_ubl_status_box_render(OPERATION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + } else yon_ubl_status_box_render(CHOOSE_PACK_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + } +} + +void yon_add_file(main_window *widgets){ + GtkWidget *chooser = gtk_file_chooser_dialog_new(ADD_PACKAGE_REPO_LABEL,NULL,GTK_FILE_CHOOSER_ACTION_OPEN,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL); + int res = gtk_dialog_run(GTK_DIALOG(chooser)); + if (res==GTK_RESPONSE_ACCEPT){ + + char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + while (1){ + char *ret = yon_char_divide_search(filename,"/",-1); + if (strcmp(ret,filename)==0) break; + } + yon_repo_append(widgets,filename,YON_REPO_LINE_FILE_TYPE); + } + on_close_subwindow(chooser); + + +} + + + /* setup functions */ void config_init(){ + main_config.tree_store=NULL; main_config.always_open_documentation=0; main_config.win_height=0; main_config.win_width=0; @@ -182,6 +456,7 @@ main_window *setup_window(){ widgets->SignatureLabel = yon_gtk_builder_get_widget(builder,"SignatureLabel"); widgets->SignatureInfoLabel = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel"); widgets->Finder = yon_gtk_builder_get_widget(builder,"SignatureInfoLabel"); + main_config.tree_store = GTK_TREE_STORE(gtk_builder_get_object(builder,"RepoStore")); if (main_config.lock_load_global == 1){ gtk_widget_set_sensitive(widgets->LoadGlobalMenuItem,0); @@ -203,49 +478,17 @@ main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL); + g_signal_connect(G_OBJECT(widgets->CreateButton),"clicked",G_CALLBACK(on_repo_new),widgets); + g_signal_connect(G_OBJECT(widgets->AddPackageButton),"clicked",G_CALLBACK(on_repo_add_file),widgets); + g_signal_connect(G_OBJECT(widgets->RemovePackageButton),"clicked",G_CALLBACK(on_repo_remove_package),widgets); + g_signal_connect(G_OBJECT(widgets->DeleteButton),"clicked",G_CALLBACK(on_repo_remove),widgets); + g_signal_connect(G_OBJECT(widgets->LoadFromLocalButton),"clicked",G_CALLBACK(on_repo_load_local),widgets); + g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_repo_configure),widgets); /* Localisation | Локализация */ - gtk_label_set_text(GTK_LABEL(widgets->HatLabel),TITLE_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->SaveLabel),SAVE_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->SaveMenuItem),SAVE_CONFIGURATION_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->SaveGlobalMenuItem),SAVE_GLOBAL_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->SaveLocalMenuItem),SAVE_LOCAL_LABEL); - - gtk_label_set_text(GTK_LABEL(widgets->LoadLabel),LOAD_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->LoadGlobalMenuItem),LOAD_GLOBAL_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->LoadLocalMenuItem),LOAD_LOCAL_LABEL); - - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->DocumentationMenuItem),DOCUMENTATION_LABEL); - gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->AboutMenuItem),ABOUT_LABEL); - - - gtk_label_set_text(GTK_LABEL(widgets->GeneralTabLabel),GENERAL_TAB_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->PublicationTabLabel),PUBLICATION_TAB_LABEL); + gtk_widget_show_all(widgets->Window); - gtk_label_set_text(GTK_LABEL(widgets->CodeNameLabel),CODE_NAME_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->BranchLabel),BRANCH_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->VersionLabel),VERSION_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->ArchitectureLabel),ARCHITECRURE_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->ComponentsLabel),COMPONENTS_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->SignatureLabel),SIGNATURE_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->ServerTypeLabel),SERVER_TYPE_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->IpAdressLabel),IP_ADRESS_LABEL); - gtk_label_set_text(GTK_LABEL(widgets->PortLabel),PORT_LABEL); - - gtk_button_set_label(GTK_BUTTON(widgets->TrustedRepoCheck),TRUSTED_LABEL); - - gtk_widget_set_tooltip_markup(widgets->CreateButton,CREATE_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->LoadFromNetButton,OPEN_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->ConfigureButton,CONFIGURE_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->DeleteButton,DELETE_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->LoadFromLocalButton,ADD_REMOVE_LOCAL_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->SwitchPublishButton,ENABLE_DISABLE_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->CheckDependencesButton,CHECK_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->SignButton,SIGN_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->AddPackageButton,ADD_PACKAGE_REPO_LABEL); - gtk_widget_set_tooltip_markup(widgets->RemovePackageButton,REMOVE_PACKAGE_REPO_LABEL); - gtk_widget_show_all(widgets->Window); return widgets; } diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index ddf5c4a..3e6fa30 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -19,6 +19,7 @@ #define _(String) gettext(String) #define glade_path "/usr/share/ubl-settings-repomanager/ui/ubl-settings-repomanager.glade" +#define glade_repo_path "/usr/share/ubl-settings-repomanager/ui/ubl-settings-repomanager-windows.glade" #define banner_path "/usr/share/ubl-settings-repomanager/images/ubl-settings-repomanager-banner.png" #define CssPath "/usr/share/ubl-settings-repomanager/css/ubl-settings-repomanager.css" @@ -30,6 +31,7 @@ string version_application; char *local; typedef struct { + GtkTreeStore *tree_store; int always_open_documentation; int win_pos_x; int win_pos_y; @@ -113,6 +115,16 @@ typedef struct { GtkWidget *Finder; } main_window; +typedef struct { + GtkWidget *Window; + GtkWidget *NameEntry; + GtkWidget *BranchesTree; + GtkWidget *CancelButton; + GtkWidget *SaveButton; + GtkCellRenderer *BranchCell; + + GtkListStore *BranchesListStore; +} repo_create_window; typedef struct { GtkWidget *Window; @@ -126,5 +138,15 @@ typedef struct { GtkWidget *AcceptButton; } documentation_confirmation_window; - -main_window *setup_window(); \ No newline at end of file +typedef enum { + YON_REPO_LINE_REPO_TYPE, + YON_REPO_LINE_FILE_TYPE, + YON_REPO_LINE_BRANCH_TYPE +} YON_REPO_LINE_TYPE; + +main_window *setup_window(); +void yon_add_file(main_window *widgets); +GtkTreeIter *yon_repo_append(main_window *widgets, char *name, YON_REPO_LINE_TYPE type); +void yon_repo_remove_package(main_window *widgets); +void yon_repo_remove(main_window *widgets); +void on_repo_configure_done(GtkWidget *self, dictionary *dict); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index cdea169..f32e589 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -53,4 +53,17 @@ #define CHECK_REPO_LABEL _("Check dependences") #define SIGN_REPO_LABEL _("Sign ripository") #define ADD_PACKAGE_REPO_LABEL _("Add package") -#define REMOVE_PACKAGE_REPO_LABEL _("Remove package") \ No newline at end of file +#define REMOVE_PACKAGE_REPO_LABEL _("Remove package") +#define OPEN_LABEL _("Open") + +#define OPERATION_DONE_LABEL _("Operation done") + +#define CHOOSE_BRANCH_PACK_LABEL _("Choose branch or pack in branch to add file!") +#define CHOOSE_REPO_BRANCH_LABEL _("Choose repository or branch!") +#define CHOOSE_PACK_LABEL _("Choose pack to delete!") +#define CHOOSE_REPO_LABEL _("Choose repository to delete!") + +#define NAME_LABEL _("Name:") +#define BRANCHES_LABEL _("Branches:") +#define TYPE_BRANCH_NAME_LABEL _("< Type branch name >") +#define EMPTY_NAME_LABEL _("Name must be filled!") \ No newline at end of file diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 8de7531..5b7eb82 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -29,6 +29,9 @@ #define yon_ubl_save_global_config(command) yon_config_save(command) #define yon_ubl_save_local_config(command) yon_config_save(command) +#define for_liststore_each(liststore) GtkTreeIter iter;\ +for (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore),&iter);gtk_list_store_iter_is_valid(liststore,&iter);gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore),&iter)) + typedef enum { #ifdef __GTK_H__ diff --git a/ubl-settings-repomanager b/ubl-settings-repomanager new file mode 100755 index 0000000..94d87e0 Binary files /dev/null and b/ubl-settings-repomanager differ diff --git a/ubl-settings-repomanager-windows.glade b/ubl-settings-repomanager-windows.glade new file mode 100644 index 0000000..b94c777 --- /dev/null +++ b/ubl-settings-repomanager-windows.glade @@ -0,0 +1,512 @@ + + + + + + + + + + + + + + + master + True + + + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + 450 + 150 + False + True + com.ublinux.ubl-settings-repomanager + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 10 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Name: + 0 + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Branches: + 0 + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + True + never + in + + + True + False + + + True + True + curRepoEditList + False + True + 0 + False + + + + + + column + + + True + < Type branch name > + + + 0 + + + + + + + + + + + + + + True + True + 0 + + + + + True + True + 3 + + + + + True + True + 0 + + + + + True + False + end + 5 + True + + + Cancel + True + True + True + image14 + + + + True + True + 0 + + + + + Save + True + True + True + image15 + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + True + False + True + + + True + False + Repository manager + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-repomanager + + + + + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + 450 + 150 + False + True + com.ublinux.ubl-settings-repomanager + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 10 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Name: + 0 + + + False + True + 0 + + + + + True + True + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Branches: + 0 + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + True + never + in + + + True + False + + + True + True + curRepoEditList + False + 0 + False + + + + + + column + + + + 0 + + + + + + + + + + + + + + True + True + 0 + + + + + True + True + 3 + + + + + True + True + 0 + + + + + True + False + end + 5 + True + + + Cancel + True + True + True + image16 + + + + True + True + 0 + + + + + Save + True + True + True + image17 + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + True + False + True + + + True + False + Repository manager + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-repomanager + + + + + + diff --git a/ubl-settings-repomanager.glade b/ubl-settings-repomanager.glade index 4f02288..f680b6c 100644 --- a/ubl-settings-repomanager.glade +++ b/ubl-settings-repomanager.glade @@ -192,10 +192,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + - + + + @@ -682,9 +684,11 @@ translated and supported by community. True True + 40 edit-find-symbolic False False + name False @@ -726,6 +730,7 @@ translated and supported by community. True True True + Create repository image1