Visual updates; Localisation updates; Fixes #170

Merged
asmeron merged 12 commits from YanTheKaller/ubinstall-gtk:master into master 4 months ago

@ -27,23 +27,6 @@
<file>ubinstall-gtk.css</file>
</gresource>
<gresource prefix="/com/ublinux/images">
<file>map-time-zone.png</file>
<file>keyboard.png</file>
<file>keyboard-ru.png</file>
<file>slide-0.png</file>
<file>slide-1.png</file>
<file>slide-2.png</file>
<file>slide-3.png</file>
<file>slide-4.png</file>
<file>slide-5.png</file>
<file>slide-6.png</file>
<file>slide-7.png</file>
<file>slide-8.png</file>
<file>slide-9.png</file>
<file>slide-10.png</file>
<file>slide-11.png</file>
<file>slide-12.png</file>
<file>language.png</file>
<file>install_type_custom_normal.png</file>
<file>install_type_data_only_normal.png</file>
<file>install_type_fast_normal.png</file>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1009 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

@ -0,0 +1,152 @@
msgid "Docker and webmanager and utils"
msgstr ""
msgid "Containerization"
msgstr ""
msgid "Podman and webmanager and utils"
msgstr ""
msgid "Brother printer drivers"
msgstr ""
msgid "Canon CAPT Printer Driver"
msgstr ""
msgid "Canon UFR II LIPSLX CARPS2 printer driver"
msgstr ""
msgid "Epson printer drivers"
msgstr ""
msgid "Kyocera printer drivers"
msgstr ""
msgid "Lexmark drivers"
msgstr ""
msgid "Pantum printer drivers"
msgstr ""
msgid "hplip, gutenprint, foomatic printers drivers"
msgstr ""
msgid "Printer"
msgstr ""
msgid "Ricoh drivers"
msgstr ""
msgid "Samsung drivers"
msgstr ""
msgid "Drivers"
msgstr ""
msgid "Xerox drivers"
msgstr ""
msgid "Education"
msgstr ""
msgid "soft collection"
msgstr ""
msgid "Multimedia"
msgstr ""
msgid "Collection"
msgstr ""
msgid "Multimedia soft collection"
msgstr ""
msgid "Blender and utilities"
msgstr ""
msgid "AnyDesk"
msgstr ""
msgid "Realvnc viewer and server"
msgstr ""
msgid "Rustdesk"
msgstr ""
msgid "Remote desktop"
msgstr ""
msgid "Rustdesk gateway server"
msgstr ""
msgid "Chat"
msgstr ""
msgid "Telegram"
msgstr ""
msgid "Web servers"
msgstr ""
msgid "Webmin and Usermin"
msgstr ""
msgid "Network"
msgstr ""
msgid "Managment"
msgstr ""
msgid "UBPile Workflow"
msgstr ""
msgid "Kingsoft Office (WPS Office) - an office productivity suite"
msgstr ""
msgid "OnlyOffice suite"
msgstr ""
msgid "LibreOffice"
msgstr ""
msgid "Chromium and some plugins"
msgstr ""
msgid "Chromium and some plugins"
msgstr ""
msgid "Office"
msgstr ""
msgid "Browser"
msgstr ""
msgid "Firefox and some plugins"
msgstr ""
msgid "ubm"
msgstr ""
msgid "Yandex Browser and some utils"
msgstr ""
msgid "QEMU"
msgstr ""
msgid "QEMU, manager and utils"
msgstr ""
msgid "VirtualBox"
msgstr ""
msgid "VirtualBox and extension packs"
msgstr ""
msgid "Virtualization"
msgstr ""
msgid "Vmware"
msgstr ""
msgid "Vmware Workstation 17
msgstr ""

@ -0,0 +1,168 @@
# Language translations for ubinstal package.
# Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubinstal package.
# UBLinux Team <info@ublinux.com>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ubinstal 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-05-22 16:12+0600\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Docker and webmanager and utils"
msgstr "Docker, веб-менеджер и утилиты"
msgid "Containerization"
msgstr "Контейнеризация"
msgid "Podman and webmanager and utils"
msgstr "Podman, веб-менеджер и утилиты"
msgid "Brother printer drivers"
msgstr "Драйверы принтеров Brother"
msgid "Canon CAPT Printer Driver"
msgstr "Драйвер принтера Canon CAPT"
msgid "Canon UFR II LIPSLX CARPS2 printer driver"
msgstr "Драйвер принтера Canon UFR II LIPSLX CARPS2"
msgid "Epson printer drivers"
msgstr "Драйверы принтеров Epson"
msgid "Kyocera printer drivers"
msgstr "Драйверы принтеров Kyocera"
msgid "Lexmark drivers"
msgstr "Драйверы Lexmark"
msgid "Pantum printer drivers"
msgstr "Драйверы принтеров Pantum"
msgid "hplip, gutenprint, foomatic printers drivers"
msgstr "Драйверы принтеров hplip, gutenprint, foomatic"
msgid "Printer"
msgstr "Принтер"
msgid "Ricoh drivers"
msgstr "Драйверы Ricoh"
msgid "Samsung drivers"
msgstr "Драйверы Samsung"
msgid "Drivers"
msgstr "Драйверы"
msgid "Xerox drivers"
msgstr "Драйверы Xerox"
msgid "Education"
msgstr "Образование"
msgid "soft collection"
msgstr "Коллекция программного обеспечения"
msgid "Multimedia"
msgstr "Мультимедиа"
msgid "Collection"
msgstr "Коллекция"
msgid "Multimedia soft collection"
msgstr "Мультимедийная коллекция программного обеспечения"
msgid "Blender and utilities"
msgstr "Blender и утилиты"
msgid "AnyDesk"
msgstr "AnyDesk"
msgid "Realvnc viewer and server"
msgstr "Просмотрщик и сервер Realvnc"
msgid "Rustdesk"
msgstr "Rustdesk"
msgid "Remote desktop"
msgstr "Удаленный рабочий стол"
msgid "Rustdesk gateway server"
msgstr "Сервер шлюза Rustdesk"
msgid "Chat"
msgstr "Чат"
msgid "Telegram"
msgstr "Telegram"
msgid "Web servers"
msgstr "Веб-серверы"
msgid "Webmin and Usermin"
msgstr "Webmin и Usermin"
msgid "Network"
msgstr "Сеть"
msgid "Managment"
msgstr "Управление"
msgid "UBPile Workflow"
msgstr "Рабочий процесс UBPile"
msgid "Kingsoft Office (WPS Office) - an office productivity suite"
msgstr "Kingsoft Office (WPS Office) - офисный пакет"
msgid "OnlyOffice suite"
msgstr "Пакет OnlyOffice"
msgid "LibreOffice"
msgstr "LibreOffice"
msgid "Chromium and some plugins"
msgstr "Chromium и некоторые другие плагины"
msgid "Office"
msgstr "Office"
msgid "Browser"
msgstr "Браузер"
msgid "Firefox and some plugins"
msgstr "Firefox и некоторые плагины"
msgid "ubm"
msgstr "ubm"
msgid "Yandex Browser and some utils"
msgstr "Браузер Yandex и некоторые утилиты"
msgid "QEMU"
msgstr "QEMU"
msgid "QEMU, manager and utils"
msgstr "QEMU, менеджер и утилиты"
msgid "VirtualBox"
msgstr "VirtualBox"
msgid "VirtualBox and extension packs"
msgstr "VirtualBox и пакеты расширений"
msgid "Virtualization"
msgstr "Виртуализация"
msgid "Vmware"
msgstr "VMware"
msgid "Vmware Workstation 17"
msgstr "VMware Workstation 17"

@ -19,48 +19,48 @@ msgstr ""
#: ./kernel-list-addon.csv:2
msgid "The Linux kernel headers v5.15"
msgstr ""
msgstr "Заголовочные файлы ядра Linux версии 5.15"
#: ./kernel-list-addon.csv:3
msgid "The Linux kernel docs v5.15"
msgstr ""
msgstr "Документация ядра Linux версии 5.15"
#: ./kernel-list-addon.csv:4
msgid "The Linux kernel DKMS modules v5.15 : v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 5.15: v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
#: ./kernel-list-addon.csv:5
msgid "The Linux kernel DKMS modules v5.15 : r8168-8136"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 5.15: r8168-8136"
#: ./kernel-list-addon.csv:6
msgid "The Linux kernel headers v6.1"
msgstr ""
msgstr "Заголовочные файлы ядра Linux версии 6.1"
#: ./kernel-list-addon.csv:7
msgid "The Linux kernel docs v6.1"
msgstr ""
msgstr "Документация ядра Linux версии 6.1"
#: ./kernel-list-addon.csv:8
msgid "The Linux kernel DKMS modules v6.1 : v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 6.1: v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
#: ./kernel-list-addon.csv:9
msgid "The Linux kernel DKMS modules v6.1 : r8168-8136"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 6.1: r8168-8136"
#: ./kernel-list-addon.csv:10
msgid "The Linux kernel headers v6.6"
msgstr ""
msgstr "Заголовочные файлы ядра Linux версии 6.6"
#: ./kernel-list-addon.csv:11
msgid "The Linux kernel docs v6.6"
msgstr ""
msgstr "Документация ядра Linux версии 6.6"
#: ./kernel-list-addon.csv:12
msgid "The Linux kernel DKMS modules v6.6 : v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 6.6: v4l2loopback, rtl88x2bu, r8125, rtl8192eu"
#: ./kernel-list-addon.csv:13
msgid "The Linux kernel DKMS modules v6.6 : r8168-8136"
msgstr ""
msgstr "Модули DKMS ядра Linux версии 6.6: r8168-8136"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -36,24 +36,6 @@ find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
add_custom_target(GLADE ubinstall-gtk.glade)
set(DEPENDFILES
../images/keyboard.png
../images/keyboard-ru.png
../images/map-time-zone.png
../images/slide-0.png
../images/slide-1.png
../images/slide-2.png
../images/slide-3.png
../images/slide-4.png
../images/slide-5.png
../images/slide-6.png
../images/slide-7.png
../images/slide-8.png
../images/slide-9.png
../images/slide-10.png
../images/slide-11.png
../images/slide-12.png
../images/slide-12.png
../images/language.png
../ubinstall-gtk.glade
../ubinstall-gtk-language.glade
../ubinstall-gtk-keyboard.glade
@ -141,6 +123,7 @@ set(SOURCE_FILES
ubinstall-gtk-installation.c
ubinstall-gtk-network.c
ubinstall-gtk-separate.c
ubinstall-gtk-source.c
ubinstall-gtk-users.c
ubinstall-gtk-configuration-mode.c
ubinstall-gtk-decorations.c

@ -31,7 +31,6 @@ int yon_kernel_save(main_window *widgets){
}
int yon_kernel_addon_save(main_window *widgets){
// yon_kernel_save(widgets);
char *parameter = config(modules_extra_parameter);
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox));
char *install_modules = yon_char_new(parameter);

@ -70,7 +70,6 @@ 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;
@ -118,11 +117,9 @@ 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);
}
@ -175,14 +172,7 @@ void yon_flow_box_clear(GtkFlowBox *target){
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);
@ -190,5 +180,10 @@ void yon_configuration_hub_init(main_window *widgets){
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_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),PACKAGES_SECTION_LABEL,"com.ublinux.ubl-settings-repomanager",YON_PAGE_PACKAGES);
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_resize(widgets);
}

@ -53,7 +53,14 @@ void on_path_choose(GtkWidget *,configuration_window *window){
void on_configuration_exit(GtkWidget *,configuration_window *window){
main_window *widgets = g_object_get_data(G_OBJECT(window->Window),"widgets");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets->ConfigurationModeMenuItem),0);
GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem));
GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Check),0);
g_list_free(box);
g_list_free(children);
gtk_widget_destroy(window->Window);
if (getuid()){
gtk_main_quit();
@ -61,7 +68,13 @@ void on_configuration_exit(GtkWidget *,configuration_window *window){
}
void on_configuration_mode_switch(GtkWidget *self,main_window *widgets){
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(self))){
GList *box = gtk_container_get_children(GTK_CONTAINER(self));
GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1));
int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(Check));
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(Check))){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_configuration_mode);
configuration_window *window = malloc(sizeof(configuration_window));
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
@ -100,7 +113,6 @@ void on_configuration_mode_switch(GtkWidget *self,main_window *widgets){
main_config.configure_mode = 1;
}
gtk_widget_destroy(window->Window);
return;
} else {
yon_ubl_status_box_despawn_infinite(GTK_CONTAINER(widgets->StatusBox));
@ -110,4 +122,8 @@ void on_configuration_mode_switch(GtkWidget *self,main_window *widgets){
main_config.configure_mode = 0;
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Check),!active);
g_list_free(box);
g_list_free(children);
}

@ -15,11 +15,13 @@ gboolean on_install_slider_hover_highlight_end(GtkWidget *, GdkEvent *, main_win
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);
widgets->slider_stop=1;
yon_install_slider_update(widgets);
}
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);
widgets->slider_stop=1;
yon_install_slider_update(widgets);
}
@ -135,8 +137,19 @@ void yon_install_slider_init(main_window *widgets){
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_timeout_add_seconds(5,(GSourceFunc)on_install_slider_slide,widgets);
}
// void *on_install_slider_slide(){
gboolean on_install_slider_slide_proceed(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);
return G_SOURCE_REMOVE;
}
// }
gboolean on_install_slider_slide(main_window *widgets){
if (!widgets->slider_stop){
g_idle_add((GSourceFunc)on_install_slider_slide_proceed,widgets);
return G_SOURCE_CONTINUE;
}
return G_SOURCE_REMOVE;
}

@ -1,12 +1,16 @@
#include "ubinstall-gtk.h"
int yon_installation_start(main_window *widgets){
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));
return !pthread_create(&main_config.install_thread,NULL,on_config_save,widgets);
}
void yon_quick_install(GtkWidget *self, main_window *widgets){
main_config.save_configured=1;
gtk_widget_hide(self);
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));
pthread_create(&main_config.install_thread,NULL,on_config_save,widgets);
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
yon_page_init(widgets,YON_PAGE_INSTALLATION);
yon_page_update(widgets);
}

@ -225,60 +225,6 @@ int yon_advanced_sections_save(dictionary *dict){
return 1;
}
// int yon_install_advanced_save(main_window *widgets){
// GtkTreeModel *model;
// GtkTreeIter iter;
// if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedDeviceTree)),&model,&iter)){
// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedDeviceTree));
// return 0;
// }
// char *device;
// gtk_tree_model_get(model,&iter,0,&device,-1);
// if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->AdvancedPartitionTree)),&model,&iter)){
// yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),NO_DEVICE_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(gtk_widget_get_parent(widgets->AdvancedPartitionTree));
// return 0;
// }
// yon_config_remove_by_key(part_size_parameter);
// char *part;
// gtk_tree_model_get(model,&iter,0,&part,-1);
// if (!yon_advanced_sections_save(widgets->advanced_sections)){
// return 0;
// }
// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapSwitch))){
// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapAutoSwitch))){
// yon_config_register(swap_parameter,swap_parameter_command,"auto");
// } else if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedSwapRamSwitch))){
// yon_config_register(swap_parameter,swap_parameter_command,"yes");
// yon_config_register(swap_size_parameter,swap_size_parameter_command,"ram");
// } else {
// yon_config_register(swap_parameter,swap_parameter_command,"yes");
// char *swap = g_strdup_printf("%d%s",gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->AdvancedSwapFixedSpin)),yon_size_get_mod(gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdvancedSwapFixedSizeSwitch))+1));
// yon_config_register(swap_size_parameter,swap_size_parameter_command,swap);
// }
// }
// const char *device_typevfs = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->AdvancedVirtualDeviceCombo));
// if (!yon_char_is_empty(device_typevfs)){
// yon_config_register(device_typevfs_parameter,device_typevfs_parameter_command,(char*)device_typevfs);
// } else {
// yon_config_remove_by_key(device_typevfs_parameter);
// }
// if (gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedLoadTypeSwitch))){
// char *bios = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedBiosSectorSwitch))?"bios":"";
// char *efi = gtk_switch_get_active(GTK_SWITCH(widgets->AdvancedEFISwitch))?"efi":NULL;
// char *boot = yon_char_unite(bios,!yon_char_is_empty(bios)&&!yon_char_is_empty(efi)?"+":"",efi,NULL);
// yon_config_register(boot_parameter,boot_parameter_command,boot);
// } else {
// yon_config_register(boot_parameter,boot_parameter_command,"none");
// }
// return 1;
// }
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_button, GtkComboBox *spin_combo){
GtkTreeModel *model;
GtkTreeIter iter;

@ -115,7 +115,6 @@ void yon_kernel_row_setup(kernel_row *row, char *name, char *modules,char *packa
void yon_kernel_resize(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox));
GList *iter = list;
// gtk_widget_realize(widgets->KernelListBox);
int install_size=0;
int enable_size=0;
int name_size=0;
@ -150,7 +149,6 @@ void yon_kernel_resize(main_window *widgets){
void yon_kernel_addon_resize(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox));
GList *iter = list;
// gtk_widget_realize(widgets->KernelListBox);
int install_size=0;
int name_size=0;
int modules_size=0;
@ -307,12 +305,14 @@ void yon_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules
row->modules = yon_char_new(modules);
row->package = yon_char_new(package);
char *description_full = yon_char_new(_(description));
char *description_full = NULL;
if (strlen(description)>100){
guint size;
config_str description_wrapped = yon_char_wrap_to_lines(description,3,&size);
config_str description_wrapped = yon_char_wrap_to_lines(_(description),3,&size);
description_full = yon_char_parsed_to_string(description_wrapped,size,"\n");
yon_char_parsed_free(description_wrapped,size);
} else {
description_full = yon_char_new(_(description));
}
char *package_label = NULL;
@ -378,7 +378,6 @@ void yon_kernel_addon_setup(main_window *widgets){
} else {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0);
}
// yon_char_parsed_free(parsed,parsed_size);
}
yon_kernel_addon_resize(widgets);

@ -34,7 +34,6 @@ void yon_keyboard_init(main_window *widgets){
}
yon_char_parsed_free(models,size);
// g_signal_handlers_block_by_func(G_OBJECT(widgets->TTYLayoutCombo),G_CALLBACK(on_tty_changed),widgets);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardModelCombo),0);
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->KeyboardNumLockCombo),0);

@ -206,7 +206,6 @@ void on_locale_toggled(GtkCellRenderer *, gchar *path, main_window *widgets){
char *target;
gtk_tree_model_get(model,&fiter,3,&target,-1);
gtk_list_store_set(GTK_LIST_STORE(model),&fiter,0,1,-1);
// yon_config_register(lang_parameter,lang_parameter_command,target);
}
int yon_language_save(main_window *widgets){

@ -65,20 +65,26 @@ void yon_packages_tab_init(main_window *widgets){
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);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1);
free(full_string);
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_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);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1);
free(full_string);
}
} 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);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1);
free(full_string);
}
gtk_tree_iter_free(category_iter);
} else {
@ -87,18 +93,22 @@ void yon_packages_tab_init(main_window *widgets){
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_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_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);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,1,parsed[2],2,full_string,3,1,-1);
free(full_string);
} 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_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);
char *full_string = yon_char_unite("<b>",parsed[2],"</b>\n",_(parsed[3]),NULL);
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,0,1,parsed[2],2,full_string,3,1,-1);
free(full_string);
}
}
}

@ -8,9 +8,9 @@ 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_CONFIG_HUB; break;
case YON_PAGE_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_SOFTWARE: 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;
@ -20,6 +20,7 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
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_APP_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;
@ -44,7 +45,7 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
break;
// default:return YON_PAGE_WELCOME;
}
return YON_PAGE_WELCOME;
return -1;
}
enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){
@ -53,8 +54,8 @@ 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_INSTALLATION_BEGIN: return YON_PAGE_OS_COMPONENTS; 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;
@ -65,7 +66,7 @@ enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){
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_PACKAGES: return YON_PAGE_CONFIG_HUB;
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;
@ -120,6 +121,7 @@ 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_set_sensitive(widgets->CancelInstallButton,1);
break;
case YON_PAGE_CONFIGURE_END:
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),SAVE_AND_EXIT_LABEL);
@ -267,47 +269,42 @@ 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:
case YON_PAGE_PACMAN_SOFTWARE:
case YON_PAGE_RECOVERY_GRUB_INSTALL:
case YON_PAGE_RECOVERY_GRUB_UPDATE:
case YON_PAGE_RECOVERY_OS_ONLY:
case YON_PAGE_RECOVERY_USRDATA_ONLY:
page = 2;
break;
case YON_PAGE_CONFIG_HUB:
case YON_PAGE_KERNEL:
case YON_PAGE_KERNEL_ADDON:
case YON_PAGE_SOFTWARE:
case YON_PAGE_PACMAN_SOFTWARE:
case YON_PAGE_REGION:
page = 3;
break;
case YON_PAGE_LANGUAGE:
case YON_PAGE_KEYBOARD:
page = 4;
break;
case YON_PAGE_USERS:
page = 5;
break;
case YON_PAGE_BOOTLOADER:
case YON_PAGE_STARTUP:
case YON_PAGE_APP_STARTUP:
case YON_PAGE_NETWORK:
case YON_PAGE_PACKAGES:
page = 6;
page = 3;
break;
case YON_PAGE_INSTALLATION:
page = 7;
page = 4;
break;
case YON_PAGE_COMPLETED:
case YON_PAGE_COMPLETION:
case YON_PAGE_INSTALL_ERROR:
case YON_PAGE_CONFIGURE_END:
case YON_PAGE_CONFIGURE_SAVE:
page=8;
page=5;
break;
}
if (widgets){};
GtkContainer *parent = GTK_CONTAINER(gtk_widget_get_parent(widgets->UsersToggle));
GtkContainer *parent = GTK_CONTAINER(gtk_widget_get_parent(widgets->WelcomeToggle));
GList *list = gtk_container_get_children(parent);
for (guint i=0;i<g_list_length(list);i++){
if (i!=(guint)page){
@ -485,25 +482,6 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
}
}
void on_system_setup_pass(GtkWidget *, main_window *widgets){
main_config.save_configured=1;
if (main_config.configure_mode){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_CONFIGURE_END);
} else {
if (main_config.install_complete) {
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_COMPLETION);
yon_page_init(widgets,YON_PAGE_COMPLETION);
yon_page_update(widgets);
} else {
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
yon_page_init(widgets,YON_PAGE_INSTALLATION);
yon_page_update(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);

@ -24,21 +24,6 @@ int yon_region_save(main_window *widgets){
yon_config_register(locale_parameter,locale_parameter_command,languages);
free(languages);
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){
yon_config_remove_by_key(lang_parameter);
} else {
char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo));
yon_config_register(lang_parameter,lang_parameter_command,language);
}
if (gtk_switch_get_active(GTK_SWITCH(widgets->RegionSensitiveSwitch))){
char *region = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
char *zone = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
yon_debug_output("%s",region);
yon_debug_output("/%s\n\n",zone);
yon_config_register(zone_parameter,zone_parameter_command,yon_char_unite(region,"/",zone,NULL));
} else {
yon_config_remove_by_key(zone_parameter);
}
return 1;
}
@ -97,8 +82,6 @@ void yon_region_init(main_window *widgets){
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter));
char *zone = yon_char_new(config(zone_parameter));
char *locale = config(locale_parameter);
char *lang_param = config(lang_parameter);
if (!yon_char_is_empty(zone)){
char *timezone = yon_char_divide_search(zone,"/",-1);
@ -112,29 +95,4 @@ void yon_region_init(main_window *widgets){
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->ZoneCombo),0);
gtk_switch_set_active(GTK_SWITCH(widgets->RegionSensitiveSwitch),0);
}
if (!yon_char_is_empty(locale)){
char *parameters_list = "";
config_str parsed = yon_char_parse(locale,&size,",");
GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesList);
for_iter(model,&iter){
char *target, *id;
gtk_tree_model_get(model,&iter,1,&target,2,&id,-1);
if (yon_char_parsed_check_exist(parsed,size,id)>-1){
gtk_list_store_set(widgets->LanguagesList,&iter,0,1,-1);
char *temp = yon_char_unite(parameters_list,!yon_char_is_empty(parameters_list)?",":"",target,NULL);
if (!yon_char_is_empty(parameters_list)) free(parameters_list);
parameters_list=temp;
} else {
gtk_list_store_set(widgets->LanguagesList,&iter,0,0,-1);
}
}
gtk_entry_set_text(GTK_ENTRY(widgets->AvailableLanguagesEntry),parameters_list);
if(!yon_char_is_empty(parameters_list)) free(parameters_list);
}
if (!yon_char_is_empty(lang_param)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo),lang_param);
}
}

@ -185,7 +185,6 @@ void *on_config_save(void *data){
widgets->install_info_monitor = g_file_monitor_file(file_desc,G_FILE_MONITOR_NONE,NULL,NULL);
g_signal_connect(G_OBJECT(widgets->install_info_monitor),"changed",G_CALLBACK(yon_installation_progress_update),widgets);
g_object_unref(file_desc);
gtk_widget_show(gtk_widget_get_parent(widgets->InstallationProgress));
if (!main_config.dry_run){
char *command = yon_debug_output("%s\n",save_config_command(yon_char_parsed_to_string(parameters,size," ")));
yon_char_parsed_free(parameters,size);

@ -0,0 +1,300 @@
#include "ubinstall-gtk.h"
void on_source_changed(GtkComboBox *self){
GtkWidget *devices_combo = g_object_get_data(G_OBJECT(self),"target");
GtkWidget *path_button = g_object_get_data(G_OBJECT(self),"button");
GtkWidget *path_combo = g_object_get_data(G_OBJECT(self),"combo");
if (gtk_combo_box_get_active(self)){
gtk_widget_show(path_button);
gtk_widget_show(path_combo);
gtk_widget_hide(devices_combo);
} else{
gtk_widget_hide(path_button);
gtk_widget_hide(path_combo);
gtk_widget_show(devices_combo);
}
}
source_element *yon_source_element_new(){
source_element *element = new(source_element);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source_element);
element->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
element->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
element->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->DeviceCombo));
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->TypeCombo));
g_signal_connect(G_OBJECT(element->RemoveButton),"clicked",G_CALLBACK(on_source_remove),element);
g_signal_connect(G_OBJECT(element->PathButton),"clicked",G_CALLBACK(on_source_choose),element);
g_signal_connect(G_OBJECT(element->TypeCombo),"changed",G_CALLBACK(on_source_changed),element);
g_object_set_data(G_OBJECT(element->PathButton),"combo",element->TypeCombo);
g_object_set_data(G_OBJECT(element->MainBox),"source_element",element);
g_object_set_data(G_OBJECT(element->PathButton),"target_combo",element->TypeCombo);
g_object_set_data(G_OBJECT(element->TypeCombo),"target",element->DeviceCombo);
g_object_set_data(G_OBJECT(element->TypeCombo),"button",element->PathButton);
g_object_set_data(G_OBJECT(element->TypeCombo),"combo",element->PathEntry);
gtk_widget_set_sensitive(element->DeviceCombo,0);
gtk_widget_set_sensitive(element->TypeCombo,0);
gtk_widget_set_sensitive(element->PathEntry,0);
gtk_widget_set_sensitive(element->PathButton,0);
gtk_widget_hide(element->PathButton);
int size;
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(element->DeviceCombo),parsed[1],parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(element->DeviceCombo),0);
yon_char_parsed_free(parts,size);
return element;
}
void yon_source_element_add(char *key,void*,source_window *window){
source_element *element = yon_source_element_new();
if (yon_char_check_begins_with(key,"/dev/")){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(element->DeviceCombo),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0);
} else if (g_regex_match_simple(".*\\.iso",key,G_REGEX_DEFAULT,G_REGEX_MATCH_DEFAULT)){
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),2);
} else {
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),1);
}
gtk_box_pack_start(GTK_BOX(window->AddBox),element->MainBox,0,0,0);
g_object_set_data(G_OBJECT(element->MainBox),"window",window);
g_object_set_data(G_OBJECT(element->PathButton),"target",window->PathEntry);
}
void yon_source_update(source_window *window){
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
GList *iter;
for (iter=list;iter;iter=iter->next){
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
dictionary *dict;
if (!window->sources) return;
for_dictionaries(dict,window->sources){
yon_source_element_add(dict->key,NULL,window);
}
}
void on_source_add(GtkWidget *,source_window *window){
const char *path = gtk_widget_get_visible(window->PathEntry)?gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->DeviceCombo));
if (!yon_dictionary_get(&window->sources,(char*)path)){
yon_dictionary_add_or_create_if_exists_with_data(window->sources,yon_char_new(path),NULL);
gtk_entry_set_text(GTK_ENTRY(window->PathEntry),"");
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
yon_source_update(window);
} else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_source_remove(GtkWidget *,source_element *element){
source_window *window = g_object_get_data(G_OBJECT(element->MainBox),"window");
const char *path = gtk_widget_get_visible(element->PathEntry)?gtk_entry_get_text(GTK_ENTRY(element->PathEntry)):gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo));
dictionary *dict = yon_dictionary_get(&window->sources,(char*)path);
if (dict){
window->sources = yon_dictionary_rip(dict);
yon_source_update(window);
}
}
void on_source_choose(GtkWidget *self){
GtkWidget *target_entry = g_object_get_data(G_OBJECT(self),"target");
GtkWidget *target_mode = g_object_get_data(G_OBJECT(self),"combo");
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(target_mode))){
case 1:{
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
free(dialog);
}
} break;
case 2: {
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.iso");
gtk_file_filter_set_name(filter,".iso");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
free(dialog);
}
} break;
}
}
void on_source_accept(GtkWidget *,source_window *window){
if (gtk_switch_get_active(GTK_SWITCH(window->AutoSwitch))){
yon_config_register(source_parameter,source_parameter_command,"auto");
on_subwindow_close(window->Window);
return;
}
const char *creation_path = gtk_widget_get_visible(window->PathEntry)? gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):NULL;
if (!yon_char_is_empty(creation_path)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SOURCE_CREATE_ONGOING_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
}
char *sources_list = NULL;
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
GList *iter;
for (iter=list;iter;iter=iter->next){
source_element *element = NULL;
element = g_object_get_data(G_OBJECT(iter->data),"source_element");
switch(gtk_combo_box_get_active(GTK_COMBO_BOX(element->TypeCombo))){
case 0:{
char *cur = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo));
if (yon_char_check_element(sources_list,cur,",")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
return;
}
char *temp = yon_char_append_element(sources_list,cur,",");
if (!yon_char_is_empty(sources_list)) free(sources_list);
sources_list = temp;
} break;
case 1:{
char *cur = (char*)gtk_entry_get_text(GTK_ENTRY(element->PathEntry));
if (yon_char_check_element(sources_list,cur,",")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
return;
}
char *temp = yon_char_append_element(sources_list,cur,",");
if (!yon_char_is_empty(sources_list)) free(sources_list);
sources_list = temp;
} break;
case 2:{
char *cur = (char*)gtk_entry_get_text(GTK_ENTRY(element->PathEntry));
if (yon_char_check_element(sources_list,cur,",")){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(element->DeviceCombo);
return;
}
char *temp = yon_char_append_element(sources_list,cur,",");
if (!yon_char_is_empty(sources_list)) free(sources_list);
sources_list = temp;
} break;
}
}
if (!yon_char_is_empty(sources_list)){
yon_config_register(source_parameter,source_parameter_command,sources_list);
} else {
yon_config_remove_by_key(source_parameter);
}
int size;
config_str paths = NULL;
dictionary *dict;
if (!window->sources) return;
for_dictionaries(dict,window->sources){
if (yon_char_parsed_check_exist(paths,size,dict->key)>-1){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
yon_char_parsed_add_or_create_if_exists(paths,&size,dict->key);
}
if (!size){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PathEntry);
return;
}
char *parameter_string = yon_char_parsed_to_string(paths,(int)size,",");
free(parameter_string);
on_subwindow_close(window->Window);
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(command)){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
yon_dictionary_free_all(window->sources,NULL);
free(window);
}
source_window *yon_source_window_new(){
source_window *window = new(source_window);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->AutoSwitch = yon_gtk_builder_get_widget(builder,"AutoSwitch");
window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
window->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->AddBox = yon_gtk_builder_get_widget(builder,"AddBox");
window->sources = NULL;
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_source_accept),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_source_add),window);
g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_source_choose),window);
g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_source_changed),window);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),gtk_widget_get_parent(gtk_widget_get_parent(window->AddBox)));
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->TypeCombo);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->DeviceCombo);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathButton);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->PathEntry);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),window->AddButton);
g_object_set_data(G_OBJECT(window->PathButton),"combo",window->TypeCombo);
g_object_set_data(G_OBJECT(window->PathButton),"target",window->PathEntry);
g_object_set_data(G_OBJECT(window->TypeCombo),"target",window->DeviceCombo);
g_object_set_data(G_OBJECT(window->TypeCombo),"button",window->PathButton);
g_object_set_data(G_OBJECT(window->TypeCombo),"combo",window->PathEntry);
{
char *config_parameter = config(source_parameter);
if (window->sources){
yon_dictionary_free_all(window->sources,NULL);
}
int size;
config_str parsed = yon_char_parse(config_parameter,&size,",");
for (int i=0;i<size;i++){
yon_dictionary_add_or_create_if_exists_with_data(window->sources,parsed[i],NULL);
}
yon_char_parsed_free(parsed,size);
}
int size;
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->DeviceCombo),parsed[1],parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
yon_char_parsed_free(parts,size);
return window;
}
void on_source_clicked(GtkWidget *,main_window *widgets){
source_window *window = yon_source_window_new();
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
yon_source_update(window);
gtk_widget_show(window->Window);
}

@ -168,12 +168,33 @@ void yon_fs_type_setup(GtkComboBoxText *target){
}
}
void on_rdp_toggled(GtkWidget *self, main_window *){
GList *box = gtk_container_get_children(GTK_CONTAINER(self));
GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_list_nth_data(children,1)));
if (!active){
yon_launch(enable_rdp_command);
} else {
yon_launch(disable_rdp_command);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(g_list_nth_data(children,1)),!active);
g_list_free(box);
g_list_free(children);
}
void on_vnc_toggled(GtkWidget *self, main_window *){
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(self))){
GList *box = gtk_container_get_children(GTK_CONTAINER(self));
GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_list_nth_data(children,1)));
if (!active){
yon_launch(enable_vnc_command);
} else {
yon_launch(disable_vnc_command);
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(g_list_nth_data(children,1)),!active);
g_list_free(box);
g_list_free(children);
}
void on_pacman_software_all_toggled(GtkWidget *, char *path, main_window *widgets){
@ -261,245 +282,6 @@ double yon_size_long_convert_to_mod(double size, char mod){
return final_size;
}
void on_source_changed(GtkComboBox *self){
GtkWidget *devices_combo = g_object_get_data(G_OBJECT(self),"target");
GtkWidget *path_button = g_object_get_data(G_OBJECT(self),"button");
GtkWidget *path_combo = g_object_get_data(G_OBJECT(self),"combo");
if (gtk_combo_box_get_active(self)){
gtk_widget_show(path_button);
gtk_widget_show(path_combo);
gtk_widget_hide(devices_combo);
} else{
gtk_widget_hide(path_button);
gtk_widget_hide(path_combo);
gtk_widget_show(devices_combo);
}
}
source_element *yon_source_element_new(){
source_element *element = new(source_element);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source_element);
element->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
element->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
element->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
g_signal_connect(G_OBJECT(element->RemoveButton),"clicked",G_CALLBACK(on_source_remove),element);
g_signal_connect(G_OBJECT(element->PathButton),"clicked",G_CALLBACK(on_source_choose),element);
g_signal_connect(G_OBJECT(element->TypeCombo),"changed",G_CALLBACK(on_source_changed),element);
g_object_set_data(G_OBJECT(element->PathButton),"combo",element->TypeCombo);
g_object_set_data(G_OBJECT(element->PathButton),"target_combo",element->TypeCombo);
g_object_set_data(G_OBJECT(element->TypeCombo),"target",element->DeviceCombo);
g_object_set_data(G_OBJECT(element->TypeCombo),"button",element->PathButton);
g_object_set_data(G_OBJECT(element->TypeCombo),"combo",element->PathEntry);
int size;
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(element->DeviceCombo),parsed[1],parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(element->DeviceCombo),0);
yon_char_parsed_free(parts,size);
return element;
}
void yon_source_element_add(char *key,void*,source_window *window){
source_element *element = yon_source_element_new();
if (yon_char_check_begins_with(key,"/dev/")){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(element->DeviceCombo),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0);
} else if (g_regex_match_simple(".*\\.iso",key,G_REGEX_DEFAULT,G_REGEX_MATCH_DEFAULT)){
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),2);
} else {
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),1);
}
gtk_box_pack_start(GTK_BOX(window->AddBox),element->MainBox,0,0,0);
g_object_set_data(G_OBJECT(element->MainBox),"window",window);
g_object_set_data(G_OBJECT(element->PathButton),"target",window->PathEntry);
}
void yon_source_update(source_window *window){
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
GList *iter;
for (iter=list;iter;iter=iter->next){
gtk_widget_destroy(GTK_WIDGET(iter->data));
}
dictionary *dict;
if (!window->sources) return;
for_dictionaries(dict,window->sources){
yon_source_element_add(dict->key,NULL,window);
}
}
void on_source_add(GtkWidget *,source_window *window){
const char *path = gtk_widget_get_visible(window->PathEntry)?gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->DeviceCombo));
if (!yon_dictionary_get(&window->sources,(char*)path)){
yon_dictionary_add_or_create_if_exists_with_data(window->sources,yon_char_new(path),NULL);
gtk_entry_set_text(GTK_ENTRY(window->PathEntry),"");
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
yon_source_update(window);
} else {
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void on_source_remove(GtkWidget *,source_element *element){
source_window *window = g_object_get_data(G_OBJECT(element->MainBox),"window");
const char *path = gtk_widget_get_visible(element->PathEntry)?gtk_entry_get_text(GTK_ENTRY(element->PathEntry)):gtk_combo_box_get_active_id(GTK_COMBO_BOX(element->DeviceCombo));
dictionary *dict = yon_dictionary_get(&window->sources,(char*)path);
if (dict){
window->sources = yon_dictionary_rip(dict);
yon_source_update(window);
}
}
void on_source_choose(GtkWidget *self){
GtkWidget *target_entry = g_object_get_data(G_OBJECT(self),"target");
GtkWidget *target_mode = g_object_get_data(G_OBJECT(self),"combo");
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(target_mode))){
case 1:{
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
free(dialog);
}
} break;
case 2: {
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_OPEN);
yon_gtk_window_setup(GTK_WINDOW(dialog->Window),GTK_WINDOW(dialog->Window),OPEN_LABEL,icon_path,"filechooser_window");
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.iso");
gtk_file_filter_set_name(filter,".iso");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection);
free(dialog);
}
} break;
}
}
void on_source_accept(GtkWidget *,source_window *window){
if (gtk_switch_get_active(GTK_SWITCH(window->AutoSwitch))){
yon_config_register(source_parameter,source_parameter_command,"auto");
on_subwindow_close(window->Window);
return;
}
const char *creation_path = gtk_widget_get_visible(window->PathEntry)? gtk_entry_get_text(GTK_ENTRY(window->PathEntry)):NULL;
if (!yon_char_is_empty(creation_path)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),SOURCE_CREATE_ONGOING_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
}
int size;
config_str paths = NULL;
dictionary *dict;
if (!window->sources) return;
for_dictionaries(dict,window->sources){
if (yon_char_parsed_check_exist(paths,size,dict->key)>-1){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),VALUE_REPEAT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
yon_char_parsed_add_or_create_if_exists(paths,&size,dict->key);
}
if (!size){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PathEntry);
return;
}
char *parameter_string = yon_char_parsed_to_string(paths,(int)size,",");
yon_config_register(source_parameter,source_parameter_command,parameter_string);
free(parameter_string);
on_subwindow_close(window->Window);
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(command)){}
free(command);
yon_char_parsed_free(parameters,size);
}
}
yon_dictionary_free_all(window->sources,NULL);
free(window);
}
source_window *yon_source_window_new(){
source_window *window = new(source_window);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_source);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->AutoSwitch = yon_gtk_builder_get_widget(builder,"AutoSwitch");
window->TypeCombo = yon_gtk_builder_get_widget(builder,"TypeCombo");
window->PathEntry = yon_gtk_builder_get_widget(builder,"PathEntry");
window->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
window->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
window->AddButton = yon_gtk_builder_get_widget(builder,"AddButton");
window->AddBox = yon_gtk_builder_get_widget(builder,"AddBox");
window->sources = NULL;
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_source_accept),window);
g_signal_connect(G_OBJECT(window->AddButton),"clicked",G_CALLBACK(on_source_add),window);
g_signal_connect(G_OBJECT(window->PathButton),"clicked",G_CALLBACK(on_source_choose),window);
g_signal_connect(G_OBJECT(window->TypeCombo),"changed",G_CALLBACK(on_source_changed),window);
g_signal_connect(G_OBJECT(window->AutoSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch_inversed),gtk_widget_get_parent(gtk_widget_get_parent(window->AddBox)));
g_object_set_data(G_OBJECT(window->PathButton),"combo",window->TypeCombo);
g_object_set_data(G_OBJECT(window->PathButton),"target",window->PathEntry);
g_object_set_data(G_OBJECT(window->TypeCombo),"target",window->DeviceCombo);
g_object_set_data(G_OBJECT(window->TypeCombo),"button",window->PathButton);
g_object_set_data(G_OBJECT(window->TypeCombo),"combo",window->PathEntry);
int size;
config_str parts = yon_config_load(get_parts_and_devices_command, &size);
for (int i=0;i<size;i++){
int parsed_size;
config_str parsed = yon_char_parse(parts[i],&parsed_size,";");
if (!strcmp(parsed[0],"part")){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(window->DeviceCombo),parsed[1],parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size);
}
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceCombo),0);
yon_char_parsed_free(parts,size);
return window;
}
void on_source_clicked(GtkWidget *,main_window *widgets){
source_window *window = yon_source_window_new();
char *sources = config(source_parameter);
if (!yon_char_is_empty(sources)&&strcmp(sources,"auto")){
gtk_switch_set_active(GTK_SWITCH(window->AutoSwitch),0);
int size;
config_str parsed = yon_char_parse(sources,&size,",");
for (int i=0;i<size;i++){
yon_dictionary_add_or_create_if_exists_with_data(window->sources,parsed[i],NULL);
}
yon_char_parsed_free(parsed,size);
}
g_object_set_data(G_OBJECT(window->Window),"widgets",widgets);
yon_source_update(window);
gtk_widget_show(window->Window);
}
double yon_size_long_convert_automatic(unsigned long bytes, char *size){
int repeats;
double byte_float=bytes;
@ -823,7 +605,6 @@ void yon_main_window_create(main_window *widgets){
widgets->LicenseAgreeRadio = yon_gtk_builder_get_widget(builder,"LicenseAgreeRadio");
widgets->LicenseDisgreeRadio = yon_gtk_builder_get_widget(builder,"LicenseDisgreeRadio");
widgets->EnableVNCMenuItem = yon_gtk_builder_get_widget(builder,"EnableVNCMenuItem");
widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL);
widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL);
@ -831,18 +612,12 @@ void yon_main_window_create(main_window *widgets){
widgets->LoadLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem");
widgets->LoadExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"LoadExternalConfigurationMenuItem");
widgets->SaveGlobalLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveGlobalLocalConfigurationMenuItem");
widgets->SaveGlobalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveGlobalConfigurationMenuItem");
widgets->SaveLocalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveLocalConfigurationMenuItem");
widgets->SaveExternalConfigurationMenuItem = yon_gtk_builder_get_widget(builder,"SaveExternalConfigurationMenuItem");
widgets->SlidesImage = yon_gtk_builder_get_widget(builder,"SlidesImage");
widgets->LicenceLabel = yon_gtk_builder_get_widget(builder,"LicenceLabel");
widgets->menu1=yon_gtk_builder_get_widget(builder,"menu1");
widgets->menu2=yon_gtk_builder_get_widget(builder,"menu2");
widgets->ConfigurationModeMenuItem = yon_gtk_builder_get_widget(builder,"ConfigurationModeMenuItem");
widgets->CancelInstallButton=yon_gtk_builder_get_widget(builder,"CancelInstallButton");
widgets->BackButton=yon_gtk_builder_get_widget(builder,"BackButton");
@ -850,12 +625,10 @@ void yon_main_window_create(main_window *widgets){
widgets->WelcomeToggle=yon_gtk_builder_get_widget(builder,"WelcomeToggle");
widgets->LicenceToggle=yon_gtk_builder_get_widget(builder,"LicenceToggle");
widgets->LocationToggle=yon_gtk_builder_get_widget(builder,"LocationToggle");
widgets->SectionsToggle=yon_gtk_builder_get_widget(builder,"SectionsToggle");
widgets->UsersToggle=yon_gtk_builder_get_widget(builder,"UsersToggle");
widgets->SummaryToggle=yon_gtk_builder_get_widget(builder,"SummaryToggle");
widgets->CompletionToggle=yon_gtk_builder_get_widget(builder,"CompletionToggle");
widgets->PreparationToggle=yon_gtk_builder_get_widget(builder,"PreparationToggle");
widgets->ConfigurationToggle=yon_gtk_builder_get_widget(builder,"ConfigurationToggle");
widgets->InstallationToggle=yon_gtk_builder_get_widget(builder,"InstallationToggle");
widgets->CompletionToggle=yon_gtk_builder_get_widget(builder,"CompletionToggle");
widgets->StartScenarioButton=yon_gtk_builder_get_widget(builder,"StartScenarioButton");
@ -964,13 +737,6 @@ void yon_main_window_create(main_window *widgets){
// widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo");
widgets->AvailableLanguagesEntry=yon_gtk_builder_get_widget(builder,"AvailableLanguagesEntry");
widgets->AvailableLanguagesButton=yon_gtk_builder_get_widget(builder,"AvailableLanguagesButton");
widgets->LanguagesCombo=yon_gtk_builder_get_widget(builder,"LanguagesCombo");
widgets->LayoutBindingCombo=yon_gtk_builder_get_widget(builder,"LayoutBindingCombo");
widgets->LayoutTree=yon_gtk_builder_get_widget(builder,"LayoutTree");
widgets->AddButton=yon_gtk_builder_get_widget(builder,"AddButton");
widgets->RemoveButton=yon_gtk_builder_get_widget(builder,"RemoveButton");
widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch");
// widgets->UserImage=yon_gtk_builder_get_widget(builder,"UserImage");
@ -992,9 +758,6 @@ void yon_main_window_create(main_window *widgets){
widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry");
widgets->mainSettingsButton=yon_gtk_builder_get_widget(builder,"mainSettingsButton");
// widgets->RegionImage = yon_gtk_builder_get_widget(builder,"RegionImage");
widgets->RegionBox = yon_gtk_builder_get_widget(builder,"RegionBox");
widgets->RegionAspect = yon_gtk_builder_get_widget(builder,"RegionAspect");
widgets->KeyboardModelCombo = yon_gtk_builder_get_widget(builder,"KeyboardModelCombo");
widgets->KeyboardDefaultLayoutsSwitch = yon_gtk_builder_get_widget(builder,"KeyboardDefaultLayoutsSwitch");
@ -1090,7 +853,6 @@ void yon_main_window_create(main_window *widgets){
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");
@ -1119,7 +881,6 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LoadLocalConfigurationMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadExternalConfigurationMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
g_signal_connect(G_OBJECT(widgets->EnableVNCMenuItem),"activate",G_CALLBACK(on_vnc_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->ReadFullLogButton),"clicked",G_CALLBACK(on_process_log_view),widgets);
g_signal_connect(G_OBJECT(widgets->ReadShortLogButton),"clicked",G_CALLBACK(on_summary_log_view),widgets);
@ -1161,7 +922,6 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UserdataDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->OSDevicesTree),"cursor-changed",G_CALLBACK(on_device_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigurationModeMenuItem),"toggled",G_CALLBACK(on_configuration_mode_switch),widgets);
g_signal_connect(G_OBJECT(widgets->SamePlacePartTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
g_signal_connect(G_OBJECT(widgets->NextInstallationSysSectionTree),"cursor-changed",G_CALLBACK(on_partition_changed),widgets);
@ -1219,14 +979,9 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSpin);
g_signal_connect(G_OBJECT(widgets->AdvancedSwapFixedSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->AdvancedSwapFixedSizeSwitch);
// g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_install_advanced_add_new),widgets);
g_signal_connect(G_OBJECT(widgets->AdvancedDeviceChosenCell),"toggled",G_CALLBACK(on_install_advanced_device_chosen),widgets);
// g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets);
// g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"add",G_CALLBACK(on_advanced_parts_added),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->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);
@ -1235,11 +990,9 @@ void yon_main_window_create(main_window *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);
@ -1254,19 +1007,51 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK);
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
{
widgets->EnableRDPMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(ENABLE_RDP_LABEL);
GtkWidget *Check = gtk_check_button_new();
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->EnableRDPMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->EnableRDPMenuItem),"activate",G_CALLBACK(on_rdp_toggled),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->EnableRDPMenuItem),"menuitemmiddle");
gtk_widget_show_all(widgets->EnableRDPMenuItem);
gtk_menu_shell_prepend(GTK_MENU_SHELL(widgets->menu2),widgets->EnableRDPMenuItem);
}
{
widgets->EnableVNCMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(ENABLE_VNC_LABEL);
GtkWidget *Check = gtk_check_button_new();
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->EnableVNCMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->EnableVNCMenuItem),"activate",G_CALLBACK(on_vnc_toggled),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->EnableVNCMenuItem),"menuitemmiddle");
gtk_widget_show_all(widgets->EnableVNCMenuItem);
gtk_menu_shell_prepend(GTK_MENU_SHELL(widgets->menu2),widgets->EnableVNCMenuItem);
}
{
widgets->ConfigurationModeMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
GtkWidget *Label = gtk_label_new(CONFIGURATION_MODE_LABEL);
GtkWidget *Check = gtk_check_button_new();
gtk_box_pack_start(GTK_BOX(Box),Label,0,0,0);
gtk_box_pack_start(GTK_BOX(Box),Check,0,0,0);
gtk_container_add(GTK_CONTAINER(widgets->ConfigurationModeMenuItem),Box);
g_signal_connect(G_OBJECT(widgets->ConfigurationModeMenuItem),"activate",G_CALLBACK(on_configuration_mode_switch),widgets);
gtk_style_context_add_class(gtk_widget_get_style_context(widgets->ConfigurationModeMenuItem),"menuitemmiddle");
gtk_widget_show_all(widgets->ConfigurationModeMenuItem);
gtk_menu_shell_prepend(GTK_MENU_SHELL(widgets->menu2),widgets->ConfigurationModeMenuItem);
}
{
if (main_config.lock_load_global == 1){
gtk_widget_set_sensitive(widgets->LoadGlobalConfigurationMenuItem,0);
}
if (main_config.lock_save_global == 1){
gtk_widget_set_sensitive(widgets->SaveGlobalConfigurationMenuItem,0);
gtk_widget_set_sensitive(widgets->SaveGlobalLocalConfigurationMenuItem,0);
}
if (main_config.lock_save_local == 1){
gtk_widget_set_sensitive(widgets->SaveLocalConfigurationMenuItem,0);
gtk_widget_set_sensitive(widgets->SaveGlobalLocalConfigurationMenuItem,0);
}
if (getuid()){
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets->ConfigurationModeMenuItem),1);
}
@ -1343,7 +1128,8 @@ void *yon_maximize(main_window *widgets){
*/
main_window *yon_main_window_complete(){
main_window *widgets=NULL;
widgets = yon_remalloc(widgets,sizeof(main_window));
widgets = yon_remalloc(widgets,sizeof(main_window));
memset(widgets,0,sizeof(main_window));
yon_main_window_create(widgets);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
// yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow");
@ -1383,6 +1169,12 @@ int main(int argc, char *argv[]){
if (widgets){};
int fullscreen = 0;
widgets = yon_main_window_complete();
GtkWidget *root_button = yon_root_button_new(argv,argc);
gtk_style_context_add_class(gtk_widget_get_style_context(root_button),"menuitemtop");
gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->AboutMenuItem)),root_button);
yon_root_button_init(root_button,GTK_WINDOW(widgets->MainWindow));
on_config_global_load(NULL,widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
if (access(path,F_OK)){

@ -48,6 +48,7 @@
#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 add_icon_path "com.ublinux.libublsettingsui-gtk3.increase-symbolic"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubinstall-gtk"
@ -149,6 +150,9 @@ layout && /description:/ {\
#define enable_vnc_command "ubconfig --target system set [desktop] X11VNC[password]=ublinux"
#define disable_vnc_command "ubconfig --target system remove [desktop] X11VNC[password]"
#define enable_rdp_command "ubconfig --target system set [desktop] AUTOEXEC[@users]='freerdp-server.service'"
#define disable_rdp_command "ubconfig --target system remove [desktop] AUTOEXEC[@users]"
#define get_layouts_local_command(layout) yon_char_unite("xkbcli list --load-exotic | awk -v layout=\"",layout,"\" \"BEGIN {layout_pattern = sprintf(\\\"^ *- *layout: *'%s'\\\",layout);matched=0} matched && /variant:/ {match(\\$0, /: *'([^']+)'/, matches);variant = matches[1]} matched && /description:/ {match(\\$0, /: *(.+)/, matches);description = matches[1]} matched && /^ *-/{matched=0; if (variant) printf \\\"%s|%s\\n\\\",variant,description} \\$0 ~ layout_pattern {matched=1;variant=\\\"\\\";description=\\\"\\\";next}\" | sort -u",NULL)
#define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7"
#define get_parts_and_devices_command "lsblk --noheadings --bytes -o TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7 |awk '{print ($1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8\";\"$9)}'"
@ -374,6 +378,7 @@ enum YON_PAGES {
YON_PAGE_KEYBOARD,
YON_PAGE_USERS,
YON_PAGE_STARTUP,
YON_PAGE_APP_STARTUP,
YON_PAGE_BOOTLOADER,
YON_PAGE_NETWORK,
YON_PAGE_PACKAGES,
@ -461,11 +466,6 @@ typedef struct {
GtkWidget *LoadLocalConfigurationMenuItem;
GtkWidget *LoadExternalConfigurationMenuItem;
GtkWidget *SaveGlobalLocalConfigurationMenuItem;
GtkWidget *SaveGlobalConfigurationMenuItem;
GtkWidget *SaveLocalConfigurationMenuItem;
GtkWidget *SaveExternalConfigurationMenuItem;
GtkWidget *MainWindow;
GtkWidget *LicenseAgreeRadio;
@ -480,12 +480,10 @@ typedef struct {
GtkWidget *StatusBox2;
GtkWidget *WelcomeToggle;
GtkWidget *LicenceToggle;
GtkWidget *LocationToggle;
GtkWidget *SectionsToggle;
GtkWidget *UsersToggle;
GtkWidget *SummaryToggle;
GtkWidget *CompletionToggle;
GtkWidget *PreparationToggle;
GtkWidget *ConfigurationToggle;
GtkWidget *InstallationToggle;
GtkWidget *CompletionToggle;
GtkWidget *LanguagesTree;
GtkWidget *CountryLanguagesTree;
GtkListStore *InstallerCountryList;
@ -494,13 +492,6 @@ typedef struct {
// GtkWidget *LanguageCombo;
GtkWidget *RegionCombo;
GtkWidget *ZoneCombo;
GtkWidget *AvailableLanguagesEntry;
GtkWidget *AvailableLanguagesButton;
GtkWidget *LanguagesCombo;
GtkWidget *LayoutBindingCombo;
GtkWidget *LayoutTree;
GtkWidget *AddButton;
GtkWidget *RemoveButton;
GtkWidget *InstallationRadio;
GtkWidget *InstallationNearRadio;
@ -534,9 +525,6 @@ typedef struct {
GtkCellRenderer *LocaleCell;
GtkListStore *LanguageList;
// GtkWidget *RegionImage;
GtkWidget *RegionBox;
GtkWidget *RegionAspect;
GtkWidget *KeyboardModelCombo;
GtkWidget *KeyboardDefaultLayoutsSwitch;
@ -588,6 +576,7 @@ typedef struct {
GtkWidget *ConfigurationModeMenuItem;
GtkWidget *EnableVNCMenuItem;
GtkWidget *EnableRDPMenuItem;
GtkWidget *AboutMenuItem;
GtkWidget *DocumentationMenuItem;
@ -752,7 +741,6 @@ typedef struct {
// Configuration hub slide section
GtkWidget *HubPersonalListBox;
GtkWidget *HubHardwareListBox;
GtkWidget *HubSystemListBox;
GtkWidget *HubPackagesListBox;
@ -763,6 +751,8 @@ typedef struct {
GFile *install_info_file;
GFileMonitor *install_info_monitor;
gboolean slider_stop;
} main_window;
enum ADVANCED_PART_TYPE {
@ -1316,8 +1306,7 @@ void on_source_add(GtkWidget *,source_window *window);
void yon_source_update(source_window *window);
void yon_source_element_add(char *key,void*,source_window *window);
source_element *yon_source_element_new();
void on_system_setup_pass(GtkWidget *, main_window *widgets);
// void yon_resize_images_update(main_window *widgets);
void on_rdp_toggled(GtkWidget *self, main_window *);
void on_vnc_toggled(GtkWidget *self, main_window *widgets);
void yon_main_window_create(main_window *widgets);
void set_locales_list(main_window *widgets);
@ -1412,4 +1401,6 @@ 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);
int yon_packages_tab_save(main_window *widgets);
gboolean on_install_slider_slide_proceed(main_window *widgets);
gboolean on_install_slider_slide(main_window *widgets);

@ -1,4 +1,3 @@
#define TITLE_LABEL _("System installation")
#define WELCOME_LABEL _("Welcome to system installation")
@ -25,7 +24,6 @@ NULL)
#define LOCATION_TAB_LABEL _("Location")
#define KEYBOARD_TAB_LABEL _("Keyboard")
#define USERS_TAB_LABEL _("Users")
#define COMPLETION_TAB_LABEL _("Installation completion")
#define COMMON_INSTALL_INFO_LABEL _("Deleting all data on the selected disk and then installing the system")
#define NEAR_INSTALL_LABEL _("Installation next to another system")
#define NEAR_INSTALL_INFO_LABEL _("Shrinking a partition and creating a new one for installing OS")
@ -56,11 +54,9 @@ NULL)
#define COMPUTER_NAME_LABEL _("Host name:")
#define AUTOMATICALLY_LABEL _("Automatically")
#define USER_LABEL _("User")
#define COMPLETION_LABEL _("Installation completion")
#define INSTALLATION_COMPLETION_LABEL _("Installation completion")
#define SELECT_DEVICE_LABEL _("Select device:")
#define CHOOSE_SECTION_LABEL _("Choose a section:")
#define ATTENSION_LABEL _("<b>Attention!</b> The selected partition will be modified: the size will be reduced. In the resulting free space, a partition will be created into which the system will be\ninstalled.")
#define ATTENSION_LABEL _("<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.")
#define DEVICE_LABEL _("Device")
#define MARK_LABEL _("Label")
#define SIZE_LABEL _("Size")
@ -220,8 +216,8 @@ NULL)
#define SAVE_AND_EXIT_LABEL _("Save and exit")
#define NO_LABEL _("No")
#define PARITY_INVALID_LABEL(target) yon_char_unite(_("Cu"),target,NULL)
#define COUNT_INVALID_LABEL(target) yon_char_unite(_("Cues"),target,NULL)
#define PARITY_INVALID_LABEL(target) yon_char_unite("Cu",target,NULL)
#define COUNT_INVALID_LABEL(target) yon_char_unite("Cues",target,NULL)
#define ABOUT_TITLE_LABEL _("About system installation")
#define VALUE_REPEAT_LABEL _("Repeating values")
@ -264,7 +260,7 @@ NULL)
#define AVAILABLE_LOCALES_LABEL _("Available locales in the system:")
#define SYSTEM_LOCALE_LABEL _("System locale")
#define LOCALE_LABEL _("Locale")
#define LOCALE_LANGUAGE_LABEL _("Language")
#define LOCALE_LANGUAGE_LABEL _("System language")
#define TERRITORY_LABEL _("Territory")
#define LANGUAGE_TITLE_INFO_LABEL _("Specify your preferred system languages")
#define REMOVE_LOCALE_TOOLTIP_LABEL _("Remove locale")
@ -272,15 +268,17 @@ NULL)
#define PERSONAL_SECTION_LABEL _("Personal")
#define HARDWARE_SECTION_LABEL _("Hardware")
#define SYSTEM_SECTION_LABEL _("System")
#define PACKAGES_SECTION_LABEL _("Packages")
#define PACKAGES_SECTION_LABEL _("Installing Modules")
#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 SOFTWARE_LABEL _("Installing software by groups")
#define PACMAN_SOFTWARE_LABEL _("Installing Packages")
#define REGION_ICON_LABEL _("Location")
#define STARTUP_LABEL _("Startup services")
#define BOOTLOADER_LABEL _("Boot load")
#define NETWORK_LABEL _("Network")
#define ENABLE_VNC_LABEL _("Enable VNC server")
#define ENABLE_RDP_LABEL _("Enable RDP server")
// #define _LABEL _("<i><b>Package:</b></i>")
// #define _LABEL _("<i><b>Module:</b></i>")
@ -337,7 +335,6 @@ NULL)
// #define _LABEL _("Fixed size:")
// #define _LABEL _("<b>Attention!</b> The system will be installed on the selected partition with OS already installed. All user data will be saved.")
// #define _LABEL _("<b>Attention!</b> The selected system components will be installed\nseparately into the selected partition.")
// #define _LABEL _("Enable VNC server")
// #define _LABEL _("Preparation")
// #define _LABEL _("Additional")
// #define _LABEL _("Completion")
@ -393,9 +390,40 @@ NULL)
// #define _LABEL _("Source")
// #define _LABEL _("Skip configuration")
// #define _LABEL _("You are now in the system setup program. This program will ask you a few questions and help you install the system.")
// #define _LABEL _("Licence agreement")
// #define _LABEL _("Please read the license agreement before continuing the installation.")
// #define _LABEL _("Please specify what type of installation you want to perform")
// #define _LABEL _("Selection of main components")
// #define _LABEL _("Select modules found on the sources to be installed")
// #define _LABEL _("Configuring the system")
// #define _LABEL _("Configuring the parameters of the installed system")
// #define _LABEL _("Selecting the system kernel")
// #define _LABEL _("Selecting kernels for installation in the system and selecting the default kernel. Internet access is required to install additional kernels")
// #define _LABEL _("Selecting additional system kernel components")
// #define _LABEL _("Selecting additional kernel modules from the repository via the Internet")
// #define _LABEL _("Selecting additional installation components")
// #define _LABEL _("Selecting additional components and software")
// #define _LABEL _("Search and select the software you need to install by package name. Internet access required")
// #define _LABEL _("Chosen packages")
// #define _LABEL _("Enter your time zone")
// #define _LABEL _("System language")
// #define _LABEL _("Specify your preferred system languages")
// #define _LABEL _("Setting up system users")
// #define _LABEL _("Startup")
// #define _LABEL _("Configuring startup services")
// #define _LABEL _("Starting the system")
// #define _LABEL _("Setting up system boot")
// #define _LABEL _("Setting up network access")
// #define _LABEL _("Additional system components")
// #define _LABEL _("Configuring the installation of additional components")
// #define _LABEL _("Wait for the system to finish loading")
// #define _LABEL _("Selecting software from the installation media")
#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\
\n\
- modern versions of the Linux kernel,\n\
- wide range of software,\n\
- IT infrastructure management system,\n\
@ -405,7 +433,7 @@ Includes:\n\
#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\
#define slide_3_text _("- UBLinux Desktop Enterprise for workstations (PCs, laptops, thin clients, dashboards, including interactive touchscreens and Multi-touch, industrial computers, hardware and software complex),\n\
- UBLinux Server for server hardware and storage systems,\n\
- UBLinux Network for network equipment,\n\
- UBLinux Education for educational institutions,\n\
@ -414,13 +442,13 @@ Includes:\n\
#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")
Support for Multi-touch 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\
#define slide_5_text _("- each OS component is represented by a separate module with a digital signature and integrity control\n\
- there is no need to stop the system to connect and disconnect modules\n\
- allows flexible adaptation of the system to the customer's workflows\n\
- ensures high performance")
- ensures high performance and reliability of the system")
#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\
@ -428,33 +456,31 @@ Support for multitouch input systems with detection of up to 20 simultaneous tou
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\
#define slide_7_text _("A domain controller allows you to:\n\
\n\
use group policies,\n\
centralized software deployment across your fleet,\n\
organize network resources and provide flexible access to them\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_title _("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_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 obsolete 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_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.")
#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.")
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\
#define slide_12_text _("The system comes with a comprehensive set of software out of the box to performing most common tasks.\n\
\n\
The graphical package manager allows for quick and intuitive installation of additional software and hardware drivers.")
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.")
@ -465,11 +491,9 @@ The graphical package manager allows for quick and intuitive installation of add
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_15_text _("- repositories are developed and maintained by the operating system developer,\n\
- contain the most popular and modern software tools.\n\
The creation of custom 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\
@ -492,12 +516,12 @@ Used to automate deployment and configuration of workstations and servers, as we
- 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\
#define slide_20_text _("You can choose the level of technical support for the system that most appropriate for your needs.\n\
\n\
For more information, visit our website ublinux.ru in the \"Support Levels\" section.")
For more information, visit our website 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_21_text _("Continuously evolving and clearly describes the installation and configuration of the system, as well as the use of its features. Located at https://wiki.ublinux.com")
#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).")

@ -47,8 +47,8 @@
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">15</property>
<property name="margin-bottom">15</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
@ -139,6 +139,94 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkComboBoxText" id="TypeCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Device</item>
<item translatable="yes">Folder</item>
<item translatable="yes">ISO-image</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PathEntry">
<property name="sensitive">False</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="DeviceCombo">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="PathButton">
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AddButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
@ -166,89 +254,6 @@
<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="GtkComboBoxText" id="TypeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">Device</item>
<item translatable="yes">Folder</item>
<item translatable="yes">ISO-image</item>
</items>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PathEntry">
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="DeviceCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="active">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="PathButton">
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="AddButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="AddBox">
<property name="visible">True</property>

File diff suppressed because it is too large Load Diff

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