User slide remake

pull/94/head
parent a95c0dbfbf
commit 8c3f67676b
No known key found for this signature in database
GPG Key ID: FF1D842BF4DDE92B

@ -65,6 +65,9 @@ set(DEPENDFILES
../ubinstall-gtk-documentation.glade
../ubinstall-gtk-log-view.glade
../ubinstall-gtk-warning.glade
../ubinstall-gtk-user.glade
../ubinstall-gtk-menu.glade
../ubinstall-gtk-menu-item.glade
../gresource.xml
../ubinstall-gtk.css
../modules.csv

@ -1,2 +1 @@
#include "ubinstall-gtk.h"

@ -391,16 +391,16 @@
// if (!strcmp(user_name,"root")){
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UserRootOnlyCheck),1);
// } else {
// gtk_entry_set_text(GTK_ENTRY(widgets->UserLoginEntry),user_name);
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootLoginEntry),user_name);
// }
// } else {
// gtk_entry_set_text(GTK_ENTRY(widgets->UserLoginEntry),"");
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootLoginEntry),"");
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->LoginSensitiveCheck),0);
// }
// if (!yon_char_is_empty(user_gecos)){
// gtk_entry_set_text(GTK_ENTRY(widgets->UserNameEntry),_(user_gecos));
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootNameEntry),_(user_gecos));
// } else {
// gtk_entry_set_text(GTK_ENTRY(widgets->UserNameEntry),"");
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootNameEntry),"");
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->UsernameSensitiveCheck),0);
// }
// int def_size=0;
@ -412,13 +412,13 @@
// }
// }
// if ((def_size>0&&!strcmp(default_password[0],user_password))||yon_char_is_empty(user_password)){
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserPasswordCombo),0);
// gtk_entry_set_text(GTK_ENTRY(widgets->UserPasswordEntry),"");
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),0);
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),"");
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->PasswordSensitiveCheck),0);
//
// } else if (!yon_char_is_empty(user_password)){
// gtk_entry_set_text(GTK_ENTRY(widgets->UserPasswordEntry),user_password);
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserPasswordCombo),1);
// gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),user_password);
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),1);
// }
// if ((def_size>0&&!strcmp(default_password[0],user_password))||yon_char_is_empty(user_password)){
// gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo),0);

@ -1,80 +1,104 @@
#include "ubinstall-gtk.h"
int yon_users_save(main_window *widgets){
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)))||!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->UsernameSensitiveCheck))){
yon_config_remove_by_key(user_gecos_parameter);
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo))){
const char *root_password = gtk_entry_get_text(GTK_ENTRY(widgets->UserRootPasswordEntry));
if (yon_char_is_empty(root_password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(main_config.status_box),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->UserRootPasswordEntry);
return 0;
}
yon_config_register(root_password_parameter,root_password_parameter_command,(char*)root_password);
} else {
char *username = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
if (username){};
yon_config_register(user_gecos_parameter,user_gecos_parameter_command,username);
yon_config_remove_by_key(root_password_parameter);
}
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->UserLoginEntry)))||!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->LoginSensitiveCheck))){
yon_config_remove_by_key(user_name_parameter);
int autologin = gtk_switch_get_active(GTK_SWITCH(widgets->UserAutologinSwitch));
if (autologin){
yon_config_register(autologin_parameter,autologin_parameter_command,"yes");
} else {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->UserRootOnlyCheck))){
yon_config_register(user_name_parameter,user_name_parameter_command,"root");
} else {
char *login = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserLoginEntry));
if (login){};
yon_config_register(user_name_parameter,user_name_parameter_command,login);
}
yon_config_register(autologin_parameter,autologin_parameter_command,"no");
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->UserPasswordCombo))==1){
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->UserPasswordEntry)))){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->UserPasswordEntry);
return 0;
} else {
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserPasswordEntry));
if (password){};
yon_config_register(user_password_parameter,user_password_parameter_command,password);
GList *users = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox));
GList *iter;
for (iter=users;iter;iter=iter->next){
yon_user_struct *user = g_object_get_data(G_OBJECT(iter->data),"yon_user_struct");
if (user){
if (!yon_user_save(user)){
yon_ubl_status_box_spawn(GTK_CONTAINER(main_config.status_box),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return 0;
}
} else {
yon_config_remove_by_key(user_password_parameter);
}
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo))==1){
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)))){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(widgets->AdminPasswordEntry);
return 0;
} else {
char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry));
if (root_password){};
yon_config_register(root_password_parameter,root_password_parameter_command,root_password);
yon_debug_output("%s\n",yon_config_get_all_info());
return 1;
}
}
} else {
yon_config_remove_by_key(root_password_parameter);
int yon_user_save(yon_user_struct *user){
char *name = (char *)gtk_entry_get_text(GTK_ENTRY(user->UsernameEntry));
char *login = (char *)gtk_entry_get_text(GTK_ENTRY(user->LoginEntry));
char *password = NULL;
if (yon_char_is_empty(login)){
yon_ubl_status_box_spawn(GTK_CONTAINER(main_config.status_box),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(user->LoginEntry);
return 0;
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(user->PasswordCombo))){
password = (char *)gtk_entry_get_text(GTK_ENTRY(user->PasswordEntry));
if (yon_char_is_empty(password)){
yon_ubl_status_highlight_incorrect(user->PasswordEntry);
return 0;
}
}
char *parameter = yon_char_unite(yon_char_return_if_exist(name,""),":::::",yon_char_return_if_exist(password,""),NULL);
yon_config_register(USERADD_parameter(login),USERADD_parameter_command(login),parameter);
free(parameter);
return 1;
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->HostnameSensitiveCheck))){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck))){
yon_config_register(hostname_parameter,hostname_parameter_command,"auto");
} else {
if (!yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)))){
char *hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry));
if (hostname){};
yon_config_register(hostname_parameter,hostname_parameter_command,hostname);
void on_user_add(GtkWidget *,main_window *widgets){
yon_user_struct *user = yon_user_struct_new();
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
}
} else {
yon_config_remove_by_key(hostname_parameter);
void on_user_remove_clicked(GtkWidget *,yon_user_struct *user){
gtk_widget_destroy(user->MainBox);
free(user);
}
}
}
} else {
yon_config_remove_by_key(hostname_parameter);
}
void yon_password_root_new(GtkWidget *, main_window *widgets){
yon_password_window *window = yon_password_open(GTK_ENTRY(widgets->UserRootPasswordEntry));
gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo));
gtk_widget_show(window->Window);
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutologinSensitiveCheck))){
char *autologin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->UserAutologinSwitch))?"yes":"no";
yon_config_register(autologin_parameter,autologin_parameter_command,autologin);
} else {
yon_config_remove_by_key(autologin_parameter);
}
return 1;
void yon_password_new(GtkWidget *, yon_user_struct *user){
yon_password_window *window = yon_password_open(GTK_ENTRY(user->PasswordEntry));
gtk_widget_hide(gtk_widget_get_parent(window->EncryptionCombo));
gtk_widget_show(window->Window);
}
yon_user_struct *yon_user_struct_new(){
yon_user_struct *user = new(yon_user_struct);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_user);
user->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
user->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
user->UsernameEntry = yon_gtk_builder_get_widget(builder,"UsernameEntry");
user->LoginEntry = yon_gtk_builder_get_widget(builder,"LoginEntry");
user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo");
user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(user->PasswordEntry));
g_signal_connect(G_OBJECT(user->PasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),user->PasswordEntry);
g_signal_connect(G_OBJECT(user->PasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),user->PasswordButton);
g_signal_connect(G_OBJECT(user->PasswordButton),"clicked",G_CALLBACK(yon_password_new),user);
g_signal_connect(G_OBJECT(user->RemoveButton),"clicked",G_CALLBACK(on_user_remove_clicked),user);
return user;
}

@ -398,19 +398,14 @@ main_window *yon_main_window_complete(){
widgets->OptionsSensitiveCheck = yon_gtk_builder_get_widget(builder,"OptionsSensitiveCheck");
widgets->LayoutSensitiveCheck = yon_gtk_builder_get_widget(builder,"LayoutSensitiveCheck");
widgets->UserNameEntry=yon_gtk_builder_get_widget(builder,"UserNameEntry");
widgets->UserLoginEntry=yon_gtk_builder_get_widget(builder,"UserLoginEntry");
widgets->UserPasswordCombo=yon_gtk_builder_get_widget(builder,"UserPasswordCombo");
widgets->UserPasswordEntry=yon_gtk_builder_get_widget(builder,"UserPasswordEntry");
widgets->UserPasswordButton=yon_gtk_builder_get_widget(builder,"UserPasswordButton");
widgets->UserRootNameEntry=yon_gtk_builder_get_widget(builder,"UserRootNameEntry");
widgets->UserRootLoginEntry=yon_gtk_builder_get_widget(builder,"UserRootLoginEntry");
widgets->UserRootPasswordCombo=yon_gtk_builder_get_widget(builder,"UserRootPasswordCombo");
widgets->UserRootPasswordEntry=yon_gtk_builder_get_widget(builder,"UserRootPasswordEntry");
widgets->UserRootPasswordButton=yon_gtk_builder_get_widget(builder,"UserRootPasswordButton");
widgets->UserAutologinSwitch=yon_gtk_builder_get_widget(builder,"UserAutologinSwitch");
widgets->AdminPasswordCombo=yon_gtk_builder_get_widget(builder,"AdminPasswordCombo");
widgets->AdminPasswordEntry=yon_gtk_builder_get_widget(builder,"AdminPasswordEntry");
widgets->AdminPasswordButton=yon_gtk_builder_get_widget(builder,"AdminPasswordButton");
widgets->UsernameSensitiveCheck = yon_gtk_builder_get_widget(builder,"UsernameSensitiveCheck");
widgets->LoginSensitiveCheck = yon_gtk_builder_get_widget(builder,"LoginSensitiveCheck");
widgets->UserRootOnlyCheck = yon_gtk_builder_get_widget(builder,"UserRootOnlyCheck");
widgets->AutologinSensitiveCheck = yon_gtk_builder_get_widget(builder,"AutologinSensitiveCheck");
widgets->UserAddBox=yon_gtk_builder_get_widget(builder,"UserAddBox");
widgets->UserAddButton=yon_gtk_builder_get_widget(builder,"UserAddButton");
widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry");
widgets->mainSettingsButton=yon_gtk_builder_get_widget(builder,"mainSettingsButton");
@ -464,6 +459,8 @@ main_window *yon_main_window_complete(){
widgets->HostnameSensitiveCheck = yon_gtk_builder_get_widget(builder,"HostnameSensitiveCheck");
widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck");
widgets->network_connections = NULL;
main_config.status_box = widgets->StatusBox;
}
g_signal_connect(G_OBJECT(widgets->MainWindow),"delete-event",G_CALLBACK(on_yon_exit),widgets);
GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menu2");
@ -513,6 +510,12 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
g_signal_connect(G_OBJECT(widgets->NextInstallationSizeTypeSpin),"changed",G_CALLBACK(on_partition_changed),widgets);
g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordEntry);
g_signal_connect(G_OBJECT(widgets->UserRootPasswordCombo),"changed",G_CALLBACK(yon_gtk_widget_set_sensitive_from_combo_box),widgets->UserRootPasswordButton);
g_signal_connect(G_OBJECT(widgets->UserAddButton),"clicked",G_CALLBACK(on_user_add),widgets);
g_signal_connect(G_OBJECT(widgets->UserRootPasswordButton),"clicked",G_CALLBACK(yon_password_root_new),widgets);
g_signal_connect(G_OBJECT(widgets->BootloadDefaulOSButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets);
// gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LayoutsFilter),3);
// g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets);
@ -529,9 +532,16 @@ main_window *yon_main_window_complete(){
// g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(on_autohostname_check),widgets);
// g_signal_connect(G_OBJECT(widgets->HotnameEntry),"changed",G_CALLBACK(on_hostname_entry_changed),widgets);
{
yon_user_struct *user = yon_user_struct_new();
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL);
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin");
}
{
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserPasswordEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->AdminPasswordEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry));
if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->LoadGlobalConfigurationMenuItem,0);

@ -26,6 +26,9 @@
#define glade_path_ubinstall_language "/com/ublinux/ui/ubinstall-gtk-language.glade"
#define glade_path_network_info "/com/ublinux/ui/ubinstall-gtk-network-box.glade"
#define glade_path_log_view "/com/ublinux/ui/ubinstall-gtk-log-view.glade"
#define glade_path_user "/com/ublinux/ui/ubinstall-gtk-user.glade"
#define glade_path_menu_window "/com/ublinux/ui/ubinstall-gtk-menu.glade"
#define glade_path_menu_item "/com/ublinux/ui/ubinstall-gtk-menu-item.glade"
#define CssPath "/com/ublinux/css/ubinstall-gtk.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
@ -65,6 +68,8 @@
"/com/ublinux/images/slide-12.png", \
NULL
#define get_menus_entry_command "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry"
#define encrypt_domain_password_command(target) yon_char_unite("echo '",target,"' | base64",NULL)
#define get_ntp_default_command "ubconfig --default get [network] NTPSERVERS_DEFAULT"
@ -146,6 +151,9 @@ NULL
#define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[ubconfig set [network] DOMAIN]"
#define DOMAIN_admanger_parameter "AOUTINSTALL[ubconfig set [network] DOMAIN[admanger]]"
#define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[ubconfig set [network] DOMAIN[admanger]]"
#define USERADD_parameter_all "AUTOINSTALL['ubconfig set [users] USERADD[*]']"
#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL['ubconfig set [users] USERADD[",target,"]']",NULL)
#define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[",target,"]']",NULL)
#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ",parameters, "; nice ubinstall2 --debug autoinstall", NULL)
@ -302,6 +310,7 @@ typedef struct {
int arg_size;
config_str arg_target;
GtkWidget *status_box;
} config;
extern config main_config;
@ -371,15 +380,15 @@ typedef struct {
GtkWidget *InstallationWindowsRadio;
GtkWidget *InstallationOptionsRadio;
GtkWidget *UserNameEntry;
GtkWidget *UserLoginEntry;
GtkWidget *UserPasswordCombo;
GtkWidget *UserPasswordEntry;
GtkWidget *UserPasswordButton;
GtkWidget *UserRootNameEntry;
GtkWidget *UserRootLoginEntry;
GtkWidget *UserRootPasswordCombo;
GtkWidget *UserRootPasswordEntry;
GtkWidget *UserRootPasswordButton;
GtkWidget *UserAutologinSwitch;
GtkWidget *AdminPasswordCombo;
GtkWidget *AdminPasswordEntry;
GtkWidget *AdminPasswordButton;
GtkWidget *UserAddBox;
GtkWidget *UserAddButton;
GtkWidget *HotnameEntry;
GtkWidget *AutoHostnameCheck;
GtkWidget *CancelInstallButton;
@ -388,11 +397,13 @@ typedef struct {
GtkWidget *mainSettingsButton;
GtkWidget *menu1;
GtkWidget *menu2;
GtkWidget *RegionImage;
GtkWidget *RegionBox;
GtkWidget *RegionAspect;
GtkWidget *KeyboardImage;
GtkWidget *KeyboardBox;
GtkWidget *Notebook;
GtkWidget *LicenceLabel;
GtkWidget *SlidesImage;
@ -584,7 +595,7 @@ typedef struct{
GtkWidget *StatusBox;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
GtkWidget *UserPasswordEntry;
GtkWidget *UserRootPasswordEntry;
GtkWidget *RepeatPasswordEntry;
GtkWidget *PasswordHashEntry;
GtkWidget *HashBox;
@ -624,13 +635,53 @@ typedef struct {
GtkWidget *DNSEntry;
} network_info;
typedef struct {
GtkWidget *MainBox;
GtkWidget *RemoveButton;
GtkWidget *UsernameEntry;
GtkWidget *LoginEntry;
GtkWidget *PasswordCombo;
GtkWidget *PasswordEntry;
GtkWidget *PasswordButton;
} yon_user_struct;
typedef struct {
GtkWidget *MenuWindow;
GtkWidget *BackButton;
GtkWidget *ItemsRevealer;
GtkWidget *ItemsListBox;
GtkWidget *ChildrenRevealer;
GtkWidget *ChildrenListBox;
int seat_grab;
dictionary *menu_items;
char *cur_selection;
int button_pos_x;
int button_pos_y;
} yon_menu_window;
typedef struct {
GtkWidget *MenuItemBox;
GtkWidget *MenuButton;
GtkWidget *MenuTextLabel;
GtkWidget *NextIconButton;
char *target;
main_window *widgets;
yon_menu_window *window;
dictionary *children;
} yon_menu_item;
void config_init();
main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new();
void NewFunction(ubinstall_language_window *window, GtkBuilder *builder);
ubinstall_keyboard_window *yon_ubinstall_keyboard_new();
password_window *yon_password_new();
void on_password_accept(GtkWidget *self, dictionary *dict);
@ -731,4 +782,19 @@ void yon_configuration_mode_check(main_window *widgets);
void on_configuration_mode_switch(GtkWidget *self,main_window *widgets);
void *_yon_installation_start(main_window *widgets);
int yon_installation_start(main_window *widgets);
enum INSTALL_TYPE yon_ubl_get_install_mode();
enum INSTALL_TYPE yon_ubl_get_install_mode();
int yon_user_save(yon_user_struct *user);
void on_user_add(GtkWidget *,main_window *widgets);
yon_user_struct *yon_user_struct_new();
void on_user_remove_clicked(GtkWidget *,yon_user_struct *user);
void yon_password_new(GtkWidget *, yon_user_struct *user);
void yon_password_root_new(GtkWidget *, main_window *widgets);
yon_menu_item *yon_menu_item_new();
yon_menu_window *yon_menu_window_new();
void on_menu_window_size_reallocated(GtkWidget *self,GtkAllocation *,yon_menu_window *window);
void on_children_clean(GtkWidget*, yon_menu_window *window);
gboolean yon_on_revealer_switched (yon_menu_window *window);
gboolean on_menu_clicked(GtkWidget *, GdkEventButton *event, yon_menu_window *window);
yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets);
void on_submenu_open(GtkWidget *,yon_menu_item *item);
void on_menu_chosen(GtkWidget *, yon_menu_item *item);

@ -185,4 +185,6 @@
#define WARNING_REBOOT_TEXT_LABEL _("Are you sure want to reboot system?")
#define DEFAULT_BOOTLOAD_MENU_ITEM_LABEL _("Default (Use last succeeded)")
#define ENCRYPT_ERROR_LABEL _("Password encryption error")
#define ENCRYPT_ERROR_LABEL _("Password encryption error")
#define DEFAULT_MENU_ITEM_LABEL _("Default (Use last succeeded)")

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.trash-symbolic</property>
</object>
<object class="GtkImage" id="image22">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.edit-symbolic</property>
</object>
<object class="GtkBox" id="MainBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Account name:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UsernameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">Administrator</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="RemoveButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Login:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="LoginEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">superadmin</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="PasswordCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">Set a password</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="visibility">False</property>
<property name="invisible-char">●</property>
<property name="placeholder-text" translatable="yes">ublinux</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="PasswordButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image22</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="bggrey"/>
</style>
</object>
</interface>

@ -206,11 +206,6 @@
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.edit-symbolic</property>
</object>
<object class="GtkImage" id="image22">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.edit-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can-focus">False</property>
@ -2518,55 +2513,48 @@ and help you install UBLinux on your computer</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<object class="GtkSwitch" id="UserAutologinSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="label" translatable="yes">Automatic login without password prompt</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-end">10</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkSwitch" id="UserRootOnlySwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Root only</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -2574,181 +2562,212 @@ and help you install UBLinux on your computer</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="UserRootOnlyRevealer">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="transition-type">slide-up</property>
<property name="reveal-child">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="UserNameEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">Administrator</property>
<signal name="changed" handler="on_toggle_button_switch_on" object="UsernameSensitiveCheck" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Account name:</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Account name:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UserRootNameEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">root</property>
<property name="placeholder-text" translatable="yes">Administrator</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Login:</property>
<property name="xalign">0</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Login:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UserRootLoginEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">root</property>
<property name="placeholder-text" translatable="yes">superadmin</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UserLoginEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="placeholder-text" translatable="yes">superadmin</property>
<signal name="changed" handler="on_toggle_button_switch_on" object="LoginSensitiveCheck" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="UserPasswordCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">Set a password</item>
</items>
<signal name="changed" handler="on_toggle_button_switch_on" object="PasswordSensitiveCheck" swapped="no"/>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Administrator password (root):</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="UserRootPasswordCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">Set a password</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UserRootPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="visibility">False</property>
<property name="invisible-char">●</property>
<property name="placeholder-text" translatable="yes">ublinux</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserRootPasswordButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image21</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UserPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">●</property>
<property name="placeholder-text" translatable="yes">ublinux</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserPasswordButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image22</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="bggrey"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="UserAddBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<placeholder/>
</child>
</object>
<packing>
@ -2757,138 +2776,28 @@ and help you install UBLinux on your computer</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="UserAddButton">
<property name="label" translatable="yes">+</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<style>
<class name="bggrey"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkSwitch" id="UserAutologinSwitch">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Automatic login without password prompt</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Administrator password (root):</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="AdminPasswordCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Default</item>
<item translatable="yes">Set a password</item>
</items>
<signal name="changed" handler="on_toggle_button_switch_on" object="RootPasswordSensitiveCheck" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="AdminPasswordEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">●</property>
<property name="placeholder-text" translatable="yes">ublinux</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AdminPasswordButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image21</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">5</property>
<property name="position">6</property>
</packing>
</child>
</object>

Loading…
Cancel
Save