#include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubinstall-gtk-output" #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 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-gui" #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 licence_path "/usr/share/ublinux/agreement/EULA.txt" #define languages_path "/usr/share/ubinstall-gtk/csv/locales.csv" #define zone_path "/usr/share/zoneinfo/" #define additional_software_path "resource:///com/ublinux/csv/modules.csv" #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_layouts_command "xkbcli list --load-exotic | awk \"layout && /description:/ {match(\\$0,/: *(.*)/,matches);description=matches[1];printf \\\"%s|%s\\n\\\",layout,description;layout=\\\"\\\"} /layout:/ {match(\\$0, /: *'([^']+)'/,matches);l=matches[1];if (layouts[l]) next;layout=layouts[l]=l}\" | sort -u" #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,253" #define get_parts_and_devices_command "lsblk --noheadings -Jo TYPE,PATH,SIZE,FSTYPE,LABEL,PARTLABEL,MOUNTPOINT,FSUSED,FSUSE% --exclude 7,253" #define AUTOINSTALL_TYPE_INSTALL "AUTOINSTALL[type_install]" #define AUTOINSTALL_DEVICE "AUTOINSTALL[device]" #define AUTOSTART_PARTS "AUTOINSTALL[part]" #define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get autoinstall AUTOINSTALL[type_install]" #define AUTOINSTALL_DEVICE_command "ubconfig --source global get autoinstall AUTOINSTALL[device]" #define AUTOSTART_PARTS_command "ubconfig --source global get autoinstall AUTOINSTALL[part]" #define start_fast_install_command "ubinstall2 --autoinstall" typedef char* string; string version_application; char *local; enum YON_PAGES { YON_PAGE_WELCOME = 0, YON_PAGE_LICENCE, YON_PAGE_SECTIONS, YON_PAGE_OS_COMPONENTS, YON_PAGE_SOFTWARE, YON_PAGE_INSTALLATION, YON_PAGE_REGION, YON_PAGE_KEYBOARD, YON_PAGE_USERS, YON_PAGE_COMPLETION, YON_PAGE_COMPLETED, YON_PAGE_INSTALL_COMMON, YON_PAGE_INSTALL_SEPARATE, YON_PAGE_INSTALL_SAME_PARTITION }; typedef struct { int socket_id; int load_socket_id; int save_socket_id; int lock_help; int lock_save_local; int lock_save_global; int lock_load_global; int always_open_documentation; int debug_mode; guint slider_thread; int install_mode; } config; typedef struct { GtkBuilder *builder; GtkListStore *DevicesList; GtkListStore *LanguagesList; GtkTreeStore *LayoutList; GtkListStore *AdditionalSoftwareList; GtkListStore *PartitionsList; GtkWidget *MainWindow; GtkWidget *StatusBox; GtkWidget *WelcomeToggle; GtkWidget *LicenceToggle; GtkWidget *LocationToggle; GtkWidget *KeyboardToggle; GtkWidget *SectionsToggle; GtkWidget *UsersToggle; GtkWidget *SummaryToggle; GtkWidget *InstallationToggle; GtkWidget *LanguageCombo; GtkWidget *RegionCombo; GtkWidget *ZoneCombo; GtkWidget *AvailableLanguagesEntry; GtkWidget *AvailableLanguagesButton; GtkWidget *LanguagesCombo; GtkWidget *KeyboardModelCombo; GtkWidget *LayoutBindingCombo; GtkWidget *DefaultLayoutRadio; GtkWidget *ManualLayoutRadio; GtkWidget *LayoutTree; GtkWidget *AddButton; GtkWidget *RemoveButton; GtkWidget *InstallationRadio; GtkWidget *InstallationNearRadio; GtkWidget *InstallationLinuxRadio; GtkWidget *InstallationWindowsRadio; GtkWidget *InstallationOptionsRadio; GtkWidget *UserNameEntry; GtkWidget *LoginEntry; GtkWidget *PasswordCombo; GtkWidget *PasswordEntry; GtkWidget *PasswordButton; GtkWidget *AutologinCheck; GtkWidget *AdminPasswordCombo; GtkWidget *AdminPasswordEntry; GtkWidget *AdminPasswordButton; GtkWidget *HotnameEntry; GtkWidget *CancelInstallButton; GtkWidget *BackButton; GtkWidget *NextButton; GtkWidget *mainSettingsButton; GtkWidget *menu1; GtkWidget *menu2; GtkWidget *RegionImage; GtkWidget *RegionBox; GtkWidget *RegionAspect; GtkWidget *KeyboardImage; GtkWidget *KeyboardBox; GtkWidget *Notebook; GtkWidget *LicenceLabel; GtkWidget *SlidesImage; GtkWidget *InstallationNearSysDevicesTree; GtkWidget *InstallationNearSysSectionTree; GtkWidget *InstallationNearSizeSpin; GtkWidget *InstallationNearSizeTypeSpin; GtkWidget *SamePlaceDeviceTree; GtkWidget *SamePlacePartTree; GtkWidget *SamePlaceSizeSpin; GtkWidget *SamePlaceSizeTypeSpin; GtkWidget *InstallationProgress; GtkWidget *InstallationLabel; GtkWidget *PackageInstallationProgress; GtkWidget *PackageInstallationLabel; GtkCellRenderer *AdditionalSoftwareCell; GtkWidget *CommonInstallationDevicesTree; GtkWidget *AdditionalSoftwareTree; GtkTreeModel *LanguagesFilter; GdkPixbuf *regions_original; GdkPixbuf *keyboard_original; GdkPixbuf *slides_original; float region_height_mult; } main_window; typedef struct { GtkWidget *Window; GtkWidget *AlwaysOpenCheck; GtkWidget *CloseButton; GtkWidget *AcceptButton; } documentation_confirmation_window; typedef struct{ GtkWidget *MainWindow; GtkWidget *StatusBox; GtkWidget *headerBar; GtkWidget *CancelButton; GtkWidget *SaveButton; GtkWidget *LayoutsTree; } 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; 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();