From 0878b850549c91b665b845f9dee3151c24efef98 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 14 Jul 2023 11:23:33 +0600 Subject: [PATCH] package and repo search implemented --- source/ubl-settings-repomanager.c | 35 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index 49f1aff..e191871 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -131,13 +131,37 @@ void on_save(){ } if (origin_flagged) remove_command = remove_flagged ? yon_char_unite(remove_command,remove_flagged,NULL) : NULL; - add_command = add_flagged ? yon_char_unite(add_command, add_flagged,NULL) : NULL; + add_command = add_flagged ? yon_char_unite(add_command, add_flagged,NULL) : add_command; printf("%s\n%s\n",remove_command,add_command); if (remove_command) system(remove_command); if (add_command) system(add_command); } } +void on_search(GtkCellEditable *self, main_window *widgets){ + GtkTreeIter iter, childIter; + char *name=NULL; + int valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(main_config.tree_store),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&iter)){ + gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&iter,1,&name,-1); + if (strstr(name,gtk_entry_get_text(GTK_ENTRY(widgets->Finder)))) { + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&iter); + return; + } + gtk_tree_view_expand_row(GTK_TREE_VIEW(widgets->RepoTree),gtk_tree_model_get_path(GTK_TREE_MODEL(main_config.tree_store),&iter),1); + int child_valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(main_config.tree_store),&childIter,&iter); + for (;child_valid;child_valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(main_config.tree_store),&childIter)){ + gtk_tree_model_get(GTK_TREE_MODEL(main_config.tree_store),&childIter,1,&name,-1); + if (strstr(name,gtk_entry_get_text(GTK_ENTRY(widgets->Finder)))) { + gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoTree)),&childIter); + return; + } + + } + gtk_tree_view_expand_row(GTK_TREE_VIEW(widgets->RepoTree),gtk_tree_model_get_path(GTK_TREE_MODEL(main_config.tree_store),&iter),0); + } +} + void on_tree_selection_changed(GtkWidget *self,main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(main_config.tree_store); GtkTreeIter iter; @@ -483,7 +507,8 @@ main_window *setup_window(){ widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem"); widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); // yon_gtk_builder_get_widget(builder,"AboutMenuItem"); - + gtk_window_set_title(GTK_WINDOW(widgets->Window),TITLE_LABEL); + GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2"); gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->AboutMenuItem); @@ -516,6 +541,7 @@ main_window *setup_window(){ g_signal_connect(G_OBJECT(widgets->ConfigureButton),"clicked",G_CALLBACK(on_repo_configure),widgets); g_signal_connect(G_OBJECT(widgets->SaveButton),"clicked",G_CALLBACK(on_save),widgets); g_signal_connect(G_OBJECT(widgets->RepoTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets); + g_signal_connect(G_OBJECT(widgets->Finder),"changed",G_CALLBACK(on_search),widgets); /* Localisation | Локализация */ gtk_widget_show(widgets->Window); @@ -605,10 +631,7 @@ int main(int argc, char *argv[]){ yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); - if (getuid()!=0) - yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); - else - yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id); yon_window_config_setup(GTK_WINDOW(widgets->Window)); yon_window_config_load(config_path);