Added function to setup root button

pull/17/head
parent 71acaf8a15
commit da6d887501

@ -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;i<arg_size;i++){
if (!strcmp(arg_target[i],"socket-id")||!strcmp(arg_target[i],"socket-ext-id")||!strcmp(arg_target[i],"socket-trd-id")){ i++;
continue;
}
char *temp = yon_char_unite(argline," ", arg_target[i],NULL);
if(strcmp(argline,"")&&strcmp(argline,template_app_information.app_tech_name))
free(argline);
argline=temp;
}
if (getuid()!=0){
argline = yon_char_unite("setsid /usr/bin/bash -c 'pkexec ",argline,"'; exit",NULL);
pthread_t thread_id;
pthread_create(&thread_id, NULL, (void *)on_root_get_root,argline);
gtk_widget_destroy(widgets->Window);
}
}
}
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,"");

@ -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]
*

Loading…
Cancel
Save