|
|
#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>
|
|
|
#ifdef WEBKIT_FOUND
|
|
|
#include <webkit2/webkit2.h>
|
|
|
#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();
|