feat(modulo): add wrong edition page in Wizard GUI

This commit is contained in:
Federico Terzi 2021-08-24 23:04:25 +02:00
parent 0d70cd8405
commit ad029b626e
8 changed files with 521 additions and 8 deletions

View File

@ -97,12 +97,17 @@ const int MIGRATE_RESULT_CLEAN_FAILURE = 1;
const int MIGRATE_RESULT_DIRTY_FAILURE = 2;
const int MIGRATE_RESULT_UNKNOWN_FAILURE = 3;
const int DETECTED_OS_UNKNOWN = 0;
const int DETECTED_OS_X11 = 1;
const int DETECTED_OS_WAYLAND = 2;
typedef struct WizardMetadata {
const char *version;
const int is_welcome_page_enabled;
const int is_move_bundle_page_enabled;
const int is_legacy_version_page_enabled;
const int is_wrong_edition_page_enabled;
const int is_migrate_page_enabled;
const int is_add_path_page_enabled;
const int is_accessibility_page_enabled;
@ -111,6 +116,7 @@ typedef struct WizardMetadata {
const char *welcome_image_path;
const char *accessibility_image_1_path;
const char *accessibility_image_2_path;
const int detected_os;
// METHODS
int (*is_legacy_version_running)();

View File

@ -113,6 +113,10 @@ pub const WIZARD_MIGRATE_RESULT_CLEAN_FAILURE: i32 = 1;
pub const WIZARD_MIGRATE_RESULT_DIRTY_FAILURE: i32 = 2;
pub const WIZARD_MIGRATE_RESULT_UNKNOWN_FAILURE: i32 = 3;
pub const WIZARD_DETECTED_OS_UNKNOWN: i32 = 0;
pub const WIZARD_DETECTED_OS_X11: i32 = 1;
pub const WIZARD_DETECTED_OS_WAYLAND: i32 = 2;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WizardMetadata {
@ -121,6 +125,7 @@ pub struct WizardMetadata {
pub is_welcome_page_enabled: c_int,
pub is_move_bundle_page_enabled: c_int,
pub is_legacy_version_page_enabled: c_int,
pub is_wrong_edition_page_enabled: c_int,
pub is_migrate_page_enabled: c_int,
pub is_add_path_page_enabled: c_int,
pub is_accessibility_page_enabled: c_int,
@ -129,6 +134,7 @@ pub struct WizardMetadata {
pub welcome_image_path: *const c_char,
pub accessibility_image_1_path: *const c_char,
pub accessibility_image_2_path: *const c_char,
pub detected_os: c_int,
pub is_legacy_version_running: extern fn() -> c_int,
pub backup_and_migrate: extern fn() -> c_int,

View File

@ -20,8 +20,17 @@
use std::os::raw::{c_char, c_int};
use std::{ffi::CString, sync::Mutex};
use crate::sys::interop::{
WIZARD_DETECTED_OS_UNKNOWN, WIZARD_DETECTED_OS_WAYLAND, WIZARD_DETECTED_OS_X11,
};
use crate::sys::util::convert_to_cstring_or_null;
use crate::{sys::interop::{WIZARD_MIGRATE_RESULT_CLEAN_FAILURE, WIZARD_MIGRATE_RESULT_DIRTY_FAILURE, WIZARD_MIGRATE_RESULT_SUCCESS, WIZARD_MIGRATE_RESULT_UNKNOWN_FAILURE, WizardMetadata}, wizard::{WizardHandlers, WizardOptions}};
use crate::{
sys::interop::{
WizardMetadata, WIZARD_MIGRATE_RESULT_CLEAN_FAILURE, WIZARD_MIGRATE_RESULT_DIRTY_FAILURE,
WIZARD_MIGRATE_RESULT_SUCCESS, WIZARD_MIGRATE_RESULT_UNKNOWN_FAILURE,
},
wizard::{WizardHandlers, WizardOptions},
};
lazy_static! {
static ref HANDLERS: Mutex<Option<WizardHandlers>> = Mutex::new(None);
@ -126,7 +135,7 @@ pub fn show(options: WizardOptions) -> bool {
(*handler_ref)()
}
}
{
let mut lock = HANDLERS.lock().expect("unable to acquire handlers lock");
*lock = Some(options.handlers)
@ -150,6 +159,11 @@ pub fn show(options: WizardOptions) -> bool {
} else {
0
},
is_wrong_edition_page_enabled: if options.is_wrong_edition_page_enabled {
1
} else {
0
},
is_migrate_page_enabled: if options.is_migrate_page_enabled {
1
} else {
@ -170,6 +184,11 @@ pub fn show(options: WizardOptions) -> bool {
welcome_image_path: c_welcome_image_path_ptr,
accessibility_image_1_path: c_accessibility_image_1_path_ptr,
accessibility_image_2_path: c_accessibility_image_2_path_ptr,
detected_os: match options.detected_os {
crate::wizard::DetectedOS::Unknown => WIZARD_DETECTED_OS_UNKNOWN,
crate::wizard::DetectedOS::X11 => WIZARD_DETECTED_OS_X11,
crate::wizard::DetectedOS::Wayland => WIZARD_DETECTED_OS_WAYLAND,
},
is_legacy_version_running,
backup_and_migrate,
@ -179,9 +198,11 @@ pub fn show(options: WizardOptions) -> bool {
on_completed,
};
let successful = unsafe {
super::interop::interop_show_wizard(&wizard_metadata)
};
let successful = unsafe { super::interop::interop_show_wizard(&wizard_metadata) };
if successful == 1 { true } else { false }
}
if successful == 1 {
true
} else {
false
}
}

View File

@ -30,7 +30,8 @@
const int WELCOME_PAGE_INDEX = 0;
const int MOVE_BUNDLE_PAGE_INDEX = WELCOME_PAGE_INDEX + 1;
const int LEGACY_VERSION_PAGE_INDEX = MOVE_BUNDLE_PAGE_INDEX + 1;
const int MIGRATE_PAGE_INDEX = LEGACY_VERSION_PAGE_INDEX + 1;
const int WRONG_EDITION_PAGE_INDEX = LEGACY_VERSION_PAGE_INDEX + 1;
const int MIGRATE_PAGE_INDEX = WRONG_EDITION_PAGE_INDEX + 1;
const int ADD_PATH_PAGE_INDEX = MIGRATE_PAGE_INDEX + 1;
const int ACCESSIBILITY_PAGE_INDEX = ADD_PATH_PAGE_INDEX + 1;
const int MAX_PAGE_INDEX = ACCESSIBILITY_PAGE_INDEX + 1; // Update if a new page is added at the end
@ -71,6 +72,11 @@ int find_next_page(int current_index)
{
return LEGACY_VERSION_PAGE_INDEX;
}
case WRONG_EDITION_PAGE_INDEX:
if (wizard_metadata->is_wrong_edition_page_enabled)
{
return WRONG_EDITION_PAGE_INDEX;
}
case MIGRATE_PAGE_INDEX:
if (wizard_metadata->is_migrate_page_enabled)
{
@ -101,6 +107,7 @@ protected:
void migrate_compatibility_mode_clicked(wxCommandEvent &event);
void add_path_continue_clicked( wxCommandEvent& event );
void accessibility_enable_clicked( wxCommandEvent& event );
void quit_espanso_clicked( wxCommandEvent& event );
void navigate_to_next_page_or_close();
void change_default_button(int target_page);
@ -135,6 +142,16 @@ DerivedFrame::DerivedFrame(wxWindow *parent)
this->accessibility_image2->SetBitmap(accessiblityImage2);
}
// Wrong edition
if (wizard_metadata->is_wrong_edition_page_enabled) {
if (wizard_metadata->detected_os == DETECTED_OS_X11) {
this->wrong_edition_description_x11->Hide();
}
if (wizard_metadata->detected_os == DETECTED_OS_WAYLAND) {
this->wrong_edition_description_wayland->Hide();
}
}
// Load the first page
int page = find_next_page(-1);
if (page >= 0)
@ -244,6 +261,11 @@ void DerivedFrame::accessibility_enable_clicked( wxCommandEvent& event )
}
}
void DerivedFrame::quit_espanso_clicked( wxCommandEvent& event )
{
Close(true);
}
void DerivedFrame::check_timer_tick(wxTimerEvent &event)
{
if (this->m_simplebook->GetSelection() == LEGACY_VERSION_PAGE_INDEX)

View File

@ -1136,6 +1136,407 @@
</object>
</object>
</object>
<object class="simplebookpage" expanded="1">
<property name="label">a page</property>
<property name="select">0</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg">wxSYS_COLOUR_WINDOW</property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_panel</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer213</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">20</property>
<property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_LEFT|wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font">,90,92,18,70,0</property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Incompatibility detected</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_title</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">20</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxLEFT|wxRIGHT|wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">This version of espanso was compiled to support X11-based systems, but it seems you are on a Wayland-based desktop environment.&#x0A;&#x0A;Unfortunately, the two versions are incompatible. To use espanso, please download the Wayland version from the website.&#x0A;&#x0A;For more information:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_description_x11</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">500</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxLEFT|wxRIGHT|wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">This version of espanso was compiled to support Wayland-based systems, but it seems you are on a X11-based desktop environment.&#x0A;&#x0A;Unfortunately, the two versions are incompatible. To use espanso, please download the X11 version from the website.&#x0A;&#x0A;For more information:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_description_wayland</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">500</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxLEFT|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxHyperlinkCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="hover_color"></property>
<property name="id">wxID_ANY</property>
<property name="label">https://espanso.org/install</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_link</property>
<property name="normal_color"></property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxHL_DEFAULT_STYLE</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="url">https://espanso.org/install</property>
<property name="visited_color"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">10</property>
<property name="flag">wxALIGN_RIGHT|wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="current"></property>
<property name="default">1</property>
<property name="default_pane">0</property>
<property name="disabled"></property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Quit Espanso</property>
<property name="margins"></property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">wrong_edition_button</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">quit_espanso_clicked</event>
</object>
</object>
</object>
</object>
</object>
<object class="simplebookpage" expanded="1">
<property name="label">a page</property>
<property name="select">0</property>

View File

@ -133,6 +133,45 @@ WizardFrame::WizardFrame( wxWindow* parent, wxWindowID id, const wxString& title
legacy_version_panel->Layout();
bSizer21->Fit( legacy_version_panel );
m_simplebook->AddPage( legacy_version_panel, wxT("a page"), false );
wrong_edition_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wrong_edition_panel->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
wxBoxSizer* bSizer213;
bSizer213 = new wxBoxSizer( wxVERTICAL );
wrong_edition_title = new wxStaticText( wrong_edition_panel, wxID_ANY, wxT("Incompatibility detected"), wxDefaultPosition, wxDefaultSize, 0 );
wrong_edition_title->Wrap( -1 );
wrong_edition_title->SetFont( wxFont( 18, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
bSizer213->Add( wrong_edition_title, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_LEFT|wxTOP, 20 );
bSizer213->Add( 0, 20, 0, 0, 5 );
wrong_edition_description_x11 = new wxStaticText( wrong_edition_panel, wxID_ANY, wxT("This version of espanso was compiled to support X11-based systems, but it seems you are on a Wayland-based desktop environment.\n\nUnfortunately, the two versions are incompatible. To use espanso, please download the Wayland version from the website.\n\nFor more information:"), wxDefaultPosition, wxDefaultSize, 0 );
wrong_edition_description_x11->Wrap( 500 );
bSizer213->Add( wrong_edition_description_x11, 0, wxLEFT|wxRIGHT|wxTOP, 10 );
wrong_edition_description_wayland = new wxStaticText( wrong_edition_panel, wxID_ANY, wxT("This version of espanso was compiled to support Wayland-based systems, but it seems you are on a X11-based desktop environment.\n\nUnfortunately, the two versions are incompatible. To use espanso, please download the X11 version from the website.\n\nFor more information:"), wxDefaultPosition, wxDefaultSize, 0 );
wrong_edition_description_wayland->Wrap( 500 );
bSizer213->Add( wrong_edition_description_wayland, 0, wxLEFT|wxRIGHT|wxTOP, 10 );
wrong_edition_link = new wxHyperlinkCtrl( wrong_edition_panel, wxID_ANY, wxT("https://espanso.org/install"), wxT("https://espanso.org/install"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
bSizer213->Add( wrong_edition_link, 0, wxLEFT|wxRIGHT, 10 );
bSizer213->Add( 0, 0, 1, wxEXPAND, 5 );
wrong_edition_button = new wxButton( wrong_edition_panel, wxID_ANY, wxT("Quit Espanso"), wxDefaultPosition, wxDefaultSize, 0 );
wrong_edition_button->SetDefault();
bSizer213->Add( wrong_edition_button, 0, wxALIGN_RIGHT|wxALL, 10 );
wrong_edition_panel->SetSizer( bSizer213 );
wrong_edition_panel->Layout();
bSizer213->Fit( wrong_edition_panel );
m_simplebook->AddPage( wrong_edition_panel, wxT("a page"), false );
migrate_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
migrate_panel->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
@ -284,6 +323,7 @@ WizardFrame::WizardFrame( wxWindow* parent, wxWindowID id, const wxString& title
m_simplebook->Connect( wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED, wxBookCtrlEventHandler( WizardFrame::on_page_changed ), NULL, this );
welcome_start_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::welcome_start_clicked ), NULL, this );
move_bundle_quit_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::move_bundle_quit_clicked ), NULL, this );
wrong_edition_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::quit_espanso_clicked ), NULL, this );
migrate_compatibility_mode_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::migrate_compatibility_mode_clicked ), NULL, this );
migrate_backup_and_migrate_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::migrate_button_clicked ), NULL, this );
add_path_continue_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::add_path_continue_clicked ), NULL, this );
@ -297,6 +337,7 @@ WizardFrame::~WizardFrame()
m_simplebook->Disconnect( wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED, wxBookCtrlEventHandler( WizardFrame::on_page_changed ), NULL, this );
welcome_start_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::welcome_start_clicked ), NULL, this );
move_bundle_quit_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::move_bundle_quit_clicked ), NULL, this );
wrong_edition_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::quit_espanso_clicked ), NULL, this );
migrate_compatibility_mode_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::migrate_compatibility_mode_clicked ), NULL, this );
migrate_backup_and_migrate_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::migrate_button_clicked ), NULL, this );
add_path_continue_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WizardFrame::add_path_continue_clicked ), NULL, this );

View File

@ -57,6 +57,12 @@ class WizardFrame : public wxFrame
wxStaticText* legacy_version_description;
wxHyperlinkCtrl* legacy_version_docs_link;
wxButton* legacy_version_continue_button;
wxPanel* wrong_edition_panel;
wxStaticText* wrong_edition_title;
wxStaticText* wrong_edition_description_x11;
wxStaticText* wrong_edition_description_wayland;
wxHyperlinkCtrl* wrong_edition_link;
wxButton* wrong_edition_button;
wxPanel* migrate_panel;
wxStaticText* migrate_title;
wxStaticText* migrate_description;
@ -83,6 +89,7 @@ class WizardFrame : public wxFrame
virtual void on_page_changed( wxBookCtrlEvent& event ) { event.Skip(); }
virtual void welcome_start_clicked( wxCommandEvent& event ) { event.Skip(); }
virtual void move_bundle_quit_clicked( wxCommandEvent& event ) { event.Skip(); }
virtual void quit_espanso_clicked( wxCommandEvent& event ) { event.Skip(); }
virtual void migrate_compatibility_mode_clicked( wxCommandEvent& event ) { event.Skip(); }
virtual void migrate_button_clicked( wxCommandEvent& event ) { event.Skip(); }
virtual void add_path_continue_clicked( wxCommandEvent& event ) { event.Skip(); }

View File

@ -25,6 +25,7 @@ pub struct WizardOptions {
pub is_welcome_page_enabled: bool,
pub is_move_bundle_page_enabled: bool,
pub is_legacy_version_page_enabled: bool,
pub is_wrong_edition_page_enabled: bool,
pub is_migrate_page_enabled: bool,
pub is_add_path_page_enabled: bool,
pub is_accessibility_page_enabled: bool,
@ -33,6 +34,7 @@ pub struct WizardOptions {
pub welcome_image_path: Option<String>,
pub accessibility_image_1_path: Option<String>,
pub accessibility_image_2_path: Option<String>,
pub detected_os: DetectedOS,
pub handlers: WizardHandlers,
}
@ -53,3 +55,10 @@ pub enum MigrationResult {
DirtyFailure,
UnknownFailure,
}
#[derive(Debug)]
pub enum DetectedOS {
Unknown,
X11,
Wayland,
}