|
|
|
|
@ -116,6 +116,11 @@ void on_about(GtkWidget *self, char *version_application){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//functions
|
|
|
|
|
|
|
|
|
|
/**function and argument, which called after successful config saving.
|
|
|
|
|
* Example:
|
|
|
|
|
* void on_save_done(main_window *widgets, config_str output, int size)
|
|
|
|
|
*/
|
|
|
|
|
void (*save_success_function)(void*,config_str,int)=NULL;
|
|
|
|
|
void *save_success_argument=NULL;
|
|
|
|
|
|
|
|
|
|
@ -683,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,"");
|
|
|
|
|
|