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

Reviewed-on: #168
pull/239/head
Dmitry Razumov 4 months ago
commit 4a5b3a3ab1

@ -21,6 +21,7 @@
<file>ubinstall-gtk-source-element.glade</file>
<file>ubinstall-gtk-layouts.glade</file>
<file>ubinstall-gtk-keyboard-layouts.glade</file>
<file>ubinstall-gtk-slider.glade</file>
</gresource>
<gresource prefix="/com/ublinux/css">
<file>ubinstall-gtk.css</file>
@ -60,6 +61,7 @@
<file>services-list.csv</file>
<file>network-list.csv</file>
<file>filesystems-format-list.csv</file>
<file>groups-list.csv</file>
<file>vfs-list.csv</file>
</gresource>
</gresources>

@ -1,6 +1,6 @@
GROUP_NAME;SUBGROUP_NAME;PACKAGES;DESCRIPTION
Containerization;ubm-docker;Docker and webmanager and utils
Containerization;ubm-podman;Podman and webmanager and utils
Containerization;;ubm-docker;Docker and webmanager and utils
Containerization;;ubm-podman;Podman and webmanager and utils
Drivers;Printer;ubm-drv-brother;Brother printer drivers
Drivers;Printer;ubm-drv-canon-capt;Canon CAPT Printer Driver
Drivers;Printer;ubm-drv-canon-ufrii;Canon UFR II LIPSLX CARPS2 printer driver

1 GROUP_NAME;SUBGROUP_NAME;PACKAGES;DESCRIPTION GROUP_NAME SUBGROUP_NAME PACKAGES DESCRIPTION
2 Containerization;ubm-docker;Docker and webmanager and utils Containerization ubm-docker Docker and webmanager and utils
3 Containerization;ubm-podman;Podman and webmanager and utils Containerization ubm-podman Podman and webmanager and utils
4 Drivers;Printer;ubm-drv-brother;Brother printer drivers Drivers Printer ubm-drv-brother Brother printer drivers
5 Drivers;Printer;ubm-drv-canon-capt;Canon CAPT Printer Driver Drivers Printer ubm-drv-canon-capt Canon CAPT Printer Driver
6 Drivers;Printer;ubm-drv-canon-ufrii;Canon UFR II LIPSLX CARPS2 printer driver Drivers Printer ubm-drv-canon-ufrii Canon UFR II LIPSLX CARPS2 printer driver

@ -1311,3 +1311,15 @@ msgstr ""
#: source/ubl-strings.h:20
msgid "<b>Attention!</b> The selected partition will be reduced and the next new partition will be created. The data will be saved in the selected partition. The new partition will be formatted."
msgstr ""
msgid "Personal"
msgstr ""
msgid "Hardware"
msgstr ""
msgid "System"
msgstr ""
msgid "Packages"
msgstr ""

@ -3153,3 +3153,15 @@ msgstr "Новый раздел:"
#: source/ubl-strings.h:20
msgid "<b>Attention!</b> The selected partition will be reduced and the next new partition will be created. The data will be saved in the selected partition. The new partition will be formatted."
msgstr "<b>Внимание!</b> Выбранный раздел будет уменьшен и будет создан следующий новый раздел. На выбранном разделе данные будут сохранены. Новый раздел будет отформатирован."
msgid "Personal"
msgstr "Личные"
msgid "Hardware"
msgstr "Оборудование"
msgid "System"
msgstr "Система"
msgid "Packages"
msgstr "Пакеты"

@ -74,6 +74,7 @@ set(DEPENDFILES
../ubinstall-gtk-source-element.glade
../ubinstall-gtk-layouts.glade
../ubinstall-gtk-keyboard-layouts.glade
../ubinstall-gtk-slider.glade
../gresource.xml
../ubinstall-gtk.css
../modules.csv
@ -82,6 +83,7 @@ set(DEPENDFILES
../services-list.csv
../network-list.csv
../filesystems-format-list.csv
../groups-list.csv
../vfs-list.csv
../icons-builtin/install_type_custom_normal.png
../icons-builtin/install_type_data_only_normal.png
@ -143,13 +145,14 @@ set(SOURCE_FILES
ubinstall-gtk-configuration-mode.c
ubinstall-gtk-decorations.c
ubinstall-gtk-log.c
# ubinstall-gtk-password.c
ubinstall-gtk-packages.c
ubinstall-gtk-saving.c
ubinstall-gtk-standard.c
ubinstall-gtk-install-start.c
ubinstall-gtk-startup-services.c
ubinstall-gtk-kernel.c
ubinstall-gtk-language.c
ubinstall-gtk-config-hub.c
ubinstall-gtk.h
ubl-strings.h
)

@ -42,22 +42,6 @@ int yon_bootloader_save(main_window *widgets){
yon_config_remove_by_key(GRUB_SUPERUSERS_parameter);
}
if (!main_config.configure_mode){
int size, users_size, final_size, save_size;
config_str grub_users = yon_config_find_keys(GRUB_PASSWORD_parameter_search,&users_size);
config_str save_parameters = yon_char_parsed_new(&size,GRUB_TIMEOUT_parameter,GRUB_DEFAULT_parameter,AUTOLOGINUSER_parameter,GRUB_SUPERUSERS_parameter,NULL);
config_str final = yon_char_parsed_merge(save_parameters,size,grub_users,users_size,&final_size);
config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,save_size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,save_size);
}
if (grub_users) yon_char_parsed_free(grub_users,users_size);
if (save_parameters) yon_char_parsed_free(save_parameters,size);
}
yon_bootloader_interface_update(widgets);
return 1;

@ -3,14 +3,17 @@
int yon_kernel_save(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox));
char *install_modules = "";
char *config_val = config(modules_extra_parameter);
if (yon_char_is_empty(config_val)) yon_config_register(modules_extra_parameter,modules_extra_parameter_command,"");
char *enabled_module = NULL;
int overall_size = 0;
int active_size = 0;
for(GList *iter = list;iter;iter = iter->next){
overall_size++;
kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row");
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){
char *temp = yon_char_unite(install_modules,!yon_char_is_empty(install_modules)?" ":"",row->modules,NULL);
if (!yon_char_is_empty(install_modules)) free(install_modules);
install_modules = temp;
yon_config_append_element(modules_extra_parameter,row->package,",");
active_size++;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){
enabled_module = row->package;
}
@ -18,28 +21,12 @@ int yon_kernel_save(main_window *widgets){
}
if (yon_char_is_empty(enabled_module)){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ENABLED_KERNEL_MISSING_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return 0;
}
if (!yon_char_is_empty(install_modules)){
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules);
yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module);
} else {
yon_config_remove_by_key(modules_extra_parameter);
}
yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module);
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_parameter,KERNEL_BOOT_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
yon_config_remove_by_key(KERNEL_BOOT_parameter);
}
return 1;
}
@ -61,17 +48,6 @@ int yon_kernel_addon_save(main_window *widgets){
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules);
free(install_modules);
}
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}
@ -99,17 +75,6 @@ int yon_os_components_save(main_window *widgets){
} else {
yon_config_remove_by_key(modules_parameter);
}
if (!main_config.configure_mode){
int parameters_size;
config_str parameters = yon_config_get_save_parameters_by_key(&parameters_size,modules_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,parameters_size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,parameters_size);
}
}
return 1;
}
@ -126,8 +91,6 @@ os_row *yon_os_row_new(){
row->modules=NULL;
row->version=NULL;
g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row);
row->row = gtk_list_box_row_new();
gtk_container_add(GTK_CONTAINER(row->row),row->RowBox);
gtk_widget_show(row->row);
@ -235,43 +198,45 @@ void yon_os_components_init(main_window *widgets){
}
}
int yon_software_save(main_window *){
// GtkTreeIter iter;
// GtkTreeModel *model = GTK_TREE_MODEL(widgets->AdditionalSoftwareList);
// int size = 0;
// config_str modules = NULL;
// for_iter(model,&iter){
// char *target;
// int status;
// gtk_tree_model_get(model,&iter,0,&status,1,&target,-1);
// if (status){
// yon_char_parsed_add_or_create_if_exists(modules,&size,target);
// }
// }
// if (size){
// char *final = yon_char_parsed_to_string(modules,size,",");
// char *parameter = config(modules_extra_parameter);
// char *parameter_new = yon_char_unite(!yon_char_is_empty(parameter)?parameter:"",!yon_char_is_empty(parameter)?",":"",final,NULL);
// yon_config_register(modules_extra_parameter,modules_extra_parameter_command,parameter_new);
// free(parameter_new);
// }
// if (!main_config.configure_mode){
// int size;
// config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_parameter,NULL);
// if (parameters){
// char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
// char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
// if (!system(yon_debug_output("%s\n",command))){}
// free(command);
// yon_char_parsed_free(parameters,size);
// }
// }
int yon_software_save(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList));
GList *iter;
char *config_val = config(modules_extra_parameter);
for(iter = list;iter;iter=iter->next){
os_row *row = g_object_get_data(iter->data,"kernel_row");
char *target = row->name;
int status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck));
if (status){
if (!yon_char_check_element(config_val,target,",")){
yon_config_append_element(modules_extra_parameter,target,",");
}
}
}
g_list_free(list);
return 1;
}
gboolean yon_software_insert(struct row_data *row_input){
os_row *row = yon_os_row_new();
main_window *widgets = row_input->widgets;
gtk_list_box_insert(GTK_LIST_BOX(widgets->AdditionalComponentsList),row->row,-1);
yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0);
return G_SOURCE_REMOVE;
}
void yon_software_init(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList));
GList *iter;
for (iter=list;iter;iter=iter->next){
os_row *row = g_object_get_data(iter->data,"kernel_row");
free(row);
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
int base_size;
config_str base = yon_config_load(get_modules_command,&base_size);
config_str base = yon_config_load(get_available_modules_command,&base_size);
for (int i=0;i<base_size;i++){
yon_char_remove_last_symbol(base[i],'\n');
int parsed_size;
@ -282,7 +247,7 @@ void yon_software_init(main_window *widgets){
row->tags = yon_char_replace(parsed[2]," ",", ");
row->description = parsed[3];
row->widgets=widgets;
g_idle_add((GSourceFunc)yon_os_component_insert,row);
g_idle_add((GSourceFunc)yon_software_insert,row);
}
g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner);
yon_char_parsed_free(base,base_size);
@ -306,17 +271,6 @@ int yon_pacman_software_save(main_window *widgets){
} else {
yon_config_remove_by_key(packages_parameter);
}
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,packages_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}

@ -0,0 +1,194 @@
#include "ubinstall-gtk.h"
int yon_configuration_hub_save(main_window *){
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_parameter,
modules_extra_parameter,
root_password_parameter,
autologin_parameter,
xkbmodel_parameter,
xkblayout_parameter,
xkbvariant_parameter,
xkboptions_parameter,
hostname_parameter,
zone_parameter,
lang_parameter,
locale_parameter,
num_lock_boot_parameter,
swap_parameter,
swap_size_parameter,
boot_parameter,
packages_parameter,
device_typevfs_parameter,
NTPSERVERS_parameter,
DOMAIN_parameter,
DOMAIN_admanger_parameter,
KERNEL_BOOT_parameter,
SERVICES_ENABLE_parameter,
GRUB_SUPERUSERS_parameter,
GRUB_TIMEOUT_parameter,
GRUB_DEFAULT_parameter,
AUTOLOGINUSER_parameter,
NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
int users_size, save_size;
config_str users = yon_config_find_keys(NETWORK_parameter_search,&users_size);
parameters = yon_config_get_save_parameters_by_list(&save_size,users,users_size);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,save_size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,save_size);
}
if (users)yon_char_parsed_free(users,users_size);
users = yon_config_find_keys(USERADD_parameter_search,&users_size);
parameters = yon_config_get_save_parameters_by_list(&save_size,users,users_size);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,save_size);
}
if (users)yon_char_parsed_free(users,users_size);
}
return 1;
}
void on_configuration_hub_selected(GtkWidget* self, main_window *widgets){
GList *list = NULL;
list = g_list_prepend(list,widgets->HubPackagesListBox);
list = g_list_prepend(list,widgets->HubSystemListBox);
list = g_list_prepend(list,widgets->HubHardwareListBox);
list = g_list_prepend(list,widgets->HubPersonalListBox);
list = g_list_reverse(list);
GList *iter;
for (iter=list;iter;iter=iter->next){
if (iter->data!=self){
g_signal_handlers_block_by_func(G_OBJECT(iter->data),G_CALLBACK(on_configuration_hub_selected),widgets);
GList *flowlist = gtk_flow_box_get_selected_children(GTK_FLOW_BOX(iter->data));
if (flowlist){
gtk_flow_box_unselect_child(GTK_FLOW_BOX(iter->data),GTK_FLOW_BOX_CHILD(flowlist->data));
g_list_free(flowlist);
}
g_signal_handlers_unblock_by_func(G_OBJECT(iter->data),G_CALLBACK(on_configuration_hub_selected),widgets);
}
}
}
void yon_configuration_hub_section_get_max_size(GtkFlowBox *target, int *ret_width, int *ret_height){
GList *list = gtk_container_get_children(GTK_CONTAINER(target));
GList *iter;
for (iter=list;iter;iter=iter->next){
config_hub_icon *section = g_object_get_data(G_OBJECT(iter->data),"config_hub_icon");
gtk_widget_realize(GTK_WIDGET(iter->data));
gtk_widget_realize(GTK_WIDGET(section->Label));
int width;
int height;
gtk_widget_get_preferred_width(section->Label,NULL,&width);
gtk_widget_get_preferred_height(section->Label,NULL,&height);
if ((*ret_width)<width) (*ret_width) = width;
if ((*ret_height)<height) (*ret_height) = height;
}
}
void yon_configuration_hub_section_set_max_size(GtkFlowBox *target, int width, int height){
GList *list = gtk_container_get_children(GTK_CONTAINER(target));
GList *iter;
for (iter=list;iter;iter=iter->next){
config_hub_icon *section = g_object_get_data(G_OBJECT(iter->data),"config_hub_icon");
gtk_widget_set_size_request(section->Label,width,height);
}
}
void yon_configuration_hub_resize(main_window *widgets){
int max_width=0;
int max_height=0;
yon_configuration_hub_section_get_max_size(GTK_FLOW_BOX(widgets->HubPersonalListBox),&max_width,&max_height);
yon_configuration_hub_section_get_max_size(GTK_FLOW_BOX(widgets->HubHardwareListBox),&max_width,&max_height);
yon_configuration_hub_section_get_max_size(GTK_FLOW_BOX(widgets->HubSystemListBox),&max_width,&max_height);
yon_configuration_hub_section_get_max_size(GTK_FLOW_BOX(widgets->HubPackagesListBox),&max_width,&max_height);
yon_configuration_hub_section_set_max_size(GTK_FLOW_BOX(widgets->HubPersonalListBox),max_width,max_height);
yon_configuration_hub_section_set_max_size(GTK_FLOW_BOX(widgets->HubHardwareListBox),max_width,max_height);
yon_configuration_hub_section_set_max_size(GTK_FLOW_BOX(widgets->HubSystemListBox),max_width,max_height);
yon_configuration_hub_section_set_max_size(GTK_FLOW_BOX(widgets->HubPackagesListBox),max_width,max_height);
}
void on_configuration_hub_open(GtkFlowBox *,GtkFlowBoxChild *child, main_window *widgets){
config_hub_icon *cur_icon = g_object_get_data(G_OBJECT(child),"config_hub_icon");
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),cur_icon->page);
yon_page_init(widgets,cur_icon->page);
yon_page_update(widgets);
}
void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum YON_PAGES page){
g_return_if_fail(GTK_IS_FLOW_BOX(target));
config_hub_icon *cur_icon = malloc(sizeof(config_hub_icon));
memset(cur_icon,0,sizeof(config_hub_icon));
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE);
char *name_wrapped = yon_char_wrap_to_length_str(name,10);
cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
cur_icon->Label = gtk_label_new(name_wrapped);
cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
cur_icon->page = page;
GtkWidget *flow = gtk_flow_box_child_new();
gtk_style_context_add_class(gtk_widget_get_style_context(flow),"bggrey");
gtk_label_set_xalign(GTK_LABEL(cur_icon->Label),0);
g_object_set_data(G_OBJECT(flow),"config_hub_icon",cur_icon);
gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0);
gtk_widget_set_margin_bottom(cur_icon->MainBox,10);
gtk_widget_set_margin_top(cur_icon->MainBox,10);
gtk_widget_set_margin_start(cur_icon->MainBox,10);
gtk_widget_set_margin_end(cur_icon->MainBox,10);
gtk_flow_box_insert(target,flow,-1);
gtk_widget_show_all(flow);
free(name_wrapped);
}
void yon_flow_box_clear(GtkFlowBox *target){
GList *list = gtk_container_get_children(GTK_CONTAINER(target));
GList *iter;
for (iter=list;iter;iter=iter->next){
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
}
void yon_configuration_hub_init(main_window *widgets){
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubPersonalListBox));
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubSystemListBox));
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubHardwareListBox));
yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubPackagesListBox));
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_LABEL,kernel_icon_path,YON_PAGE_KERNEL);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_ADDON_LABEL,kernel_icon_path,YON_PAGE_KERNEL_ADDON);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),SOFTWARE_LABEL,"com.ublinux.ubl-settings-update",YON_PAGE_SOFTWARE);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),PACMAN_SOFTWARE_LABEL,"com.ublinux.ubl-settings-repomanager",YON_PAGE_PACMAN_SOFTWARE);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),PACKAGES_SECTION_LABEL,"com.ublinux.ubl-settings-repomanager",YON_PAGE_PACKAGES);
// yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_ADDON_LABEL,icon_path,YON_PAGE_KERNEL_ADDON);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),REGION_ICON_LABEL,"com.ublinux.ubl-settings-system",YON_PAGE_REGION);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),LOCALE_LANGUAGE_LABEL,"com.ublinux.ubl-settings-system",YON_PAGE_LANGUAGE);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),KEYBOARD_TAB_LABEL,"com.ublinux.ubl-settings-keyboard",YON_PAGE_KEYBOARD);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),USERS_TAB_LABEL,"com.ublinux.ubl-settings-usergroups",YON_PAGE_USERS);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),STARTUP_LABEL,"com.ublinux.ubl-settings-info",YON_PAGE_STARTUP);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),BOOTLOADER_LABEL,"com.ublinux.ubl-settings-bootloader",YON_PAGE_BOOTLOADER);
yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),NETWORK_LABEL,"com.ublinux.ubl-settings-multiseat",YON_PAGE_NETWORK);
yon_configuration_hub_resize(widgets);
}

@ -1,122 +1,142 @@
#include "ubinstall-gtk.h"
// void yon_resize_images_update(main_window *widgets){
// enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
// gtk_widget_hide(widgets->BootloaderImage);
// gtk_widget_hide(widgets->RegionImage);
// gtk_widget_hide(widgets->UserImage);
// gtk_widget_hide(widgets->StartupImage);
// gtk_widget_hide(widgets->NetworkImage);
// switch(page){
// case YON_PAGE_BOOTLOADER:
// gtk_widget_show(widgets->BootloaderImage);
// break;
// case YON_PAGE_REGION:
// gtk_widget_show(widgets->RegionImage);
// break;
// case YON_PAGE_USERS:
// gtk_widget_show(widgets->UserImage);
// break;
// case YON_PAGE_STARTUP:
// gtk_widget_show(widgets->StartupImage);
// break;
// case YON_PAGE_NETWORK:
// gtk_widget_show(widgets->NetworkImage);
// break;
// case YON_PAGE_INSTALLATION:
// gtk_widget_show(widgets->SlidesImage);
// g_timeout_add(7000,on_image_slide,widgets);
// break;
// default:
// break;
// }
// }
// void on_region_resized(GtkWidget *,main_window *widgets){
// enum YON_PAGES page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
// GtkImage *target = NULL;
// GdkPixbuf *pixbuf = NULL;
// switch (page){
// case YON_PAGE_BOOTLOADER:
// target = GTK_IMAGE(widgets->BootloaderImage);
// pixbuf = widgets->bootloader_original;
// break;
// case YON_PAGE_REGION:
// target = GTK_IMAGE(widgets->RegionImage);
// pixbuf = widgets->region_original;
// break;
// case YON_PAGE_USERS:
// target = GTK_IMAGE(widgets->UserImage);
// pixbuf = widgets->user_original;
// break;
// case YON_PAGE_STARTUP:
// target = GTK_IMAGE(widgets->StartupImage);
// pixbuf = widgets->startup_original;
gboolean on_install_slider_hover_highlight(GtkWidget *, GdkEvent *, main_window *widgets){
gtk_widget_show(widgets->NextInstallationSliderImage);
gtk_widget_show(widgets->PrevInstallationSliderImage);
return 0;
}
// break;
// case YON_PAGE_NETWORK:
// target = GTK_IMAGE(widgets->NetworkImage);
// pixbuf = widgets->network_original;
gboolean on_install_slider_hover_highlight_end(GtkWidget *, GdkEvent *, main_window *widgets){
gtk_widget_hide(widgets->NextInstallationSliderImage);
gtk_widget_hide(widgets->PrevInstallationSliderImage);
return 0;
}
// break;
// case YON_PAGE_INSTALLATION:
// target = GTK_IMAGE(widgets->SlidesImage);
// pixbuf = g_list_nth_data(widgets->slides_original,main_config.cur_slide);
void on_install_slider_next(GtkWidget* ,GdkEventButton *,main_window *widgets){
main_config.chosen_slide=main_config.chosen_slide->next?main_config.chosen_slide->next:g_list_first(main_config.chosen_slide);
yon_install_slider_update(widgets);
}
// break;
// default:
// break;
// }
// if (target){
// yon_image_resize_from_container(target,pixbuf);
// }
// }
void on_install_slider_prev(GtkWidget* ,GdkEventButton *,main_window *widgets){
main_config.chosen_slide=main_config.chosen_slide->prev?main_config.chosen_slide->prev:g_list_last(main_config.chosen_slide);
yon_install_slider_update(widgets);
}
// int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled){
// int width = gtk_widget_get_allocated_width((gtk_widget_get_parent(GTK_WIDGET(target))));
// int height = gtk_widget_get_allocated_height((gtk_widget_get_parent(GTK_WIDGET(target))));
void yon_install_slider_update(main_window *widgets){
slider_object *cur_slider = (slider_object*)main_config.chosen_slide->data;
slider_object *next_slider = main_config.chosen_slide->next?((slider_object*)main_config.chosen_slide->next->data):(slider_object*)(g_list_first(main_config.chosen_slide)->data);
GtkWidget *prevleft = gtk_bin_get_child(GTK_BIN(widgets->ScrollLeftEventBox));
GtkWidget *prevright = gtk_bin_get_child(GTK_BIN(widgets->ScrollRightEventBox));
if (cur_slider->MainBox==prevleft) return;
if (prevleft&&prevright) {
g_object_ref(G_OBJECT(prevleft));
g_object_ref(G_OBJECT(prevright));
gtk_container_remove(GTK_CONTAINER(widgets->ScrollLeftEventBox),prevleft);
gtk_container_remove(GTK_CONTAINER(widgets->ScrollRightEventBox),prevright);
}
gtk_container_add(GTK_CONTAINER(widgets->ScrollLeftEventBox),cur_slider->MainBox);
gtk_container_add(GTK_CONTAINER(widgets->ScrollRightEventBox),next_slider->MainBox);
gtk_container_check_resize(GTK_CONTAINER(widgets->ScrollLeftEventBox));
gtk_container_check_resize(GTK_CONTAINER(widgets->ScrollRightEventBox));
GList *dots = gtk_container_get_children(GTK_CONTAINER(widgets->SliderProgressBox));
GList *iter;
for (iter=dots;iter;iter=iter->next){
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
for (iter=main_config.slides;iter;iter=iter->next){
GtkWidget *Image = NULL;
int chosen = iter==main_config.chosen_slide||(main_config.chosen_slide->next&&iter==main_config.chosen_slide->next)||(!main_config.chosen_slide->next&&iter==g_list_first(main_config.chosen_slide));
if (chosen){
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),toggled_icon_path,8,1,GTK_ICON_LOOKUP_FORCE_SIZE);
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
} else {
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),untoggled_icon_path,8,1,GTK_ICON_LOOKUP_FORCE_SIZE);
Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
}
gtk_box_pack_start(GTK_BOX(widgets->SliderProgressBox),Image,0,0,0);
gtk_widget_show(Image);
}
}
// int newImgWidthDef = (width <= 217) ? width : width - 30;
// int newImgHeightDef = (height <= 120) ? height : height - 80;
slider_object *yon_slider_object_new(){
slider_object *slider = malloc(sizeof(slider_object));
memset(slider,0,sizeof(slider_object));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_slider);
slider->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
slider->TitleImage = yon_gtk_builder_get_widget(builder,"TitleImage");
slider->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
slider->TextLabel = yon_gtk_builder_get_widget(builder,"TextLabel");
g_object_set_data(G_OBJECT(slider->MainBox),"slider_object",slider);
return slider;
}
// int originalWidth = gdk_pixbuf_get_width(pixbuf_unscaled);
// int originalHeight = gdk_pixbuf_get_height(pixbuf_unscaled);
// int newImgHeight = (int)(originalHeight / ((double) originalWidth / newImgWidthDef));
void yon_slider_setup(slider_object *slider, char *title, char *icon, char *text_markup){
gtk_label_set_text(GTK_LABEL(slider->TitleLabel),title);
gtk_label_set_markup(GTK_LABEL(slider->TextLabel),text_markup);
gtk_image_set_from_icon_name(GTK_IMAGE(slider->TitleImage),icon,GTK_ICON_SIZE_DND);
}
// if (newImgHeight > newImgHeightDef) {
// newImgHeight = newImgHeightDef;
// newImgWidthDef = (int)(originalWidth / ((double) originalHeight / newImgHeight));
// }
// int newImageWidth = (int)(originalWidth / ((double) originalHeight / newImgHeight));
slider_object *yon_slider_new_full(char *title, char *icon, char *text_markup){
slider_object *slider = yon_slider_object_new();
yon_slider_setup(slider,title,icon,text_markup);
return slider;
}
// GdkPixbuf *scaledPixBuf = gdk_pixbuf_scale_simple(pixbuf_unscaled, newImageWidth, newImgHeight, GDK_INTERP_BILINEAR);
// gtk_image_set_from_pixbuf(target, scaledPixBuf);
void yon_install_slider_init(main_window *widgets){
if (main_config.slides) return;
slider_object *slider1 = yon_slider_new_full(slide_1_title, icon_path,slide_1_text);
slider_object *slider2 = yon_slider_new_full(slide_2_title, icon_path,slide_2_text);
slider_object *slider3 = yon_slider_new_full(slide_3_title, icon_path,slide_3_text);
slider_object *slider4 = yon_slider_new_full(slide_4_title, icon_path,slide_4_text);
slider_object *slider5 = yon_slider_new_full(slide_5_title, icon_path,slide_5_text);
slider_object *slider6 = yon_slider_new_full(slide_6_title, icon_path,slide_6_text);
slider_object *slider7 = yon_slider_new_full(slide_7_title, icon_path,slide_7_text);
slider_object *slider8 = yon_slider_new_full(slide_8_title, icon_path,slide_8_text);
slider_object *slider9 = yon_slider_new_full(slide_9_title, icon_path,slide_9_text);
slider_object *slider10 = yon_slider_new_full(slide_10_title, icon_path,slide_10_text);
slider_object *slider11 = yon_slider_new_full(slide_11_title, icon_path,slide_11_text);
slider_object *slider12 = yon_slider_new_full(slide_12_title, icon_path,slide_12_text);
slider_object *slider13 = yon_slider_new_full(slide_13_title, icon_path,slide_13_text);
slider_object *slider14 = yon_slider_new_full(slide_14_title, icon_path,slide_14_text);
slider_object *slider15 = yon_slider_new_full(slide_15_title, icon_path,slide_15_text);
slider_object *slider16 = yon_slider_new_full(slide_16_title, icon_path,slide_16_text);
slider_object *slider17 = yon_slider_new_full(slide_17_title, icon_path,slide_17_text);
slider_object *slider18 = yon_slider_new_full(slide_18_title, icon_path,slide_18_text);
slider_object *slider19 = yon_slider_new_full(slide_19_title, icon_path,slide_19_text);
slider_object *slider20 = yon_slider_new_full(slide_20_title, icon_path,slide_20_text);
slider_object *slider21 = yon_slider_new_full(slide_21_title, icon_path,slide_21_text);
slider_object *slider22 = yon_slider_new_full(slide_22_title, icon_path,slide_22_text);
main_config.slides = g_list_prepend(main_config.slides,slider22);
main_config.slides = g_list_prepend(main_config.slides,slider21);
main_config.slides = g_list_prepend(main_config.slides,slider20);
main_config.slides = g_list_prepend(main_config.slides,slider19);
main_config.slides = g_list_prepend(main_config.slides,slider18);
main_config.slides = g_list_prepend(main_config.slides,slider17);
main_config.slides = g_list_prepend(main_config.slides,slider16);
main_config.slides = g_list_prepend(main_config.slides,slider15);
main_config.slides = g_list_prepend(main_config.slides,slider14);
main_config.slides = g_list_prepend(main_config.slides,slider13);
main_config.slides = g_list_prepend(main_config.slides,slider12);
main_config.slides = g_list_prepend(main_config.slides,slider11);
main_config.slides = g_list_prepend(main_config.slides,slider10);
main_config.slides = g_list_prepend(main_config.slides,slider9);
main_config.slides = g_list_prepend(main_config.slides,slider8);
main_config.slides = g_list_prepend(main_config.slides,slider7);
main_config.slides = g_list_prepend(main_config.slides,slider6);
main_config.slides = g_list_prepend(main_config.slides,slider5);
main_config.slides = g_list_prepend(main_config.slides,slider4);
main_config.slides = g_list_prepend(main_config.slides,slider3);
main_config.slides = g_list_prepend(main_config.slides,slider2);
main_config.slides = g_list_prepend(main_config.slides,slider1);
main_config.slides = g_list_reverse(main_config.slides);
main_config.chosen_slide = g_list_first(main_config.slides);
yon_install_slider_update(widgets);
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->InstallationSliderArrowsOverlay),widgets->NextInstallationSliderImage);
gtk_overlay_add_overlay(GTK_OVERLAY(widgets->InstallationSliderArrowsOverlay),widgets->PrevInstallationSliderImage);
}
// g_object_unref(scaledPixBuf);
// void *on_install_slider_slide(){
// return 1;
// }
gboolean on_image_slide(void *data){
main_window *widgets = (main_window*)data;
int size;
config_str target = yon_char_parsed_new(&size,slide_repeat_path);
if (size)
yon_char_parsed_free(target,size);
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->SlidesImage),(GdkPixbuf*)g_list_nth_data(widgets->slides_original,main_config.cur_slide));
// gtk_widget_queue_draw(widgets->SlidesImage);
if ((int)main_config.cur_slide<size-1) main_config.cur_slide++; else main_config.cur_slide=1;
g_mutex_lock(&main_config.install_mutex);
if (!main_config.install_complete){
g_mutex_unlock(&main_config.install_mutex);
return 1;
} else{
g_mutex_unlock(&main_config.install_mutex);
return 0;
}
}

@ -20,17 +20,6 @@ int yon_grub_install_save(main_window *widgets){
yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,cur_device);
yon_config_register(part_parameter,part_parameter_command,partition);
yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"grub_install");
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOINSTALL_DEVICE,part_parameter,AUTOINSTALL_TYPE_INSTALL,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}
@ -54,16 +43,5 @@ int yon_grub_update_save(main_window *widgets){
yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,cur_device);
yon_config_register(part_parameter,part_parameter_command,partition);
yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"grub_update");
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOINSTALL_DEVICE,part_parameter,AUTOINSTALL_TYPE_INSTALL,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}

@ -282,22 +282,6 @@ int yon_network_save(main_window *widgets){
}
}
if (!main_config.configure_mode){
int size, users_size, final_size, save_size;
config_str users = yon_config_find_keys(NETWORK_parameter_search,&users_size);
config_str save_parameters = yon_char_parsed_new(&size,DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL);
config_str final = yon_char_parsed_merge(save_parameters,size,users,users_size,&final_size);
config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,save_size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,save_size);
}
if (users)yon_char_parsed_free(users,users_size);
if (save_parameters)yon_char_parsed_free(save_parameters,size);
}
return 1;
}

@ -1,11 +1,35 @@
#include "ubinstall-gtk.h"
int yon_packages_tab_save(main_window *widgets){
GtkTreeIter parentiter, subiter,packiter;
if (yon_char_is_empty(config(modules_extra_parameter))){
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,NULL);
}
for_iter(widgets->PackagesList,&parentiter){
for (int valid2 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&subiter,&parentiter);valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&subiter)){
int selectable, status;
char *package;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&subiter,0,&status,1,&package,3,&selectable,-1);
if (selectable&&status){
yon_config_append_element(modules_extra_parameter,package,",");
} 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)){
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,-1);
yon_config_append_element(modules_extra_parameter,package,",");
}
}
}
}
return 1;
}
GtkTreeIter *yon_category_check(GtkTreeStore *target,char *category);
GtkTreeIter *yon_category_check(GtkTreeStore *target,char *category){
GtkTreeIter iter;
GtkTreeIter *ret_iter = NULL;
for_iter(target,&iter){
char *cur_category;
gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,0,&cur_category,-1);
gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,1,&cur_category,-1);
if (!strcmp(cur_category,category)){
ret_iter = gtk_tree_iter_copy(&iter);
}
@ -13,14 +37,15 @@ GtkTreeIter *yon_category_check(GtkTreeStore *target,char *category){
return ret_iter;
}
GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_iter, char *category);
GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_iter, char *category){
GtkTreeIter iter;
GtkTreeIter *ret_iter = NULL;
gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,parent_iter);
for(int valid = 1; valid; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
int valid = gtk_tree_model_iter_children(GTK_TREE_MODEL(target),&iter,parent_iter);
for(; valid; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(target),&iter)){
char *cur_category;
gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,0,&cur_category,-1);
if (!strcmp(cur_category,category)){
gtk_tree_model_get(GTK_TREE_MODEL(target),&iter,1,&cur_category,-1);
if ((yon_char_is_empty(cur_category)&&yon_char_is_empty(category))||!strcmp(cur_category,category)){
ret_iter = gtk_tree_iter_copy(&iter);
}
}
@ -28,44 +53,95 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite
}
void yon_packages_tab_init(main_window *widgets){
GHashTable *category = g_hash_table_new(g_str_hash,g_str_equal);
GHashTable *subcategory = g_hash_table_new(g_str_hash,g_str_equal);
int size;
config_str packages = yon_resource_open_file(groups_list_path,&size);
for (int i=0;i<size;i++){
for (int i=1;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(packages[i],&parsed_size,";");
GtkTreeIter *category_iter = yon_category_check(widgets->PackagesList,parsed[0]);
if (category_iter){
GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,parsed[0]);
if (subcategory_iter){
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,packages[2],1,packages[3],-1);
gtk_tree_iter_free(subcategory_iter);
if (!yon_char_is_empty(parsed[1])){
GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,parsed[1]);
if (subcategory_iter){
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,parsed[3],3,1,-1);
gtk_tree_iter_free(subcategory_iter);
} else {
GtkTreeIter subcatiter;
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&subcatiter,category_iter);
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_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,parsed[3],3,1,-1);
}
} else {
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,parsed[3],3,1,-1);
}
gtk_tree_iter_free(category_iter);
} else {
if (!yon_char_is_empty(parsed[1])){
GtkTreeIter subcategory_iter;
GtkTreeIter catiter;
GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&catiter,NULL);
gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,parsed[3],3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&subcategory_iter,&catiter);
gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,parsed[3],3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter);
gtk_tree_store_set(widgets->PackagesList,&package_iter,1,parsed[2],2,parsed[3],3,1,-1);
} else {
GtkTreeIter package_iter;
GtkTreeIter catiter;
gtk_tree_store_append(widgets->PackagesList,&catiter,NULL);
gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,parsed[3],3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,parsed[3],3,1,-1);
}
}
}
gtk_tree_view_expand_all(GTK_TREE_VIEW(widgets->PackagesTree));
}
void yon_on_packages_chosen(GtkTreeStore *, char *path, main_window *widgets){
GtkTreeIter iter, chiter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PackagesList),&iter,path);
GtkTreePath *cur_path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->PackagesList),&iter);
int depth = gtk_tree_path_get_depth(cur_path);
if (depth<2){
GtkTreeIter *cur_parent, *cur_iter;
cur_parent = gtk_tree_iter_copy(&iter);
cur_iter = gtk_tree_iter_copy(&chiter);
switch(depth){
case 0:
gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),cur_iter,&iter);
__attribute__((fallthrough));
case 1:
gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),cur_iter,cur_parent);
void yon_on_packages_selected(GtkWidget *, main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&model,&iter);
GtkTreeIter cur_parent, cur_iter;
int status;
gtk_tree_model_get(model,&iter,3,&status,-1);
if (status)
return;
gtk_tree_model_iter_children(model,&cur_parent,&iter);
gtk_tree_model_get(model,&cur_parent,3,&status,-1);
if (status){
GtkTreePath *path = gtk_tree_model_get_path(model,&cur_parent);
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->PackagesTree),path);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&cur_parent);
return;
}
gtk_tree_model_iter_children(model,&cur_iter,&cur_parent);
GtkTreePath *path = gtk_tree_model_get_path(model,&cur_iter);
gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widgets->PackagesTree),path);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->PackagesTree)),&cur_iter);
}
}
void yon_on_packages_chosen(GtkWidget *, char *path, main_window *widgets){
GtkTreeIter iter;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PackagesList),&iter,path);
int status;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1);
gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1);
}
}
void yon_on_packages_activated(GtkWidget *, GtkTreePath* path, GtkTreeViewColumn* , main_window *widgets){
GtkTreeIter iter;
gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->PackagesList),&iter,path);
int status;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1);
gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1);
}

@ -8,20 +8,21 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_WELCOME: return YON_PAGE_LICENCE; break;
case YON_PAGE_LICENCE: return YON_PAGE_SECTIONS; break;
case YON_PAGE_SECTIONS: return yon_sections_get_next_page(widgets); break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SOFTWARE; break;
case YON_PAGE_SOFTWARE: return main_config.configure_mode? YON_PAGE_REGION : YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_REGION; break;
case YON_PAGE_KERNEL: return YON_PAGE_PACKAGES_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_PACKAGES_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_PACKAGES_HUB; break;
case YON_PAGE_REGION: return YON_PAGE_LANGUAGE; break;
case YON_PAGE_LANGUAGE: return YON_PAGE_KEYBOARD; break;
case YON_PAGE_KEYBOARD: return YON_PAGE_USERS; break;
case YON_PAGE_USERS: return YON_PAGE_STARTUP; break;
case YON_PAGE_STARTUP: return YON_PAGE_BOOTLOADER; break;
case YON_PAGE_BOOTLOADER: return YON_PAGE_NETWORK; break;
case YON_PAGE_NETWORK: return YON_PAGE_KERNEL; break;
case YON_PAGE_PACKAGES_HUB: return main_config.configure_mode? YON_PAGE_CONFIGURE_END : YON_PAGE_INSTALLATION;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_CONFIG_HUB: return YON_PAGE_INSTALLATION; break;
case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_REGION: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_LANGUAGE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KEYBOARD: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_USERS: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_STARTUP: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_BOOTLOADER: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_NETWORK: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACKAGES: return YON_PAGE_CONFIG_HUB;
case YON_PAGE_INSTALL_COMMON: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_SEPARATE: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_OS_COMPONENTS; break;
@ -52,17 +53,19 @@ enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){
case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break;
case YON_PAGE_SECTIONS: return YON_PAGE_LICENCE; break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SECTIONS; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_SOFTWARE; break;
case YON_PAGE_KERNEL: return YON_PAGE_NETWORK; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_KERNEL; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_KERNEL_ADDON; break;
case YON_PAGE_REGION: return YON_PAGE_SECTIONS; break;
case YON_PAGE_KEYBOARD: return YON_PAGE_REGION; break;
case YON_PAGE_USERS: return YON_PAGE_KEYBOARD; break;
case YON_PAGE_STARTUP: return YON_PAGE_USERS; break;
case YON_PAGE_BOOTLOADER: return YON_PAGE_STARTUP; break;
case YON_PAGE_NETWORK: return YON_PAGE_BOOTLOADER; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_CONFIG_HUB: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_REGION: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KEYBOARD: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_USERS: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_STARTUP: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_BOOTLOADER: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_NETWORK: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACKAGES: return YON_PAGE_NETWORK;
case YON_PAGE_INSTALLATION: return YON_PAGE_INSTALLATION; break;
case YON_PAGE_CONFIGURE_END: return YON_PAGE_CONFIGURE_END; break;
case YON_PAGE_INSTALL_COMMON: return YON_PAGE_SECTIONS; break;
@ -97,7 +100,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
gtk_widget_set_sensitive(widgets->CancelInstallButton,0);
gtk_widget_hide(widgets->BackButton);
gtk_widget_hide(widgets->SourceButton);
gtk_widget_hide(widgets->SkipInstallationButton);
gtk_widget_show(widgets->NextButton);
if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
gtk_widget_show(widgets->StartScenarioButton);
@ -118,10 +120,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
case YON_PAGE_INSTALLATION:
gtk_widget_set_sensitive(widgets->NextButton,0);
gtk_widget_set_sensitive(widgets->BackButton,0);
gtk_widget_hide(widgets->SkipInstallationButton);
break;
case YON_PAGE_KERNEL:
gtk_widget_set_sensitive(widgets->BackButton,0);
break;
case YON_PAGE_CONFIGURE_END:
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),SAVE_AND_EXIT_LABEL);
@ -147,23 +145,38 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
}
switch(page){
case YON_PAGE_KERNEL:
case YON_PAGE_SOFTWARE:
case YON_PAGE_KERNEL_ADDON:
case YON_PAGE_PACMAN_SOFTWARE:
case YON_PAGE_REGION:
case YON_PAGE_KEYBOARD:
case YON_PAGE_USERS:
case YON_PAGE_STARTUP:
case YON_PAGE_LANGUAGE:
case YON_PAGE_BOOTLOADER:
case YON_PAGE_NETWORK:
gtk_widget_show(widgets->SkipInstallationButton);
break;
default:
gtk_widget_hide(widgets->SkipInstallationButton);
case YON_PAGE_PACKAGES:
case YON_PAGE_NETWORK:{
gtk_widget_show(widgets->NextButton);
gtk_widget_hide(widgets->BackButton);
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),BACK_LABEL);
GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton));
gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_left_icon_path,GTK_ICON_SIZE_BUTTON);
} break;
case YON_PAGE_CONFIG_HUB:{
gtk_widget_show(widgets->NextButton);
gtk_widget_show(widgets->BackButton);
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL);
GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton));
gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON);
} break;
default: break;
}
}
int yon_page_save(main_window *widgets, enum YON_PAGES page){
switch (page){
case YON_PAGE_CONFIG_HUB:
return yon_configuration_hub_save(widgets);
case YON_PAGE_OS_COMPONENTS:
return yon_os_components_save(widgets);
break;
@ -200,6 +213,9 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_NETWORK:
return yon_network_save(widgets);
break;
case YON_PAGE_PACKAGES:
return yon_packages_tab_save(widgets);
break;
case YON_PAGE_INSTALL_COMMON:
return yon_install_common_save(widgets);
break;
@ -251,6 +267,7 @@ void yon_switch_page_render(main_window *widgets){
case YON_PAGE_INSTALL_ADVANCED:
case YON_PAGE_INSTALL_RECOVERY:
case YON_PAGE_INSTALLATION_BEGIN:
case YON_PAGE_CONFIG_HUB:
case YON_PAGE_KERNEL:
case YON_PAGE_KERNEL_ADDON:
case YON_PAGE_SOFTWARE:
@ -274,7 +291,7 @@ void yon_switch_page_render(main_window *widgets){
case YON_PAGE_BOOTLOADER:
case YON_PAGE_STARTUP:
case YON_PAGE_NETWORK:
case YON_PAGE_PACKAGES_HUB:
case YON_PAGE_PACKAGES:
page = 6;
break;
case YON_PAGE_INSTALLATION:
@ -348,6 +365,9 @@ enum YON_PAGES yon_recovery_get_next(main_window *widgets){
void yon_page_init(main_window *widgets, enum YON_PAGES page){
switch(page){
case YON_PAGE_CONFIG_HUB:
yon_configuration_hub_init(widgets);
break;
case YON_PAGE_OS_COMPONENTS:
yon_os_components_init(widgets);
break;
@ -384,6 +404,9 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_NETWORK:
yon_network_init(widgets);
break;
case YON_PAGE_PACKAGES:
yon_packages_tab_init(widgets);
break;
case YON_PAGE_INSTALL_ADVANCED:
yon_install_advanced_init(widgets);
__attribute__((fallthrough));
@ -398,6 +421,7 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){
yon_install_init(widgets,page);
break;
case YON_PAGE_INSTALLATION:
yon_install_slider_init(widgets);
main_config.save_configured=1;
g_mutex_lock(&main_config.install_mutex);
if (main_config.install_complete){
@ -434,7 +458,6 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){
void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
gtk_widget_hide(widgets->BackButton);
gtk_widget_hide(widgets->SourceButton);
gtk_widget_hide(widgets->SkipInstallationButton);
gtk_widget_show(widgets->NextButton);
gtk_widget_show(widgets->StartScenarioButton);
gtk_widget_set_sensitive(widgets->CancelInstallButton,0);
@ -480,3 +503,27 @@ void on_system_setup_pass(GtkWidget *, main_window *widgets){
}
yon_page_update(widgets);
}
void on_additional_page_clicked(GtkWidget *, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SOFTWARE);
yon_page_init(widgets,YON_PAGE_SOFTWARE);
yon_page_update(widgets);
}
void on_kernel_components_page_clicked(GtkWidget *, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_KERNEL_ADDON);
yon_page_init(widgets,YON_PAGE_KERNEL_ADDON);
yon_page_update(widgets);
}
void on_kernel_page_clicked(GtkWidget *, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_KERNEL);
yon_page_init(widgets,YON_PAGE_KERNEL);
yon_page_update(widgets);
}
void on_additional_packages_page_clicked(GtkWidget *, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_PACMAN_SOFTWARE);
yon_page_init(widgets,YON_PAGE_PACMAN_SOFTWARE);
yon_page_update(widgets);
}

@ -39,17 +39,6 @@ int yon_region_save(main_window *widgets){
} else {
yon_config_remove_by_key(zone_parameter);
}
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}

@ -210,16 +210,5 @@ int yon_startup_save(main_window *widgets){
} else {
yon_config_remove_by_key(SERVICES_ENABLE_parameter);
}
if (!main_config.configure_mode){
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,SERVICES_ENABLE_parameter,NULL);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
return 1;
}

@ -32,22 +32,6 @@ int yon_users_save(main_window *widgets){
}
}
if (!main_config.configure_mode){
int size, users_size, final_size, save_size;
config_str users = yon_config_find_keys(USERADD_parameter_search,&users_size);
config_str save_parameters = yon_char_parsed_new(&size,root_password_parameter,autologin_parameter,NULL);
config_str final = yon_char_parsed_merge(save_parameters,size,users,users_size,&final_size);
config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size);
if (parameters){
char *command_parameters = yon_char_parsed_to_string(parameters,size," -- ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
if (!system(yon_debug_output("%s\n",command))){}
free(command);
yon_char_parsed_free(parameters,save_size);
}
if (users)yon_char_parsed_free(users,users_size);
if (save_parameters)yon_char_parsed_free(save_parameters,size);
}
yon_debug_output("%s\n",yon_config_get_all_info());
return 1;
}

@ -558,7 +558,9 @@ void config_init(){
main_config.dry_run=0;
main_config.force_ini=NULL;
main_config.network_types = g_hash_table_new(g_str_hash,g_str_equal);
main_config.cur_slide=0;
main_config.slides = NULL;
main_config.chosen_slide = NULL;
main_config.languages = g_hash_table_new(g_str_hash,g_str_equal);
int size;
@ -858,7 +860,7 @@ void yon_main_window_create(main_window *widgets){
widgets->StartScenarioButton=yon_gtk_builder_get_widget(builder,"StartScenarioButton");
widgets->SourceButton=yon_gtk_builder_get_widget(builder,"SourceButton");
widgets->SkipInstallationButton=yon_gtk_builder_get_widget(builder,"SkipInstallationButton");
// widgets->SkipInstallationButton=yon_gtk_builder_get_widget(builder,"SkipInstallationButton");
widgets->InstallationRadio=yon_gtk_builder_get_widget(builder,"InstallationRadio");
widgets->InstallationNearRadio=yon_gtk_builder_get_widget(builder,"InstallationNearRadio");
@ -1082,6 +1084,23 @@ void yon_main_window_create(main_window *widgets){
widgets->HostnameSensitiveSwitch = yon_gtk_builder_get_widget(builder,"HostnameSensitiveSwitch");
widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck");
widgets->AdvancedVirtualDeviceLabel = yon_gtk_builder_get_widget(builder,"AdvancedVirtualDeviceLabel");
widgets->PackagesTree = yon_gtk_builder_get_widget(builder,"PackagesTree");
widgets->PackagesChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"PackagesChosenCell"));
widgets->PackagesList = GTK_TREE_STORE(gtk_builder_get_object(builder,"Packages"));
widgets->HubPersonalListBox = yon_gtk_builder_get_widget(builder,"HubPersonalListBox");
widgets->HubHardwareListBox = yon_gtk_builder_get_widget(builder,"HubHardwareListBox");
widgets->HubSystemListBox = yon_gtk_builder_get_widget(builder,"HubSystemListBox");
widgets->HubPackagesListBox = yon_gtk_builder_get_widget(builder,"HubPackagesListBox");
widgets->ScrollLeftEventBox = yon_gtk_builder_get_widget(builder,"ScrollLeftEventBox");
widgets->ScrollRightEventBox = yon_gtk_builder_get_widget(builder,"ScrollRightEventBox");
widgets->SliderProgressBox = yon_gtk_builder_get_widget(builder,"SliderProgressBox");
widgets->InstallationSliderArrowsOverlay = yon_gtk_builder_get_widget(builder,"InstallationSliderArrowsOverlay");
widgets->NextInstallationSliderImage = yon_gtk_builder_get_widget(builder,"NextInstallationSliderImage");
widgets->PrevInstallationSliderImage = yon_gtk_builder_get_widget(builder,"PrevInstallationSliderImage");
widgets->network_connections = NULL;
widgets->pacmanchosen = g_hash_table_new_full(g_str_hash,g_str_equal,free,NULL);
@ -1207,10 +1226,29 @@ void yon_main_window_create(main_window *widgets){
// g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_parts_removed),widgets);
g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets);
g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets);
// g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),"changed",G_CALLBACK(on_advanced_virtual_device_changed),widgets);
g_signal_connect(G_OBJECT(widgets->PackagesTree),"cursor-changed",G_CALLBACK(yon_on_packages_selected),widgets);
g_signal_connect(G_OBJECT(widgets->PackagesTree),"row-activated",G_CALLBACK(yon_on_packages_activated),widgets);
g_signal_connect(G_OBJECT(widgets->PackagesChosenCell),"toggled",G_CALLBACK(yon_on_packages_chosen),widgets);
g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets);
g_signal_connect(G_OBJECT(widgets->HubHardwareListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets);
g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets);
g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets);
g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets);
g_signal_connect(G_OBJECT(widgets->HubHardwareListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets);
g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets);
g_signal_connect(G_OBJECT(widgets->HubPackagesListBox),"selected-children-changed",G_CALLBACK(on_configuration_hub_selected),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"button-release-event",G_CALLBACK(on_install_slider_prev),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"button-release-event",G_CALLBACK(on_install_slider_next),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"enter-notify-event",G_CALLBACK(on_install_slider_hover_highlight),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollLeftEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets);
g_signal_connect(G_OBJECT(widgets->ScrollRightEventBox),"leave-notify-event",G_CALLBACK(on_install_slider_hover_highlight_end),widgets);
g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),widgets);
g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK);

@ -40,10 +40,14 @@
#define glade_path_source_element "/com/ublinux/ui/ubinstall-gtk-source-element.glade"
#define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade"
#define glade_layouts_path "/com/ublinux/ui/ubinstall-gtk-keyboard-layouts.glade"
#define glade_path_slider "/com/ublinux/ui/ubinstall-gtk-slider.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)
#define icon_path "com.ublinux.ubinstall-gtk"
#define kernel_icon_path "com.ublinux.ubl-settings-kernel"
#define untoggled_icon_path "com.ublinux.libublsettingsui-gtk3.untoggled-symbolic"
#define toggled_icon_path "com.ublinux.libublsettingsui-gtk3.toggled-symbolic"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubinstall-gtk"
@ -83,6 +87,9 @@
#define slide_0_path "/com/ublinux/images/slide-0.png"
#define arrow_left_icon_path "com.ublinux.ubinstall-gtk.arrow-left-symbolic"
#define arrow_right_icon_path "com.ublinux.ubinstall-gtk.arrow-right-symbolic"
#define slide_repeat_path "/com/ublinux/images/slide-1.png", \
"/com/ublinux/images/slide-2.png", \
"/com/ublinux/images/slide-3.png", \
@ -99,6 +106,7 @@ NULL
#define get_modules_command "pacman --color never -Qs ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\""
#define get_available_modules_command "pacman --color never -Ss ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\""
#define get_local_module_info_command(target) yon_char_unite("pacman --color never -Sp $(pacman -Ssq '",target,"') --print-format '%n;%v;%d' | grep -v \"^::\"",NULL);
@ -356,6 +364,7 @@ enum YON_PAGES {
YON_PAGE_SECTIONS,
YON_PAGE_OS_COMPONENTS,
YON_PAGE_INSTALLATION_BEGIN,
YON_PAGE_CONFIG_HUB,
YON_PAGE_KERNEL,
YON_PAGE_KERNEL_ADDON,
YON_PAGE_SOFTWARE,
@ -367,7 +376,7 @@ enum YON_PAGES {
YON_PAGE_STARTUP,
YON_PAGE_BOOTLOADER,
YON_PAGE_NETWORK,
YON_PAGE_PACKAGES_HUB,
YON_PAGE_PACKAGES,
YON_PAGE_INSTALLATION,
YON_PAGE_COMPLETION,
YON_PAGE_COMPLETED,
@ -416,7 +425,7 @@ typedef struct {
GHashTable *network_types;
GtkWidget *kernel_unchosen_radio;
unsigned int cur_slide;
// unsigned int cur_slide;
gboolean dry_run;
GtkTreeStore *layouts_store;
@ -426,6 +435,9 @@ typedef struct {
int variants_size;
config_str layouts_list;
int layouts_size;
GList *slides;
GList *chosen_slide;
} config;
extern config main_config;
@ -461,7 +473,7 @@ typedef struct {
GtkWidget *StartScenarioButton;
GtkWidget *SourceButton;
GtkWidget *SkipInstallationButton;
// GtkWidget *SkipInstallationButton;
GtkWidget *MainSpinner;
GtkWidget *StatusBox;
@ -727,8 +739,24 @@ typedef struct {
dictionary *advanced_sections;
GSequence *advanced_partition_order;
GtkWidget *ScrollLeftEventBox;
GtkWidget *ScrollRightEventBox;
GtkWidget *SliderProgressBox;
GtkWidget *InstallationSliderArrowsOverlay;
GtkWidget *PrevInstallationSliderImage;
GtkWidget *NextInstallationSliderImage;
GtkTreeStore *PackagesList;
GtkCellRenderer *PackagesChosenCell;
GtkWidget *PackagesTree;
// Configuration hub slide section
GtkWidget *HubPersonalListBox;
GtkWidget *HubHardwareListBox;
GtkWidget *HubSystemListBox;
GtkWidget *HubPackagesListBox;
// Misc section
GFile *install_progress_file;
GFileMonitor *install_progress_monitor;
@ -1071,6 +1099,20 @@ typedef struct {
char *parameters;
} layouts_window;
typedef struct {
GtkWidget *MainBox;
GtkWidget *Image;
GtkWidget *Label;
enum YON_PAGES page;
} config_hub_icon;
typedef struct {
GtkWidget *MainBox;
GtkWidget *TitleImage;
GtkWidget *TitleLabel;
GtkWidget *TextLabel;
}slider_object;
void config_init();
main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new();
@ -1125,7 +1167,18 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets);
void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets);
void *on_config_save(void *data);
void *on_setup_system_configuration(void * data);
gboolean on_image_slide(void *data);
void yon_install_slider_init(main_window *widgets);
void on_install_slider_next(GtkWidget* ,GdkEventButton *,main_window *widgets);
void on_install_slider_prev(GtkWidget* ,GdkEventButton *,main_window *widgets);
void yon_install_slider_update(main_window *widgets);
slider_object *yon_slider_object_new();
void yon_slider_setup(slider_object *slider, char *title, char *icon, char *text_markup);
slider_object *yon_slider_new_full(char *title, char *icon, char *text_markup);
gboolean on_install_slider_hover_highlight(GtkWidget *self, GdkEvent *, main_window *);
gboolean on_install_slider_hover_highlight(GtkWidget *self, GdkEvent *, main_window *);
gboolean on_install_slider_hover_highlight_end(GtkWidget *self, GdkEvent *, main_window *);
gboolean on_install_slider_hover_highlight_end(GtkWidget *self, GdkEvent *, main_window *);
// gboolean on_image_slide(void *data);
// void on_region_resized(GtkWidget *,main_window *widgets);
// int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled);
void on_configuration_mode_switch(GtkWidget *self,main_window *widgets);
@ -1341,3 +1394,22 @@ void on_layout_selection_changed(GtkTreeView *self,main_window *widgets);
void on_num_lock_changed(GtkComboBox *self, main_window *);
void on_model_changed(GtkComboBoxText *self, main_window *widgets);
void on_options_save(GtkWidget *,main_window *widgets);
void yon_packages_tab_init(main_window *widgets);
void yon_on_packages_selected(GtkWidget *, main_window *widgets);
void yon_on_packages_chosen(GtkWidget *, char *path, main_window *widgets);
void yon_on_packages_activated(GtkWidget *, GtkTreePath* path, GtkTreeViewColumn* , main_window *widgets);
void on_additional_page_clicked(GtkWidget *, main_window *widgets);
void on_kernel_components_page_clicked(GtkWidget *, main_window *widgets);
void on_kernel_page_clicked(GtkWidget *, main_window *widgets);
void on_additional_packages_page_clicked(GtkWidget *, main_window *widgets);
void on_configuration_hub_open(GtkFlowBox *,GtkFlowBoxChild *child, main_window *widgets);
void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum YON_PAGES page);
void yon_configuration_hub_init(main_window *widgets);
void yon_flow_box_clear(GtkFlowBox *target);
void yon_configuration_hub_section_get_max_size(GtkFlowBox *target, int *ret_width, int *ret_height);
void yon_configuration_hub_section_set_max_size(GtkFlowBox *target, int width, int height);
void yon_configuration_hub_resize(main_window *widgets);
void on_configuration_hub_selected(GtkWidget* self, main_window *widgets);
gboolean yon_software_insert(struct row_data *row_input);
int yon_configuration_hub_save(main_window *widgets);
int yon_packages_tab_save(main_window *widgets);

@ -269,6 +269,18 @@ NULL)
#define LANGUAGE_TITLE_INFO_LABEL _("Specify your preferred system languages")
#define REMOVE_LOCALE_TOOLTIP_LABEL _("Remove locale")
#define NEW_PARTITION_LABEL _("New partition:")
#define PERSONAL_SECTION_LABEL _("Personal")
#define HARDWARE_SECTION_LABEL _("Hardware")
#define SYSTEM_SECTION_LABEL _("System")
#define PACKAGES_SECTION_LABEL _("Packages")
#define KERNEL_LABEL _("Kernel")
#define KERNEL_ADDON_LABEL _("Kernel addons")
#define SOFTWARE_LABEL _("Choose additional components")
#define PACMAN_SOFTWARE_LABEL _("Choose additional components")
#define REGION_ICON_LABEL _("Region")
#define STARTUP_LABEL _("Startup services")
#define BOOTLOADER_LABEL _("Boot load")
#define NETWORK_LABEL _("Network")
// #define _LABEL _("<i><b>Package:</b></i>")
// #define _LABEL _("<i><b>Module:</b></i>")
@ -338,18 +350,13 @@ NULL)
// #define _LABEL _("Tags")
// #define _LABEL _("Modules")
// #define _LABEL _("Selecting additional software to install from the repository via the Internet")
// #define _LABEL _("Kernel")
// #define _LABEL _("Kernel addons")
// #define _LABEL _("Choose additional components")
// #define _LABEL _("Type")
// #define _LABEL _("Additional components")
// #define _LABEL _("Package name:")
// #define _LABEL _("Accessed")
// #define _LABEL _("Repository status:")
// #define _LABEL _("Pacman software")
// #define _LABEL _("Region")
// #define _LABEL _("Administrator password (root):")
// #define _LABEL _("Startup services")
// #define _LABEL _("Add")
// #define _LABEL _("Edit")
// #define _LABEL _("Remove")
@ -357,7 +364,6 @@ NULL)
// #define _LABEL _("Unit")
// #define _LABEL _("Service")
// #define _LABEL _("Startup configuration")
// #define _LABEL _("Boot load")
// #define _LABEL _("Boot selection menu timer:")
// #define _LABEL _("seconds")
// #define _LABEL _("Default OS:")
@ -366,7 +372,6 @@ NULL)
// #define _LABEL _("Password")
// #define _LABEL _("Bootloader menu users")
// #define _LABEL _("Bootloader")
// #define _LABEL _("Network")
// #define _LABEL _("Domain name:")
// #define _LABEL _("Domain administrator:")
// #define _LABEL _("NTP Server:")
@ -387,3 +392,112 @@ NULL)
// #define _LABEL _("Start installation scenario")
// #define _LABEL _("Source")
// #define _LABEL _("Skip configuration")
#define slide_1_title _("Product ecosystem")
#define slide_1_text _("Developed by a team of professionals and successfully presented on the market.\n\
Includes:\n\
- modern versions of the Linux kernel,\n\
- wide range of software,\n\
- IT infrastructure management system,\n\
- virtualization system")
#define slide_2_title _("System Usage")
#define slide_2_text _("It has been successfully used in both government agencies and commercial companies of various sizes.")
#define slide_3_title _("System Editions")
#define slide_3_text _("- UBLinux Desktop Enterprise for workstations (PCs, laptops, thin clients, dashboards, including interactive touchscreens, industrial computers, and hardware and software systems),\n\
- UBLinux Server for server hardware and storage systems,\n\
- UBLinux Network for network equipment,\n\
- UBLinux Education for educational institutions,\n\
- UBLinux Desktop Basic for personal (home) use")
#define slide_4_title _("Device Support")
#define slide_4_text _("A wide range of devices is supported: printing equipment, scanners, webcams, etc.\n\
\n\
Support for multitouch input systems with detection of up to 20 simultaneous touch points")
#define slide_5_title _("Modular secure architecture")
#define slide_5_text _("- each OS component is represented by a separate module with signature and integrity control\n\
- connecting and disconnecting modules does not require stopping the system\n\
- allows flexible adaptation of the system to the customer's workflows\n\
- ensures high performance")
#define slide_6_title _("Flexible Adaptation")
#define slide_6_text _("By changing the system's modules, its capabilities are tailored to the needs of each user.\n\
\n\
From a minimal configuration (a thin client that only allows remote connection to the server) to a configuration that includes the full range of system capabilities.")
#define slide_7_title _("Domain architecture support")
#define slide_7_text _("A UBLinux-based domain controller allows you to:\n\
- use group policies,\n\
- centralized software deployment across your fleet,\n\
- organize network resources and provide flexible access to them\n\
\n\
Allows you to integrate your workstation with Microsoft Active Directory, FreeIPA, and Samba DC, applying the necessary domain settings to your workstation.")
#define slide_8_title _("Native compatibility with Windows applications")
#define slide_8_text _("Using Wine or the Winix integration module, you can launch and work with most Windows applications.")
#define slide_9_title _("High level of optimization")
#define slide_9_text _("The system is lightweight. This allows for comfortable operation when booting from USB drives, on diskless workstations, and on thin clients. It also allows for the use of workstations with low performance.")
#define slide_10_title _("Intuitive interface")
#define slide_10_text _("Support for XFCE, KDE Plasma, GNOME, MATE, LXQt, and other graphical environments allows you to choose and flexibly customize the most convenient desktop environment.\n\
\n\
This allows users to easily get started with the system, including when switching from Windows.")
#define slide_11_title _("Multi-workstation (multi-seat)")
#define slide_11_text _("The ability for multiple users to work simultaneously at a single workstation.\n\
\n\
Each user has a separate profile (desktop), monitor, and keyboard/mouse. This can be implemented using the built-in video outputs without the need for a separate graphics card.")
#define slide_12_title _("Application Software")
#define slide_12_text _("The system comes with a comprehensive set of software out of the box to solve most common problems.\n\
\n\
The graphical package manager allows for quick and intuitive installation of additional software and hardware drivers.")
#define slide_13_title _("Corporate Services")
#define slide_13_text _("The system allows you to deploy and manage or connect to a variety of centralized corporate services: email, group chats, video conferencing, collaboration systems, etc.")
#define slide_14_title _("Security and Resiliency, Sandbox Mode")
#define slide_14_text _("A robust application package management system and built-in information security mechanisms ensure a high level of security and resiliency for the workstation.\n\
\n\
Sandbox modes protect the workstation from failures and incorrect operations. Upon reboot, the system will return to its default state.")
#define slide_15_title _("Custom repositories")
#define slide_15_text _("- repositories are developed and maintained by the system developer,\n\
- hosted within the Russian Federation,\n\
- contain the most popular and modern software tools\n\
\n\
The creation of service repositories is also supported, which users can create and adapt to their needs.")
#define slide_16_title _("Quick deployment")
#define slide_16_text _("- System installation on modern hardware takes 3-5 minutes.\n\
- Ability to install the system over a network\n\
- Ability to create a custom ISO image from one of the configured workstations, including the necessary settings and a pre-installed set of required application software.")
#define slide_17_title _("Modular graphical administration interface")
#define slide_17_text _("- A graphical administration interface that includes a comprehensive set of system utilities for system configuration\n\
- Web-based tools for administering local and remote workstations")
#define slide_18_title _("UBPile Infrastructure Monitoring and Management System")
#define slide_18_text _("Includes automation and orchestration mechanisms for comprehensive information infrastructure management.\n\
\n\
Used to automate deployment and configuration of workstations and servers, as well as manage computing equipment.")
#define slide_19_title _("UBLinux Server virtualization tools")
#define slide_19_text _("The server and workstation virtualization system enables efficient deployment and management of virtual IT infrastructure in data centers.\n\
\n\
- Supports Microsoft Windows, GNU/Linux, and FreeBSD guest operating systems\n\
- Backup, data protection, and VDI mechanisms.")
#define slide_20_title _("Professional technical support")
#define slide_20_text _("You can choose the most appropriate level of system support for your situation.\n\
\n\
For more information, visit our website ublinux.ru in the \"Support Levels\" section.")
#define slide_21_title _("Interactive Knowledge Base")
#define slide_21_text _("Continuously evolving and clearly describes the installation and configuration of the system, as well as the use of its features. Located at wiki.ublinux.ru")
#define slide_22_title _("Network Boot")
#define slide_22_text _("Allows system booting for diskless and standard workstations over a local network or the Internet (even over slow connection channels).")

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkFrame" id="MainBox">
<property name="height-request">350</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="top-padding">5</property>
<property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">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="GtkImage" id="TitleImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">start</property>
<property name="stock">gtk-missing-image</property>
<property name="icon_size">5</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="size" value="13312"/>
</attributes>
</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">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="TextLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="bggrey"/>
</style>
</object>
</interface>

@ -16,6 +16,11 @@ background:transparent;
.nobackground:active {
background:transparent;
}
.bgcommon {
background:@theme_bg_color;
}
.textHead{
text-shadow: 2px 2px @theme_bg_color;
color: @theme_text_color;
@ -329,3 +334,12 @@ button {
opacity:1;
background:@theme_selected_bg_color;
}
.install_slider_hover {
background-color:@theme_selected_bg_color;
}
.install_slider_hover * {
color:@theme_selected_fg_color;
opacity: 1;
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save