feat(core): wire up Wizard accessibility page
This commit is contained in:
		
							parent
							
								
									7f7b3cb358
								
							
						
					
					
						commit
						355196ea90
					
				
							
								
								
									
										38
									
								
								espanso/src/cli/launcher/accessibility.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								espanso/src/cli/launcher/accessibility.rs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/*
 | 
			
		||||
 * This file is part of espanso.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2019-2021 Federico Terzi
 | 
			
		||||
 *
 | 
			
		||||
 * espanso is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * espanso is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with espanso.  If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#[cfg(not(target_os = "macos"))]
 | 
			
		||||
pub fn is_accessibility_enabled() -> bool {
 | 
			
		||||
  true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(not(target_os = "macos"))]
 | 
			
		||||
pub fn prompt_enable_accessibility() -> bool {
 | 
			
		||||
  true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
pub fn is_accessibility_enabled() -> bool {
 | 
			
		||||
  espanso_mac_utils::check_accessibility()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
pub fn prompt_enable_accessibility() -> bool {
 | 
			
		||||
  espanso_mac_utils::prompt_accessibility()
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ use crate::preferences::Preferences;
 | 
			
		|||
 | 
			
		||||
use super::{CliModule, CliModuleArgs};
 | 
			
		||||
 | 
			
		||||
mod accessibility;
 | 
			
		||||
mod util;
 | 
			
		||||
 | 
			
		||||
// TODO: test also with modulo feature disabled
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +85,7 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
 | 
			
		|||
    };
 | 
			
		||||
  // TODO: consider also Windows case?
 | 
			
		||||
  let add_to_path_handler = Box::new(move || match util::add_espanso_to_path() {
 | 
			
		||||
    Ok(_) => true, 
 | 
			
		||||
    Ok(_) => true,
 | 
			
		||||
    Err(error) => {
 | 
			
		||||
      eprintln!("Add to path returned error: {}", error);
 | 
			
		||||
      false
 | 
			
		||||
| 
						 | 
				
			
			@ -92,11 +93,16 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
 | 
			
		|||
  });
 | 
			
		||||
 | 
			
		||||
  let is_accessibility_page_enabled = if cfg!(target_os = "macos") {
 | 
			
		||||
    // TODO: add actual check
 | 
			
		||||
    true
 | 
			
		||||
    !accessibility::is_accessibility_enabled()
 | 
			
		||||
  } else {
 | 
			
		||||
    false
 | 
			
		||||
  };
 | 
			
		||||
  let is_accessibility_enabled_handler = Box::new(move || {
 | 
			
		||||
    accessibility::is_accessibility_enabled()
 | 
			
		||||
  });
 | 
			
		||||
  let enable_accessibility_handler = Box::new(move || {
 | 
			
		||||
    accessibility::prompt_enable_accessibility();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  let preferences_clone = preferences.clone();
 | 
			
		||||
  let on_completed_handler = Box::new(move || {
 | 
			
		||||
| 
						 | 
				
			
			@ -129,18 +135,21 @@ fn launcher_main(args: CliModuleArgs) -> i32 {
 | 
			
		|||
      welcome_image_path: icon_paths
 | 
			
		||||
        .logo_no_background
 | 
			
		||||
        .map(|path| path.to_string_lossy().to_string()),
 | 
			
		||||
      accessibility_image_1_path: None, // TODO
 | 
			
		||||
      accessibility_image_2_path: None, // TODO
 | 
			
		||||
      accessibility_image_1_path: icon_paths
 | 
			
		||||
        .accessibility_image_1
 | 
			
		||||
        .map(|path| path.to_string_lossy().to_string()),
 | 
			
		||||
      accessibility_image_2_path: icon_paths
 | 
			
		||||
        .accessibility_image_2
 | 
			
		||||
        .map(|path| path.to_string_lossy().to_string()),
 | 
			
		||||
      handlers: WizardHandlers {
 | 
			
		||||
        is_legacy_version_running: Some(is_legacy_version_running_handler),
 | 
			
		||||
        backup_and_migrate: Some(backup_and_migrate_handler),
 | 
			
		||||
        add_to_path: Some(add_to_path_handler),
 | 
			
		||||
        enable_accessibility: None,     // TODO
 | 
			
		||||
        is_accessibility_enabled: None, // TODO
 | 
			
		||||
        enable_accessibility: Some(enable_accessibility_handler),
 | 
			
		||||
        is_accessibility_enabled: Some(is_accessibility_enabled_handler),
 | 
			
		||||
        on_completed: Some(on_completed_handler),
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // TODO: initialize config directory if not present
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,10 @@ const MAC_BINARY: &[u8] = include_bytes!("res/macos/icon.png");
 | 
			
		|||
const MAC_DISABLED_BINARY: &[u8] = include_bytes!("res/macos/icondisabled.png");
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
const MAC_SYSTEM_DISABLED_BINARY: &[u8] = include_bytes!("res/macos/iconsystemdisabled.png");
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
const MAC_ACCESSIBILITY_1_BINARY: &[u8] = include_bytes!("res/accessibility_1.png");
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
const MAC_ACCESSIBILITY_2_BINARY: &[u8] = include_bytes!("res/accessibility_2.png");
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Default)]
 | 
			
		||||
pub struct IconPaths {
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +51,10 @@ pub struct IconPaths {
 | 
			
		|||
 | 
			
		||||
  pub tray_icon_normal: Option<PathBuf>,
 | 
			
		||||
  pub tray_icon_disabled: Option<PathBuf>,
 | 
			
		||||
  pub tray_icon_system_disabled: Option<PathBuf>, // TODO: secure input
 | 
			
		||||
  pub tray_icon_system_disabled: Option<PathBuf>,
 | 
			
		||||
 | 
			
		||||
  pub accessibility_image_1: Option<PathBuf>,
 | 
			
		||||
  pub accessibility_image_2: Option<PathBuf>,
 | 
			
		||||
 | 
			
		||||
  pub logo: Option<PathBuf>, 
 | 
			
		||||
  pub logo_no_background: Option<PathBuf>,
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +83,8 @@ pub fn load_icon_paths(runtime_dir: &Path) -> Result<IconPaths> {
 | 
			
		|||
    tray_icon_system_disabled: Some(extract_icon(MAC_SYSTEM_DISABLED_BINARY, &runtime_dir.join("systemdisabled.png"))?),
 | 
			
		||||
    logo: Some(extract_icon(ICON_BINARY, &runtime_dir.join("icon.png"))?),
 | 
			
		||||
    logo_no_background: Some(extract_icon(LOGO_NO_BACKGROUND_BINARY, &runtime_dir.join("icon_no_background.png"))?),
 | 
			
		||||
    accessibility_image_1: Some(extract_icon(MAC_ACCESSIBILITY_1_BINARY, &runtime_dir.join("accessibility_1.png"))?),
 | 
			
		||||
    accessibility_image_2: Some(extract_icon(MAC_ACCESSIBILITY_2_BINARY, &runtime_dir.join("accessibility_2.png"))?),
 | 
			
		||||
    ..Default::default()
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user