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

Reviewed-on: #1
commit 897885948f

@ -96,12 +96,7 @@ uninstall:
done done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \ @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"; \
else \
# $(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@if [[ -z "${DESTDIR}" ]]; then \ @if [[ -z "${DESTDIR}" ]]; then \
[[ -d "${DESTDIR}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ [[ -d "${DESTDIR}/usr/share/icons/hicolor/" ]] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \
@ -120,7 +115,7 @@ install: check uninstall
done done
@for SIZE in 16 32 48; do \ @for SIZE in 16 32 48; do \
install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ install -dm755 "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done done
@for FILE_ICON in $(wildcard icons/*/*.svg); do \ @for FILE_ICON in $(wildcard icons/*/*.svg); do \
SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \
@ -128,14 +123,8 @@ install: check uninstall
done done
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@if [[ "${PREFIX}" == @("/usr"|"/usr/") ]]; then \ @install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"; \ @sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"
else \
# install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
# sed -e "s+/usr/bin+${PREFIX}/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
sed -e "s+/usr/bin+/usr/bin+" -e "s+\.run+$${PREFIX//\//-}\.run+g" -i "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}$${PREFIX//\//-}.policy"; \
fi
@if [[ -z "${DESTDIR}" ]]; then \ @if [[ -z "${DESTDIR}" ]]; then \
ldconfig -n ${DESTDIR}/usr/lib; \ ldconfig -n ${DESTDIR}/usr/lib; \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \

@ -1,39 +1,48 @@
# [UBInstall](https://ublinux.ru/) # ubinstall-gtk
![ubinstall-icon-gui](ublinux-ubinstall_gui.svg) ![ubinstall-icon-console](ublinux-ubinstall_console.svg)
## Описание ## Description
The operating system installer (<b>UBInstall-gtk</b>) allows you to conveniently install the operating system.
Установщик оерационной системы UBLinux (<b>UBInstall</b>) позволяет в удобно установить операционную систему. # Build
In order to build ubinstall-gtk you will need:
## Установка - CMake
- C compiler
- GTK+ 3 & dependencies
- webkit2gtk (optional)
- timezonemap (optional)
- [libublsettings](https://gitea.ublinux.ru/Applications/libublsettings)
- [libublsettings-gtk3](https://gitea.ublinux.ru/Applications/libublsettings-gtk3)
- [libublsettingsui-gtk3](https://gitea.ublinux.ru/Applications/libublsettingsui-gtk3)
1. Скачайте репозитрий с утилитами Once you have all the necessary dependencies, you can use:
``` ```sh
$ git clone http://git.ublinux.ru:3000/UBGroup/ubinstall.git $ make
```
2. Перейдите в каталог ubinstall
```
$ cd ubinstall
``` ```
3. Установите утилиту
# Installation
After a successful build, just use:
```sh
$ sudo make install clean
``` ```
$ make
# Uninstallation
After a successful build, just use:
```sh
$ sudo make uninstall
``` ```
## Использование ## Usage
### <b>Запуск</b> ### <b>Launch</b>
Запуск утилиты возможен двумя способами: The utility can be launched in two ways:
1. Терминал 1. Terminal
CLI версия:
```
$ ubinstall.cli
``` ```
GTK версия $ ubinstall-gtk
```
$ ubinstall.gtk
``` ```
2. Ярлык 2. Shortcut
![alt text](screenshot/screenshot.png)

@ -22,6 +22,7 @@
<file>ubinstall-gtk-layouts.glade</file> <file>ubinstall-gtk-layouts.glade</file>
<file>ubinstall-gtk-keyboard-layouts.glade</file> <file>ubinstall-gtk-keyboard-layouts.glade</file>
<file>ubinstall-gtk-slider.glade</file> <file>ubinstall-gtk-slider.glade</file>
<file>ubinstall-gtk-package-info.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubinstall-gtk.css</file> <file>ubinstall-gtk.css</file>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -8,11 +8,6 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS}) link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER}) add_definitions(${GTK_CFLAGS_OTHER})
pkg_check_modules(VTE291 REQUIRED vte-2.91)
include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${VTE291_CFLAGS_OTHER})
pkg_check_modules(JSON REQUIRED json-c) pkg_check_modules(JSON REQUIRED json-c)
include_directories(${JSON_INCLUDE_DIRS}) include_directories(${JSON_INCLUDE_DIRS})
link_directories(${JSON_LIBRARY_DIRS}) link_directories(${JSON_LIBRARY_DIRS})
@ -23,17 +18,27 @@ include_directories(${PWQUALITY_INCLUDE_DIRS})
link_directories(${PWQUALITY_LIBRARY_DIRS}) link_directories(${PWQUALITY_LIBRARY_DIRS})
add_definitions(${PWQUALITY_CFLAGS_OTHER}) add_definitions(${PWQUALITY_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
find_library(TIMEZONEMAP_LIBRARIES_FOUND timezonemap)
option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND) if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON) add_definitions(-DWEBKIT_INCLUDE)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
include_directories(${WEBKIT_INCLUDE_DIRS}) include_directories(${WEBKIT_INCLUDE_DIRS})
link_directories(${WEBKIT_LIBRARY_DIRS}) link_directories(${WEBKIT_LIBRARY_DIRS})
add_definitions(${WEBKIT_CFLAGS_OTHER}) add_definitions(${WEBKIT_CFLAGS_OTHER})
endif() endif()
if(TIMEZONEMAP_LIBRARIES_FOUND)
message("TIMEZONEMAP ENABLED")
add_definitions(-DTIMEZONEMAP_INCLUDE)
PKG_CHECK_MODULES(TIMEZONEMAP REQUIRED timezonemap)
include_directories(${TIMEZONEMAP_INCLUDE_DIRS})
link_directories(${TIMEZONEMAP_LIBRARY_DIRS})
add_definitions(${TIMEZONEMAP_CFLAGS_OTHER})
endif()
set(GRESOURCE_C resources.c) set(GRESOURCE_C resources.c)
set(GRESOURCE_XML gresource.xml) set(GRESOURCE_XML gresource.xml)
@ -62,6 +67,7 @@ set(DEPENDFILES
../ubinstall-gtk-layouts.glade ../ubinstall-gtk-layouts.glade
../ubinstall-gtk-keyboard-layouts.glade ../ubinstall-gtk-keyboard-layouts.glade
../ubinstall-gtk-slider.glade ../ubinstall-gtk-slider.glade
../ubinstall-gtk-package-info.glade
../gresource.xml ../gresource.xml
../ubinstall-gtk.css ../ubinstall-gtk.css
../modules.csv ../modules.csv
@ -104,7 +110,7 @@ add_custom_target(
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
) )
add_definitions(-DVTE_INCLUDE) # add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \ -O2 -pipe -fno-plt -fexceptions \
@ -143,6 +149,7 @@ set(SOURCE_FILES
ubinstall-gtk-language.c ubinstall-gtk-language.c
ubinstall-gtk-config-hub.c ubinstall-gtk-config-hub.c
ubinstall-gtk-startup-apps.c ubinstall-gtk-startup-apps.c
ubinstall-gtk-ui-lang.c
ubinstall-gtk.h ubinstall-gtk.h
ubl-strings.h ubl-strings.h
) )
@ -154,6 +161,7 @@ set(LIBRARIES
${VTE291_LIBRARIES} ${VTE291_LIBRARIES}
${JSON_LIBRARIES} ${JSON_LIBRARIES}
${PWQUALITY_LIBRARIES} ${PWQUALITY_LIBRARIES}
${TIMEZONEMAP_LIBRARIES}
pthread pthread
ublsettings ublsettings
ublsettings-gtk3 ublsettings-gtk3

@ -164,7 +164,9 @@ void on_bootloader_user_add(GtkWidget *, main_window *widgets){
void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){
int size; int size;
config_str options = yon_config_load(get_menus_entry_command,&size); config_str options = yon_config_load(get_menus_entry_command,&size);
bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8");
textdomain("ublinux-init-grub-functions"); textdomain("ublinux-init-grub-functions");
for (int i=1;i<size;i++){ for (int i=1;i<size;i++){
yon_char_remove_last_symbol(options[i],'\n'); yon_char_remove_last_symbol(options[i],'\n');
int parsed_size; int parsed_size;
@ -184,6 +186,7 @@ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
} }
textdomain(LocaleName); textdomain(LocaleName);
} }
void yon_menu_ungrab(yon_menu_window *window){ void yon_menu_ungrab(yon_menu_window *window){
@ -239,15 +242,19 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){
gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemRow,-1); gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemRow,-1);
gtk_widget_hide(item->ArrowImage); gtk_widget_hide(item->ArrowImage);
} }
int size; int size;
config_str options = yon_config_load(get_menus_entry_command,&size); config_str options = yon_config_load(get_menus_entry_command,&size);
GHashTable *created = g_hash_table_new(g_str_hash,g_str_equal); GHashTable *created = g_hash_table_new(g_str_hash,g_str_equal);
bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8");
textdomain("ublinux-init-grub-functions"); textdomain("ublinux-init-grub-functions");
for (int i=1;i<size;i++){ for (int i=1;i<size;i++){
yon_char_remove_last_symbol(options[i],'\n'); yon_char_remove_last_symbol(options[i],'\n');
int parsed_size; int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,";"); config_str parsed = yon_char_parse(options[i],&parsed_size,";");
{
char *temp = _(parsed[1]);
parsed[1] = yon_char_new(temp);
}
int have_children=0; int have_children=0;
char *children_id; char *children_id;
if ((children_id=strstr(parsed[0],">"))){ if ((children_id=strstr(parsed[0],">"))){

@ -52,7 +52,7 @@ int yon_kernel_addon_save(main_window *widgets){
int yon_os_components_save(main_window *widgets){ int yon_os_components_save(main_window *widgets){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
GList *iter; GList *iter;
int size; int size=0;
int overall_num=0; int overall_num=0;
config_str modules = NULL; config_str modules = NULL;
for(iter = list;iter;iter=iter->next){ for(iter = list;iter;iter=iter->next){
@ -124,7 +124,7 @@ gboolean yon_os_component_insert(struct row_data *row_input){
gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1); gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1);
yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description); yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description);
char *modules = config(modules_parameter); char *modules = config(modules_parameter);
if (yon_char_is_empty(modules)){ if (yon_char_is_empty(modules)||yon_char_check_element(modules,row_input->name,",")||!strcmp(modules,"auto")){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1);
} }
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;

@ -140,7 +140,7 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum
GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE); GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE);
char *name_wrapped = yon_char_wrap_to_length_str(name,10); char *name_wrapped = yon_char_wrap_to_length_str(name,30);
cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
cur_icon->Label = gtk_label_new(name_wrapped); cur_icon->Label = gtk_label_new(name_wrapped);
cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL));
@ -153,10 +153,6 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum
gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox); gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0);
gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0);
gtk_widget_set_margin_bottom(cur_icon->MainBox,10);
gtk_widget_set_margin_top(cur_icon->MainBox,10);
gtk_widget_set_margin_start(cur_icon->MainBox,10);
gtk_widget_set_margin_end(cur_icon->MainBox,10);
gtk_flow_box_insert(target,flow,-1); gtk_flow_box_insert(target,flow,-1);
gtk_widget_show_all(flow); gtk_widget_show_all(flow);
free(name_wrapped); free(name_wrapped);

@ -1,18 +1,10 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
void configuration_mode_accept(GtkWidget *,configuration_window *window){ int yon_configuration_path_check(const char *path){
const char *path = gtk_entry_get_text(GTK_ENTRY(window->PathEntry)); char *full_path = NULL;
if (yon_char_is_empty(path)){
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;
}
if (access(path,F_OK)){
int homedir_create = 0; int homedir_create = 0;
int file_create = 0;
int pos = yon_char_find_last((char*)path,'/'); int pos = yon_char_find_last((char*)path,'/');
if (pos>=-1){ if (pos>-1){
char *path_copy = yon_char_new(path); char *path_copy = yon_char_new(path);
char *dir_path = yon_char_divide(path_copy,pos); char *dir_path = yon_char_divide(path_copy,pos);
if (access(dir_path,F_OK)){ if (access(dir_path,F_OK)){
@ -20,25 +12,41 @@ void configuration_mode_accept(GtkWidget *,configuration_window *window){
} }
free(path_copy); free(path_copy);
free(dir_path); free(dir_path);
} else {
homedir_create = 1;
} }
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = homedir_create?CREATE_CONFIG_DIALOG_LABEL_HOMEDIR:CREATE_CONFIG_DIALOG_LABEL;
data->title = WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(window->Window,data)==GTK_RESPONSE_ACCEPT){
char *full_path = NULL;
if (homedir_create){ if (homedir_create){
full_path = yon_char_unite(yon_ubl_user_get_home_directory(),"/",path,NULL); full_path = yon_char_unite(yon_ubl_user_get_home_directory(),"/",path,NULL);
} else if (file_create){
} else { } else {
full_path = yon_char_new(path); full_path = yon_char_new(path);
} }
if (access(full_path,F_OK)){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = homedir_create?CREATE_CONFIG_DIALOG_LABEL_HOMEDIR:CREATE_CONFIG_DIALOG_LABEL;
data->title = WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(NULL,data)==GTK_RESPONSE_ACCEPT){
yon_launch(ubconfig_file_create(full_path)); yon_launch(ubconfig_file_create(full_path));
} else return; struct passwd *user = getpwnam(yon_ubl_root_user_get());
if (chown(full_path,user->pw_uid,user->pw_gid)){};
}
} }
main_config.config_load_path = full_path;
if (!yon_char_is_empty(main_config.config_save_path)) free(main_config.config_save_path); if (!yon_char_is_empty(main_config.config_save_path)) free(main_config.config_save_path);
main_config.config_save_path = yon_char_new(path); main_config.config_save_path = yon_char_new(full_path);
return 1;
}
void configuration_mode_accept(GtkWidget *,configuration_window *window){
const char *path = gtk_entry_get_text(GTK_ENTRY(window->PathEntry));
if (yon_char_is_empty(path)){
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;
}
yon_configuration_path_check(path);
gtk_widget_destroy(window->Window); gtk_widget_destroy(window->Window);
} }

@ -240,10 +240,38 @@ void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row){
} }
} }
void yon_gtk_label_set_font(GtkLabel *label);
void yon_gtk_label_set_font(GtkLabel *label){
g_return_if_fail(GTK_IS_LABEL(label));
PangoAttrList *attributes = pango_attr_list_new();
PangoFontDescription *font_descr = pango_font_description_new();
pango_font_description_set_family(font_descr,"Source Code Pro 10");
PangoAttribute *font_attr = pango_attr_font_desc_new(font_descr);
pango_attr_list_insert(attributes,font_attr);
gtk_label_set_attributes(GTK_LABEL(label),attributes);
}
typedef struct {
GtkWidget *MainBox;
GtkWidget *InfoTree;
GtkListStore *InfoList;
} info_element;
info_element *yon_package_info_element_new();
info_element *yon_package_info_element_new(){
info_element *element = malloc(sizeof(info_element));
memset(element,0,sizeof(info_element));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_package_info);
element->MainBox = yon_gtk_builder_get_widget(builder,"MainBox");
element->InfoTree = yon_gtk_builder_get_widget(builder,"InfoTree");
element->InfoList = GTK_LIST_STORE(gtk_builder_get_object(builder,"InfoList"));
return element;
}
void on_kernel_addon_info(GtkLabel *self){ void on_kernel_addon_info(GtkLabel *self){
yon_window *window = yon_window_new(); yon_window *window = yon_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,icon_path,"info-label"); yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,PACKAGE_INFO_LABEL,icon_path,"info-label");
char *package=NULL; char *package=NULL;
package = yon_char_new(gtk_label_get_text(self)); package = yon_char_new(gtk_label_get_text(self));
int size; int size;
@ -258,17 +286,24 @@ void on_kernel_addon_info(GtkLabel *self){
GtkWidget *label = NULL; GtkWidget *label = NULL;
config_str info = yon_config_load(get_package_info_command(package),&size); config_str info = yon_config_load(get_package_info_command(package),&size);
if (size!=-1){ if (size!=-1){
char *final_text = yon_char_parsed_to_string(info,size,""); info_element *element = yon_package_info_element_new();
label = gtk_label_new(final_text); gtk_box_pack_start(GTK_BOX(window->MainBox),element->MainBox,1,1,0);
gtk_widget_show(label); for (int i=0;i<size;i++){
gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); yon_char_remove_last_symbol(info[i],'\n');
free(final_text); GtkTreeIter iter;
int parsed_size;
config_str parsed = yon_char_parse(info[i],&parsed_size,":");
gtk_list_store_append(element->InfoList,&iter);
gtk_list_store_set(element->InfoList,&iter,0,parsed[0],1,parsed[1],-1);
}
} else { } else {
label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL);
yon_gtk_label_set_font(GTK_LABEL(label));
gtk_widget_show(label); gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0);
}
gtk_label_set_xalign(GTK_LABEL(label),0); gtk_label_set_xalign(GTK_LABEL(label),0);
}
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
} }

@ -84,10 +84,15 @@ void on_summary_log_view(GtkWidget *,main_window *widgets){
} }
void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets) { void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets) {
int size; int size=0;
g_mutex_lock(&main_config.progress_mutex); g_mutex_lock(&main_config.progress_mutex);
config_str text = yon_file_open(progress_path, &size); config_str text = yon_file_open(progress_path, &size);
if (!text||!size){
g_mutex_unlock(&main_config.progress_mutex);
return;
}
g_mutex_unlock(&main_config.progress_mutex); g_mutex_unlock(&main_config.progress_mutex);
if (size) { if (size) {
@ -114,5 +119,19 @@ void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonito
} }
yon_char_parsed_free(text, size); yon_char_parsed_free(text, size);
size=0;
text=NULL;
}
}
gboolean yon_progress_bar_start(main_window *widgets){
GFile *file_desc = g_file_new_for_path(progress_path);
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);
FILE *file = fopen(progress_path,"w");
if (file){
fclose(file);
} }
return G_SOURCE_REMOVE;
} }

@ -8,10 +8,10 @@ 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_WELCOME: return YON_PAGE_LICENCE; break;
case YON_PAGE_LICENCE: return YON_PAGE_SECTIONS; 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_SECTIONS: return yon_sections_get_next_page(widgets); break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_OS_COMPONENTS: return main_config.configure_mode?YON_PAGE_CONFIG_HUB:YON_PAGE_INSTALLATION_BEGIN; break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_CONFIG_HUB; 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_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_CONFIG_HUB: return YON_PAGE_INSTALLATION; break; case YON_PAGE_CONFIG_HUB: return main_config.configure_mode? YON_PAGE_CONFIGURE_END:YON_PAGE_INSTALLATION; break;
case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_KERNEL: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_KERNEL_ADDON: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_PACMAN_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
@ -29,23 +29,24 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_INSTALL_SAME_PARTITION: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_ADVANCED: return YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_INSTALL_ADVANCED: return YON_PAGE_OS_COMPONENTS; break;
case YON_PAGE_INSTALL_RECOVERY: return yon_recovery_get_next(widgets); break; case YON_PAGE_INSTALL_RECOVERY: return yon_recovery_get_next(widgets); break;
case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break; case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break; case YON_PAGE_RECOVERY_OS_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_RECOVERY_BEGIN; break; case YON_PAGE_RECOVERY_USRDATA_ONLY: return main_config.configure_mode?YON_PAGE_CONFIGURE_END:YON_PAGE_RECOVERY_BEGIN; break;
case YON_PAGE_RECOVERY_BEGIN: main_config.save_configured = 1; return YON_PAGE_RECOVERY_PROCESS; break; case YON_PAGE_RECOVERY_BEGIN: main_config.save_configured = 1; return YON_PAGE_RECOVERY_PROCESS; break;
case YON_PAGE_RECOVERY_PROCESS: return YON_PAGE_RECOVERY_COMPLETION; break; case YON_PAGE_RECOVERY_PROCESS: return YON_PAGE_RECOVERY_COMPLETION; break;
case YON_PAGE_INSTALLATION: return YON_PAGE_COMPLETION; break; case YON_PAGE_INSTALLATION: return YON_PAGE_COMPLETION; break;
case YON_PAGE_CONFIGURE_SAVE: case YON_PAGE_CONFIGURE_SAVE:
break; break;
case YON_PAGE_CONFIGURE_END:
gtk_main_quit();
exit(0);
break;
case YON_PAGE_COMPLETED: case YON_PAGE_COMPLETED:
case YON_PAGE_INSTALL_ERROR: case YON_PAGE_INSTALL_ERROR:
case YON_PAGE_CONFIGURE_END:
case YON_PAGE_RECOVERY_COMPLETION: case YON_PAGE_RECOVERY_COMPLETION:
case YON_PAGE_COMPLETION: case YON_PAGE_COMPLETION:
on_reboot_accepted(widgets); on_reboot_accepted(widgets);
gtk_main_quit();
exit(0);
break; break;
// default:return YON_PAGE_WELCOME; // default:return YON_PAGE_WELCOME;
} }
@ -57,7 +58,38 @@ enum YON_PAGES yon_page_get_prev(enum YON_PAGES page){
case YON_PAGE_WELCOME: return YON_PAGE_WELCOME; break; case YON_PAGE_WELCOME: return YON_PAGE_WELCOME; break;
case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break; case YON_PAGE_LICENCE: return YON_PAGE_WELCOME; break;
case YON_PAGE_SECTIONS: return YON_PAGE_LICENCE; break; case YON_PAGE_SECTIONS: return YON_PAGE_LICENCE; break;
case YON_PAGE_OS_COMPONENTS: return YON_PAGE_SECTIONS; break; case YON_PAGE_OS_COMPONENTS: {
char *install_type = config(AUTOINSTALL_TYPE_INSTALL);
if (!strcmp(install_type,"fast")){
return YON_PAGE_INSTALL_COMMON; break;
} else if (!strcmp(install_type,"next")){
return YON_PAGE_INSTALL_SEPARATE; break;
} else if (!strcmp(install_type,"part")){
return YON_PAGE_INSTALL_SAME_PARTITION; break;
} else if (!strcmp(install_type,"custom")){
return YON_PAGE_INSTALL_ADVANCED; break;
} else if (!strcmp(install_type,"grub_install")){
return YON_PAGE_RECOVERY_GRUB_INSTALL; break;
} else if (!strcmp(install_type,"grub_update")){
return YON_PAGE_RECOVERY_GRUB_UPDATE; break;
} else if (!strcmp(install_type,"system_only")){
return YON_PAGE_RECOVERY_OS_ONLY; break;
} else if (!strcmp(install_type,"data_only")){
return YON_PAGE_RECOVERY_USRDATA_ONLY; break;
}
} break;
case YON_PAGE_RECOVERY_BEGIN:{
char *install_type = config(AUTOINSTALL_TYPE_INSTALL);
if (!strcmp(install_type,"grub_install")){
return YON_PAGE_RECOVERY_GRUB_INSTALL; break;
} else if (!strcmp(install_type,"grub_update")){
return YON_PAGE_RECOVERY_GRUB_UPDATE; break;
} else if (!strcmp(install_type,"system_only")){
return YON_PAGE_RECOVERY_OS_ONLY; break;
} else if (!strcmp(install_type,"data_only")){
return YON_PAGE_RECOVERY_USRDATA_ONLY; break;
}
} break;
case YON_PAGE_INSTALLATION_BEGIN: return YON_PAGE_OS_COMPONENTS; 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_SOFTWARE: return YON_PAGE_CONFIG_HUB; break;
case YON_PAGE_CONFIG_HUB: return YON_PAGE_CONFIG_HUB; break; case YON_PAGE_CONFIG_HUB: return YON_PAGE_CONFIG_HUB; break;
@ -106,11 +138,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
gtk_widget_hide(widgets->BackButton); gtk_widget_hide(widgets->BackButton);
gtk_widget_hide(widgets->SourceButton); gtk_widget_hide(widgets->SourceButton);
gtk_widget_show(widgets->NextButton); gtk_widget_show(widgets->NextButton);
if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
gtk_widget_show(widgets->StartScenarioButton);
} else {
gtk_widget_hide(widgets->StartScenarioButton);
}
break; break;
case YON_PAGE_LICENCE: case YON_PAGE_LICENCE:
gtk_widget_show(widgets->BackButton); gtk_widget_show(widgets->BackButton);
@ -152,6 +179,11 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){
gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->BackButton,1);
gtk_widget_set_sensitive(widgets->NextButton,1); gtk_widget_set_sensitive(widgets->NextButton,1);
gtk_widget_set_sensitive(widgets->CancelInstallButton,1); gtk_widget_set_sensitive(widgets->CancelInstallButton,1);
if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){
gtk_widget_show(widgets->StartScenarioButton);
} else {
gtk_widget_hide(widgets->StartScenarioButton);
}
break; break;
default: default:
gtk_widget_set_sensitive(widgets->BackButton,1); gtk_widget_set_sensitive(widgets->BackButton,1);
@ -385,6 +417,9 @@ enum YON_PAGES yon_recovery_get_next(main_window *widgets){
void yon_page_init(main_window *widgets, enum YON_PAGES page){ void yon_page_init(main_window *widgets, enum YON_PAGES page){
switch(page){ switch(page){
case YON_PAGE_WELCOME:
set_locales_list(widgets);
break;
case YON_PAGE_CONFIG_HUB: case YON_PAGE_CONFIG_HUB:
yon_configuration_hub_init(widgets); yon_configuration_hub_init(widgets);
break; break;
@ -477,14 +512,25 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets); yon_page_update(widgets);
} }
void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ #include <signal.h>
void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
enum YON_PAGES cur_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook));
switch (cur_page){
case YON_PAGE_CONFIGURE_END:
gtk_main_quit();
break;
default: {
if (main_config.install_thread){ if (main_config.install_thread){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=INTERRUPT_TEXT_LABEL; data->action_text=INTERRUPT_TEXT_LABEL;
data->title=WARNING_TITLE_LABEL; data->title=WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){ if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT ){
pthread_cancel((pthread_t)main_config.install_thread); pthread_cancel(main_config.install_thread);
kill(main_config.install_thread,SIGKILL);
g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->install_info_monitor),yon_installation_progress_update,widgets);
g_file_monitor_cancel(widgets->install_info_monitor);
widgets->install_info_monitor = NULL;
gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL);
GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton));
gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON);
@ -496,6 +542,8 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets); yon_page_update(widgets);
main_config.save_done=0; main_config.save_done=0;
main_config.install_complete=0; main_config.install_complete=0;
main_config.save_configured=0;
main_config.install_complete=0;
main_config.install_thread=0; main_config.install_thread=0;
} }
} else { } else {
@ -510,9 +558,13 @@ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){
yon_page_update(widgets); yon_page_update(widgets);
main_config.save_done=0; main_config.save_done=0;
main_config.install_complete=0; main_config.install_complete=0;
main_config.save_configured=0;
main_config.install_complete=0;
main_config.install_thread=0; main_config.install_thread=0;
} }
} }
}
}
void on_additional_page_clicked(GtkWidget *, main_window *widgets){ void on_additional_page_clicked(GtkWidget *, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SOFTWARE); gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_SOFTWARE);

@ -1,4 +1,7 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
#ifdef TIMEZONEMAP_INCLUDE
#include "timezonemap/cc-timezone-map.h"
#endif
int yon_region_save(main_window *widgets){ int yon_region_save(main_window *widgets){
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->RegionCombo))==-1){
@ -18,6 +21,19 @@ int yon_region_save(main_window *widgets){
return 1; return 1;
} }
#ifdef TIMEZONEMAP_INCLUDE
void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *);
void on_zone_changed(GtkWidget *, main_window *widgets){
g_signal_handlers_block_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
const char *region = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
const char *zone = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
char *timezone = yon_char_unite(region,"/",zone,NULL);
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),timezone);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionMapTarget),G_CALLBACK(on_map_selection_changed),widgets);
}
#endif
void on_region_changed(GtkComboBox *self, main_window *widgets){ void on_region_changed(GtkComboBox *self, main_window *widgets){
char *active = (char*)gtk_combo_box_get_active_id(self); char *active = (char*)gtk_combo_box_get_active_id(self);
active = yon_char_append("/usr/share/zoneinfo/",active); active = yon_char_append("/usr/share/zoneinfo/",active);
@ -34,7 +50,41 @@ void on_region_changed(GtkComboBox *self, main_window *widgets){
free(active); free(active);
} }
#ifdef TIMEZONEMAP_INCLUDE
void on_map_selection_changed(GtkWidget *,CcTimezoneLocation *location,main_window *widgets){
if (!location) return;
g_signal_handlers_block_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
char *zone = yon_char_new(cc_timezone_location_get_zone(location));
char *timezone = yon_char_divide_search(zone,"/",-1);
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->RegionCombo),timezone);
while(gtk_events_pending()) gtk_main_iteration();
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->ZoneCombo),zone);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(on_zone_changed),widgets);
}
#endif
void yon_region_init(main_window *widgets){ void yon_region_init(main_window *widgets){
#ifdef TIMEZONEMAP_INCLUDE
yon_debug_output("%s\n","TIMEZONEMAP enabled");
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->RegionMapBox));
if (list){
GList *iter;
for (iter = list; iter; iter=iter->next){
gtk_widget_destroy(iter->data);
}
g_list_free(list);
}
widgets->RegionMapTarget = GTK_WIDGET(cc_timezone_map_new());
gtk_box_pack_start(GTK_BOX(widgets->RegionMapBox),GTK_WIDGET(widgets->RegionMapTarget),1,1,0);
g_signal_connect(G_OBJECT(widgets->RegionMapTarget),"location-changed",G_CALLBACK(on_map_selection_changed),widgets);
gtk_widget_show(GTK_WIDGET(widgets->RegionMapTarget));
char *config_param = config(zone_parameter);
if (!yon_char_is_empty(config_param)){
cc_timezone_map_set_timezone(CC_TIMEZONE_MAP(widgets->RegionMapTarget),config_param);
// cc_timezone_map_set_location(CC_TIMEZONE_MAP(widgets->RegionMapTarget),lon, lat);
}
#endif
int size; int size;
config_str parsed = NULL; config_str parsed = NULL;
parsed = yon_dir_get_contents(zone_path,&size); parsed = yon_dir_get_contents(zone_path,&size);

@ -38,8 +38,9 @@ void on_config_local_load(GtkWidget *,main_window *widgets){
if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path); if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path);
main_config.config_load_path = yon_char_new("system"); main_config.config_load_path = yon_char_new("system");
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
// yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_LOCAL; main_config.load_mode=YON_CONFIG_LOCAL;
yon_main_window_update_locale(widgets);
yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
} }
void on_config_global_load(GtkWidget *,main_window *widgets){ void on_config_global_load(GtkWidget *,main_window *widgets){
@ -50,17 +51,19 @@ void on_config_global_load(GtkWidget *,main_window *widgets){
if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path); if (!yon_char_is_empty(main_config.config_load_path)) free(main_config.config_load_path);
main_config.config_load_path = yon_char_new("global"); main_config.config_load_path = yon_char_new("global");
yon_load_proceed(YON_CONFIG_GLOBAL); yon_load_proceed(YON_CONFIG_GLOBAL);
// yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_GLOBAL; main_config.load_mode=YON_CONFIG_GLOBAL;
yon_main_window_update_locale(widgets);
yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
} }
void on_config_custom_load(GtkWidget *,main_window *){ void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_CUSTOM); yon_load_proceed(YON_CONFIG_CUSTOM);
// yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_CUSTOM; main_config.load_mode=YON_CONFIG_CUSTOM;
yon_main_window_update_locale(widgets);
} }
void on_config_custom_load_last(GtkWidget *,main_window *){ void on_config_custom_load_last(GtkWidget *,main_window *widgets){
yon_config_clean(); yon_config_clean();
if (!yon_char_is_empty(config_get_default_command)) if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL); yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
@ -68,6 +71,7 @@ void on_config_custom_load_last(GtkWidget *,main_window *){
yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL); yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL);
// yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook))); // yon_page_init(widgets,gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->Notebook)));
main_config.load_mode=YON_CONFIG_CUSTOM; main_config.load_mode=YON_CONFIG_CUSTOM;
yon_main_window_update_locale(widgets);
} }
void on_config_global_local_save(GtkWidget *,main_window *widgets){ void on_config_global_local_save(GtkWidget *,main_window *widgets){
@ -176,14 +180,7 @@ void *on_config_save(void *data){
yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return 0; return 0;
} }
FILE *file = fopen(progress_path,"w"); g_idle_add((GSourceFunc)yon_progress_bar_start,widgets);
if (file){
fclose(file);
}
GFile *file_desc = g_file_new_for_path(progress_path);
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);
if (!main_config.dry_run){ if (!main_config.dry_run){
char *command = yon_debug_output("%s\n",save_config_command(yon_char_parsed_to_string(parameters,size," "))); char *command = yon_debug_output("%s\n",save_config_command(yon_char_parsed_to_string(parameters,size," ")));
yon_char_parsed_free(parameters,size); yon_char_parsed_free(parameters,size);
@ -295,6 +292,9 @@ void *on_setup_system_configuration(void * data){
if (!main_config.dry_run){ if (!main_config.dry_run){
char *parameter_string = yon_char_parsed_to_string(all_parameters,size," "); char *parameter_string = yon_char_parsed_to_string(all_parameters,size," ");
char *command = set_user_config_command(parameter_string); char *command = set_user_config_command(parameter_string);
// if (main_config.debug_mode){
// yon_launch(ubinstall_dry_run_command);
// }
if (system(yon_debug_output("%s\n",command))){}; if (system(yon_debug_output("%s\n",command))){};
yon_char_parsed_free(all_parameters,size); yon_char_parsed_free(all_parameters,size);
free(command); free(command);
@ -432,19 +432,20 @@ int yon_config_save(main_window *widgets){
return 1; return 1;
} }
void yon_config_restore(main_window *widgets){ void yon_config_restore(main_window *){
switch(main_config.load_mode){ yon_load_proceed(main_config.load_mode);
case YON_CONFIG_GLOBAL: // switch(main_config.load_mode){
on_config_global_load(NULL,widgets); // case YON_CONFIG_GLOBAL:
break; // on_config_global_load(NULL,widgets);
case YON_CONFIG_LOCAL: // break;
on_config_local_load(NULL,widgets); // case YON_CONFIG_LOCAL:
break; // on_config_local_load(NULL,widgets);
case YON_CONFIG_CUSTOM: // break;
on_config_custom_load_last(NULL,widgets); // case YON_CONFIG_CUSTOM:
// on_config_custom_load_last(NULL,widgets);
}
on_config_global_load(NULL,widgets); // }
// on_config_global_load(NULL,widgets);
yon_launch("ubconfig --source system remove [autoinstall]"); yon_launch("ubconfig --source system remove [autoinstall]");
yon_config_save_simple(YON_CONFIG_LOCAL,"system"); // yon_config_save_simple(YON_CONFIG_LOCAL,"system");
} }

@ -1,17 +1,43 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
void on_source_changed(GtkComboBox *self){ void on_source_changed(GtkComboBox *self){
GtkWidget *devices_combo = g_object_get_data(G_OBJECT(self),"target"); source_element *element = g_object_get_data(G_OBJECT(self),"source_element");
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)){ if (gtk_combo_box_get_active(self)){
gtk_widget_show(path_button); gtk_widget_show(element->PathButton);
gtk_widget_show(path_combo); gtk_widget_show(element->PathEntry);
gtk_widget_hide(devices_combo); gtk_widget_hide(element->DeviceCombo);
} else{ } else{
gtk_widget_hide(path_button); gtk_widget_hide(element->PathButton);
gtk_widget_hide(path_combo); gtk_widget_hide(element->PathEntry);
gtk_widget_show(devices_combo); gtk_widget_show(element->DeviceCombo);
}
}
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){
source_element *element = (source_element*)g_object_get_data(G_OBJECT(iter->data),"source_element");
if (!iter->next&&!element->AddButton){
GtkWidget *button = gtk_button_new_from_icon_name(add_icon_path,GTK_ICON_SIZE_BUTTON);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_source_add),window);
gtk_box_pack_end(GTK_BOX(element->MainBox),button,0,0,0);
element->AddButton = button;
gtk_style_context_add_class(gtk_widget_get_style_context(button),"thin");
gtk_style_context_add_class(gtk_widget_get_style_context(button),"instant");
gtk_widget_show(button);
} else if (iter->next){
if (element->AddButton) {
gtk_widget_destroy(element->AddButton);
element->AddButton = NULL;
}
}
if (!iter->next&&!iter->prev){
gtk_widget_hide(element->RemoveButton);
} else {
gtk_widget_show(element->RemoveButton);
}
} }
} }
@ -25,22 +51,21 @@ source_element *yon_source_element_new(){
element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo"); element->DeviceCombo = yon_gtk_builder_get_widget(builder,"DeviceCombo");
element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton"); element->PathButton = yon_gtk_builder_get_widget(builder,"PathButton");
element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton"); element->RemoveButton = yon_gtk_builder_get_widget(builder,"RemoveButton");
element->AddButton = NULL;
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->DeviceCombo)); yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->DeviceCombo));
yon_gtk_combo_box_block_scroll(GTK_COMBO_BOX(element->TypeCombo)); 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->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->PathButton),"clicked",G_CALLBACK(on_source_choose),element);
g_signal_connect(G_OBJECT(element->TypeCombo),"changed",G_CALLBACK(on_source_changed),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),"source_element",element);
g_object_set_data(G_OBJECT(element->MainBox),"source_element",element); 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),"source_element",element);
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); gtk_widget_hide(element->PathButton);
int size; int size;
config_str parts = yon_config_load(get_parts_and_devices_command, &size); config_str parts = yon_config_load(get_parts_and_devices_command, &size);
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
@ -59,6 +84,11 @@ source_element *yon_source_element_new(){
void yon_source_element_add(char *key,void*,source_window *window){ void yon_source_element_add(char *key,void*,source_window *window){
source_element *element = yon_source_element_new(); source_element *element = yon_source_element_new();
gtk_box_pack_start(GTK_BOX(window->AddBox),element->MainBox,0,0,0);
g_object_set_data(G_OBJECT(element->MainBox),"window",window);
if (yon_char_is_empty(key)) return;
if (yon_char_check_begins_with(key,"/dev/")){ 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_id(GTK_COMBO_BOX(element->DeviceCombo),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),0);
@ -69,61 +99,27 @@ void yon_source_element_add(char *key,void*,source_window *window){
gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key); gtk_entry_set_text(GTK_ENTRY(element->PathEntry),key);
gtk_combo_box_set_active(GTK_COMBO_BOX(element->TypeCombo),1); 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){ 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)); yon_source_element_add(NULL,NULL,window);
if (yon_char_is_empty(path)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(gtk_widget_get_visible(window->PathEntry)?window->PathEntry:window->DeviceCombo);
return;
}
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); 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){ void on_source_remove(GtkWidget *,source_element *element){
source_window *window = g_object_get_data(G_OBJECT(element->MainBox),"window"); 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)); gtk_widget_destroy(element->MainBox);
dictionary *dict = yon_dictionary_get(&window->sources,(char*)path);
if (dict){
window->sources = yon_dictionary_rip(dict);
yon_source_update(window); yon_source_update(window);
} }
}
void on_source_choose(GtkWidget *self){ void on_source_choose(GtkWidget *self){
GtkWidget *target_entry = g_object_get_data(G_OBJECT(self),"target"); source_element *element = g_object_get_data(G_OBJECT(self),"source_element");
GtkWidget *target_mode = g_object_get_data(G_OBJECT(self),"combo"); switch (gtk_combo_box_get_active(GTK_COMBO_BOX(element->TypeCombo))){
switch (gtk_combo_box_get_active(GTK_COMBO_BOX(target_mode))){
case 1:{ case 1:{
filechooser_window *dialog = yon_file_chooser_window_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); 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"); 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){ if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection); gtk_entry_set_text(GTK_ENTRY(element->PathEntry),dialog->last_success_selection);
free(dialog); free(dialog);
} }
@ -137,7 +133,7 @@ void on_source_choose(GtkWidget *self){
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog->MainFileChooser),filter);
if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){ if (yon_file_chooser_start(dialog)==GTK_RESPONSE_ACCEPT){
gtk_entry_set_text(GTK_ENTRY(target_entry),dialog->last_success_selection); gtk_entry_set_text(GTK_ENTRY(element->PathEntry),dialog->last_success_selection);
free(dialog); free(dialog);
} }
@ -151,10 +147,6 @@ void on_source_accept(GtkWidget *,source_window *window){
on_subwindow_close(window->Window); on_subwindow_close(window->Window);
return; 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; char *sources_list = NULL;
GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox)); GList *list = gtk_container_get_children(GTK_CONTAINER(window->AddBox));
GList *iter; GList *iter;
@ -207,26 +199,6 @@ void on_source_accept(GtkWidget *,source_window *window){
} else { } else {
yon_config_remove_by_key(source_parameter); yon_config_remove_by_key(source_parameter);
} }
int size;
config_str paths = NULL;
dictionary *dict;
if (window->sources){
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,",");
if (!yon_char_is_empty(parameter_string)) free(parameter_string);
if (!main_config.configure_mode){ if (!main_config.configure_mode){
int size; int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_parameter,NULL); config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_parameter,NULL);
@ -238,7 +210,6 @@ void on_source_accept(GtkWidget *,source_window *window){
yon_char_parsed_free(parameters,size); yon_char_parsed_free(parameters,size);
} }
} }
yon_dictionary_free_all(window->sources,NULL);
on_subwindow_close(window->Window); on_subwindow_close(window->Window);
free(window); free(window);
} }
@ -252,54 +223,27 @@ source_window *yon_source_window_new(){
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->AutoSwitch = yon_gtk_builder_get_widget(builder,"AutoSwitch"); 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->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->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->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),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); char *config_parameter = config(source_parameter);
if (window->sources){ if (!yon_char_is_empty(config_parameter)){
yon_dictionary_free_all(window->sources,NULL); gtk_switch_set_active(GTK_SWITCH(window->AutoSwitch),0);
}
int size; int size;
config_str parsed = yon_char_parse(config_parameter,&size,","); config_str parsed = yon_char_parse(config_parameter,&size,",");
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
yon_dictionary_add_or_create_if_exists_with_data(window->sources,parsed[i],NULL); yon_source_element_add(parsed[i],NULL,window);
} }
yon_char_parsed_free(parsed,size); yon_char_parsed_free(parsed,size);
} else {
yon_source_element_add(NULL,NULL,window);
} }
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; return window;
} }

@ -34,9 +34,9 @@ void on_startup_apps_remove(GtkWidget *self,main_window *widgets){
if (!deletable) return; if (!deletable) return;
dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = SERVICE_REMOVE_CONFIRMATION_LABEL(unit); data->action_text = SERVICE_REMOVE_CONFIRMATION_LABEL(unit);
data->title = SERVICE_REMOVE_TITLE_LABEL; data->title = APPLICATIONS_REMOVE_TITLE_LABEL;
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
gtk_list_store_remove(widgets->StartupList,&iter); gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
} }
} }
} }
@ -155,7 +155,7 @@ startup_service_window *yon_startup_app_window_new(){
window->GroupLabel = yon_gtk_builder_get_widget(builder,"GroupLabel"); window->GroupLabel = yon_gtk_builder_get_widget(builder,"GroupLabel");
window->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); window->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel");
gtk_label_set_text(GTK_LABEL(window->AppLabel),APP_LABEL); gtk_label_set_text(GTK_LABEL(window->AppLabel),APP_LABEL);
gtk_label_set_text(GTK_LABEL(window->AppLabel),GROUP_LABEL); gtk_label_set_text(GTK_LABEL(window->GroupLabel),GROUP_LABEL);
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_object_set_data(G_OBJECT(window->AcceptButton),"startup_service_window",window); g_object_set_data(G_OBJECT(window->AcceptButton),"startup_service_window",window);
@ -165,20 +165,20 @@ startup_service_window *yon_startup_app_window_new(){
void on_startup_app_add(GtkWidget *, main_window *widgets){ void on_startup_app_add(GtkWidget *, main_window *widgets){
startup_service_window *window = yon_startup_app_window_new(); startup_service_window *window = yon_startup_app_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_ADD_TITLE_LABEL,icon_path,"app_add_window"); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),APPLICATIONS_ADD_TITLE_LABEL,icon_path,"app_add_window");
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_add_accept),widgets); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_add_accept),widgets);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
} }
void on_startup_app_edit(GtkWidget *, main_window *widgets){ void on_startup_app_edit(GtkWidget *, main_window *widgets){
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupServicesTree)),NULL,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->StartupAppsTree)),NULL,&iter)){
char *app, *unit, *description; char *app, *unit, *description;
int status; int status;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,1,&unit,2,&app,3,&description,4,&status,-1); gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupAppsList),&iter,1,&unit,2,&app,3,&description,4,&status,-1);
if (status){ if (status){
startup_service_window *window = yon_startup_app_window_new(); startup_service_window *window = yon_startup_app_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),SERVICE_EDIT_TITLE_LABEL,icon_path,"app_add_window"); yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->MainWindow),APPLICATIONS_EDIT_TITLE_LABEL,icon_path,"app_add_window");
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_edit_accept),widgets); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_startup_app_edit_accept),widgets);
gtk_entry_set_text(GTK_ENTRY(window->UnitEntry),unit); gtk_entry_set_text(GTK_ENTRY(window->UnitEntry),unit);
gtk_entry_set_text(GTK_ENTRY(window->ServiceEntry),app); gtk_entry_set_text(GTK_ENTRY(window->ServiceEntry),app);

@ -1,12 +1,19 @@
#include "ubinstall-gtk.h" #include "ubinstall-gtk.h"
void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets){ void on_srartup_services_toggled(GtkCellRenderer *self, char *path, main_window *widgets){
GtkWidget *tree = NULL;
if (self == widgets->StartupChosenCell){
tree = widgets->StartupServicesTree;
} else if (self == widgets->StartupAppsChosenCell){
tree = widgets->StartupAppsTree;
}
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree));
GtkTreeIter iter; GtkTreeIter iter;
int status; int status;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->StartupList),&iter,path); gtk_tree_model_get_iter_from_string(model,&iter,path);
gtk_tree_model_get(GTK_TREE_MODEL(widgets->StartupList),&iter,0,&status,-1); gtk_tree_model_get(model,&iter,0,&status,-1);
gtk_list_store_set(widgets->StartupList,&iter,0,!status,-1); gtk_list_store_set(GTK_LIST_STORE(model),&iter,0,!status,-1);
} }
void on_startup_services_selection_changed(GtkWidget *,main_window *widgets){ void on_startup_services_selection_changed(GtkWidget *,main_window *widgets){

@ -0,0 +1,213 @@
#include "ubinstall-gtk.h"
void on_locale_changed(GtkWidget *,main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return;
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
char *config_code = config(installer_locale_parameter);
if (yon_char_is_empty(config_code)){
config_code = setlocale(LC_ALL,NULL);
}
GtkTreeIter itar;
for_iter(widgets->InstallerCountryFilter,&iter){
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&itar,&iter);
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerCountryList),&itar,2,&target,-1);
if (!strcmp(config_code,target)){
gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&iter);
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
break;
}
}
}
void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, main_window *widgets){
char *window_language;
GtkTreeIter iter;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&model,&iter)) return;
gtk_tree_model_get(model,&iter,2,&window_language,-1);
if (!yon_char_is_empty(window_language)){
char *prev_lang = config(installer_locale_parameter);
if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
yon_config_register(installer_locale_parameter,installer_locale_parameter_command,(char*)window_language);
}
char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_locale_parameter,NULL);
char *command_parameters = yon_char_parsed_to_string(parameters,size," ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
if (!system(command)){};
yon_main_window_update_locale(widgets);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
model = GTK_TREE_MODEL(widgets->InstallerLanguageList);
gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
}
void yon_startup_language_init(){
char *source = yon_config_get_type_path(main_config.load_mode);
if (!source){
source = main_config.custom_load_path;
}
char *command =yon_config_parameter_prepare_command(get_localisation_command,source,NULL,NULL);
int size;
config_str parsed = yon_config_load(command,&size);
{
if (size>0&&!yon_char_is_empty(parsed[0])&&strcmp(parsed[0],"(null)\n")){
yon_char_remove_last_symbol(parsed[0],'\n');
free(yon_char_divide_search(parsed[0],"=",-1));
yon_config_register(installer_locale_parameter,installer_locale_parameter_command,parsed[0]);
}
if (size>1&&!yon_char_is_empty(parsed[1])&&strcmp(parsed[1],"(null)\n")){
yon_char_remove_last_symbol(parsed[1],'\n');
free(yon_char_divide_search(parsed[1],"=",-1));
yon_config_register(lang_parameter,lang_parameter_command,parsed[1]);
}
if (size>2&&!yon_char_is_empty(parsed[2])&&strcmp(parsed[2],"(null)\n")){
yon_char_remove_last_symbol(parsed[2],'\n');
free(yon_char_divide_search(parsed[2],"=",-1));
yon_config_register(SYSTEM_LANG_parameter,SYSTEM_LANG_parameter_command,parsed[2]);
}
}
}
void yon_main_window_update_locale(main_window *widgets){
char *locale = config(installer_locale_parameter);
if (yon_char_is_empty(locale)){
char *sys_locale = config(lang_parameter);
if (!yon_char_is_empty(sys_locale)){
locale = sys_locale;
} else {
char *lang = config("LANG");
if (!yon_char_is_empty(lang)){
locale = lang;
}
}
}
locale = setlocale(LC_ALL,locale);
gtk_widget_destroy(widgets->MainWindow);
textdomain(LocaleName);
g_setenv("LANGUAGE",locale,1);
yon_main_window_create(widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
yon_window_config_load(path);
}
typedef struct{
char *locale_name;
char *code;
char *localised_name;
char *code_full;
} locale_struct;
int yon_char_parsed_compare(const void *a, const void *b){
const config_str str_a = (const config_str)a;
const config_str str_b = (const config_str)b;
return strcmp(*str_a,*str_b);
}
gboolean on_languages_search_func(GtkTreeModel *model, gint ,const char *key, GtkTreeIter *iter, main_window *){
char *language, *language_localised;
gtk_tree_model_get(model,iter,1,&language,4,&language_localised,-1);
if (strstr(language,key)||strstr(language_localised,key)){
return 0;
}
return 1;
}
void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList);
char *config_code = yon_char_new(config(installer_locale_parameter));
int size;
config_str locales = yon_locale_get_all_codes(&size);
qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
GtkTreeIter iter,itar;
GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
textdomain(LOCALES_DOMAIN_NAME);
for (int i=0;i<size;i++){
char *lang_ab = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_AB);
char *code = yon_locale_get_parameter(locales[i],YON_LOCALE_CODE);
char *language = yon_locale_get_parameter(locales[i],YON_LOCALE_LANGUAGE);
char *lang_name = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_NAME);
char *territory = yon_locale_get_parameter(locales[i],YON_LOCALE_TERRITORY);
char *title = yon_locale_get_parameter(locales[i],YON_LOCALE_TITLE);
if (yon_char_is_empty(lang_ab)||
yon_char_is_empty(language)||
yon_char_is_empty(lang_name)||
yon_char_is_empty(territory)||
yon_char_is_empty(title)) continue;
char *country = yon_char_unite(language,", ",territory,NULL);
if (!g_hash_table_contains(added,lang_ab)){
g_hash_table_add(added,yon_char_new(lang_ab));
gtk_list_store_append(widgets->InstallerLanguageList,&iter);
gtk_list_store_set(widgets->InstallerLanguageList,&iter,
0,lang_ab,
1,_(language),
2,lang_name,
3,locales[i],
4,language,
-1);
}
gtk_list_store_append(widgets->InstallerCountryList,&itar);
gtk_list_store_set(widgets->InstallerCountryList,&itar,
0,lang_ab,
1,_(country),
2,code,
3,_(title),
-1);
if (yon_char_is_empty(config_code)){
config_code=yon_char_new(setlocale(LC_ALL,NULL));
}
char *temp = strstr(config_code,".");
if (temp) temp[0]='\0';
if (!strcmp(config_code,locales[i])){
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
on_locale_changed(NULL,widgets);
}
}
textdomain(LocaleName);
}
gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets){
GtkTreeIter itar;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
char *cur_code,*country;
gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1);
if (yon_char_is_empty(cur_code)) return 0;
char *code;
gtk_tree_model_get(model,&itar,0,&code,-1);
if (!strcmp(code,cur_code)){
char *config_lang = config(installer_locale_parameter);
if (!yon_char_is_empty(config_lang)&&!strcmp(cur_code,config_lang)){
if (gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),iter,&itar)){
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&itar);
}
}
return 1;
}
return 0;
}

@ -91,8 +91,8 @@ yon_user_struct *yon_user_struct_new(){
user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo"); user->PasswordCombo = yon_gtk_builder_get_widget(builder,"PasswordCombo");
user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry"); user->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton"); user->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"'\"=:\n"); yon_gtk_entry_block_symbols(GTK_ENTRY(user->LoginEntry),"[]'\"=:\n");
yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"'\":\n"); yon_gtk_entry_block_symbols(GTK_ENTRY(user->UsernameEntry),"[]'\":\n");
g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user); g_object_set_data(G_OBJECT(user->MainBox),"yon_user_struct",user);
@ -146,6 +146,7 @@ void yon_user_init(main_window *widgets){
char *parameter_name = yon_char_divide_search(parameter,"=",-1); char *parameter_name = yon_char_divide_search(parameter,"=",-1);
char *key = yon_config_parameter_get_key(parameter_name); char *key = yon_config_parameter_get_key(parameter_name);
char *login = yon_config_parameter_get_key(strstr(key,"USERADD[")); char *login = yon_config_parameter_get_key(strstr(key,"USERADD["));
yon_char_remove_brackets(login);
config_str parsed = yon_char_parse(parameter,&parsed_size,":"); config_str parsed = yon_char_parse(parameter,&parsed_size,":");
gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),login); gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),login);

@ -100,67 +100,6 @@ void yon_on_about(GtkWidget *, main_window *){
//functions //functions
int yon_confirmation_dialog_call(GtkWidget *self,dialog_confirmation_data *data){
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_dialog_new_with_buttons(TITLE_LABEL,GTK_WINDOW(gtk_widget_get_toplevel(self)),GTK_DIALOG_USE_HEADER_BAR,CANCEL_LABEL,GTK_RESPONSE_CANCEL,ACCEPT_LABEL,GTK_RESPONSE_ACCEPT,NULL);
textdomain(LocaleName);
gtk_window_set_modal(GTK_WINDOW(dialog),1);
gtk_window_set_icon_name(GTK_WINDOW(dialog),yon_char_append("com.ublinux.",LocaleName));
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
gtk_widget_set_size_request(dialog,450,-1);
GList *list = gtk_container_get_children(GTK_CONTAINER(gtk_dialog_get_header_bar(GTK_DIALOG(dialog))));
GtkWidget *image_cancel = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.cancel-symbolic",GTK_ICON_SIZE_BUTTON);
GtkWidget *image_accept = gtk_image_new_from_icon_name("com.ublinux.libublsettingsui-gtk3.accept-symbolic",GTK_ICON_SIZE_BUTTON);
gtk_button_set_image((GtkButton*)g_list_nth_data(list,0),image_cancel);
gtk_button_set_image((GtkButton*)g_list_nth_data(list,1),image_accept);
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,0)),"marginright");
gtk_style_context_add_class(gtk_widget_get_style_context((GtkWidget*)g_list_nth_data(list,1)),"marginright");
g_list_free(list);
GtkWidget *header_label = gtk_label_new(yon_char_is_empty(data->title)?TITLE_LABEL:data->title);
gtk_widget_show(header_label);
PangoAttrList *attributes = pango_attr_list_new();
PangoAttribute *boldAttr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
pango_attr_list_insert(attributes, boldAttr);
gtk_label_set_attributes(GTK_LABEL(header_label),attributes);
GtkWidget *header = gtk_dialog_get_header_bar(GTK_DIALOG(dialog));
gtk_header_bar_set_custom_title(GTK_HEADER_BAR(header),header_label);
gtk_widget_show(header);
GtkWidget *image = gtk_image_new_from_icon_name("dialog-question-symbolic",GTK_ICON_SIZE_DIALOG);
gtk_widget_show(image);
gtk_widget_set_margin_start(image,20);
gtk_widget_set_margin_end(image,20);
gtk_widget_set_margin_bottom(image,20);
gtk_widget_set_margin_top(image,20);
GtkWidget *label = gtk_label_new("");
gtk_widget_set_margin_end(label,20);
gtk_widget_show(label);
gtk_label_set_line_wrap_mode(GTK_LABEL(label),PANGO_WRAP_WORD);
gtk_label_set_line_wrap(GTK_LABEL(label),1);
gtk_label_set_markup(GTK_LABEL(label),data->action_text);
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_widget_show(box);
gtk_box_pack_start(GTK_BOX(box),image,0,0,5);
gtk_box_pack_start(GTK_BOX(box),label,0,0,5);
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),box,1,1,5);
gtk_window_set_default_size(GTK_WINDOW(dialog),450,-1);
int resp = gtk_dialog_run(GTK_DIALOG(dialog));
if (resp == GTK_RESPONSE_ACCEPT){
if (data->function){
data->function(NULL,data->data);
}
} else resp=0;
gtk_widget_destroy(dialog);
return resp;
}
// //functions // //functions
// void yon_encryption_type_setup(GtkComboBoxText *target){ // void yon_encryption_type_setup(GtkComboBoxText *target){
// int size; // int size;
@ -355,7 +294,7 @@ void config_init(){
main_config.save_done=0; main_config.save_done=0;
main_config.save_configured=0; main_config.save_configured=0;
main_config.configure_mode=0; main_config.configure_mode=0;
main_config.load_mode=YON_CONFIG_LOCAL; main_config.load_mode=YON_CONFIG_GLOBAL;
main_config.log_progress_buzy=0; main_config.log_progress_buzy=0;
main_config.log_end=0; main_config.log_end=0;
main_config.exit_accepted=0; main_config.exit_accepted=0;
@ -410,7 +349,11 @@ void on_gparted_update(GtkWidget *, main_window *widgets){
yon_devices_setup(widgets); yon_devices_setup(widgets);
} }
void on_reboot_accepted(main_window *){ void on_reboot_accepted(main_window *widgets){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=WARNING_REBOOT_TEXT_LABEL;
data->title=WARNING_TITLE_LABEL;
if (yon_confirmation_dialog_call(widgets->MainWindow,data)==GTK_RESPONSE_ACCEPT){
g_mutex_lock(&main_config.install_mutex); g_mutex_lock(&main_config.install_mutex);
if (main_config.install_thread){ if (main_config.install_thread){
pthread_cancel((pthread_t)main_config.install_thread); pthread_cancel((pthread_t)main_config.install_thread);
@ -419,6 +362,10 @@ void on_reboot_accepted(main_window *){
main_config.exit_accepted=1; main_config.exit_accepted=1;
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
if (system("reboot")){}; if (system("reboot")){};
gtk_main_quit();
exit(0);
}
} }
void on_exit_accepted(main_window *){ void on_exit_accepted(main_window *){
@ -429,13 +376,11 @@ void on_exit_accepted(main_window *){
} }
main_config.exit_accepted=1; main_config.exit_accepted=1;
while(gtk_events_pending()) gtk_main_iteration(); while(gtk_events_pending()) gtk_main_iteration();
// gtk_widget_destroy(widgets->MainWindow);
// gtk_main_quit();
} }
gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
if (!main_config.exit_accepted||(main_config.save_done&&main_config.install_complete)){ if (!main_config.exit_accepted||(main_config.save_done&&main_config.install_complete)){
if (widgets){}; if (!main_config.install_complete||!main_config.save_configured){
dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=INTERRUPT_TEXT_LABEL; data->action_text=INTERRUPT_TEXT_LABEL;
data->title=WARNING_TITLE_LABEL; data->title=WARNING_TITLE_LABEL;
@ -445,167 +390,15 @@ gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets){
gtk_main_quit(); gtk_main_quit();
return 1; return 1;
} }
} else {
on_exit_accepted(widgets);
gtk_main_quit();
} }
return 1;
}
void on_locale_changed(GtkWidget *,main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&iter)) return;
gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter));
char *config_code = config(installer_lang_parameter);
if (yon_char_is_empty(config_code)){
config_code = setlocale(LC_ALL,NULL);
}
GtkTreeIter itar;
for_iter(widgets->InstallerCountryFilter,&iter){
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&itar,&iter);
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->InstallerCountryList),&itar,2,&target,-1);
if (!strcmp(config_code,target)){
gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),&iter,&itar);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&iter);
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerCountryFilter),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->CountryLanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
break;
}
}
}
void on_installer_language_changed(GtkWidget *self,GtkTreePath*,GtkTreeViewColumn*, main_window *widgets){
char *window_language;
GtkTreeIter iter;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&model,&iter)) return;
gtk_tree_model_get(model,&iter,2,&window_language,-1);
if (!yon_char_is_empty(window_language)){
char *prev_lang = config(installer_lang_parameter);
if (!yon_char_is_empty(prev_lang)&&!strcmp(prev_lang,window_language)) return;
yon_config_register(installer_lang_parameter,installer_lang_parameter_command,(char*)window_language);
}
char *active_lang_id = gtk_tree_model_get_string_from_iter(model,&iter);
int size;
config_str parameters = yon_config_get_save_parameters_by_key(&size,installer_lang_parameter,NULL);
char *command_parameters = yon_char_parsed_to_string(parameters,size," ");
char *command = yon_char_unite(ubconfig_dull_command,"--target system ",command_parameters,NULL);
g_signal_handlers_block_by_func(G_OBJECT(widgets->MainWindow),G_CALLBACK(on_yon_exit),widgets);
if (!system(command)){};
gtk_widget_destroy(widgets->MainWindow);
setlocale(LC_ALL, window_language);
textdomain(LocaleName);
g_setenv("LANGUAGE",window_language,1);
yon_main_window_create(widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
yon_window_config_load(path);
g_signal_handlers_block_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
model = GTK_TREE_MODEL(widgets->InstallerLanguageList);
gtk_tree_model_get_iter_from_string(model,&iter,active_lang_id);
g_signal_handlers_unblock_by_func(G_OBJECT(self),G_CALLBACK(on_locale_changed),widgets);
}
typedef struct{
char *locale_name;
char *code;
char *localised_name;
char *code_full;
} locale_struct;
int yon_char_parsed_compare(const void *a, const void *b){
const config_str str_a = (const config_str)a;
const config_str str_b = (const config_str)b;
return strcmp(*str_a,*str_b);
}
void set_locales_list(main_window *widgets){
gtk_list_store_clear(widgets->InstallerLanguageList);
gtk_list_store_clear(widgets->InstallerCountryList);
char *config_code = yon_char_new(config(installer_lang_parameter));
int size;
config_str locales = yon_locale_get_all_codes(&size);
qsort(locales,size,sizeof(char*),yon_char_parsed_compare);
GtkTreeIter iter,itar;
GHashTable *added = g_hash_table_new(g_str_hash,g_str_equal);
textdomain(LOCALES_DOMAIN_NAME);
for (int i=0;i<size;i++){
char *lang_ab = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_AB);
char *code = yon_locale_get_parameter(locales[i],YON_LOCALE_CODE);
char *language = yon_locale_get_parameter(locales[i],YON_LOCALE_LANGUAGE);
char *lang_name = yon_locale_get_parameter(locales[i],YON_LOCALE_LANG_NAME);
char *territory = yon_locale_get_parameter(locales[i],YON_LOCALE_TERRITORY);
char *title = yon_locale_get_parameter(locales[i],YON_LOCALE_TITLE);
if (yon_char_is_empty(lang_ab)||
yon_char_is_empty(language)||
yon_char_is_empty(lang_name)||
yon_char_is_empty(territory)||
yon_char_is_empty(title)) continue;
char *country = yon_char_unite(language,", ",territory,NULL);
if (!g_hash_table_contains(added,lang_ab)){
g_hash_table_add(added,yon_char_new(lang_ab));
gtk_list_store_append(widgets->InstallerLanguageList,&iter);
gtk_list_store_set(widgets->InstallerLanguageList,&iter,
0,lang_ab,
1,_(language),
2,lang_name,
3,locales[i],
-1);
}
gtk_list_store_append(widgets->InstallerCountryList,&itar);
gtk_list_store_set(widgets->InstallerCountryList,&itar,
0,lang_ab,
1,_(country),
2,code,
3,title,
-1);
if (yon_char_is_empty(config_code)){
config_code=yon_char_new(setlocale(LC_ALL,NULL));
}
char *temp = strstr(config_code,".");
if (temp) temp[0]='\0';
if (!strcmp(config_code,locales[i])){
g_signal_handlers_block_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
GtkTreePath *path = gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->InstallerLanguageList),&iter);
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widgets->LanguagesTree),path,0,0,0,0);
gtk_tree_path_free(path);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&iter);
on_locale_changed(NULL,widgets);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->CountryLanguagesTree),G_CALLBACK(on_installer_language_changed),widgets);
}
}
textdomain(LocaleName);
} }
gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets){
GtkTreeIter itar;
GtkTreeModel *model;
if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->LanguagesTree)),&model,&itar)) return 0;
char *cur_code,*country;
gtk_tree_model_get(self,iter,0,&cur_code,1,&country,-1);
if (yon_char_is_empty(cur_code)) return 0;
char *code;
gtk_tree_model_get(model,&itar,0,&code,-1);
if (!strcmp(code,cur_code)){
char *config_lang = config(installer_lang_parameter);
if (!yon_char_is_empty(config_lang)&&!strcmp(cur_code,config_lang)){
if (gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),iter,&itar)){
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->CountryLanguagesTree)),&itar);
}
}
return 1; return 1;
} }
return 0;
}
void yon_main_window_create(main_window *widgets){ void yon_main_window_create(main_window *widgets){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
@ -771,6 +564,8 @@ void yon_main_window_create(main_window *widgets){
widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter")); widgets->InstallerCountryFilter=GTK_TREE_MODEL(gtk_builder_get_object(builder,"InstallerCountryFilter"));
widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList")); widgets->InstallerLanguageList=GTK_LIST_STORE(gtk_builder_get_object(builder,"InstallerLanguageList"));
// widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo"); // widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets->RegionMapBox=yon_gtk_builder_get_widget(builder,"RegionMapBox");
widgets->RegionMapTarget=NULL;
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo"); widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo"); widgets->ZoneCombo=yon_gtk_builder_get_widget(builder,"ZoneCombo");
widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch"); widgets->RegionSensitiveSwitch = yon_gtk_builder_get_widget(builder,"RegionSensitiveSwitch");
@ -954,9 +749,13 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets); g_signal_connect(G_OBJECT(widgets->LocaleCell),"toggled",G_CALLBACK(on_locale_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets); g_signal_connect(G_OBJECT(widgets->CancelInstallButton),"clicked",G_CALLBACK(on_page_cancel_clicked),widgets);
#ifdef TIMEZONEMAP_INCLUDE
g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets); g_signal_connect(G_OBJECT(widgets->RegionCombo),"changed",G_CALLBACK(on_region_changed),widgets);
g_signal_connect(G_OBJECT(widgets->ZoneCombo),"changed",G_CALLBACK(on_zone_changed),widgets);
#endif
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionCombo);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo); g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->ZoneCombo);
g_signal_connect(G_OBJECT(widgets->RegionSensitiveSwitch),"state-set",G_CALLBACK(yon_gtk_widget_set_sensitive_from_switch),widgets->RegionMapBox);
g_signal_connect(G_OBJECT(widgets->KeyboardLayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->KeyboardLayoutTree),"cursor-changed",G_CALLBACK(on_layout_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets); g_signal_connect(G_OBJECT(widgets->KeyboardDefaultLayoutsSwitch),"state-set",G_CALLBACK(on_layout_default_toggled),widgets);
@ -987,17 +786,18 @@ void yon_main_window_create(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets);
// g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets);
g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesAddButton),"clicked",G_CALLBACK(on_startup_service_add),widgets);
g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesEditButton),"clicked",G_CALLBACK(on_startup_service_edit),widgets);
g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesRemoveButton),"clicked",G_CALLBACK(on_startup_services_remove),widgets);
g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->StartupAppsTree),"cursor-changed",G_CALLBACK(on_startup_apps_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->StartupAppsTree),"cursor-changed",G_CALLBACK(on_startup_apps_selection_changed),widgets);
g_signal_connect(G_OBJECT(widgets->StartupAppsAddButton),"clicked",G_CALLBACK(on_startup_app_add),widgets); g_signal_connect(G_OBJECT(widgets->StartupAppsAddButton),"clicked",G_CALLBACK(on_startup_app_add),widgets);
g_signal_connect(G_OBJECT(widgets->StartupAppsEditButton),"clicked",G_CALLBACK(on_startup_app_edit),widgets); g_signal_connect(G_OBJECT(widgets->StartupAppsEditButton),"clicked",G_CALLBACK(on_startup_app_edit),widgets);
g_signal_connect(G_OBJECT(widgets->StartupAppsRemoveButton),"clicked",G_CALLBACK(on_startup_apps_remove),widgets); g_signal_connect(G_OBJECT(widgets->StartupAppsRemoveButton),"clicked",G_CALLBACK(on_startup_apps_remove),widgets);
g_signal_connect(G_OBJECT(widgets->StartupAppsChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry); g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry);
@ -1076,6 +876,8 @@ void yon_main_window_create(main_window *widgets){
gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(widgets->InstallerCountryFilter),(GtkTreeModelFilterVisibleFunc)on_country_filter,widgets,NULL);
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(widgets->LanguagesTree),(GtkTreeViewSearchEqualFunc)on_languages_search_func,widgets,NULL);
{ {
widgets->EnableRDPMenuItem = gtk_menu_item_new(); widgets->EnableRDPMenuItem = gtk_menu_item_new();
GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *Box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
@ -1133,6 +935,7 @@ void yon_main_window_create(main_window *widgets){
config_str parsed = NULL; config_str parsed = NULL;
parsed = yon_file_open(licence_path,&size); parsed = yon_file_open(licence_path,&size);
if (size){ if (size){
bind_textdomain_codeset("ublinux-init-eula","UTF-8");
textdomain("ublinux-init-eula"); textdomain("ublinux-init-eula");
char *licence = yon_char_parsed_to_string(parsed,size,""); char *licence = yon_char_parsed_to_string(parsed,size,"");
gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),_(licence)); gtk_label_set_text(GTK_LABEL(widgets->LicenceLabel),_(licence));
@ -1151,13 +954,18 @@ void yon_main_window_create(main_window *widgets){
gtk_widget_hide(widgets->StartScenarioButton); gtk_widget_hide(widgets->StartScenarioButton);
} }
if (main_config.force_ini){ if (main_config.force_ini){
main_config.configure_mode=1; if (yon_configuration_path_check(main_config.config_save_path)){
g_signal_handlers_block_by_func(G_OBJECT(widgets->ConfigurationModeMenuItem),G_CALLBACK(on_configuration_mode_switch),widgets); GList *box = gtk_container_get_children(GTK_CONTAINER(widgets->ConfigurationModeMenuItem));
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widgets->ConfigurationModeMenuItem),1); GList *children = gtk_container_get_children(GTK_CONTAINER(box->data));
gtk_widget_set_sensitive(widgets->ConfigurationModeMenuItem,0);
g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ConfigurationModeMenuItem),G_CALLBACK(on_configuration_mode_switch),widgets); GtkWidget *Check = GTK_WIDGET(g_list_nth_data(children,1));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(Check),1);
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox),"config_mode",CONFIGURATION_MODE_STATUS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox),"config_mode",CONFIGURATION_MODE_STATUS_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox2),"config_mede",CONFIG_PATH_LABEL(main_config.config_save_path),BACKGROUND_IMAGE_INFO_TYPE); yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(widgets->StatusBox2),"config_mede",CONFIG_PATH_LABEL(main_config.config_save_path),BACKGROUND_IMAGE_INFO_TYPE);
} else {
gtk_main_quit();
exit (1);
}
} }
yon_locale_init(); yon_locale_init();
set_locales_list(widgets); set_locales_list(widgets);
@ -1181,9 +989,17 @@ void *yon_maximize(main_window *widgets){
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом. * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/ */
main_window *yon_main_window_complete(){ main_window *yon_main_window_complete(){
if (main_config.force_ini){
if (yon_configuration_path_check(main_config.config_save_path)){
{
main_config.configure_mode=1;
}
}
}
main_window *widgets=NULL; main_window *widgets=NULL;
widgets = yon_remalloc(widgets,sizeof(main_window)); widgets = yon_remalloc(widgets,sizeof(main_window));
memset(widgets,0,sizeof(main_window)); memset(widgets,0,sizeof(main_window));
yon_startup_language_init();
yon_main_window_create(widgets); yon_main_window_create(widgets);
yon_window_config_setup(GTK_WINDOW(widgets->MainWindow)); yon_window_config_setup(GTK_WINDOW(widgets->MainWindow));
// yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow"); // yon_window_config_custom_window_setup(GTK_WINDOW(widgets->MainWindow),"MainWindow");
@ -1193,10 +1009,10 @@ main_window *yon_main_window_complete(){
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
__attribute__((unused)) char *locale = setlocale(LC_ALL, ""); __attribute__((unused)) char *locale = setlocale(LC_ALL, "");
textdomain(LocaleName); textdomain(LocaleName);
yon_ubl_connect_config((_template_config*)&main_config);
config_init(); config_init();
config_str unfound = NULL; config_str unfound = NULL;
int size=0; int size=0;
yon_ubl_connect_config((_template_config*)&main_config);
opterr=0; opterr=0;
yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); yon_ubl_window_init(TITLE_LABEL,"",LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS); yon_ubl_setup_arguments(argc,argv,&unfound,&size,ADDITIONAL_ARGS);

@ -12,7 +12,7 @@
#include <libublsettings.h> #include <libublsettings.h>
#include <libublsettings-gtk3.h> #include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h> #include <libublsettingsui-gtk3.h>
#ifdef WEBKIT_FOUND #ifdef WEBKIT_INCLUDE
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
#include "ubl-strings.h" #include "ubl-strings.h"
@ -39,6 +39,7 @@
#define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade" #define glade_locales_path "/com/ublinux/ui/ubinstall-gtk-layouts.glade"
#define glade_layouts_path "/com/ublinux/ui/ubinstall-gtk-keyboard-layouts.glade" #define glade_layouts_path "/com/ublinux/ui/ubinstall-gtk-keyboard-layouts.glade"
#define glade_path_slider "/com/ublinux/ui/ubinstall-gtk-slider.glade" #define glade_path_slider "/com/ublinux/ui/ubinstall-gtk-slider.glade"
#define glade_path_package_info "/com/ublinux/ui/ubinstall-gtk-package-info.glade"
#define CssPath "/com/ublinux/css/ubinstall-gtk.css" #define CssPath "/com/ublinux/css/ubinstall-gtk.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(), "/.config/", LocaleName, "/", LocaleName, ".conf", NULL) #define config_path yon_char_unite(yon_ubl_user_get_home_directory(), "/.config/", LocaleName, "/", LocaleName, ".conf", NULL)
@ -142,6 +143,7 @@ layout && /description:/ {\
}\ }\
\" | sort -u\ \" | sort -u\
" "
#define ubinstall_dry_run_command "ubinstall2 --dry-run"
#define os_name_get_command "sed -En 's/^PRETTY_NAME=[\"]*([^\"]+)[\"]*/\\1/p' /etc/os-release" #define os_name_get_command "sed -En 's/^PRETTY_NAME=[\"]*([^\"]+)[\"]*/\\1/p' /etc/os-release"
#define get_keyboard_layout_change_command "grep \"grp:\" /usr/share/X11/xkb/rules/base.lst | awk '{$1=$1; sub(/^!.*$/, \"\"); if ($1 ~ /^grp:/) {opt=$1; $1=\"\"; print opt \"|\" substr($0,2)}}'" #define get_keyboard_layout_change_command "grep \"grp:\" /usr/share/X11/xkb/rules/base.lst | awk '{$1=$1; sub(/^!.*$/, \"\"); if ($1 ~ /^grp:/) {opt=$1; $1=\"\"; print opt \"|\" substr($0,2)}}'"
@ -227,7 +229,7 @@ layout && /description:/ {\
#define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']" #define DOMAIN_admanger_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN[admanger]']"
#define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]" #define USERADD_parameter_all "AUTOINSTALL[ubconfig set [users] USERADD[*]]"
#define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD[" #define USERADD_parameter_search "AUTOINSTALL[ubconfig set [users] USERADD["
#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD[", target, "]]", NULL) #define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD['", target, "']]", NULL)
#define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[", target, "]']", NULL) #define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[", target, "]']", NULL)
#define KERNEL_BOOT_parameter "AUTOINSTALL[ubconfig set [boot] KERNEL_BOOT]" #define KERNEL_BOOT_parameter "AUTOINSTALL[ubconfig set [boot] KERNEL_BOOT]"
#define KERNEL_BOOT_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [boot] KERNEL_BOOT']" #define KERNEL_BOOT_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [boot] KERNEL_BOOT']"
@ -254,11 +256,15 @@ layout && /description:/ {\
#define NETWORK_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@connmod]']", NULL) #define NETWORK_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@connmod]']", NULL)
#define NETWORK_devdown_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@devdown]']", NULL) #define NETWORK_devdown_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [network] NETWORK[", target, "@devdown]']", NULL)
#define NETWORK(target) yon_char_unite("NETWORK[", target, "@connmod]", NULL) #define NETWORK(target) yon_char_unite("NETWORK[", target, "@connmod]", NULL)
#define installer_lang_parameter "AUTOINSTALL[installer_lang]" #define installer_locale_parameter "AUTOINSTALL[installer_locale]"
#define installer_lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_lang]" #define installer_locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_locale]"
#define source_parameter "AUTOINSTALL[source]" #define source_parameter "AUTOINSTALL[source]"
#define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]" #define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]"
#define SYSTEM_LANG_parameter "AUTOINSTALL['ubconfig set [locale] LANG']"
#define SYSTEM_LANG_parameter_command "ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [locale] LANG']"
#define get_localisation_command "ubconfig -ea --source global get [autoinstall] AUTOINSTALL[installer_locale] -- get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG'] -- get [locale] LANG"
#define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall2 --debug autoinstall", NULL) #define save_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] AUTOINSTALL[log]=yes ", parameters, "; nice ubinstall2 --debug autoinstall", NULL)
#define set_user_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, ";nice ubinstall2 autoconfig", NULL) #define set_user_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ", parameters, ";nice ubinstall2 autoconfig", NULL)
@ -280,9 +286,9 @@ layout && /description:/ {\
#define full_log_path "/var/log/ubinstall.log" #define full_log_path "/var/log/ubinstall.log"
#define config_get_command(target) yon_char_unite("ubconfig --source ", target, " --conarg get [autoinstall] AUTOINSTALL[*]", NULL) #define config_get_command(target) yon_char_unite("ubconfig -ea --conarg --source ", target, " get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG", NULL)
#define config_get_default_command "ubconfig --source default --conarg get [autoinstall] AUTOINSTALL[*]" #define config_get_default_command "ubconfig -ea --conarg --source default get [autoinstall] AUTOINSTALL[*] -- get [locale] LANG"
#define config_get_global_only_parameters "" #define config_get_global_only_parameters ""
#define config_get_local_only_parameters "" #define config_get_local_only_parameters ""
@ -293,7 +299,7 @@ layout && /description:/ {\
#define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\"" #define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\""
#define get_package_info_command(target) yon_char_append("pacman -Si ", target) #define get_package_info_command(target) yon_char_unite("pacman -Si ", target,"| sed 's/ */ /g'",NULL)
#define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst" #define layouts_command "sed -En '/^! layout$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+(.*)/\\1|\\2/p' /usr/share/X11/xkb/rules/evdev.lst"
#define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst" #define layouts_variant_command "sed -En '/^! variant$/,/^ *$/!d;s/[[:blank:]]+([^ ]+)[[:blank:]]+([^ :]+):[[:blank:]]+(.*)/\\2|\\1|\\3/p' /usr/share/X11/xkb/rules/evdev.lst"
@ -490,6 +496,10 @@ typedef struct
GtkListStore *InstallerLanguageList; GtkListStore *InstallerLanguageList;
GtkTreeModel *InstallerCountryFilter; GtkTreeModel *InstallerCountryFilter;
// GtkWidget *LanguageCombo; // GtkWidget *LanguageCombo;
GtkWidget *RegionMapBox;
GtkWidget *RegionMapTarget;
GtkWidget *RegionSensitiveSwitch;
GtkWidget *RegionCombo; GtkWidget *RegionCombo;
GtkWidget *ZoneCombo; GtkWidget *ZoneCombo;
@ -634,7 +644,6 @@ typedef struct
GtkTreeModel *LanguagesFilter; GtkTreeModel *LanguagesFilter;
GtkTreeModel *LayoutsFilter; GtkTreeModel *LayoutsFilter;
GtkWidget *RegionSensitiveSwitch;
GtkWidget *HostnameSensitiveSwitch; GtkWidget *HostnameSensitiveSwitch;
GtkWidget *KernelListBox; GtkWidget *KernelListBox;
@ -1027,13 +1036,7 @@ typedef struct
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *AcceptButton; GtkWidget *AcceptButton;
GtkWidget *AutoSwitch; GtkWidget *AutoSwitch;
GtkWidget *TypeCombo;
GtkWidget *PathEntry;
GtkWidget *DeviceCombo;
GtkWidget *PathButton;
GtkWidget *AddButton;
GtkWidget *AddBox; GtkWidget *AddBox;
dictionary *sources;
} source_window; } source_window;
typedef struct typedef struct
@ -1044,6 +1047,7 @@ typedef struct
GtkWidget *DeviceCombo; GtkWidget *DeviceCombo;
GtkWidget *PathButton; GtkWidget *PathButton;
GtkWidget *RemoveButton; GtkWidget *RemoveButton;
GtkWidget *AddButton;
} source_element; } source_element;
@ -1167,6 +1171,7 @@ gboolean on_install_error(main_window *widgets);
void on_reboot_accepted(main_window *widgets); void on_reboot_accepted(main_window *widgets);
int yon_configuration_path_check(const char *path);
void on_keyboard_clicked(GtkWidget *, main_window *widgets); void on_keyboard_clicked(GtkWidget *, main_window *widgets);
void on_keyboard_accept(GtkWidget *self, main_window *widgets); void on_keyboard_accept(GtkWidget *self, main_window *widgets);
void on_layout_toggle(GtkCellRendererToggle *, gchar *path, ubinstall_keyboard_window *window); void on_layout_toggle(GtkCellRendererToggle *, gchar *path, ubinstall_keyboard_window *window);
@ -1182,6 +1187,9 @@ void on_partition_changed(GtkWidget *self, main_window *widgets);
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_size, GtkComboBox *size_type); void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_size, GtkComboBox *size_type);
gboolean on_yon_exit(GtkWidget *, GdkEvent *, main_window *widgets); gboolean on_yon_exit(GtkWidget *, GdkEvent *, main_window *widgets);
void on_locale_changed(GtkWidget *, main_window *); void on_locale_changed(GtkWidget *, main_window *);
#ifdef TIMEZONEMAP_INCLUDE
void on_zone_changed(GtkWidget *, main_window *widgets);
#endif
void on_region_changed(GtkComboBox *self, main_window *widgets); void on_region_changed(GtkComboBox *self, main_window *widgets);
void on_page_cancel_clicked(GtkWidget *, main_window *widgets); void on_page_cancel_clicked(GtkWidget *, main_window *widgets);
int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree, char *mode, main_window *widgets); int yon_install_options_save(GtkWidget *device_tree, GtkWidget *part_tree, char *mode, main_window *widgets);
@ -1280,7 +1288,7 @@ void yon_kernel_resize(main_window *widgets);
void yon_kernel_addon_setup(main_window *widgets); void yon_kernel_addon_setup(main_window *widgets);
void yon_kernel_addon_resize(main_window *widgets); void yon_kernel_addon_resize(main_window *widgets);
void yon_startup_services_setup(main_window *widgets); void yon_startup_services_setup(main_window *widgets);
void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets); void on_srartup_services_toggled(GtkCellRenderer *, char *path, main_window *widgets);
void on_startup_service_edit(GtkWidget *, main_window *widgets); void on_startup_service_edit(GtkWidget *, main_window *widgets);
void on_startup_service_add(GtkWidget *, main_window *widgets); void on_startup_service_add(GtkWidget *, main_window *widgets);
startup_service_window *yon_startup_service_window_new(); startup_service_window *yon_startup_service_window_new();
@ -1337,7 +1345,6 @@ void on_source_accept(GtkWidget *, source_window *window);
void on_source_choose(GtkWidget *self); void on_source_choose(GtkWidget *self);
void on_source_remove(GtkWidget *, source_element *element); void on_source_remove(GtkWidget *, source_element *element);
void on_source_add(GtkWidget *, source_window *window); 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); void yon_source_element_add(char *key, void *, source_window *window);
source_element *yon_source_element_new(); source_element *yon_source_element_new();
void on_rdp_toggled(GtkWidget *self, main_window *); void on_rdp_toggled(GtkWidget *self, main_window *);
@ -1456,3 +1463,9 @@ gboolean yon_locale_window_load(language_window *window);
void yon_os_password_open(GtkWidget *, main_window *widgets); void yon_os_password_open(GtkWidget *, main_window *widgets);
void yon_userdata_password_open(GtkWidget *, main_window *widgets); void yon_userdata_password_open(GtkWidget *, main_window *widgets);
double yon_password_check_func(yon_password_window *window, const char *password_string); double yon_password_check_func(yon_password_window *window, const char *password_string);
void yon_source_update(source_window *window);
void yon_main_window_update_locale(main_window *widgets);
gboolean yon_progress_bar_start(main_window *widgets);
void *yon_progress_file_buzyfy(void*);
void yon_startup_language_init();
gboolean on_languages_search_func(GtkTreeModel *model, gint col,const char *key, GtkTreeIter *iter, main_window *widgets);

@ -187,6 +187,9 @@ NULL)
#define SERVICE_ADD_TITLE_LABEL _("Add service") #define SERVICE_ADD_TITLE_LABEL _("Add service")
#define SERVICE_EDIT_TITLE_LABEL _("Edit service") #define SERVICE_EDIT_TITLE_LABEL _("Edit service")
#define SERVICE_REMOVE_TITLE_LABEL _("Remove service") #define SERVICE_REMOVE_TITLE_LABEL _("Remove service")
#define APPLICATIONS_ADD_TITLE_LABEL _("Add application")
#define APPLICATIONS_EDIT_TITLE_LABEL _("Edit application")
#define APPLICATIONS_REMOVE_TITLE_LABEL _("Remove application")
#define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," <b>", target,"</b> ", _("is already exists. Do you really want to save user")," <b>",target,"</b>?",NULL) #define BOOTLOADER_USER_EXIST_LABEL(target) yon_char_unite(_("User")," <b>", target,"</b> ", _("is already exists. Do you really want to save user")," <b>",target,"</b>?",NULL)
#define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL) #define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL)
@ -378,7 +381,7 @@ NULL)
// #define _LABEL _("Installation on same partition") // #define _LABEL _("Installation on same partition")
// #define _LABEL _("Advanced section") // #define _LABEL _("Advanced section")
// #define _LABEL _("Recovery section") // #define _LABEL _("Recovery section")
// #define _LABEL _("Start installation scenario") // #define _LABEL _("Install according to the script")
// #define _LABEL _("Source") // #define _LABEL _("Source")
// #define _LABEL _("Skip configuration") // #define _LABEL _("Skip configuration")
@ -391,7 +394,7 @@ NULL)
// #define _LABEL _("Configuring the system") // #define _LABEL _("Configuring the system")
// #define _LABEL _("Configuring the parameters of the installed system") // #define _LABEL _("Configuring the parameters of the installed system")
// #define _LABEL _("Selecting the system kernel") // #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 kernels for installation in the system and selecting the default kernel. Internet access required")
// #define _LABEL _("Selecting additional kernel modules from the repository via the Internet") // #define _LABEL _("Selecting additional kernel modules from the repository via the Internet")
// #define _LABEL _("Search and select the software you need to install by package name. Internet access required") // #define _LABEL _("Search and select the software you need to install by package name. Internet access required")
// #define _LABEL _("Chosen packages") // #define _LABEL _("Chosen packages")

@ -205,6 +205,11 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child> <child>
<object class="GtkSpinButton" id="SizeSpin"> <object class="GtkSpinButton" id="SizeSpin">
<property name="visible">True</property> <property name="visible">True</property>
@ -214,7 +219,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -232,7 +237,14 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -245,7 +257,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -256,54 +268,71 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">5</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">File system type:</property> <property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">5</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="FileSystemTypeCombo"> <object class="GtkComboBoxText" id="EncryptionCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property> <property name="active">0</property>
<items> <items>
<item translatable="yes">Default</item> <item translatable="yes">Off</item>
</items> </items>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">6</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption password:</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox"> <object class="GtkBox" id="box2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkLabel" id="label2"> <object class="GtkEntry" id="EncryptionEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="sensitive">False</property>
<property name="label" translatable="yes">File system label:</property> <property name="can-focus">True</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -312,9 +341,15 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="FileSystemLabelEntry"> <object class="GtkButton" id="EncryptionButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -322,12 +357,13 @@
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> </object>
<object class="GtkLabel" id="label4"> <packing>
<property name="visible">True</property> <property name="expand">False</property>
<property name="can-focus">False</property> <property name="fill">True</property>
<property name="label" translatable="yes">Encryption:</property> <property name="position">3</property>
<property name="xalign">0</property> </packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -336,66 +372,66 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="EncryptionCombo"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property> <property name="spacing">5</property>
<items> <child>
<item translatable="yes">Off</item> <object class="GtkLabel" id="label5">
</items> <property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">File system type:</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkComboBoxText" id="FileSystemTypeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption password:</property> <property name="active">0</property>
<items>
<item translatable="yes">Default</item>
</items>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="EncryptionEntry"> <object class="GtkLabel" id="label2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property> <property name="label" translatable="yes">File system label:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">5</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="EncryptionButton"> <object class="GtkEntry" id="FileSystemLabelEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">6</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -418,16 +454,32 @@
<class name="bggrey"/> <class name="bggrey"/>
</style> </style>
</object> </object>
<object class="GtkSizeGroup">
<widgets>
<widget name="box2"/>
<widget name="PartLabelEntry"/>
<widget name="FileSystemLabelEntry"/>
</widgets>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="box1"/>
<widget name="EncryptionCombo"/>
<widget name="FileSystemTypeCombo"/>
</widgets>
</object>
<object class="GtkSizeGroup"> <object class="GtkSizeGroup">
<widgets> <widgets>
<widget name="label1"/> <widget name="label1"/>
<widget name="label2"/> <widget name="label4"/>
<widget name="label5"/>
</widgets> </widgets>
</object> </object>
<object class="GtkSizeGroup"> <object class="GtkSizeGroup">
<widgets> <widgets>
<widget name="label3"/> <widget name="label3"/>
<widget name="label4"/> <widget name="label6"/>
<widget name="label2"/>
</widgets> </widgets>
</object> </object>
</interface> </interface>

@ -4,6 +4,7 @@
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css --> <!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkListBoxRow" id="MenuItemRow"> <object class="GtkListBoxRow" id="MenuItemRow">
<property name="height-request">25</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<child> <child>

@ -3,11 +3,6 @@
<interface domain="ubl-settings-bootloader"> <interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css --> <!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left-symbolic</property>
</object>
<object class="GtkWindow" id="MainWindow"> <object class="GtkWindow" id="MainWindow">
<property name="width-request">450</property> <property name="width-request">450</property>
<property name="height-request">250</property> <property name="height-request">250</property>
@ -54,7 +49,6 @@
<object class="GtkListBox" id="ItemsListBox"> <object class="GtkListBox" id="ItemsListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="selection-mode">none</property>
<child type="placeholder"> <child type="placeholder">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -94,11 +88,40 @@
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkButton" id="BackButton"> <object class="GtkButton" id="BackButton">
<property name="label" translatable="yes">Back</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image1</property> <child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.pan-left-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Back</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<style> <style>
<class name="noborder"/> <class name="noborder"/>
<class name="menunoborder"/> <class name="menunoborder"/>
@ -110,6 +133,17 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
@ -125,7 +159,6 @@
<object class="GtkListBox" id="ChildrenListBox"> <object class="GtkListBox" id="ChildrenListBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="selection-mode">none</property>
<child type="placeholder"> <child type="placeholder">
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -141,7 +174,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkListStore" id="InfoList">
<columns>
<!-- column-name Name -->
<column type="gchararray"/>
<!-- column-name Value -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkBox" id="MainBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="InfoTree">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="model">InfoList</property>
<property name="headers-visible">False</property>
<property name="enable-search">False</property>
<property name="enable-grid-lines">vertical</property>
<child internal-child="selection">
<object class="GtkTreeSelection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</interface>

@ -3,16 +3,6 @@
<interface domain="ubinstall-gtk"> <interface domain="ubinstall-gtk">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubinstall-gtk.css --> <!-- interface-css-provider-path ubinstall-gtk.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.zoom-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.increase-symbolic</property>
</object>
<object class="GtkWindow" id="MainWindow"> <object class="GtkWindow" id="MainWindow">
<property name="width-request">400</property> <property name="width-request">400</property>
<property name="height-request">250</property> <property name="height-request">250</property>
@ -139,94 +129,6 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </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> <child>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
@ -265,7 +167,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>

@ -5,6 +5,9 @@
.noborder { .noborder {
border:none; border:none;
} }
.instant {
transition: 0;
}
.borders *{ .borders *{
border-width:0.5px; border-width:0.5px;
border-style: solid; border-style: solid;
@ -165,11 +168,13 @@ treeview row:nth-child(odd) { background-color: #000000; }
treeview row:nth-child(even) { background-color: #ffffff; } treeview row:nth-child(even) { background-color: #ffffff; }
.blackbg { .blackbg {
background-color: @theme_text_color; background-color: @titlebar_fg_color;
} }
.toggletabs { .toggletabs {
background-color: @background_color; background-color: inherit;
background-image: none;
color:@theme_text_color;
border:none; border:none;
border-radius:0px; border-radius:0px;
transition:0; transition:0;
@ -178,7 +183,9 @@ treeview row:nth-child(even) { background-color: #ffffff; }
} }
.toggletabs:disabled { .toggletabs:disabled {
background-color: @background_color; background-color: inherit;
background-image: none;
color:@theme_base_color;
border:none; border:none;
border-radius:0px; border-radius:0px;
transition:0; transition:0;
@ -189,6 +196,8 @@ treeview row:nth-child(even) { background-color: #ffffff; }
.toggletabs:checked:disabled { .toggletabs:checked:disabled {
background:@theme_base_color; background:@theme_base_color;
background-image: none;
color:@theme_text_color;
border-radius:0px; border-radius:0px;
color:@theme_text_color; color:@theme_text_color;
padding-top:7px; padding-top:7px;
@ -198,6 +207,7 @@ treeview row:nth-child(even) { background-color: #ffffff; }
.toggletabs:checked:disabled>* { .toggletabs:checked:disabled>* {
background:@theme_base_color; background:@theme_base_color;
background-image: none;
color:@theme_text_color; color:@theme_text_color;
opacity:1; opacity:1;
} }
@ -205,6 +215,8 @@ treeview row:nth-child(even) { background-color: #ffffff; }
.toggletabs:checked:active:disabled { .toggletabs:checked:active:disabled {
background:@theme_base_color; background:@theme_base_color;
background-image: none;
color:@theme_text_color;
border-radius:0px; border-radius:0px;
color:inherit; color:inherit;
padding-top:7px; padding-top:7px;
@ -214,7 +226,9 @@ treeview row:nth-child(even) { background-color: #ffffff; }
.toggletabs:disabled:active { .toggletabs:disabled:active {
background-color: @theme_base_color; background-color: inherit;
background-image: none;
color:@theme_bg_color;
border:none; border:none;
border-radius:0px; border-radius:0px;
transition:0; transition:0;
@ -224,7 +238,9 @@ treeview row:nth-child(even) { background-color: #ffffff; }
opacity:1; opacity:1;
} }
.toggletabs:active { .toggletabs:active {
background-color: @theme_base_color; background-color: @theme_fg_color;
background-image: none;
color:@theme_bg_color;
border:none; border:none;
border-radius:0px; border-radius:0px;
transition:0; transition:0;
@ -235,10 +251,11 @@ treeview row:nth-child(even) { background-color: #ffffff; }
} }
.menubox { .menubox {
background-color:@theme_text_color; background-color:inherit;
} }
.menubox *{ .menubox *{
color:@theme_base_color; color:@theme_fg_color;
opacity:1;
} }
.bggrey{ .bggrey{
border-radius:5px; border-radius:5px;

@ -108,6 +108,8 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name LangCodeFull --> <!-- column-name LangCodeFull -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name LanguageNameLocalised -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkRadioButton" id="KernelUnchosenRadio"> <object class="GtkRadioButton" id="KernelUnchosenRadio">
@ -646,6 +648,7 @@
</child> </child>
<style> <style>
<class name="toggletabs"/> <class name="toggletabs"/>
<class name="titlebar"/>
<class name="thin"/> <class name="thin"/>
</style> </style>
</object> </object>
@ -802,7 +805,8 @@ agreement</property>
</packing> </packing>
</child> </child>
<style> <style>
<class name="blackbg"/> <class name="titlebar"/>
<class name="thin"/>
</style> </style>
</object> </object>
<packing> <packing>
@ -878,7 +882,6 @@ agreement</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
<attribute name="scale" value="1"/> <attribute name="scale" value="1"/>
<attribute name="foreground" value="#33722f2e7a06"/>
<attribute name="absolute-size" value="18432"/> <attribute name="absolute-size" value="18432"/>
</attributes> </attributes>
</object> </object>
@ -946,7 +949,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">32</property> <property name="pixel-size">24</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.translation-symbolic</property> <property name="icon-name">com.ublinux.ubinstall-gtk.translation-symbolic</property>
</object> </object>
<packing> <packing>
@ -961,7 +964,7 @@ agreement</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Select your language:</property> <property name="label" translatable="yes">Select your language:</property>
<attributes> <attributes>
<attribute name="size" value="13312"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>
</object> </object>
<packing> <packing>
@ -1123,7 +1126,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.license</property> <property name="icon-name">com.ublinux.ubinstall-gtk.license</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -1417,7 +1420,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-common</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-common</property>
</object> </object>
<packing> <packing>
@ -1496,7 +1499,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-near</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-near</property>
</object> </object>
<packing> <packing>
@ -1575,7 +1578,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-part</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-part</property>
</object> </object>
<packing> <packing>
@ -1654,7 +1657,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-advanced</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-advanced</property>
</object> </object>
<packing> <packing>
@ -1733,7 +1736,7 @@ agreement</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-recovery</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-recovery</property>
</object> </object>
<packing> <packing>
@ -2158,7 +2161,7 @@ agreement</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">48</property> <property name="pixel-size">48</property>
<property name="resource">/com/ublinux/images/install_type_data_only_normal.png</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.settings-symbolic</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
<packing> <packing>
@ -3640,7 +3643,6 @@ agreement</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="margin-top">10</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkSwitch" id="RegionSensitiveSwitch"> <object class="GtkSwitch" id="RegionSensitiveSwitch">
@ -3743,6 +3745,32 @@ agreement</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkAspectFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<property name="ratio">35.299999237060547</property>
<child>
<object class="GtkBox" id="RegionMapBox">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
@ -3754,12 +3782,13 @@ agreement</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">3</property>
</packing> </packing>
@ -7372,7 +7401,7 @@ or continue working in the system Live environment.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-common</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-common</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -7856,7 +7885,7 @@ or continue working in the system Live environment.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-near</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-near</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -8566,7 +8595,7 @@ or continue working in the system Live environment.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-part</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-part</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -9202,7 +9231,7 @@ or continue working in the system Live environment.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-advanced</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-advanced</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -9306,6 +9335,7 @@ separately into the selected partition.</property>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<child> <child>
<object class="GtkViewport"> <object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
@ -10276,7 +10306,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-recovery</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-recovery</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -10390,7 +10420,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-grub</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-grub</property>
</object> </object>
<packing> <packing>
@ -10468,7 +10498,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-grub-update</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-grub-update</property>
</object> </object>
<packing> <packing>
@ -10546,7 +10576,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-system</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-system</property>
</object> </object>
<packing> <packing>
@ -10624,7 +10654,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-user</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-user</property>
</object> </object>
<packing> <packing>
@ -10743,7 +10773,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-grub</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-grub</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -11155,7 +11185,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-grub-update</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-grub-update</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -11243,6 +11273,7 @@ separately into the selected partition.</property>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<child> <child>
<object class="GtkViewport"> <object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
@ -11560,7 +11591,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-system</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-system</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -11648,6 +11679,7 @@ separately into the selected partition.</property>
<object class="GtkScrolledWindow"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<child> <child>
<object class="GtkViewport"> <object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
@ -12028,7 +12060,7 @@ separately into the selected partition.</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox" id="box8">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
@ -12091,7 +12123,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Partition label:</property> <property name="label" translatable="yes">Partition label:</property>
<property name="xalign">0.30000001192092896</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -12105,7 +12137,7 @@ separately into the selected partition.</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">3</property>
</packing> </packing>
@ -12140,11 +12172,6 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<child> <child>
<object class="GtkBox" id="box6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkComboBoxText" id="OSFilesystemTypeCombo"> <object class="GtkComboBoxText" id="OSFilesystemTypeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -12156,10 +12183,12 @@ separately into the selected partition.</property>
</object> </object>
</child> </child>
</object> </object>
</child>
</object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -12172,16 +12201,7 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -12190,9 +12210,9 @@ separately into the selected partition.</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -12212,6 +12232,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption:</property> <property name="label" translatable="yes">Encryption:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -12220,11 +12241,6 @@ separately into the selected partition.</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkComboBoxText" id="OSFormatEncryptionCombo"> <object class="GtkComboBoxText" id="OSFormatEncryptionCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -12233,41 +12249,40 @@ separately into the selected partition.</property>
</items> </items>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel" id="label16">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption password:</property> <property name="label" translatable="yes">Encryption password:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="OSFormatEncryptionEntry"> <object class="GtkBox" id="box9">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="OSFormatEncryptionEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="visibility">False</property> <property name="visibility">False</property>
<property name="invisible-char">*</property> <property name="invisible-char"></property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">3</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -12283,7 +12298,14 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -12378,7 +12400,7 @@ separately into the selected partition.</property>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">64</property> <property name="pixel-size">48</property>
<property name="icon-name">com.ublinux.ubinstall-gtk.install-user</property> <property name="icon-name">com.ublinux.ubinstall-gtk.install-user</property>
<property name="icon_size">0</property> <property name="icon_size">0</property>
</object> </object>
@ -12857,7 +12879,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Size:</property> <property name="label" translatable="yes">Size:</property>
<property name="xalign">1</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -12927,7 +12949,7 @@ separately into the selected partition.</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">4</property>
</packing> </packing>
@ -12949,7 +12971,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">File system type:</property> <property name="label" translatable="yes">File system type:</property>
<property name="xalign">1</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -12958,11 +12980,6 @@ separately into the selected partition.</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkComboBoxText" id="UserdataFilesystemTypeCombo"> <object class="GtkComboBoxText" id="UserdataFilesystemTypeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -12977,7 +12994,7 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -12990,13 +13007,6 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property> <property name="position">3</property>
</packing> </packing>
</child> </child>
@ -13006,7 +13016,7 @@ separately into the selected partition.</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">4</property>
</packing> </packing>
@ -13028,7 +13038,7 @@ separately into the selected partition.</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption:</property> <property name="label" translatable="yes">Encryption:</property>
<property name="xalign">1</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -13055,26 +13065,32 @@ separately into the selected partition.</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption password:</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Encryption password:</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="UserdataFormatEncryptionEntry"> <object class="GtkEntry" id="UserdataFormatEncryptionEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -13084,7 +13100,7 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">4</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child> <child>
@ -13100,7 +13116,14 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">5</property> <property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -13386,7 +13409,7 @@ separately into the selected partition.</property>
</child> </child>
<child> <child>
<object class="GtkButton" id="StartScenarioButton"> <object class="GtkButton" id="StartScenarioButton">
<property name="label" translatable="yes">Start installation scenario</property> <property name="label" translatable="yes">Install according to the script</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="image">image27</property> <property name="image">image27</property>
@ -13394,6 +13417,7 @@ separately into the selected partition.</property>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
@ -13520,6 +13544,27 @@ separately into the selected partition.</property>
</object> </object>
</child> </child>
</object> </object>
<object class="GtkSizeGroup" id="PLabelSizeGroup">
<widgets>
<widget name="label9"/>
<widget name="label3"/>
<widget name="label16"/>
<widget name="label13"/>
<widget name="label12"/>
<widget name="label17"/>
</widgets>
</object>
<object class="GtkSizeGroup" id="PSizeGroup">
<widgets>
<widget name="OSFormatFSMarkEntry"/>
<widget name="OSFormatPartitionEntry"/>
<widget name="box9"/>
<widget name="box2"/>
<widget name="UserdataFormatPartitionEntry"/>
<widget name="UserdataFormatFSMarkEntry"/>
<widget name="box5"/>
</widgets>
</object>
<object class="GtkSizeGroup"> <object class="GtkSizeGroup">
<widgets> <widgets>
<widget name="label10"/> <widget name="label10"/>
@ -13532,17 +13577,18 @@ separately into the selected partition.</property>
</object> </object>
<object class="GtkSizeGroup"> <object class="GtkSizeGroup">
<widgets> <widgets>
<widget name="box6"/> <widget name="box1"/>
<widget name="box7"/> <widget name="NetworkDomainSwitch"/>
<widget name="box3"/>
<widget name="box5"/>
<widget name="box4"/>
</widgets> </widgets>
</object> </object>
<object class="GtkSizeGroup"> <object class="GtkSizeGroup" id="gergSizeGroup">
<widgets> <widgets>
<widget name="box1"/> <widget name="OSFilesystemTypeCombo"/>
<widget name="NetworkDomainSwitch"/> <widget name="OSFormatEncryptionCombo"/>
<widget name="box2"/>
<widget name="box3"/>
<widget name="UserdataFilesystemTypeCombo"/>
<widget name="UserdataFormatEncryptionCombo"/>
</widgets> </widgets>
</object> </object>
</interface> </interface>

Loading…
Cancel
Save