From da6d887501bcdb3a4992267213d7f1558709f499 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 10 Apr 2024 17:25:55 +0600 Subject: [PATCH] Added function to setup root button --- source/libublsettingsui-gtk3.c | 52 ++++++++++++++++++++++++++++++++++ source/libublsettingsui-gtk3.h | 2 ++ 2 files changed, 54 insertions(+) diff --git a/source/libublsettingsui-gtk3.c b/source/libublsettingsui-gtk3.c index 39c6d35..7610bd5 100644 --- a/source/libublsettingsui-gtk3.c +++ b/source/libublsettingsui-gtk3.c @@ -688,6 +688,58 @@ int yon_ubl_setup_arguments(int argc, char *argv[],config_str *unfound_arguments } } + +void on_root_get_root(char *argline){ + yon_launch(argline); +} + +int arg_size; +config_str arg_target; + +void on_root_access(GtkWidget *self, template_main_window *widgets){ + if (self){}; + if (getuid()){ + char *argline = template_app_information.app_tech_name; + for (int i=1;iWindow); + } + } +} + +void yon_root_button_setup(template_main_window *widgets, config_str args, int args_size){ + arg_size=args_size; + arg_target=args; + GtkWidget *root_item = gtk_menu_item_new(); + gtk_style_context_add_class(gtk_widget_get_style_context(root_item),"menuitemtop"); + gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); + gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); + GtkWidget *root_label = gtk_label_new(ROOT_CHECK_LABEL); + GtkWidget *root_check = gtk_check_button_new(); + gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->DocumentationMenuItem)),root_item); + gtk_box_pack_start(GTK_BOX(box),root_label,1,1,0); + gtk_box_pack_start(GTK_BOX(box),root_check,0,0,0); + gtk_container_add(GTK_CONTAINER(root_item),box); + gtk_widget_show_all(root_item); + g_signal_connect(G_OBJECT(root_item),"activate", G_CALLBACK(on_root_access),widgets); + if (getuid()==0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(root_check),1); + gtk_widget_set_sensitive(root_item,0); + } +} + template_main_window *yon_ubl_window_setup(){ textdomain (template_ui_LocaleName); setlocale(LC_ALL,""); diff --git a/source/libublsettingsui-gtk3.h b/source/libublsettingsui-gtk3.h index e570f1d..3cb8b94 100644 --- a/source/libublsettingsui-gtk3.h +++ b/source/libublsettingsui-gtk3.h @@ -256,6 +256,8 @@ void yon_open_browser(GtkWidget *self, char *link); */ int yon_ubl_connect_config(_template_config *config); +void yon_root_button_setup(template_main_window *widgets, config_str args, int args_size); + /**yon_ubl_window_init(int argc, char *argv[]) * [EN] *