Merge pull request 'master' (#17) from YanTheKaller/libublsettingsui-gtk3:master into master

Reviewed-on: #17
pull/21/head v1.15
Dmitry Razumov 2 years ago
commit f7d726b9ac

@ -246,3 +246,7 @@ msgstr ""
#: source/libublsettingsui-gtk3.h:96
msgid "HDD sandbox with profile saving"
msgstr ""
#: source/libublsettingsui-gtk3.h:98
msgid "Upgrade to root"
msgstr ""

@ -252,3 +252,7 @@ msgstr "Полная песочница на HDD"
#: source/libublsettingsui-gtk3.h:96
msgid "HDD sandbox with profile saving"
msgstr "Полная песочница на HDD с сохранением профиля пользователя"
#: source/libublsettingsui-gtk3.h:98
msgid "Upgrade to root"
msgstr "Повысить права до root"

@ -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,"");

@ -95,6 +95,7 @@
#define SAVE_MODE_HDD_LABEL _("HDD sandbox")
#define SAVE_MODE_HDD_HOME_LABEL _("HDD sandbox with profile saving")
#define CUSTOM_CONFIG_CREATION_ERROR_LABEL _("New configuration file creation failed")
#define ROOT_CHECK_LABEL _("Upgrade to root")
#endif
#define dull_parameter_get_command "ubconfig --source global get users PARAMETER"
@ -255,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