You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubinstall-gtk/source/ubinstall-gtk.h

1189 lines
46 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <locale.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <libintl.h>
#include <getopt.h>
#include <libintl.h>
#include <json-c/json.h>
#include <sys/statvfs.h>
#include <libublsettings.h>
#include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
#include "ubl-strings.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubinstall-gtk"
#define _(String) gettext(String)
#define glade_path "/com/ublinux/ui/ubinstall-gtk.glade"
#define glade_path_ubinstall_keyboard "/com/ublinux/ui/ubinstall-gtk-keyboard.glade"
#define glade_path_ubinstall_language "/com/ublinux/ui/ubinstall-gtk-language.glade"
#define glade_path_network_info "/com/ublinux/ui/ubinstall-gtk-network-box.glade"
#define glade_path_log_view "/com/ublinux/ui/ubinstall-gtk-log-view.glade"
#define glade_path_user "/com/ublinux/ui/ubinstall-gtk-user.glade"
#define glade_path_menu_window "/com/ublinux/ui/ubinstall-gtk-menu.glade"
#define glade_path_menu_item "/com/ublinux/ui/ubinstall-gtk-menu-item.glade"
#define glade_path_kernel_row "/com/ublinux/ui/ubinstall-gtk-kernel-row.glade"
#define glade_path_os_row "/com/ublinux/ui/ubinstall-gtk-os-row.glade"
#define glade_path_service "/com/ublinux/ui/ubinstall-gtk-service-window.glade"
#define glade_path_bootloader_user "/com/ublinux/ui/ubinstall-gtk-bootloader-user.glade"
#define glade_path_advanced_part "/com/ublinux/ui/ubinstall-gtk-advanced-box.glade"
#define glade_path_configuration_mode "/com/ublinux/ui/ubinstall-gtk-configuration-mode.glade"
#define glade_path_source "/com/ublinux/ui/ubinstall-gtk-source.glade"
#define glade_path_source_element "/com/ublinux/ui/ubinstall-gtk-source-element.glade"
#define CssPath "/com/ublinux/css/ubinstall-gtk.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define icon_path "com.ublinux.ubinstall-gtk"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubinstall-gtk"
#define clear_config_both_command "ubconfig remove TEMP_SECTION TEMP_PATAMETER"
#define clear_config_global_command "ubconfig --target global remove TEMP_SECTION TEMP_PATAMETER"
#define clear_config_local_command "ubconfig --target system remove TEMP_SECTION TEMP_PATAMETER"
#define regions_path "/com/ublinux/images/map-time-zone.png"
#define keyboard_path "/com/ublinux/images/keyboard.png"
#define users_path "/com/ublinux/images/keyboard.png"
#define startup_path "/com/ublinux/images/keyboard.png"
#define bootloader_path "/com/ublinux/images/keyboard.png"
#define network_icon_path "/com/ublinux/images/keyboard.png"
#define licence_path "/usr/share/ublinux/agreement/EULA.txt"
#define languages_path "/usr/share/ubinstall-gtk/csv/locales.csv"
// #define installer_languages_path "resource:///com/ublinux/csv/languages.csv"
#define zone_path "/usr/share/zoneinfo/"
#define system_base_modules_path "/memory/data/from/0/ublinux/base"
#define system_modules_path "/memory/data/from/0/ublinux/modules"
#define additional_software_path "resource:///com/ublinux/csv/modules.csv"
#define kernel_list_path "resource:///com/ublinux/csv/kernel-list.csv"
#define kernel_list_addon_path "resource:///com/ublinux/csv/kernel-list-addon.csv"
#define services_list_path "resource:///com/ublinux/csv/services-list.csv"
#define network_path "resource:///com/ublinux/csv/network-list.csv"
#define fs_types_path "resource:///com/ublinux/csv/filesystems-format-list.csv"
#define vfs_list_path "resource:///com/ublinux/csv/vfs-list.csv"
#define encryptions_list "luks1","luks2"
#define locales_list_command "/usr/share/i18n/locales/"
#define slide_0_path "/com/ublinux/images/slide-0.png"
#define slide_repeat_path "/com/ublinux/images/slide-1.png", \
"/com/ublinux/images/slide-2.png", \
"/com/ublinux/images/slide-3.png", \
"/com/ublinux/images/slide-4.png", \
"/com/ublinux/images/slide-5.png", \
"/com/ublinux/images/slide-6.png", \
"/com/ublinux/images/slide-7.png", \
"/com/ublinux/images/slide-8.png", \
"/com/ublinux/images/slide-9.png", \
"/com/ublinux/images/slide-10.png", \
"/com/ublinux/images/slide-11.png", \
"/com/ublinux/images/slide-12.png", \
NULL
#define get_modules_command "pacman --color never -Ss ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\""
#define get_local_module_info_command(target) yon_char_unite("pacman --color never -Sp $(pacman -Ssq '",target,"') --print-format '%n;%v;%d' | grep -v \"^::\"",NULL);
#define get_menus_entry_command "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry"
#define encrypt_domain_password_command(target) yon_char_unite("echo '",target,"' | base64",NULL)
#define get_ntp_default_command "ubconfig --default get [network] NTPSERVERS_DEFAULT"
#define get_ntp_ru_command "ubconfig --default get [network] NTPSERVERS_RU"
#define get_models_command "sed '/<\\/modelList>/q' /usr/share/X11/xkb/rules/base.xml | grep -E '^ {8,8}<name>|^ {8,8}<description>'|sed -e 's/ *<name>//g' -e 's,</name>,,g' -e 's/ *<description>//g' -e 's,</description>,,g'"
#define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL))
#define network_value(ip,mask,gateway, dns) g_strdup_printf("ipv4.method manual ipv4.addr %s/%s ipv4.gateway %s ipv4.dns %s",ip,mask,gateway,dns)
#define network_value_auto "ipv4.method auto"
#define get_layouts_command "xkbcli list --load-exotic | awk \"\
layout && /description:/ {\
match(\\$0, /: *(.*)/, matches);\
description = matches[1];\
printf \\\"%s|%s|%s\\\\n\\\", layout, variant, description;\
layout = \\\"\\\"; variant = \\\"\\\";\
}\
/layout:/ {\
match(\\$0, /: *'([^']+)'/, matches);\
l = matches[1];\
layout = layouts[l] = l;\
}\
/variant:/ {\
match(\\$0, /: *'([^']+)'/, matches);\
variant = matches[1];\
}\
\" | sort -u\
"
#define enable_vnc_command "ubconfig --target system set [desktop] X11VNC=ublinux"
#define disable_vnc_command "ubconfig --target system remove [desktop] X11VNC=ublinux"
#define get_layouts_local_command(layout) yon_char_unite("xkbcli list --load-exotic | awk -v layout=\"",layout,"\" \"BEGIN {layout_pattern = sprintf(\\\"^ *- *layout: *'%s'\\\",layout);matched=0} matched && /variant:/ {match(\\$0, /: *'([^']+)'/, matches);variant = matches[1]} matched && /description:/ {match(\\$0, /: *(.+)/, matches);description = matches[1]} matched && /^ *-/{matched=0; if (variant) printf \\\"%s|%s\\n\\\",variant,description} \\$0 ~ layout_pattern {matched=1;variant=\\\"\\\";description=\\\"\\\";next}\" | sort -u",NULL)
#define get_devices_command "lsblk --noheadings --nodeps -Jo PATH,SIZE,MODEL,VENDOR,SERIAL --exclude 7"
#define get_parts_and_devices_command "lsblk --noheadings --bytes -o TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7 |awk '{print ($1\";\"$2\";\"$3\";\"$4\";\"$5\";\"$6\";\"$7\";\"$8\";\"$9)}'"
#define AUTOINSTALL(target) yon_char_unite("AUTOINSTALL[",target,"]",NULL)
#define AUTOINSTALL_TYPE_INSTALL "AUTOINSTALL[install_type]"
#define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get [autoinstall] AUTOINSTALL[install_type]"
#define AUTOINSTALL_DEVICE "AUTOINSTALL[device]"
#define AUTOINSTALL_DEVICE_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device]"
#define part_parameter "AUTOINSTALL[part]"
#define part_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part]"
#define modules_parameter "AUTOINSTALL[modules]"
#define modules_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[modules]"
#define modules_extra_parameter "AUTOINSTALL[modules_extra]"
#define modules_extra_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[modules_extra]"
/*------------------------------------------------------------*/
#define root_password_parameter "AUTOINSTALL[ubconfig set [users] DEFAULTROOTPASSWD]"
#define root_password_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL['ubconfig set [users] DEFAULTROOTPASSWD']"
#define autologin_parameter "AUTOINSTALL[ubconfig set [desktop] AUTOLOGINUSER]"
#define autologin_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [desktop] AUTOLOGINUSER']"
#define xkbmodel_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBMODEL]"
#define xkbmodel_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBMODEL']"
#define xkblayout_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBLAYOUT]"
#define xkblayout_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBLAYOUT']"
#define xkbvariant_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBVARIANT]"
#define xkbvariant_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBVARIANT']"
#define xkboptions_parameter "AUTOINSTALL[ubconfig set [keyboard] XKBOPTIONS]"
#define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBOPTIONS']"
#define hostname_parameter "AUTOINSTALL[ubconfig set [system] HOSTNAME]"
#define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [system] HOSTNAME']"
#define zone_parameter "AUTOINSTALL[ubconfig set [clock] ZONE]"
#define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [clock] ZONE']"
#define lang_parameter "AUTOINSTALL[ubconfig set [locale] LANG]"
#define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG']"
#define locale_parameter "AUTOINSTALL[ubconfig set [locale] LOCALE]"
#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LOCALE']"
/*------------------------------------------------------------*/
#define part_size_parameter "AUTOINSTALL[part_size]"
#define part_size_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_size]"
#define part_fs_type_parameter "AUTOINSTALL[part_fs_type]"
#define part_fs_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_fs_type]"
#define part_format_parameter "AUTOINSTALL[part_format]"
#define part_format_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_format]"
#define part_label_parameter "AUTOINSTALL[part_label]"
#define part_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_label]"
#define part_fs_label_parameter "AUTOINSTALL[part_fs_label]"
#define part_fs_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_fs_label]"
#define part_crypt_parameter "AUTOINSTALL[part_crypt]"
#define part_crypt_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_crypt]"
#define swap_parameter "AUTOINSTALL[swap]"
#define swap_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[swap]"
#define swap_size_parameter "AUTOINSTALL[swap_size]"
#define swap_size_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[swap_size]"
#define boot_parameter "AUTOINSTALL[boot]"
#define boot_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[boot]"
#define packages_parameter "AUTOINSTALL[packages]"
#define packages_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[packages]"
#define device_typevfs_parameter "AUTOINSTALL[device_typevfs]"
#define device_typevfs_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_typevfs]"
#define NTPSERVERS_parameter "AUTOINSTALL[ubconfig set [network] NTPSERVERS]"
#define NTPSERVERS_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] NTPSERVERS']"
#define DOMAIN_parameter "AUTOINSTALL[ubconfig set [network] DOMAIN]"
#define DOMAIN_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [network] DOMAIN']"
#define DOMAIN_admanger_parameter "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_search "AUTOINSTALL[ubconfig set [users] USERADD["
#define USERADD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [users] USERADD[",target,"]]",NULL)
#define USERADD_parameter_command(target) yon_char_unite("ubconfig --source global get autoinstall AUTOINSTALL['ubconfig set [users] USERADD[",target,"]']",NULL)
#define 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 SERVICES_ENABLE_parameter "AUTOINSTALL[ubconfig set [boot] SERVICES_ENABLE]"
#define SERVICES_ENABLE_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] SERVICES_ENABLE']"
#define GRUB_SUPERUSERS_parameter "AUTOINSTALL[ubconfig set [boot] GRUB_SUPERUSERS]"
#define GRUB_SUPERUSERS_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] GRUB_SUPERUSERS']"
#define GRUB_TIMEOUT_parameter "AUTOINSTALL[ubconfig set [boot] GRUB_TIMEOUT]"
#define GRUB_TIMEOUT_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] GRUB_TIMEOUT']"
#define GRUB_DEFAULT_parameter "AUTOINSTALL[ubconfig set [boot] GRUB_DEFAULT]"
#define GRUB_DEFAULT_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] GRUB_DEFAULT']"
#define GRUB_PASSWORD_parameter_search "AUTOINSTALL[ubconfig set [boot] GRUB_PASSWORD["
#define GRUB_PASSWORD_parameter_all "AUTOINSTALL[ubconfig set [boot] GRUB_PASSWORD[*]]"
#define GRUB_PASSWORD_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [boot] GRUB_PASSWORD[",target,"]]",NULL)
#define GRUB_PASSWORD_parameter_command_all "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] GRUB_PASSWORD[*]']"
#define GRUB_PASSWORD_parameter_command(target) yon_char_unite("ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] GRUB_PASSWORD[",target,"]']",NULL)
#define AUTOLOGINUSER_parameter "AUTOINSTALL[ubconfig set [desktop] AUTOLOGINUSER]"
#define AUTOLOGINUSER_parameter_command "ubconfig get autoinstall AUTOINSTALL['ubconfig set [boot] AUTOLOGINUSER']"
#define NETWORK_parameter_search "AUTOINSTALL[ubconfig set [network] NETWORK["
#define NETWORK_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@connmod]]",NULL)
#define NETWORK_devdown_parameter(target) yon_char_unite("AUTOINSTALL[ubconfig set [network] NETWORK[",target,"@devdown]]",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(target) yon_char_unite("NETWORK[",target,"@connmod]",NULL)
#define installer_lang_parameter "AUTOINSTALL[installer_lang]"
#define installer_lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[installer_lang]"
#define source_parameter "AUTOINSTALL[source]"
#define source_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[source]"
#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 save_additional_config_command(parameters) yon_char_unite("ubconfig --target system set [autoinstall] ",parameters,NULL)
#define get_default_password_command "ubconfig --raw --conarg --source default get [users] NOSECUREROOTPASSWD"
#define open_gparted_command "gparted"
#define PASSWORD_DEFAULT "ublinux"
#define start_fast_install_command "ubinstall2 --autoinstall"
#define progress_path "/var/log/ubinstall_progress.log"
#define password_limits_path "/etc/security/pwquiality.conf"
#define short_log_path "/var/log/ubinstall_progress.log"
#define full_log_path "/var/log/ubinstall.log"
#define yon_config_get_command(target) yon_char_unite("ubconfig --source ",target," --conarg get [autoinstall] AUTOINSTALL[*]",NULL)
#define config_get_default_command "ubconfig --source default --conarg get [autoinstall] AUTOINSTALL[*]"
#define config_get_global_only_parameters ""
#define config_get_local_only_parameters ""
#define ubconfig_file_create(target) yon_char_unite("ubconfig --target \"",target,"\" create",NULL)
#define default_langs(size) yon_char_parsed_new(size,"en_US.UTF-8","ru_RU.UTF-8",NULL);
#define install_common_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_label_parameter,\
part_fs_type_parameter
#define install_part_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_fs_label_parameter,\
part_parameter,\
part_fs_type_parameter,\
part_fs_label_parameter
#define install_next_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_fs_label_parameter,\
part_parameter,\
part_fs_type_parameter,\
part_size_parameter
#define install_advanced_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_label_parameter,\
part_parameter,\
part_fs_type_parameter,\
part_size_parameter
#define install_grub_install_update_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_parameter
#define install_system_only_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_label_parameter,\
part_parameter,\
part_fs_type_parameter,\
part_size_parameter,\
part_crypt_parameter
#define install_userdata_only_parameters \
AUTOINSTALL_TYPE_INSTALL,\
AUTOINSTALL_DEVICE,\
part_format_parameter,\
part_label_parameter,\
part_parameter,\
part_fs_type_parameter,\
part_size_parameter,\
part_crypt_parameter
typedef char* string;
__attribute__((unused)) static \
string version_application;
enum YON_PAGES {
YON_PAGE_WELCOME = 0,
YON_PAGE_LICENCE,
YON_PAGE_SECTIONS,
YON_PAGE_OS_COMPONENTS,
YON_PAGE_INSTALLATION_BEGIN,
YON_PAGE_KERNEL,
YON_PAGE_KERNEL_ADDON,
YON_PAGE_SOFTWARE,
YON_PAGE_PACMAN_SOFTWARE,
YON_PAGE_REGION,
YON_PAGE_KEYBOARD,
YON_PAGE_USERS,
YON_PAGE_STARTUP,
YON_PAGE_BOOTLOADER,
YON_PAGE_NETWORK,
YON_PAGE_INSTALLATION,
YON_PAGE_COMPLETION,
YON_PAGE_COMPLETED,
YON_PAGE_INSTALL_ERROR,
YON_PAGE_CONFIGURE_END,
YON_PAGE_CONFIGURE_SAVE,
YON_PAGE_INSTALL_COMMON,
YON_PAGE_INSTALL_SEPARATE,
YON_PAGE_INSTALL_SAME_PARTITION,
YON_PAGE_INSTALL_ADVANCED,
YON_PAGE_INSTALL_RECOVERY,
YON_PAGE_RECOVERY_GRUB_INSTALL,
YON_PAGE_RECOVERY_GRUB_UPDATE,
YON_PAGE_RECOVERY_OS_ONLY,
YON_PAGE_RECOVERY_USRDATA_ONLY
};
typedef struct {
template_config_fields
config_str launch_arguments;
int launch_size;
int save_done;
int save_configured;
int install_complete;
guint slider_thread;
int install_mode;
unsigned long install_thread;
guint progress_thread;
int configure_mode;
int log_progress_buzy;
int autologin_default;
int format_default;
int log_end;
int exit_accepted;
GMutex progress_mutex;
GMutex install_mutex;
int arg_size;
config_str arg_target;
GtkWidget *status_box;
GHashTable *network_types;
GtkWidget *kernel_unchosen_radio;
char *config_load_path;
char *config_save_path;
unsigned int cur_slide;
} config;
extern config main_config;
typedef struct {
GtkWidget *CommonInstallationDevicesTree;
GtkWidget *GpartedCommonButton;
GtkWidget *CommonInstallationFilesystemTypeCombo;
GtkWidget *CommonInstallationSectionNameEntry;
GtkListStore *DevicesList;
} install_common_page;
typedef struct {
GtkBuilder *builder;
GtkListStore *DevicesList;
GtkListStore *LanguagesList;
GtkTreeStore *LayoutList;
GtkListStore *AdditionalSoftwareList;
GtkListStore *PartitionsList;
GtkWidget *LoadGlobalConfigurationMenuItem;
GtkWidget *LoadLocalConfigurationMenuItem;
GtkWidget *LoadExternalConfigurationMenuItem;
GtkWidget *SaveGlobalLocalConfigurationMenuItem;
GtkWidget *SaveGlobalConfigurationMenuItem;
GtkWidget *SaveLocalConfigurationMenuItem;
GtkWidget *SaveExternalConfigurationMenuItem;
GtkWidget *MainWindow;
GtkWidget *StartScenarioButton;
GtkWidget *SourceButton;
GtkWidget *SkipInstallationButton;
GtkWidget *MainSpinner;
GtkWidget *StatusBox;
GtkWidget *StatusBox2;
GtkWidget *WelcomeToggle;
GtkWidget *LicenceToggle;
GtkWidget *LocationToggle;
GtkWidget *KeyboardToggle;
GtkWidget *SectionsToggle;
GtkWidget *UsersToggle;
GtkWidget *SummaryToggle;
GtkWidget *CompletionToggle;
GtkWidget *InstallationToggle;
GtkWidget *LanguagesTree;
GtkWidget *CountryLanguagesTree;
GtkListStore *InstallerCountryList;
GtkListStore *InstallerLanguageList;
GtkTreeModel *InstallerCountryFilter;
// GtkWidget *LanguageCombo;
GtkWidget *RegionCombo;
GtkWidget *ZoneCombo;
GtkWidget *AvailableLanguagesEntry;
GtkWidget *AvailableLanguagesButton;
GtkWidget *LanguagesCombo;
GtkWidget *KeyboardModelCombo;
GtkWidget *LayoutBindingCombo;
GtkWidget *LayoutTree;
GtkWidget *AddButton;
GtkWidget *RemoveButton;
GtkWidget *InstallationRadio;
GtkWidget *InstallationNearRadio;
GtkWidget *InstallationLinuxRadio;
GtkWidget *InstallationWindowsRadio;
GtkWidget *InstallationOptionsRadio;
GtkWidget *UserImage;
GtkWidget *UserRootNameEntry;
GtkWidget *UserRootLoginEntry;
GtkWidget *UserRootPasswordCombo;
GtkWidget *UserRootPasswordEntry;
GtkWidget *UserRootPasswordButton;
GtkWidget *UserAutologinSwitch;
GtkWidget *UserAddBox;
GtkWidget *UserAddButton;
GtkWidget *HotnameEntry;
GtkWidget *AutoHostnameCheck;
GtkWidget *CancelInstallButton;
GtkWidget *BackButton;
GtkWidget *NextButton;
GtkWidget *mainSettingsButton;
GtkWidget *menu1;
GtkWidget *menu2;
GtkWidget *RegionImage;
GtkWidget *RegionBox;
GtkWidget *RegionAspect;
GtkWidget *KeyboardImage;
GtkWidget *KeyboardBox;
GtkCellRenderer *KeyboardLayoutChosenCell;
GtkWidget *Notebook;
GtkWidget *LicenceLabel;
GtkWidget *SlidesImage;
GtkWidget *CommonInstallationDevicesTree;
GtkWidget *CommonInstallationFilesystemTypeCombo;
GtkWidget *CommonInstallationSectionNameEntry;
GtkWidget *CommonFormatSwitch;
GtkWidget *GpartedCommonButton;
GtkWidget *NextInstallationSysDevicesTree;
GtkWidget *NextInstallationSysSectionTree;
GtkWidget *NextInstallationFormatSwitch;
GtkWidget *NextInstallationFormatRevealer;
GtkWidget *NextInstallationSizeSpin;
GtkWidget *NextInstallationSizeTypeSpin;
GtkWidget *NextInstallationFilesystemTypeCombo;
GtkWidget *NextInstallationSectionNameEntry;
GtkWidget *GpartedNextInstallationButton;
GtkWidget *SamePlaceDeviceTree;
GtkWidget *SamePlacePartTree;
GtkWidget *SameInstallationFormatSwitch;
GtkWidget *SameInstallationFormatRevealer;
GtkWidget *SameInstallationFilesystemTypeCombo;
GtkWidget *SameInstallationSectionNameEntry;
GtkWidget *GpartedSameButton;
GtkWidget *InstallationProgress;
GtkWidget *InstallationLabel;
GtkWidget *ReadShortLogButton;
GtkWidget *PackageInstallationProgress;
GtkWidget *PackageInstallationLabel;
GtkWidget *ReadFullLogButton;
GtkWidget *ConfigurationModeMenuItem;
GtkWidget *EnableVNCMenuItem;
GtkWidget *AboutMenuItem;
GtkWidget *DocumentationMenuItem;
GtkCellRenderer *AdditionalSoftwareCell;
GtkWidget *AdditionalSoftwareTree;
GtkWidget *GrubInstallRadio;
GtkWidget *GrubUpdateRadio;
GtkWidget *SeparateRadio;
GtkWidget *OSRadio;
GtkWidget *UserDataOnlyRadio;
GtkWidget *GpartedGrubInstallButton;
GtkWidget *GrubInstallDevicesTree;
GtkWidget *GrubInstallPartitionTree;
GtkWidget *GpartedGrubUpdateButton;
GtkWidget *GrubUpdateDevicesTree;
GtkWidget *GrubUpdatePartitionTree;
GtkWidget *GpartedOSButton;
GtkWidget *OSDevicesTree;
GtkWidget *OSSysSectionTree;
GtkWidget *OSFormatSwitch;
GtkWidget *OSFormatSizeSpin;
GtkWidget *OSFormatSizeCombo;
GtkWidget *OSFormatPartitionEntry;
GtkWidget *OSFilesystemTypeCombo;
GtkWidget *OSFormatFSMarkEntry;
GtkWidget *OSFormatEncryptionCombo;
GtkWidget *OSFormatEncryptionEntry;
GtkWidget *OSSpinner;
GtkWidget *OSOverlay;
GtkWidget *GpartedUserdataButton;
GtkWidget *UserdataDevicesTree;
GtkWidget *UserdataSysSectionTree;
GtkWidget *UserdataFormatSwitch;
GtkWidget *UserdataFormatSizeSpin;
GtkWidget *UserdataFormatSizeCombo;
GtkWidget *UserdataFormatPartitionEntry;
GtkWidget *UserdataFilesystemTypeCombo;
GtkWidget *UserdataFormatFSMarkEntry;
GtkWidget *UserdataFormatEncryptionCombo;
GtkWidget *UserdataFormatEncryptionEntry;
GtkTreeModel *LanguagesFilter;
GtkTreeModel *LayoutsFilter;
GdkPixbuf *region_original;
GdkPixbuf *keyboard_original;
GdkPixbuf *user_original;
GdkPixbuf *startup_original;
GdkPixbuf *bootloader_original;
GdkPixbuf *network_original;
GList *slides_original;
float region_height_mult;
GtkWidget *RegionSensitiveSwitch;
GtkWidget *HostnameSensitiveSwitch;
GtkWidget *KernelListBox;
GtkWidget *KernelInstallLabel;
GtkWidget *KernelEnableLabel;
GtkWidget *KernelNameLabel;
GtkWidget *KernelTagsLabel;
GtkWidget *KernelModulesLabel;
GtkWidget *KernelDescriptionLabel;
GtkSizeGroup *KernelSizeGroup;
GtkWidget *KernelAddonListBox;
GtkWidget *KernelAddonInstallLabel;
GtkWidget *KernelAddonNameLabel;
GtkWidget *KernelAddonModulesLabel;
GtkWidget *KernelAddonDescriptionLabel;
GtkWidget *OSSoftwareListBox;
GtkWidget *OSSoftwareInstallLabel;
GtkWidget *OSSoftwareNameLabel;
GtkWidget *OSSoftwareTagsLabel;
GtkWidget *OSSoftwareDescriptionLabel;
GtkWidget *PacmanSoftwareSearchEntry;
GtkWidget *PacmanSoftwareStatusImage;
GtkWidget *PacmanSoftwareStatusLabel;
GtkWidget *PacmanSoftwareStatusButton;
GtkWidget *PacmanLoadingOverlay;
GtkWidget *PacmanSoftwareAllPackagesTree;
GtkListStore *PacmanSoftwareAllList;
GtkCellRenderer *PacmanSoftwareAllCell;
GHashTable *pacmanchosen;
GtkWidget *PacmanSoftwareChosenPackagesTree;
GtkListStore *PacmanSoftwareChosenList;
GtkCellRenderer *PacmanSoftwareChosenCell;
GtkWidget *StartupImage;
GtkWidget *StartupServicesTree;
GtkWidget *StartupServicesAddButton;
GtkWidget *StartupServicesEditButton;
GtkWidget *StartupServicesRemoveButton;
GtkCellRenderer *StartupChosenCell;
GtkListStore *StartupList;
GtkWidget *BootloaderImage;
GtkWidget *BootloadTimerSwitch;
GtkWidget *BootloadTimerSpin;
GtkWidget *BootloadDefaultOSEntry;
GtkWidget *BootloadDefaulOSButton;
GtkWidget *BootloadNoPasswordSwitch;
GtkWidget *BootloadUserAddButton;
GtkWidget *BootloadUserRemoveButton;
GtkWidget *BootloadUserTree;
GtkListStore *BootloadUsersList;
GtkWidget *NetworkImage;
GtkWidget *NetworkDomainSwitch;
GtkWidget *NetworkDomainNameEntry;
GtkWidget *NetworkDomainAdminEntry;
GtkWidget *NetworkDomainPasswordEntry;
GtkWidget *NetworkNTPServerSwitch;
GtkWidget *NetworkNTPCombo;
GtkWidget *NetworkNTPEntry;
GtkWidget *NetworkConnectionsBox;
GtkWidget *NetworkConnectionsAddButton;
GHashTable *network_connections;
GtkCellRenderer *AdvancedDeviceChosenCell;
GtkCellRenderer *AdvancedPartChosenCell;
GtkWidget *AdvancedDeviceTree;
GtkWidget *AdvancedVirtualDeviceCombo;
GtkWidget *AdvancedPartitionTree;
GtkWidget *AdvancedPartitionAddBox;
GtkWidget *AdvancedAddButton;
GtkWidget *AdvancedLoadTypeSwitch;
GtkWidget *AdvancedBiosSectorSwitch;
GtkWidget *AdvancedEFISwitch;
GtkWidget *AdvancedSwapSwitch;
GtkWidget *AdvancedSwapAutoSwitch;
GtkWidget *AdvancedSwapRamSwitch;
GtkWidget *AdvancedSwapFixedSpin;
GtkWidget *AdvancedSwapFixedSwitch;
GtkWidget *AdvancedSwapFixedSizeSwitch;
GtkWidget *AdvancedSwapRevealer;
GtkWidget *AdvancedLoadTypeRevealer;
GtkWidget *AdvancedVirtualDeviceLabel;
dictionary *advanced_sections;
GSequence *advanced_partition_order;
GFile *install_progress_file;
GFileMonitor *install_progress_monitor;
GFile *install_info_file;
GFileMonitor *install_info_monitor;
} main_window;
enum ADVANCED_PART_TYPE {
ADVANCED_PART_NEW,
ADVANCED_PART_EXISTING
};
typedef struct {
GtkWidget *MainBox;
GtkWidget *SectionLabel;
GtkWidget *SystemSectionToggle;
GtkWidget *UserDataSectionToggle;
GtkWidget *RemoveButton;
GtkWidget *FormatSwitch;
GtkWidget *FormatRevealer;
GtkWidget *SizeSpin;
GtkWidget *SizeCombo;
GtkWidget *PartLabelEntry;
GtkWidget *FileSystemTypeCombo;
GtkWidget *FileSystemLabelEntry;
GtkWidget *EncryptionCombo;
GtkWidget *EncryptionEntry;
GtkWidget *EncryptionButton;
GtkWidget *SectionPartitionLabel;
GSequenceIter *order_iter;
enum ADVANCED_PART_TYPE part_type;
char *part;
char *device;
} advanced_partition;
typedef struct {
GtkWidget *Window;
GtkWidget *HeaderLabel;
GtkWidget *AlwaysOpenCheck;
GtkWidget *CloseButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
typedef struct{
GtkWidget *MainWindow;
GtkWidget *StatusBox;
GtkWidget *headerBar;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkWidget *LayoutsTree;
GtkCellRenderer *ActiveToggle;
} ubinstall_keyboard_window;
typedef struct{
GtkListStore *liststore1;
GtkWidget *MainWindow;
GtkWidget *StatusBox;
GtkWidget *DefaultCheck;
GtkWidget *headerBar;
GtkWidget *CancelButton;
GtkWidget *SaveButton;
GtkWidget *LanguagesTree;
GtkCellRenderer *ToggleRenderer;
} ubinstall_language_window;
typedef struct{
GtkWidget *CreateGroupWindow;
GtkWidget *StatusBox;
GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
GtkWidget *UserRootPasswordEntry;
GtkWidget *RepeatPasswordEntry;
GtkWidget *PasswordHashEntry;
GtkWidget *HashBox;
GtkWidget *PasswordBox;
GtkWidget *NoEncriptionCheck;
} password_window;
typedef struct {
GtkWidget *Window;
GtkWidget *ScrollWindow;
GtkWidget *StatusBox;
GtkWidget *HeadLabel;
GtkWidget *LogLabel;
GtkWidget *ScrollToEndCheck;
GFileMonitor *monitor;
char *command;
} log_window;
typedef struct {
GtkWidget *Window;
GtkWidget *TitleLabel;
GtkWidget *TextLabel;
GtkWidget *AcceptButton;
GtkWidget *CancelButton;
} confirmation_window;
typedef struct {
GtkWidget *MainBox;
GtkWidget *TypeCombo;
GtkWidget *ConnectionCombo;
GtkWidget *ConnectionEntry;
GtkWidget *EnabledSwitch;
GtkWidget *RemoveButton;
GtkWidget *AutoGetIPSwitch;
GtkWidget *IpRevealer;
GtkWidget *IpAdressEntry;
GtkWidget *GatewayEntry;
GtkWidget *MaskEntry;
GtkWidget *DNSEntry;
} network_info;
typedef struct {
GtkWidget *MainBox;
GtkWidget *RemoveButton;
GtkWidget *UsernameEntry;
GtkWidget *LoginEntry;
GtkWidget *PasswordCombo;
GtkWidget *PasswordEntry;
GtkWidget *PasswordButton;
} yon_user_struct;
typedef struct {
GtkWidget *MenuWindow;
GtkWidget *BackButton;
GtkWidget *ItemsRevealer;
GtkWidget *ItemsListBox;
GtkWidget *ChildrenRevealer;
GtkWidget *ChildrenListBox;
int seat_grab;
dictionary *menu_items;
char *cur_selection;
int button_pos_x;
int button_pos_y;
} yon_menu_window;
typedef struct {
GtkWidget *MenuItemBox;
GtkWidget *MenuButton;
GtkWidget *MenuTextLabel;
GtkWidget *NextIconButton;
char *target;
main_window *widgets;
yon_menu_window *window;
dictionary *children;
} yon_menu_item;
typedef struct {
GtkWidget *row;
GtkWidget *RowBox;
GtkWidget *TagsBox;
GtkWidget *InstallCheck;
GtkWidget *EnableRadio;
GtkWidget *EnableSeparator;
GtkWidget *TagsSeparator;
GtkWidget *NameLabel;
GtkWidget *DescriptionLabel;
GtkWidget *ModulesLabel;
char *name;
char *modules;
char *package;
} kernel_row;
typedef struct {
GtkWidget *row;
GtkWidget *RowBox;
GtkWidget *TagsBox;
GtkWidget *InstallCheck;
GtkWidget *NameLabel;
GtkWidget *VersionLabel;
GtkWidget *DescriptionLabel;
char *name;
char *modules;
char *version;
} os_row;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *UnitEntry;
GtkWidget *ServiceEntry;
GtkWidget *DescriptionEntry;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
} startup_service_window;
struct pacman_struct{
main_window *widgets;
const char *find_package;
gsize packages_size;
config_str packages;
};
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *TitleLabel;
GtkWidget *AdminCheck;
GtkWidget *UsernameEntry;
GtkWidget *PasswordEntry;
GtkWidget *PasswordButton;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
char *prev_name;
} bootloader_user_window;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *PathEntry;
GtkWidget *PathButton;
GtkWidget *CancelButton;
GtkWidget *ChooseButton;
} configuration_window;
typedef struct {
GtkWidget *Window;
GtkWidget *StatusBox;
GtkWidget *CancelButton;
GtkWidget *AcceptButton;
GtkWidget *AutoSwitch;
GtkWidget *TypeCombo;
GtkWidget *PathEntry;
GtkWidget *PathButton;
GtkWidget *AddButton;
GtkWidget *AddBox;
GHashTable *sources;
} source_window;
typedef struct {
GtkWidget *MainBox;
GtkWidget *TypeCombo;
GtkWidget *PathEntry;
GtkWidget *PathButton;
GtkWidget *RemoveButton;
} source_element;
enum PART_SOURCE {
PART_SOURCE_DEVICE,
PART_SOURCE_PART,
PART_SOURCE_VIRTUAL
};
typedef struct {
char *partition;
char *device;
int sys_section;
int user_section;
gboolean format;
unsigned long size;
char size_letter;
char *part_label;
char *fs_type;
char *fs_label;
char *encryption;
char *encryption_password;
enum PART_SOURCE part_source;
advanced_partition *partition_widgets;
} advanced_section;
void config_init();
main_window *yon_main_window_complete();
ubinstall_language_window *yon_ubinstall_language_new();
void NewFunction(ubinstall_language_window *window, GtkBuilder *builder);
ubinstall_keyboard_window *yon_ubinstall_keyboard_new();
void on_password_accept(GtkWidget *self, dictionary *dict);
void yon_interface_update(main_window *widgets);
void on_summary_log_view(GtkWidget *,main_window *widgets);
void on_device_selection_changed(GtkWidget *self, main_window *widgets);
void on_toggle_button_switch_on(GtkWidget *, GtkToggleButton *toggle);
void on_autohostname_sensitiveness_check(GtkWidget *, int status, main_window *widgets);
void on_autohostname_check(GtkWidget *, main_window *widgets);
void on_hostname_entry_changed (GtkWidget *, main_window *widgets);
gboolean on_install_success(main_window *widgets);
gboolean on_install_error(main_window *widgets);
// confirmation_window *yon_confirmation_window_new();
void on_reboot_accepted(main_window *widgets);
void on_keyboard_clicked (GtkWidget *, 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_language_clicked(GtkWidget *, main_window *widgets);
void yon_language_selection_changed(GtkCellRenderer *, char *path, ubinstall_language_window *window);
void on_language_window_accept(GtkWidget *,dictionary *dict);
void on_keyboard_removed(GtkWidget *, main_window *widgets);
void on_exit_accepted(main_window *widgets);
void on_gparted_open();
// void on_same_installation_device_changed(GtkWidget *, main_window *widgets);
void on_separate_installation_changed(GtkWidget *self, main_window *widgets);
void on_partition_changed(GtkWidget *self, main_window *widgets);
void yon_set_max_size_from_partition(GtkTreeView *table, GtkSpinButton *spin_size, GtkComboBox *size_type);
gboolean on_yon_exit(GtkWidget *,GdkEvent*, main_window *widgets);
void on_locale_changed(GtkWidget *,main_window *);
void on_region_changed(GtkComboBox *self, 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);
void on_process_log_view(GtkWidget *,main_window *widgets);
void yon_read_log(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,log_window *window);
log_window *yon_log_window_new();
void on_log_closed(GtkWidget *, log_window *window);
void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets);
void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets);
void *on_config_save(void *data);
void *on_setup_system_configuration(void * data);
gboolean on_image_slide(void *data);
void on_region_resized(GtkWidget *,main_window *widgets);
int yon_image_resize_from_container(GtkImage *target, GdkPixbuf *pixbuf_unscaled);
void on_configuration_mode_switch(GtkWidget *self,main_window *widgets);
double yon_size_long_convert_automatic(unsigned long bytes, char *size);
double yon_size_long_convert_to_mod(double size, char mod);
void on_root_get_root(char *argline);
void on_config_custom_save(GtkWidget *, main_window *widgets);
void on_config_global_save(GtkWidget *,main_window *widgets);
void on_config_local_save(GtkWidget *,main_window *widgets);
void on_config_global_local_save(GtkWidget *,main_window *widgets);
void on_config_custom_load_last(GtkWidget *,main_window *widgets);
void on_config_custom_load(GtkWidget *,main_window *);
void on_config_global_load(GtkWidget *,main_window *);
void on_config_local_load(GtkWidget *,main_window *widgets);
void yon_config_save_proceed(char *path, YON_CONFIG_TYPE type);
void on_page_next_clicked(GtkWidget *, main_window *widgets);
void on_page_prev_clicked(GtkWidget *, main_window *widgets);
void yon_load_proceed(YON_CONFIG_TYPE type);
void _yon_saving_threaded(char *final_command);
enum YON_PAGES yon_page_get_next(main_window *widgets,enum YON_PAGES page);
enum YON_PAGES yon_page_get_prev(enum YON_PAGES page);
enum YON_PAGES yon_sections_get_next_page(main_window *widgets);
enum YON_PAGES yon_recovery_get_next(main_window *widgets);
enum YON_PAGES yon_page_get_current(GtkNotebook *target);
void yon_switch_page_render(main_window *widgets);
void yon_page_update(main_window *);
void yon_navigation_buttons_set_sensetiveness(main_window *widgets);
int yon_region_save(main_window *widgets);
int yon_keyboard_save(main_window *widgets);
int yon_install_common_save(main_window *widgets);
int yon_install_separate_save(main_window *widgets);
int yon_install_same_partition_save(main_window *widgets);
int yon_grub_install_save(main_window *widgets);
int yon_grub_update_save(main_window *widgets);
int yon_os_components_save(main_window *widgets);
int yon_software_save(main_window *widgets);
int yon_kernel_save(main_window *widgets);
int yon_page_save(main_window *widgets, enum YON_PAGES page);
int yon_users_save(main_window *widgets);
int yon_bootloader_save(main_window *widgets);
int yon_startup_save(main_window *widgets);
network_info *yon_network_info_new();
int yon_install_advanced_save(main_window *widgets);
int yon_network_save(main_window *widgets);
void on_connection_add(GtkWidget *,main_window *widgets);
void on_ntp_sync(GtkWidget *, main_window *widgets);
int yon_advanced_sections_save(dictionary *dict);
void yon_configuration_mode_check(main_window *widgets);
void on_configuration_mode_switch(GtkWidget *self,main_window *widgets);
void *_yon_installation_start(main_window *widgets);
int yon_installation_start(main_window *widgets);
enum INSTALL_TYPE yon_ubl_get_install_mode();
int yon_user_save(yon_user_struct *user);
void on_user_add(GtkWidget *,main_window *widgets);
yon_user_struct *yon_user_struct_new();
void on_user_remove_clicked(GtkWidget *,yon_user_struct *user);
void yon_password_new(GtkWidget *, yon_user_struct *user);
void yon_password_root_new(GtkWidget *, main_window *widgets);
yon_menu_item *yon_menu_item_new();
yon_menu_window *yon_menu_window_new();
void on_menu_window_size_reallocated(GtkWidget *self,GtkAllocation *,yon_menu_window *window);
void on_children_clean(GtkWidget*, yon_menu_window *window);
gboolean yon_on_revealer_switched (yon_menu_window *window);
gboolean on_menu_clicked(GtkWidget *, GdkEventButton *event, yon_menu_window *window);
yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets);
void on_submenu_open(GtkWidget *,yon_menu_item *item);
void on_menu_chosen(GtkWidget *, yon_menu_item *item);
void yon_kernel_setup(main_window *widgets);
void yon_kernel_row_setup(kernel_row *row, char *name, char *modules,char *package, char *tags, char *description);
void yon_kernel_row_setup_tags(kernel_row *row, char *tags);
int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name);
kernel_row *yon_kernel_row_new();
void yon_kernel_resize(main_window *widgets);
void on_additional_software_toggled(GtkWidget *, char *path, main_window *widgets);
void yon_kernel_addon_setup(main_window *widgets);
void yon_kernel_addon_resize(main_window *widgets);
void yon_startup_services_setup(main_window *widgets);
void on_srartup_services_toggled(GtkWidget *, char *path, main_window *widgets);
void on_startup_service_edit(GtkWidget *, main_window *widgets);
void on_startup_service_add(GtkWidget *, main_window *widgets);
startup_service_window *yon_startup_service_window_new();
void on_startup_edit_accept(GtkWidget *, main_window *widgets);
void on_startup_add_accept(GtkWidget *, main_window *widgets);
void yon_startup_services_setup(main_window *widgets);
void on_startup_services_remove(GtkWidget *self,main_window *widgets);
void on_startup_services_selection_changed(GtkWidget *,main_window *widgets);
void on_pacman_software_all_toggled(GtkWidget *, char *path, main_window *widgets);
void on_pacman_software_chosen_toggled(GtkWidget *, char *path, main_window *widgets);
int yon_pacman_software_save(main_window *widgets);
void on_pacman_icon_press(GtkEntry *self,GtkEntryIconPosition icon_pos,GdkEvent* event,main_window *widgets);
gboolean yon_pacman_fill(struct pacman_struct *pacman);
void *yon_pacman_load(struct pacman_struct *pacman);
int yon_kernel_addon_save(main_window *widgets);
void yon_password_change(GtkWidget *, bootloader_user_window *window);
bootloader_user_window *yon_bootloader_user_window_new();
void on_bootloader_user_add(GtkWidget *, main_window *widgets);
void on_bootloader_user_accept(GtkWidget *, bootloader_user_window *window);
void yon_bootloader_interface_update(main_window *widgets);
void on_type_changed(GtkComboBox *self,network_info *info);
void yon_network_init(main_window *widgets);
void yon_page_init(main_window *widgets, enum YON_PAGES page);
void yon_bootloader_init(main_window *widgets);
void on_kernel_install_enabled(GtkWidget *, kernel_row *row);
void yon_user_init(main_window *widgets);
void yon_region_init(main_window *widgets);
void yon_keyboard_init(main_window *widgets);
void yon_install_init(main_window *widgets, enum YON_PAGES page);
void yon_install_advanced_init(main_window *widgets);
void yon_os_components_init(main_window *widgets);
void yon_pacman_init(main_window *widgets);
void yon_software_init(main_window *widgets);
void on_install_advanced_device_chosen(GtkCellRenderer*, gchar *path, main_window *widgets);
void on_install_advanced_partition_chosen(GtkCellRenderer*, gchar *path, main_window *widgets);
void yon_devices_setup(main_window *widgets);
void on_advanced_password_clicked(GtkWidget *, advanced_partition *part);
advanced_partition *yon_advanced_partition_new();
void on_advanced_part_remove(GtkWidget *self, main_window *widgets);
int yon_advanced_get_part_size(main_window *widgets);
void yon_advanced_partition_clear(main_window *widgets);
void yon_layout_build(char *key, GHashTable *value, main_window *widgets);
void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description);
os_row *yon_os_row_new();
void yon_quick_install(GtkWidget *, main_window *widgets);
void on_keyboard_layout_chosen(GtkCellRenderer *self, gchar *path, main_window *widgets);
void configuration_mode_accept(GtkWidget *,configuration_window *window);
void on_path_choose(GtkWidget *,configuration_window *window);
void on_configuration_exit(GtkWidget *,configuration_window *window);
int yon_config_save(main_window *widgets);
void yon_config_restore(main_window *widgets);
void on_source_clicked(GtkWidget *,main_window *widgets);
source_window *yon_source_window_new();
void on_source_accept(GtkWidget *,source_window *window);
void on_source_choose(GtkWidget *self);
void on_source_remove(GtkWidget *,source_element *element);
void on_source_add(GtkWidget *,source_window *window);
void yon_source_update(source_window *window);
void yon_source_element_add(char *key,void*,source_window *window);
source_element *yon_source_element_new();
void on_system_setup_pass(GtkWidget *, main_window *widgets);
void yon_resize_images_update(main_window *widgets);
void on_vnc_toggled(GtkWidget *self, main_window *widgets);
void yon_main_window_create(main_window *widgets);
void set_locales_list(main_window *widgets);
void on_installer_language_changed(GtkWidget *self, main_window *widgets);
gboolean on_country_filter(GtkTreeModel *self, GtkTreeIter *iter, main_window *widgets);
int yon_char_parsed_compare(const void *a, const void *b);
gboolean yon_os_component_insert(os_row *row);
void *yon_os_components_setup(main_window *widgets);
gboolean yon_spinner_switch_off(GtkSpinner *target);
void on_advanced_added(GtkWidget *, char *, main_window *);
void on_advanced_new(GtkWidget *, main_window *);
int yon_advanced_section_get(char *partition);
void yon_advanced_partition_set_from_section(advanced_partition *part, advanced_section *section);
void yon_advanced_update(main_window *widgets);
void on_advanced_partition_create(GtkWidget *, main_window *widgets);
void yon_advanced_parts_update(main_window *widgets);
void on_advanced_partition_add(GtkWidget *, char *path, main_window *widgets);
void yon_advanced_section_remove_all();
void on_advanced_section_toggled(GtkWidget *self, main_window *widgets);
void yon_fs_type_setup(GtkComboBoxText *target);
void yon_advanced_set_max_size_from_partition(advanced_partition *part, main_window *widgets);
void on_advanced_size_changed(GtkWidget *self,main_window *widgets);
int yon_advanced_save(main_window *widgets);
void yon_advanced_part_parameter_changed(GtkWidget *self, advanced_partition *part);
void yon_advanced_section_update(main_window *widgets);
void yon_advanced_section_update_section(advanced_partition *part,GtkWidget *cur_toggle,main_window *widgets);
int yon_advanced_section_get_by_part(advanced_partition *part);
void yon_advanced_section_remove_by_name(char *part);
void on_advanced_virtual_device_changed(GtkWidget *, main_window *widgets);
int yon_advanced_section_append(advanced_section *section);
gboolean on_format_changed(GtkWidget *self, gboolean state, advanced_partition *part);