feat(core): overwrite modulo icon

This commit is contained in:
Federico Terzi 2021-05-22 12:05:28 +02:00
parent 0e5e308e9f
commit a7c51fe803
9 changed files with 23 additions and 15 deletions

View File

@ -19,8 +19,9 @@
use clap::{ArgMatches}; use clap::{ArgMatches};
use espanso_modulo::form::*; use espanso_modulo::form::*;
use crate::icon::IconPaths;
pub fn form_main(matches: &ArgMatches) -> i32 { pub fn form_main(matches: &ArgMatches, _icon_paths: &IconPaths) -> i32 {
let as_json: bool = matches.is_present("json"); let as_json: bool = matches.is_present("json");
let input_file = matches let input_file = matches
@ -42,6 +43,8 @@ pub fn form_main(matches: &ArgMatches) -> i32 {
} else { } else {
serde_json::from_str(&data).expect("unable to parse form configuration") serde_json::from_str(&data).expect("unable to parse form configuration")
}; };
// TODO: inject the icon on Windows
let form = generator::generate(config); let form = generator::generate(config);
let values = show(form); let values = show(form);

View File

@ -39,13 +39,14 @@ pub fn new() -> CliModule {
fn modulo_main(args: CliModuleArgs) -> i32 { fn modulo_main(args: CliModuleArgs) -> i32 {
let paths = args.paths.expect("missing paths in modulo main"); let paths = args.paths.expect("missing paths in modulo main");
let cli_args = args.cli_args.expect("missing cli_args in modulo main"); let cli_args = args.cli_args.expect("missing cli_args in modulo main");
let icon_paths = crate::icon::load_icon_paths(&paths.runtime).expect("unable to load icon paths");
if let Some(matches) = cli_args.subcommand_matches("form") { if let Some(matches) = cli_args.subcommand_matches("form") {
return form::form_main(matches); return form::form_main(matches, &icon_paths);
} }
if let Some(matches) = cli_args.subcommand_matches("search") { if let Some(matches) = cli_args.subcommand_matches("search") {
return search::search_main(matches); return search::search_main(matches, &icon_paths);
} }
0 0

View File

@ -20,8 +20,9 @@
use std::collections::HashMap; use std::collections::HashMap;
use clap::{ArgMatches}; use clap::{ArgMatches};
use espanso_modulo::search::*; use espanso_modulo::search::*;
use crate::icon::IconPaths;
pub fn search_main(matches: &ArgMatches) -> i32 { pub fn search_main(matches: &ArgMatches, icon_paths: &IconPaths) -> i32 {
let as_json: bool = matches.is_present("json"); let as_json: bool = matches.is_present("json");
let input_file = matches let input_file = matches
@ -38,12 +39,15 @@ pub fn search_main(matches: &ArgMatches) -> i32 {
std::fs::read_to_string(input_file).expect("unable to read input file") std::fs::read_to_string(input_file).expect("unable to read input file")
}; };
let config: config::SearchConfig = if !as_json { let mut config: config::SearchConfig = if !as_json {
serde_yaml::from_str(&data).expect("unable to parse search configuration") serde_yaml::from_str(&data).expect("unable to parse search configuration")
} else { } else {
serde_json::from_str(&data).expect("unable to parse search configuration") serde_json::from_str(&data).expect("unable to parse search configuration")
}; };
// Overwrite the icon
config.icon = icon_paths.logo.as_deref().map(|path| path.to_string_lossy().to_string());
let algorithm = algorithm::get_algorithm(&config.algorithm); let algorithm = algorithm::get_algorithm(&config.algorithm);
let search = generator::generate(config); let search = generator::generate(config);

View File

@ -29,7 +29,7 @@ use ui::selector::MatchSelectorAdapter;
use crate::{cli::worker::engine::{matcher::regex::RegexMatcherAdapterOptions, path::PathProviderAdapter}, engine::event::ExitMode}; use crate::{cli::worker::engine::{matcher::regex::RegexMatcherAdapterOptions, path::PathProviderAdapter}, engine::event::ExitMode};
use super::ui::icon::IconPaths; use crate::icon::IconPaths;
pub mod executor; pub mod executor;
pub mod match_cache; pub mod match_cache;

View File

@ -69,7 +69,7 @@ fn worker_main(args: CliModuleArgs) -> i32 {
.expect("missing match store in worker main"); .expect("missing match store in worker main");
let icon_paths = let icon_paths =
self::ui::icon::load_icon_paths(&paths.runtime).expect("unable to initialize icons"); crate::icon::load_icon_paths(&paths.runtime).expect("unable to initialize icons");
let (remote, mut eventloop) = espanso_ui::create_ui(espanso_ui::UIOptions { let (remote, mut eventloop) = espanso_ui::create_ui(espanso_ui::UIOptions {
// TODO: handle show icon // TODO: handle show icon

View File

@ -17,5 +17,4 @@
* along with espanso. If not, see <https://www.gnu.org/licenses/>. * along with espanso. If not, see <https://www.gnu.org/licenses/>.
*/ */
pub mod icon;
pub mod util; pub mod util;

View File

@ -19,7 +19,7 @@
use espanso_ui::icons::TrayIcon; use espanso_ui::icons::TrayIcon;
use super::icon::IconPaths; use crate::icon::IconPaths;
// TODO: test // TODO: test
pub fn convert_icon_paths_to_tray_vec(icon_paths: &IconPaths) -> Vec<(TrayIcon, String)> { pub fn convert_icon_paths_to_tray_vec(icon_paths: &IconPaths) -> Vec<(TrayIcon, String)> {

View File

@ -21,20 +21,20 @@ use anyhow::Result;
use log::{debug, info}; use log::{debug, info};
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
const ICON_BINARY: &[u8] = include_bytes!("../../../res/icon.png"); const ICON_BINARY: &[u8] = include_bytes!("res/icon.png");
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
const WINDOWS_ICO_BINARY: &[u8] = include_bytes!("../../../res/windows/espanso.ico"); const WINDOWS_ICO_BINARY: &[u8] = include_bytes!("res/windows/espanso.ico");
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
const WINDOWS_RED_ICO_BINARY: &[u8] = include_bytes!("../../../res/windows/espansored.ico"); const WINDOWS_RED_ICO_BINARY: &[u8] = include_bytes!("res/windows/espansored.ico");
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
const MAC_BINARY: &[u8] = include_bytes!("../../../res/macos/icon.png"); const MAC_BINARY: &[u8] = include_bytes!("res/macos/icon.png");
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
const MAC_DISABLED_BINARY: &[u8] = include_bytes!("../../../res/macos/icondisabled.png"); const MAC_DISABLED_BINARY: &[u8] = include_bytes!("res/macos/icondisabled.png");
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
const MAC_SYSTEM_DISABLED_BINARY: &[u8] = include_bytes!("../../../res/macos/iconsystemdisabled.png"); const MAC_SYSTEM_DISABLED_BINARY: &[u8] = include_bytes!("res/macos/iconsystemdisabled.png");
#[derive(Debug, Default)] #[derive(Debug, Default)]
pub struct IconPaths { pub struct IconPaths {

View File

@ -39,6 +39,7 @@ mod cli;
mod engine; mod engine;
mod exit_code; mod exit_code;
mod gui; mod gui;
mod icon;
mod ipc; mod ipc;
mod lock; mod lock;
mod logging; mod logging;