mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-01 13:47:21 -06:00
Merge pull request #4814 from aiongg/update-result-dialog
Updates: shared check-result dialog from craft-update
This commit is contained in:
Generated
+1
-1
@@ -1047,7 +1047,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "craft-update"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/storytold/craft-libs?rev=04aa1703b32d299e54f78fcde4182f2b393a9116#04aa1703b32d299e54f78fcde4182f2b393a9116"
|
||||
source = "git+https://github.com/storytold/craft-libs?rev=c5a1cbfb5f9049f9270955caffb5bee5997aebf7#c5a1cbfb5f9049f9270955caffb5bee5997aebf7"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"dunce",
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ craft-keymap = { git = "https://github.com/storytold/craft-libs", rev = "92d392c
|
||||
# desktop. The `egui` feature adds `craft_window::decorate`. (craft-libs#217.)
|
||||
craft-window = { git = "https://github.com/storytold/craft-libs", rev = "92d392cff132eaf53e13afff77f38b5c11b73aa0", features = ["egui"] }
|
||||
# craft-update: app-specific pretend versions apply to startup and manual checks.
|
||||
craft-update = { git = "https://github.com/storytold/craft-libs", version = "=0.1.0", rev = "04aa1703b32d299e54f78fcde4182f2b393a9116", features = ["egui"] }
|
||||
craft-update = { git = "https://github.com/storytold/craft-libs", version = "=0.1.0", rev = "c5a1cbfb5f9049f9270955caffb5bee5997aebf7", features = ["egui"] }
|
||||
# internal
|
||||
vectorcraft-geom = { path = "crates/geom" }
|
||||
vectorcraft-color = { path = "crates/color" }
|
||||
|
||||
@@ -5832,10 +5832,7 @@ swatch White, Black Bijela, crna
|
||||
swatch Yellow Žuta
|
||||
swatch Yellow Green Žuto-zelena
|
||||
Check for Updates… Provjeri ažuriranja…
|
||||
Checking for updates… Provjera ažuriranja…
|
||||
Could not check for updates:\n{error} Nije moguće provjeriti ažuriranja:\n{error}
|
||||
VectorCraft Updates VectorCraft ažuriranja
|
||||
VectorCraft {version} is currently the newest version available. VectorCraft {version} je trenutno najnovija dostupna verzija.
|
||||
Preparing the image… Priprema slike…
|
||||
Tracing the colors… Praćenje boja…
|
||||
Units & Scale Jedinice i skala
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -16,10 +16,7 @@
|
||||
# names, OpenType, the built-in workspace names and the bracketed perspective grid preset names.
|
||||
About VectorCraft VectorCraft について
|
||||
Check for Updates… アップデートを確認…
|
||||
Checking for updates… アップデートを確認中…
|
||||
Could not check for updates:\n{error} アップデートを確認できませんでした:\n{error}
|
||||
VectorCraft Updates VectorCraft のアップデート
|
||||
VectorCraft {version} is currently the newest version available. VectorCraft {version} は最新バージョンです。
|
||||
All Scripts すべての文字
|
||||
Anchors: アンカー:
|
||||
Any Kind すべての種類
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5875,8 +5875,6 @@ anchor Points: Punkter:
|
||||
Arrow Scale: Pilskala:
|
||||
Arrow Style: Pilstil:
|
||||
Check for Updates… Sök efter uppdateringar…
|
||||
Checking for updates… Söker efter uppdateringar…
|
||||
Could not check for updates:\n{error} Det gick inte att söka efter uppdateringar:\n{error}
|
||||
Dimension Lines Måttlinjer
|
||||
Dimension Text Måttal
|
||||
Extension Lines Måttgränslinjer
|
||||
@@ -5898,7 +5896,6 @@ anchor Points: Punkter:
|
||||
Tracing the colors… Vektoriserar färgerna…
|
||||
Units & Scale Enheter & skala
|
||||
VectorCraft Updates Uppdateringar för VectorCraft
|
||||
VectorCraft {version} is currently the newest version available. VectorCraft {version} är för närvarande den senaste tillgängliga versionen.
|
||||
Yonroku-ban Yonroku-ban
|
||||
@msg image '{key}' has no pixels and was left out bilden '{key}' har inga pixlar och utelämnades
|
||||
@msg not an RTF file: it doesn't start with {\\rtf inte en RTF-fil: den börjar inte med {\\rtf
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -5,7 +5,9 @@ use serde_json::Value;
|
||||
use crate::VectorcraftApp;
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use craft_update::updater::{Action, Status, Updater};
|
||||
use craft_update::updater::{Action, Updater};
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use craft_update::{CheckResultDialog, CheckResultResponse};
|
||||
|
||||
pub(crate) struct Runtime {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
@@ -18,7 +20,10 @@ pub(crate) struct Runtime {
|
||||
/// The context of the last frame, to wake the UI when a check is queued from a menu callback.
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
repaint: Option<egui::Context>,
|
||||
/// Whether the result of Help ▸ Check for Updates is in view.
|
||||
pub(crate) manual_window_open: bool,
|
||||
/// The web build has no updater; its window only says so.
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
pub(crate) status_message: Option<String>,
|
||||
}
|
||||
|
||||
@@ -34,6 +39,7 @@ impl Default for Runtime {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
repaint: None,
|
||||
manual_window_open: false,
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
status_message: None,
|
||||
}
|
||||
}
|
||||
@@ -51,6 +57,7 @@ pub(crate) fn check(app: &mut VectorcraftApp) -> Result<Value, String> {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
{
|
||||
app.updates_rt.check_requested = true;
|
||||
app.updates_rt.manual_window_open = true;
|
||||
if let Some(ctx) = &app.updates_rt.repaint {
|
||||
ctx.request_repaint();
|
||||
}
|
||||
@@ -90,18 +97,25 @@ pub(crate) fn show(app: &mut VectorcraftApp, ctx: &egui::Context) {
|
||||
Action::Close => ctx.send_viewport_cmd(egui::ViewportCommand::Close),
|
||||
Action::None => {}
|
||||
}
|
||||
// The window answers Help ▸ Check for Updates, so it follows the updater's status.
|
||||
// An available update goes to the prompt above, which replaces the result dialog.
|
||||
let rt = &mut app.updates_rt;
|
||||
(rt.manual_window_open, rt.status_message) = match rt.updater.status() {
|
||||
Status::Idle => (false, None),
|
||||
Status::Checking => (true, Some(tl!("Checking for updates…").to_string())),
|
||||
Status::UpToDate => {
|
||||
(true, Some(tl!("VectorCraft {version} is currently the newest version available.").replace("{version}", env!("CARGO_PKG_VERSION"))))
|
||||
if rt.manual_window_open && rt.updater.prompt_open() {
|
||||
rt.manual_window_open = false;
|
||||
}
|
||||
if rt.manual_window_open {
|
||||
match CheckResultDialog::new(&crate::UPDATE_APP, env!("CARGO_PKG_VERSION")).show(ctx, rt.updater.status()) {
|
||||
CheckResultResponse::None => {}
|
||||
CheckResultResponse::Close => rt.manual_window_open = false,
|
||||
CheckResultResponse::CheckAgain => rt.updater.check_now(ctx),
|
||||
}
|
||||
Status::Failed(e) => (true, Some(tl!("Could not check for updates:\n{error}").replace("{error}", e))),
|
||||
};
|
||||
}
|
||||
// Closing the dialog dismisses the outcome it showed.
|
||||
if !rt.manual_window_open {
|
||||
rt.updater.dismiss_status();
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
if app.updates_rt.manual_window_open {
|
||||
let mut open = true;
|
||||
egui::Window::new(tl!("VectorCraft Updates"))
|
||||
@@ -123,17 +137,13 @@ pub(crate) fn show(app: &mut VectorcraftApp, ctx: &egui::Context) {
|
||||
app.updates_rt.manual_window_open = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Closing the window dismisses the outcome it showed.
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
if !app.updates_rt.manual_window_open {
|
||||
app.updates_rt.updater.dismiss_status();
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use craft_update::updater::Status;
|
||||
use vectorcraft_engine::Session;
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user