// Map, wardley map editor for linux // Copyright (C) 2026 Rubén Beltrán del Río // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program 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 Affero General Public License for more details. // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . use std::path::PathBuf; use wmap_renderer::StageType; use crate::preferences::UserPreferences; use crate::preferences::models::StageLabel; #[derive(Debug, Clone, Copy)] pub enum ImageFormat { Png, Svg, } impl ImageFormat { pub fn extension(self) -> &'static str { match self { ImageFormat::Png => "png", ImageFormat::Svg => "svg", } } pub fn mime_type(self) -> &'static str { match self { ImageFormat::Png => "image/png", ImageFormat::Svg => "image/svg+xml", } } } #[derive(Debug, Clone)] pub enum Action { ChangeOrientation, StageTypeSelected(StageType), SourceChanged, Zoom(f64), ZoomOut, ZoomIn, ExportImage, ExportToFile { path: PathBuf, format: ImageFormat }, New, NewFromTemplateById(String), Open, Save { close_after: bool }, SaveAs { close_after: bool }, LoadFile(PathBuf), SaveToFile { path: PathBuf, close_after: bool }, MarkInitialized, CloseWindow, // Layout Transition DisableHorizontalLayout, EnableHorizontalLayout, // Help and About OpenAboutDialog, // Preferences ShowPreferences, ReloadPreferencesWindow, PreferencesChanged(UserPreferences), PreferencesWindowClosed, ReloadPreferences, } #[derive(Debug, Clone)] pub enum PreferencesAction { // General page actions Export, Import, ImportFromFile(PathBuf), ExportToFile(PathBuf), ResetToDefaults, // Preference updates from pages SetShowMapBackground(bool), SetUseCustomFont(bool), SetCustomFontName(String), SetDefaultExportFormat(String), SetUseSmartLabelPositioning(bool), SetUseCustomEditorFont(bool), SetCustomEditorFontName(String), SetEditorFontSize(f64), SetSoftWrapLines(bool), // Templates AddTemplate(String), RemoveTemplate(uuid::Uuid), SetTemplateContent(uuid::Uuid, String), SetTemplateName(uuid::Uuid, String), SetDefaultTemplate(uuid::Uuid), // Custom stages AddCustomStage, RemoveCustomStage(uuid::Uuid), SetCustomStageName(uuid::Uuid, String), SetCustomStageLabel(uuid::Uuid, StageLabel, String), }