diff --git a/source/ubl-settings-repomanager.c b/source/ubl-settings-repomanager.c index ed9648e..ce49e78 100644 --- a/source/ubl-settings-repomanager.c +++ b/source/ubl-settings-repomanager.c @@ -1035,7 +1035,7 @@ void on_move_accept(GtkWidget *self, dictionary *dict){ } } -void on_move_clicked(GtkWidget *self, main_window *widgets){ +repo_add_window *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),MOVE_PACKAGES_TITLE_LABEL,icon_path,"move-repo-window"); gtk_label_set_text(GTK_LABEL(window->HeadLabel),MOVE_PACKAGES_TITLE_LABEL); @@ -1108,6 +1108,7 @@ void on_move_clicked(GtkWidget *self, main_window *widgets){ gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->MoveSourceArchEntry),arc); } gtk_widget_show(window->MainWindow); + return window; } void on_remove_add_package(GtkWidget *self, repo_add_window *window){ @@ -1202,7 +1203,7 @@ void on_remove_accept(GtkWidget *self, dictionary *dict){ gtk_widget_destroy(window->MainWindow); } -void on_remove_clicked(GtkWidget *self, main_window *widgets){ +repo_add_window *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),REMOVE_PACKAGES_TITLE_LABEL,icon_path,"add-repo-window"); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGES_TITLE_LABEL); @@ -1237,6 +1238,7 @@ void on_remove_clicked(GtkWidget *self, main_window *widgets){ g_signal_connect(G_OBJECT(window->RepositoryCombo),"changed",G_CALLBACK(on_repo_sign_load),window); yon_add_window_set_selected(widgets,window); gtk_widget_show(window->MainWindow); + return window; } /* setup functions */ @@ -1723,6 +1725,51 @@ int yon_tree_is_selected(void *widget){ return 0; } +void on_rmb_move(GtkWidget *self, main_window *widgets){ + repo_add_window *window = on_move_clicked(NULL,widgets); + GtkTreeModel *model; + GtkTreeIter iter; + char *path; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter); + gtk_tree_model_get(model,&iter,3,&path,-1); + GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model); + for (int i=0;iPackagesList,&itar); + gtk_list_store_set(window->PackagesList,&itar,1,name,2,full_path,-1); + free(full_path); + free(filename); + free(name); + } +} + +void on_rmb_remove(GtkWidget *self, main_window *widgets){ + + repo_add_window *window = on_remove_clicked(NULL,widgets); + GtkTreeModel *model; + GtkTreeIter iter; + char *path; + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ReposTree)),&model,&iter); + gtk_tree_model_get(model,&iter,3,&path,-1); + GList *list = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->RepoFileTree)),&model); + for (int i=0;iPackagesList,&itar); + gtk_list_store_set(window->PackagesList,&itar,1,name,2,full_path,-1); + free(full_path); + free(filename); + free(name); + } +} + 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); @@ -1762,7 +1809,11 @@ main_window *yon_main_window_complete(main_window *widgets){ } main_config.tree_store = widgets->RepoList; - rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets,SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets,NULL); + rmb_menu_window *rmb = yon_rmb_menu_setup(widgets->RepoFileTree, yon_tree_is_selected,widgets, + SIGN_LABEL,lib_key_icon_name,G_CALLBACK(on_packages_sign),widgets, + MOVE_PACKAGES_TITLE_LABEL,move_icon,G_CALLBACK(on_rmb_move),widgets, + REMOVE_PACKAGES_TITLE_LABEL,remove_icon,G_CALLBACK(on_rmb_remove),widgets, + NULL); 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); diff --git a/source/ubl-settings-repomanager.h b/source/ubl-settings-repomanager.h index 988028f..bf5b62e 100644 --- a/source/ubl-settings-repomanager.h +++ b/source/ubl-settings-repomanager.h @@ -38,6 +38,9 @@ #define document_deleted "com.ublinux.ubl-settings-repomanager.key-red-symbolic" #define document_added "com.ublinux.ubl-settings-repomanager.key-green-symbolic" +#define move_icon "com.ublinux.libublsettingsui-gtk3.arrows-left-right-symbolic" +#define remove_icon "com.ublinux.libublsettingsui-gtk3.trash-symbolic" + #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-repomanager" @@ -61,7 +64,7 @@ typedef char* string; #define create_storage_command(path,name) yon_char_unite("repo-manager add -r '",name,"' -d '", path,"'",NULL) #define add_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL) #define add_packages_sign_command(path,arch,name,repo_sign,pack_sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",repo_sign,"' -s '",pack_sign,"' ",packages_path,NULL) -#define add_packages_package_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",sign,"' ",packages_path,NULL) +#define add_packages_package_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -s '",sign,"' ",packages_path,NULL) #define add_packages_repo_sign_command(path,arch,name,sign,packages_path) yon_char_unite("repo-manager add -f -r '",name,"' -a '",arch,"' -d '", path,"' -S '",sign,"' ",packages_path,NULL) #define remove_packages_command(path,arch,name,packages_path) yon_char_unite("repo-manager remove -r '",name,"' -a '",arch,"' -d '", path,"' ",packages_path,NULL) @@ -84,7 +87,7 @@ typedef char* string; #define get_gpg_keys_command yon_char_unite(yon_ubl_check_root()==1 ? yon_char_unite("su - ",yon_ubl_root_user_get()," -c \"gpg --list-signatures\"",NULL):"gpg --list-signatures"," | grep '^sig 3' | cut -d' ' -f10,11,13- | sort -u |sed -e 's/[0-9]*-[0-9]*-[0-9]* //g'",NULL) -#define yon_sign_package(storage,repo,arch,target,sign) yon_char_unite("repo-manager add -r '",repo,"' -a '",arch,"' -d '", storage,"' -S '",sign,"' ",target,NULL) +#define yon_sign_package(storage,repo,arch,target,sign) yon_char_unite("repo-manager add -r '",repo,"' -a '",arch,"' -d '", storage,"' -s '",sign,"' ",target,NULL) #define yon_sign_repo(storage,repo,sign) yon_char_unite("repo-manager add -f -r '",repo,"' -d '", storage,"' --sign-repo='",sign,"'",NULL) #define get_package_info_command(filename) yon_char_unite("pacman -Q --info --file ",filename," 2>/dev/null|sed -e 's/ */ /g' -e 's/ : /: /g' -e 's/\\n/ /g' -e 's/^ /\\t/g'",NULL)