Added 'upgrade to root' button

pull/160/head
parent 494c6feca4
commit f4fb72994a

@ -2721,6 +2721,8 @@ void config_init(){
main_config.sync_size=0; main_config.sync_size=0;
main_config.homes_size=0; main_config.homes_size=0;
main_config.remove_homes=NULL; main_config.remove_homes=NULL;
main_config.launch_arguments=NULL;
main_config.launch_size=0;
int login_size; int login_size;
config_str login_defs = yon_file_open(uid_path,&login_size); config_str login_defs = yon_file_open(uid_path,&login_size);
for (int i=0;i<login_size;i++){ for (int i=0;i<login_size;i++){
@ -2825,6 +2827,29 @@ gboolean on_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *wi
return 0; return 0;
} }
void on_root_get_root(char *argline){
yon_launch(argline);
}
void on_root_access(GtkWidget *self, main_window *widgets){
if (self){};
if (getuid()){
char *argline = LocaleName;
for (int i=1;i<main_config.launch_size;i++){
char *temp = yon_char_unite(argline," ", main_config.launch_arguments[i],NULL);
if(strcmp(argline,"")&&strcmp(argline,LocaleName))
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);
}
}
}
/**yon_main_window_complete(main_window *widgets) /**yon_main_window_complete(main_window *widgets)
* [EN] * [EN]
* *
@ -2884,6 +2909,25 @@ main_window *yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu); g_signal_connect(G_OBJECT(widgets->UsersTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->UsersMenu);
g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu); g_signal_connect(G_OBJECT(widgets->GroupsTree),"button-press-event",G_CALLBACK(on_menu_open),widgets->GroupsMenu);
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);
}
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UsersTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->GroupsTree));
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
@ -2919,5 +2963,7 @@ int main(int argc, char *argv[]){
template_main_window *widgets = yon_ubl_window_setup(); template_main_window *widgets = yon_ubl_window_setup();
yon_main_window_complete((main_window*)widgets); yon_main_window_complete((main_window*)widgets);
yon_window_config_load(config_path); yon_window_config_load(config_path);
main_config.launch_arguments=yon_char_parsed_copy(argv,argc);
main_config.launch_size=argc;
gtk_main(); gtk_main();
} }

@ -131,6 +131,8 @@ typedef struct {
int homes_size; int homes_size;
char *default_home; char *default_home;
int save_config; int save_config;
int launch_size;
config_str launch_arguments;
} config; } config;
typedef struct { typedef struct {

Loading…
Cancel
Save