Merge pull request 'master' (#341) from YanTheKaller/ubinstall-gtk:master into master

Reviewed-on: #341
pull/344/head
Dmitry Razumov 1 month ago
commit d891385e64

@ -653,8 +653,6 @@ gboolean yon_pacman_fill(struct pacman_struct *pacman){
char *size_str = yon_char_unite(yon_char_from_double(size_converted)," ", yon_size_get_name_from_letter(mod),NULL); char *size_str = yon_char_unite(yon_char_from_double(size_converted)," ", yon_size_get_name_from_letter(mod),NULL);
gtk_list_store_append(widgets->PacmanSoftwareAllList,&iter); gtk_list_store_append(widgets->PacmanSoftwareAllList,&iter);
gtk_list_store_set(widgets->PacmanSoftwareAllList,&iter,0,0,1,loaded[i],2,version,3,_(description),4,size_str,-1); gtk_list_store_set(widgets->PacmanSoftwareAllList,&iter,0,0,1,loaded[i],2,version,3,_(description),4,size_str,-1);
if (!yon_char_is_empty(version))free(version);
if (!yon_char_is_empty(description)) free(description);
} }
yon_pacman_software_update_overall_size(widgets); yon_pacman_software_update_overall_size(widgets);
yon_char_parsed_free(loaded,size); yon_char_parsed_free(loaded,size);

@ -104,7 +104,7 @@ int yon_install_separate_save(main_window *widgets){
} }
if (!main_config.configure_mode){ if (!main_config.configure_mode){
yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,part_format_parameter,part_label_parameter,part_fs_type_parameter,device_parameter,part_parameter,NULL)); yon_debug_output("%s\n",yon_config_save_args_simple(main_config.config_load_path,part_format_parameter,part_label_parameter,part_fs_type_parameter,device_parameter,part_parameter,AUTOINSTALL_TYPE_INSTALL,NULL));
} }
return 1; return 1;
} }

@ -16,16 +16,16 @@ int yon_packages_tab_save(main_window *widgets){
yon_config_append_elements(packages_parameter,package,","); yon_config_append_elements(packages_parameter,package,",");
}else if (selectable&&!status){ }else if (selectable&&!status){
yon_config_remove_elements(packages_parameter,package,","); yon_config_remove_elements_all(packages_parameter,package,",");
} else { } else {
for (int valid3 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&packiter,&subiter);valid3;valid3 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&packiter)){ for (int valid3 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&packiter,&subiter);valid3;valid3 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&packiter)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,-1); gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,4,&sensitive,-1);
if (status){ if (status){
if (sensitive){ if (sensitive){
yon_config_append_elements(packages_parameter,package,","); yon_config_append_elements(packages_parameter,package,",");
} }
} else { } else {
yon_config_remove_elements(packages_parameter,package,","); yon_config_remove_elements_all(packages_parameter,package,",");
} }
} }
} }
@ -106,7 +106,7 @@ void yon_packages_tab_init(main_window *widgets){
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
free(full_string); free(full_string);
gtk_tree_iter_free(subcategory_iter); gtk_tree_iter_free(subcategory_iter);
} else { } else {
@ -116,14 +116,14 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
free(full_string); free(full_string);
} }
} else { } else {
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
free(full_string); free(full_string);
} }
gtk_tree_iter_free(category_iter); gtk_tree_iter_free(category_iter);
@ -138,7 +138,7 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1); gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),-1);
free(full_string); free(full_string);
} else { } else {
GtkTreeIter package_iter; GtkTreeIter package_iter;
@ -147,7 +147,7 @@ void yon_packages_tab_init(main_window *widgets){
gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
free(full_string); free(full_string);
} }
} }

@ -479,6 +479,12 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_INSTALL_ADVANCED: case YON_PAGE_INSTALL_ADVANCED:
yon_advanced_init(widgets); yon_advanced_init(widgets);
break; break;
case YON_PAGE_COMPLETION:
const char *endaction = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ConfigHubRebootCombo));
if (!yon_char_is_empty(endaction)&&!strcmp(endaction,"close")){
on_exit_accepted(widgets);
}
break;
case YON_PAGE_INSTALL_COMMON: case YON_PAGE_INSTALL_COMMON:
case YON_PAGE_INSTALL_SEPARATE: case YON_PAGE_INSTALL_SEPARATE:
case YON_PAGE_INSTALL_SAME_PARTITION: case YON_PAGE_INSTALL_SAME_PARTITION:

@ -265,7 +265,7 @@ void yon_region_init(main_window *widgets){
if (!gtk_switch_get_active(GTK_SWITCH(widgets->RegionSensitiveSwitch))){ if (!gtk_switch_get_active(GTK_SWITCH(widgets->RegionSensitiveSwitch))){
size=0; size=0;
config_str autotimezone = yon_config_load(internet_tomezone_check_command,(int*)&size); config_str autotimezone = yon_config_load(internet_tomezone_check_command,(int*)&size);
if (size&&!yon_char_is_empty(autotimezone[0])){ if (autotimezone&&!yon_char_is_empty(autotimezone[0])){
yon_char_remove_last_symbol(autotimezone[0],'\n'); yon_char_remove_last_symbol(autotimezone[0],'\n');
gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),autotimezone[0]); gtk_entry_set_text(GTK_ENTRY(widgets->RegionEntry),autotimezone[0]);
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),autotimezone[0]); cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),autotimezone[0]);

@ -22,6 +22,18 @@ int yon_users_save(main_window *widgets){
GList *users = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox)); GList *users = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox));
GList *iter; GList *iter;
if (!users){ if (!users){
{
int size = 0;
config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&size);
for(int i=0;i<size;i++){
if (strstr(users[i],"=")){
char *temp = yon_char_divide_search(users[i],"=",-1);
free(users[i]);
users[i] = temp;
}
}
yon_config_remove_by_list(users,size);
}
yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,"root"); yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,"root");
} else { } else {
for (iter=users;iter;iter=iter->next){ for (iter=users;iter;iter=iter->next){
@ -42,6 +54,8 @@ int yon_users_save(main_window *widgets){
config_str users = yon_config_get_all_keys_by_key(USERADD_parameter_search,&users_size); config_str users = yon_config_get_all_keys_by_key(USERADD_parameter_search,&users_size);
yon_char_parsed_add_or_create_if_exists(users,&users_size,root_password_parameter); yon_char_parsed_add_or_create_if_exists(users,&users_size,root_password_parameter);
yon_char_parsed_add_or_create_if_exists(users,&users_size,autologin_parameter); yon_char_parsed_add_or_create_if_exists(users,&users_size,autologin_parameter);
yon_char_parsed_add_or_create_if_exists(users,&users_size,DEFAULTUSER_parameter);
yon_char_parsed_add_or_create_if_exists(users,&users_size,ADDADM_parameter);
yon_debug_output("%s\n",yon_config_save_list_simple(users,users_size,main_config.config_load_path)); yon_debug_output("%s\n",yon_config_save_list_simple(users,users_size,main_config.config_load_path));
} }
return 1; return 1;
@ -56,6 +70,17 @@ int yon_user_save(yon_user_struct *user){
yon_ubl_status_highlight_incorrect(user->LoginEntry); yon_ubl_status_highlight_incorrect(user->LoginEntry);
return 0; return 0;
} }
char *default_user = config(DEFAULTUSER_parameter);
if (yon_char_is_empty(default_user)){
default_user = config(DEFAULTUSER_system_parameter);
}
if (!strcmp(default_user,login)){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(user->AdminCheck))){
yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"yes");
} else {
yon_config_register(ADDADM_parameter,ADDADM_parameter_command,"no");
}
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(user->PasswordCombo))){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(user->PasswordCombo))){
password = (char *)gtk_entry_get_text(GTK_ENTRY(user->PasswordEntry)); password = (char *)gtk_entry_get_text(GTK_ENTRY(user->PasswordEntry));
if (yon_char_is_empty(password)){ if (yon_char_is_empty(password)){
@ -174,13 +199,16 @@ void yon_user_init(main_window *widgets){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,SET_PASSWORD_LABEL); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->UserRootPasswordCombo),NULL,SET_PASSWORD_LABEL);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry)); yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(widgets->UserRootPasswordEntry));
char *root_password = config(root_password_parameter); char *root_password = config(root_password_parameter);
if (yon_char_is_empty(root_password)){
root_password = config(DEFAULTROOTPASSWD_system_parameter);
}
char *autologin = config(autologin_parameter); char *autologin = config(autologin_parameter);
if (!yon_char_is_empty(root_password)&&!yon_config_check_default(root_password_parameter)){ if (!yon_char_is_empty(root_password)&&strcmp(root_password,config(DEFAULTROOTPASSWD_system_parameter))){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),1); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),1);
gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),root_password); gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),root_password);
} else { } else {
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->UserRootPasswordCombo),0);
gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),""); gtk_entry_set_text(GTK_ENTRY(widgets->UserRootPasswordEntry),root_password);
} }
if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"yes")||!strcmp(autologin,"enable"))){ if (!yon_char_is_empty(autologin)&&(!strcmp(autologin,"yes")||!strcmp(autologin,"enable"))){
gtk_switch_set_active(GTK_SWITCH(widgets->UserAutologinSwitch),1); gtk_switch_set_active(GTK_SWITCH(widgets->UserAutologinSwitch),1);
@ -198,24 +226,35 @@ void yon_user_init(main_window *widgets){
int users_size; int users_size;
config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size); config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size);
if (!users_size){ if (!users_size){
char *default_user = config(DEFAULTUSER_parameter); char *addadm = config(ADDADM_parameter);
if (yon_char_is_empty(default_user)){ if (yon_char_is_empty(addadm)){
default_user = config(DEFAULTUSER_system_parameter); addadm = config(ADDADM_system_parameter);
} }
yon_user_struct *user = yon_user_struct_new(); char *def_usr = config(DEFAULTUSER_parameter);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); if (yon_char_is_empty(def_usr)||(!yon_char_is_empty(def_usr)&&strcmp(def_usr,"root"))){
g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); char *default_user = config(DEFAULTUSER_parameter);
g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets); if (yon_char_is_empty(default_user)){
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0); default_user = config(DEFAULTUSER_system_parameter);
gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL); }
if (!yon_char_is_empty(default_user)) yon_user_struct *user = yon_user_struct_new();
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),default_user); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1);
else { g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets);
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin"); g_object_set_data(G_OBJECT(user->MainBox),"widgets",widgets);
gtk_box_pack_start(GTK_BOX(widgets->UserAddBox),user->MainBox,0,0,0);
gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),ADMINISTRATOR_LABEL);
if (!yon_char_is_empty(default_user))
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),default_user);
else {
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin");
}
if (!yon_char_is_empty(default_passwd))
gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),default_passwd);
if (!yon_char_is_empty(def_usr)&& !strcmp(def_usr,default_user)){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),!strcmp(addadm,"yes"));
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),strcmp(addadm,"yes"));
}
} }
if (!yon_char_is_empty(default_passwd))
gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),default_passwd);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1);
} }
for (int i=0;i<users_size;i++){ for (int i=0;i<users_size;i++){
yon_user_struct *user = yon_user_struct_new(); yon_user_struct *user = yon_user_struct_new();

@ -275,6 +275,12 @@ layout && /description:/ {\
#define DEFAULTPASSWD_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [users] DEFAULTPASSWD']" #define DEFAULTPASSWD_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [users] DEFAULTPASSWD']"
#define DEFAULTPASSWD_system_parameter "DEFAULTPASSWD" #define DEFAULTPASSWD_system_parameter "DEFAULTPASSWD"
#define DEFAULTPASSWD_system_parameter_command "ubconfig --source global get [users] DEFAULTPASSWD" #define DEFAULTPASSWD_system_parameter_command "ubconfig --source global get [users] DEFAULTPASSWD"
#define DEFAULTROOTPASSWD_system_parameter "DEFAULTROOTPASSWD"
#define DEFAULTROOTPASSWD_system_parameter_command "ubconfig --source global get [users] DEFAULTROOTPASSWD"
#define ADDADM_parameter "AUTOINSTALL[ubconfig set [users] ADDADM]"
#define ADDADM_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [users] ADDADM']"
#define ADDADM_system_parameter "ADDADM"
#define ADDADM_system_parameter_command "ubconfig --source default get [autoinstall] ADDADM"
#define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']" #define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']"
#define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']" #define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']"
@ -308,9 +314,9 @@ layout && /description:/ {\
#define get_modules_command "ubinstall show --lsmodules" #define get_modules_command "ubinstall show --lsmodules"
#define ubconfig_file_create_pkexec(target) yon_char_unite("pkexec ubconfig --target \"",target,"\" create",NULL) #define ubconfig_file_create_pkexec(target) yon_char_unite("pkexec ubconfig --target \"",target,"\" create",NULL)
#define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL) #define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] ADDADM -- get [locale] LANG", NULL)
#define config_get_default_command "ubconfig -ea --noconarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG -- get [users] ADMUID DEFAULTUSER DEFAULTPASSWD" #define config_get_default_command "ubconfig -ea --noconarg --source default get [autoinstall] AUTOINSTALL[*] ADDADM -- get [locale] LANG -- get [users] ADMUID DEFAULTUSER DEFAULTPASSWD DEFAULTROOTPASSWD"
#define config_get_global_only_parameters "" #define config_get_global_only_parameters ""
#define config_get_local_only_parameters "" #define config_get_local_only_parameters ""
@ -387,7 +393,8 @@ layout && /description:/ {\
part_crypt_parameter part_crypt_parameter
typedef char *string; typedef char *string;
__attribute__((unused)) static string version_application; __attribute__((unused)) static
string version_application;
enum YON_PAGES enum YON_PAGES
{ {

Loading…
Cancel
Save