feat: add Report/About/Changelog buttons to Support ribbon group
- REPORT opens GitHub new-issue page - ABOUT opens a dialog window with version, OS and arch info + Copy Info button - CHANGELOG opens GitHub releases page - Fix Windows build: add windows-sys as target-specific dependency for PRINT command Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
62fbaf5da4
commit
070ad1f9c5
15 changed files with 222 additions and 0 deletions
|
|
@ -2042,6 +2042,20 @@ impl H7CAD {
|
|||
self.command_line.push_info("Opening Patreon page...");
|
||||
}
|
||||
|
||||
"REPORT" => {
|
||||
let _ = open::that("https://github.com/HakanSeven12/H7CAD/issues/new");
|
||||
self.command_line.push_info("Opening GitHub issue page...");
|
||||
}
|
||||
|
||||
"ABOUT" => {
|
||||
return Task::done(Message::AboutOpen);
|
||||
}
|
||||
|
||||
"CHANGELOG" => {
|
||||
let _ = open::that("https://github.com/HakanSeven12/H7CAD/releases");
|
||||
self.command_line.push_info("Opening release notes...");
|
||||
}
|
||||
|
||||
// ── Keyboard Shortcuts panel ──────────────────────────────────
|
||||
cmd if cmd == "SHORTCUTS" || cmd.starts_with("SHORTCUTS ") => {
|
||||
let raw_rest = cmd.trim_start_matches("SHORTCUTS").trim();
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ pub(super) struct H7CAD {
|
|||
plotstyle_window: Option<window::Id>,
|
||||
dimstyle_window: Option<window::Id>,
|
||||
shortcuts_window: Option<window::Id>,
|
||||
about_window: Option<window::Id>,
|
||||
/// In-memory clipboard: cloned entities waiting to be pasted.
|
||||
clipboard: Vec<acadrust::EntityType>,
|
||||
/// Centroid of the clipboard entities (XZ plane, Y-up).
|
||||
|
|
@ -372,6 +373,9 @@ pub enum Message {
|
|||
ShortcutsPanelOpen,
|
||||
#[allow(dead_code)]
|
||||
ShortcutsPanelClose,
|
||||
// ── About window ────────────────────────────────────────────────────
|
||||
AboutOpen,
|
||||
AboutCopyInfo,
|
||||
/// Close the viewport right-click context menu without performing any action.
|
||||
ViewportContextMenuClose,
|
||||
/// A window was closed by the OS (e.g. the user clicked the title-bar ✕).
|
||||
|
|
@ -552,6 +556,7 @@ impl H7CAD {
|
|||
plotstyle_window: None,
|
||||
dimstyle_window: None,
|
||||
shortcuts_window: None,
|
||||
about_window: None,
|
||||
clipboard: Vec::new(),
|
||||
clipboard_centroid: glam::Vec3::ZERO,
|
||||
layout_context_menu: None,
|
||||
|
|
@ -644,6 +649,7 @@ pub fn run() -> iced::Result {
|
|||
if Some(window_id) == state.plotstyle_window { return "Plot Style Table Editor".into(); }
|
||||
if Some(window_id) == state.dimstyle_window { return "Dimension Style Manager".into(); }
|
||||
if Some(window_id) == state.shortcuts_window { return "Keyboard Shortcuts".into(); }
|
||||
if Some(window_id) == state.about_window { return "About H7CAD".into(); }
|
||||
if let Some(tab) = state.tabs.get(state.active_tab) {
|
||||
let dot = if tab.dirty { "● " } else { "" };
|
||||
let name = tab.tab_display_name();
|
||||
|
|
|
|||
|
|
@ -704,6 +704,7 @@ impl H7CAD {
|
|||
if self.plotstyle_window == Some(id) { self.plotstyle_window = None; }
|
||||
if self.dimstyle_window == Some(id) { self.dimstyle_window = None; }
|
||||
if self.shortcuts_window == Some(id) { self.shortcuts_window = None; }
|
||||
if self.about_window == Some(id) { self.about_window = None; }
|
||||
Task::none()
|
||||
}
|
||||
|
||||
|
|
@ -2502,6 +2503,30 @@ impl H7CAD {
|
|||
}
|
||||
}
|
||||
|
||||
// ── About window ──────────────────────────────────────────────
|
||||
Message::AboutOpen => {
|
||||
if let Some(id) = self.about_window {
|
||||
return window::gain_focus(id);
|
||||
}
|
||||
let (id, task) = window::open(window::Settings {
|
||||
size: iced::Size::new(340.0, 240.0),
|
||||
resizable: false,
|
||||
..Default::default()
|
||||
});
|
||||
self.about_window = Some(id);
|
||||
task.map(|_| Message::Noop)
|
||||
}
|
||||
|
||||
Message::AboutCopyInfo => {
|
||||
let info = format!(
|
||||
"H7CAD v{}\nOS: {}\nArch: {}",
|
||||
env!("CARGO_PKG_VERSION"),
|
||||
std::env::consts::OS,
|
||||
std::env::consts::ARCH,
|
||||
);
|
||||
iced::clipboard::write(info)
|
||||
}
|
||||
|
||||
Message::ViewportContextMenuClose => {
|
||||
let i = self.active_tab;
|
||||
self.tabs[i].scene.selection.borrow_mut().context_menu = None;
|
||||
|
|
|
|||
|
|
@ -96,6 +96,9 @@ impl H7CAD {
|
|||
if Some(window_id) == self.shortcuts_window {
|
||||
return crate::ui::shortcuts::view_window(&self.shortcut_overrides);
|
||||
}
|
||||
if Some(window_id) == self.about_window {
|
||||
return crate::ui::about::view_window();
|
||||
}
|
||||
|
||||
let i = self.active_tab;
|
||||
let tab = &self.tabs[i];
|
||||
|
|
|
|||
Loading…
Reference in a new issue