1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// 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 <http://www.gnu.org/licenses/>.
use std::path::PathBuf;
use wmap_renderer::StageType;
use crate::preferences::UserPreferences;
#[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,
PreferencesChanged(UserPreferences),
PreferencesWindowClosed,
ReloadPreferences,
}
|