mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-08 16:30:41 +00:00
Actions: Insert Stop pauses playback and shows a message
Squashed from #6028 onto main.
This commit is contained in:
@@ -11,6 +11,7 @@ pub mod action_batch;
|
||||
pub mod action_new;
|
||||
pub mod action_playback;
|
||||
pub mod action_set_options;
|
||||
pub mod action_stop;
|
||||
pub mod artboard_options;
|
||||
pub mod blend_options;
|
||||
mod brush_art_options;
|
||||
@@ -372,6 +373,8 @@ registry! {
|
||||
ActionSetOptions: [action_set_options::KIND] => action_set_options::SPEC,
|
||||
ActionNew: [action_new::KIND] => action_new::SPEC,
|
||||
ActionPlayback: [action_playback::KIND] => action_playback::SPEC,
|
||||
ActionStopRecord: [action_stop::RECORD_KIND] => action_stop::RECORD_SPEC,
|
||||
ActionStopMessage: [action_stop::MESSAGE_KIND] => action_stop::MESSAGE_SPEC,
|
||||
SliceOptions: [slices::OPTIONS] => slices::OPTIONS_SPEC,
|
||||
DivideSlices: [slices::DIVIDE] => slices::DIVIDE_SPEC,
|
||||
EpsOptions: [eps_options::KIND] => eps_options::SPEC,
|
||||
|
||||
@@ -23,6 +23,9 @@ pub fn open(app: &mut VectorcraftApp, set: usize, action: usize) -> Result<Value
|
||||
if a.steps.iter().enumerate().all(|(i, _)| a.excluded_steps.contains(&i)) {
|
||||
return Err("the action has no included steps".into());
|
||||
}
|
||||
if crate::panels::actions::has_stop(&a.included_commands()) {
|
||||
return Err("Batch cannot play an action with a stop".into());
|
||||
}
|
||||
let name = a.name.clone();
|
||||
app.ui.dialog = Some(Dialog::new(KIND, initial_fields(set, action, &name)));
|
||||
Ok(Value::Null)
|
||||
@@ -100,6 +103,9 @@ fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result<Value, String> {
|
||||
if commands.is_empty() {
|
||||
return Err("the action has no included steps".into());
|
||||
}
|
||||
if crate::panels::actions::has_stop(&commands) {
|
||||
return Err("Batch cannot play an action with a stop".into());
|
||||
}
|
||||
let source = d.str("source");
|
||||
if source == "folder" && d.str("folder").trim().is_empty() {
|
||||
return Err("choose a source folder".into());
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
//! Actions panel menu › Insert Stop… (`ui.action.insertStop`) and the message box a playing action
|
||||
//! shows at a stop.
|
||||
//!
|
||||
//! Record Stop's fields: `message`, `allowContinue`, and `set`, `action` and `step`, the place of the
|
||||
//! new stop (no `set` and `action`: the recording in progress). An invalid place is an error, and
|
||||
//! the dialog stays open.
|
||||
//!
|
||||
//! The message box's fields: `action` (the action's name, shown as the heading), `message` and
|
||||
//! `allowContinue`. Stop or Cancel closes it, and the playback keeps waiting for Play Current
|
||||
//! Selection or Stop Playing/Recording. With `allowContinue`, Continue or `ui.dialog.confirm` plays
|
||||
//! on; without it, `ui.dialog.confirm` presses Stop.
|
||||
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use super::{DialogAction, DialogSpec};
|
||||
use crate::state::Dialog;
|
||||
use crate::theme::Tokens;
|
||||
use crate::{VectorcraftApp, widgets};
|
||||
|
||||
/// The dialog kind of Record Stop.
|
||||
pub const RECORD_KIND: &str = "actionStopRecord";
|
||||
|
||||
/// The dialog kind of a stop's message box.
|
||||
pub const MESSAGE_KIND: &str = "actionStopMessage";
|
||||
|
||||
/// The width of Record Stop's label column.
|
||||
const LABEL_W: f32 = 70.0;
|
||||
|
||||
pub(super) const RECORD_SPEC: DialogSpec =
|
||||
DialogSpec { heading: |_| tl!("Record Stop").into(), body: record_body, confirm: record_confirm, min_width: 340.0, ..DialogSpec::FORM };
|
||||
|
||||
pub(super) const MESSAGE_SPEC: DialogSpec = DialogSpec {
|
||||
heading: |d| d.str("action"),
|
||||
body_with_actions: Some(message_body),
|
||||
confirm: message_confirm,
|
||||
ok: None,
|
||||
min_width: 300.0,
|
||||
max_width: Some(460.0),
|
||||
..DialogSpec::FORM
|
||||
};
|
||||
|
||||
/// Opens Record Stop for action `target` as (set, action), after `step`, else for the recording in
|
||||
/// progress.
|
||||
pub fn open_record(app: &mut VectorcraftApp, target: Option<(usize, usize)>, step: Option<usize>) {
|
||||
let mut fields = json!({"message": "", "allowContinue": false});
|
||||
if let Some((set, action)) = target {
|
||||
fields["set"] = json!(set);
|
||||
fields["action"] = json!(action);
|
||||
if let Some(step) = step {
|
||||
fields["step"] = json!(step);
|
||||
}
|
||||
}
|
||||
app.ui.dialog = Some(Dialog::new(RECORD_KIND, fields));
|
||||
}
|
||||
|
||||
fn record_body(_: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool {
|
||||
widgets::label_row(ui, "Message:", LABEL_W, |ui| {
|
||||
super::form::text(ui, d, "message", 240.0);
|
||||
});
|
||||
super::form::check(ui, d, "allowContinue", "Allow Continue");
|
||||
false
|
||||
}
|
||||
|
||||
fn record_confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result<Value, String> {
|
||||
let mut params = json!({"message": d.str("message"), "allowContinue": d.bool("allowContinue")});
|
||||
for key in ["set", "action", "step"] {
|
||||
if let Some(value) = d.fields.get(key) {
|
||||
params[key] = value.clone();
|
||||
}
|
||||
}
|
||||
let r = app.run(crate::panels::actions::INSERT_STOP, params)?;
|
||||
app.ui.dialog = None;
|
||||
Ok(r)
|
||||
}
|
||||
|
||||
/// Shows the message box of a stop in the action named `action`.
|
||||
pub(crate) fn open_message(app: &mut VectorcraftApp, action: &str, message: &str, allow_continue: bool) {
|
||||
app.ui.dialog = Some(Dialog::new(MESSAGE_KIND, json!({"action": action, "message": message, "allowContinue": allow_continue})));
|
||||
}
|
||||
|
||||
fn message_body(_: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> DialogAction {
|
||||
let message = d.str("message");
|
||||
if !message.is_empty() {
|
||||
ui.label(message);
|
||||
ui.add_space(8.0);
|
||||
}
|
||||
ui.label(egui::RichText::new(tl!("Press Play Current Selection in the Actions panel to go on.")).color(Tokens::get(ui.ctx()).text_dim));
|
||||
ui.add_space(16.0);
|
||||
let mut action = DialogAction::None;
|
||||
ui.horizontal(|ui| {
|
||||
if d.bool("allowContinue") && widgets::primary_button_enabled(ui, tl!("Continue"), true).clicked() {
|
||||
action = DialogAction::Confirm;
|
||||
}
|
||||
if widgets::secondary_button(ui, tl!("Stop")).clicked() {
|
||||
action = DialogAction::Cancel;
|
||||
}
|
||||
});
|
||||
action
|
||||
}
|
||||
|
||||
fn message_confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result<Value, String> {
|
||||
if d.bool("allowContinue") {
|
||||
return app.run(crate::panels::actions::CONTINUE_PLAYBACK, json!({}));
|
||||
}
|
||||
app.ui.dialog = None;
|
||||
Ok(Value::Null)
|
||||
}
|
||||
@@ -5680,6 +5680,19 @@ axis Y Axis Y ос
|
||||
Action Options… Опции на действието…
|
||||
Action Options Опции на действието
|
||||
Playback Options… Опции за възпроизвеждане…
|
||||
Insert Stop… Вмъкване на спиране…
|
||||
Insert Stop Вмъкване на спиране
|
||||
Record Stop Записване на спиране
|
||||
Allow Continue Разрешаване на продължаване
|
||||
Continue Продължаване
|
||||
Continue Action Продължаване на действието
|
||||
Delete Action Step Изтриване на стъпка от действието
|
||||
Press Play Current Selection in the Actions panel to go on. За да продължите, натиснете „Изпълнение на текущия избор“ в панела „Действия“.
|
||||
Stop: {message} Спиране: {message}
|
||||
@msg no action is waiting at a stop няма действие, което чака при спиране
|
||||
@msg message must be text message трябва да бъде текст
|
||||
@msg allowContinue must be true or false allowContinue трябва да бъде true или false
|
||||
@msg Batch cannot play an action with a stop Пакет не може да изпълни действие със спиране
|
||||
Playback Options Опции за възпроизвеждане
|
||||
Accelerated Ускорено
|
||||
Step by Step Стъпка по стъпка
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5703,6 +5703,19 @@ axis Y Axis Y osa
|
||||
Action Options… Opcije akcije…
|
||||
Action Options Opcije akcije
|
||||
Playback Options… Opcije reprodukcije…
|
||||
Insert Stop… Umetni zaustavljanje…
|
||||
Insert Stop Umetni zaustavljanje
|
||||
Record Stop Snimi zaustavljanje
|
||||
Allow Continue Dozvoli nastavak
|
||||
Continue Nastavi
|
||||
Continue Action Nastavi akciju
|
||||
Delete Action Step Izbriši korak akcije
|
||||
Press Play Current Selection in the Actions panel to go on. Za nastavak pritisnite „Reprodukuj trenutni odabir“ na panelu Akcije.
|
||||
Stop: {message} Zaustavljanje: {message}
|
||||
@msg no action is waiting at a stop nijedna akcija ne čeka na zaustavljanju
|
||||
@msg message must be text message mora biti tekst
|
||||
@msg allowContinue must be true or false allowContinue mora biti true ili false
|
||||
@msg Batch cannot play an action with a stop Paketna obrada ne može reprodukovati akciju sa zaustavljanjem
|
||||
Playback Options Opcije reprodukcije
|
||||
Accelerated Ubrzano
|
||||
Step by Step Korak po korak
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3803,6 +3803,19 @@ digits Malayalam Malaiàlam
|
||||
Action Options… Opcions de l’acció…
|
||||
Action Options Opcions de l’acció
|
||||
Playback Options… Opcions de reproducció…
|
||||
Insert Stop… Insereix una aturada…
|
||||
Insert Stop Insereix una aturada
|
||||
Record Stop Enregistra una aturada
|
||||
Allow Continue Permet continuar
|
||||
Continue Continua
|
||||
Continue Action Continua l’acció
|
||||
Delete Action Step Suprimeix el pas de l’acció
|
||||
Press Play Current Selection in the Actions panel to go on. Per continuar, premeu «Reprodueix la selecció actual» al tauler Accions.
|
||||
Stop: {message} Aturada: {message}
|
||||
@msg no action is waiting at a stop cap acció no espera en una aturada
|
||||
@msg message must be text message ha de ser text
|
||||
@msg allowContinue must be true or false allowContinue ha de ser true o false
|
||||
@msg Batch cannot play an action with a stop Lot no pot reproduir una acció amb una aturada
|
||||
Playback Options Opcions de reproducció
|
||||
Accelerated Accelerada
|
||||
Step by Step Pas a pas
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5796,6 +5796,19 @@ axis Y Axis osa Y
|
||||
Action Options… Možnosti akce…
|
||||
Action Options Možnosti akce
|
||||
Playback Options… Možnosti přehrávání…
|
||||
Insert Stop… Vložit zastavení…
|
||||
Insert Stop Vložit zastavení
|
||||
Record Stop Zaznamenat zastavení
|
||||
Allow Continue Povolit pokračování
|
||||
Continue Pokračovat
|
||||
Continue Action Pokračovat v akci
|
||||
Delete Action Step Odstranit krok akce
|
||||
Press Play Current Selection in the Actions panel to go on. Chcete-li pokračovat, stiskněte na panelu Akce tlačítko Přehrát aktuální výběr.
|
||||
Stop: {message} Zastavení: {message}
|
||||
@msg no action is waiting at a stop žádná akce nečeká na zastavení
|
||||
@msg message must be text message musí být text
|
||||
@msg allowContinue must be true or false allowContinue musí být true nebo false
|
||||
@msg Batch cannot play an action with a stop Dávka nemůže přehrát akci se zastavením
|
||||
Playback Options Možnosti přehrávání
|
||||
Accelerated Zrychleně
|
||||
Step by Step Krok za krokem
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5695,6 +5695,19 @@ axis Y Axis Y-akse
|
||||
Action Options… Indstillinger for handling…
|
||||
Action Options Indstillinger for handling
|
||||
Playback Options… Afspilningsindstillinger…
|
||||
Insert Stop… Indsæt stop…
|
||||
Insert Stop Indsæt stop
|
||||
Record Stop Optag stop
|
||||
Allow Continue Tillad fortsæt
|
||||
Continue Fortsæt
|
||||
Continue Action Fortsæt handling
|
||||
Delete Action Step Slet handlingstrin
|
||||
Press Play Current Selection in the Actions panel to go on. Tryk på Afspil aktuel markering i panelet Handlinger for at fortsætte.
|
||||
Stop: {message} Stop: {message}
|
||||
@msg no action is waiting at a stop ingen handling venter ved et stop
|
||||
@msg message must be text message skal være tekst
|
||||
@msg allowContinue must be true or false allowContinue skal være true eller false
|
||||
@msg Batch cannot play an action with a stop Batch kan ikke afspille en handling med et stop
|
||||
Playback Options Afspilningsindstillinger
|
||||
Accelerated Accelereret
|
||||
Step by Step Trin for trin
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5378,6 +5378,19 @@ axis Y Axis Y-Achse
|
||||
Action Options… Aktionsoptionen…
|
||||
Action Options Aktionsoptionen
|
||||
Playback Options… Wiedergabeoptionen…
|
||||
Insert Stop… Stopp einfügen…
|
||||
Insert Stop Stopp einfügen
|
||||
Record Stop Stopp aufzeichnen
|
||||
Allow Continue Fortsetzen erlauben
|
||||
Continue Fortsetzen
|
||||
Continue Action Aktion fortsetzen
|
||||
Delete Action Step Aktionsschritt löschen
|
||||
Press Play Current Selection in the Actions panel to go on. Klicken Sie im Bedienfeld „Aktionen“ auf „Aktuelle Auswahl abspielen“, um fortzufahren.
|
||||
Stop: {message} Stopp: {message}
|
||||
@msg no action is waiting at a stop keine Aktion wartet an einem Stopp
|
||||
@msg message must be text message muss Text sein
|
||||
@msg allowContinue must be true or false allowContinue muss true oder false sein
|
||||
@msg Batch cannot play an action with a stop Die Stapelverarbeitung kann keine Aktion mit einem Stopp abspielen
|
||||
Playback Options Wiedergabeoptionen
|
||||
Accelerated Beschleunigt
|
||||
Step by Step Schrittweise
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5747,6 +5747,19 @@ axis Y Axis Άξονας Y
|
||||
Action Options… Επιλογές ενέργειας…
|
||||
Action Options Επιλογές ενέργειας
|
||||
Playback Options… Επιλογές αναπαραγωγής…
|
||||
Insert Stop… Εισαγωγή διακοπής…
|
||||
Insert Stop Εισαγωγή διακοπής
|
||||
Record Stop Καταγραφή διακοπής
|
||||
Allow Continue Να επιτρέπεται η συνέχεια
|
||||
Continue Συνέχεια
|
||||
Continue Action Συνέχεια ενέργειας
|
||||
Delete Action Step Διαγραφή βήματος ενέργειας
|
||||
Press Play Current Selection in the Actions panel to go on. Για να συνεχίσετε, πατήστε «Αναπαραγωγή τρέχουσας επιλογής» στο πάνελ Ενέργειες.
|
||||
Stop: {message} Διακοπή: {message}
|
||||
@msg no action is waiting at a stop καμία ενέργεια δεν περιμένει σε διακοπή
|
||||
@msg message must be text Το message πρέπει να είναι κείμενο
|
||||
@msg allowContinue must be true or false Το allowContinue πρέπει να είναι true ή false
|
||||
@msg Batch cannot play an action with a stop Η μαζική επεξεργασία δεν μπορεί να αναπαράγει ενέργεια με διακοπή
|
||||
Playback Options Επιλογές αναπαραγωγής
|
||||
Accelerated Επιταχυμένα
|
||||
Step by Step Βήμα προς βήμα
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 163 and column 5.
|
@@ -5737,6 +5737,19 @@ axis Y Axis Eje Y
|
||||
Action Options… Opciones de acción…
|
||||
Action Options Opciones de acción
|
||||
Playback Options… Opciones de reproducción…
|
||||
Insert Stop… Insertar parada…
|
||||
Insert Stop Insertar parada
|
||||
Record Stop Grabar parada
|
||||
Allow Continue Permitir continuar
|
||||
Continue Continuar
|
||||
Continue Action Continuar acción
|
||||
Delete Action Step Eliminar paso de la acción
|
||||
Press Play Current Selection in the Actions panel to go on. Para continuar, pulse Reproducir la selección actual en el panel Acciones.
|
||||
Stop: {message} Parada: {message}
|
||||
@msg no action is waiting at a stop ninguna acción está esperando en una parada
|
||||
@msg message must be text message debe ser texto
|
||||
@msg allowContinue must be true or false allowContinue debe ser true o false
|
||||
@msg Batch cannot play an action with a stop Lote no puede reproducir una acción con una parada
|
||||
Playback Options Opciones de reproducción
|
||||
Accelerated Acelerada
|
||||
Step by Step Paso a paso
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5826,6 +5826,19 @@ axis Y Axis Y-akseli
|
||||
Action Options… Toiminnon asetukset…
|
||||
Action Options Toiminnon asetukset
|
||||
Playback Options… Toistoasetukset…
|
||||
Insert Stop… Lisää pysäytys…
|
||||
Insert Stop Lisää pysäytys
|
||||
Record Stop Nauhoita pysäytys
|
||||
Allow Continue Salli jatkaminen
|
||||
Continue Jatka
|
||||
Continue Action Jatka toimintoa
|
||||
Delete Action Step Poista toiminnon vaihe
|
||||
Press Play Current Selection in the Actions panel to go on. Jatka valitsemalla Toiminnot-paneelista Toista nykyinen valinta.
|
||||
Stop: {message} Pysäytys: {message}
|
||||
@msg no action is waiting at a stop mikään toiminto ei odota pysäytyksessä
|
||||
@msg message must be text message on oltava tekstiä
|
||||
@msg allowContinue must be true or false allowContinue on oltava true tai false
|
||||
@msg Batch cannot play an action with a stop Erä ei voi toistaa toimintoa, jossa on pysäytys
|
||||
Playback Options Toistoasetukset
|
||||
Accelerated Nopeutettu
|
||||
Step by Step Vaihe kerrallaan
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5791,6 +5791,19 @@ axis Y Axis Axe Y
|
||||
Action Options… Options de script…
|
||||
Action Options Options de script
|
||||
Playback Options… Options d’exécution…
|
||||
Insert Stop… Insérer un arrêt…
|
||||
Insert Stop Insérer un arrêt
|
||||
Record Stop Enregistrer un arrêt
|
||||
Allow Continue Autoriser la poursuite
|
||||
Continue Continuer
|
||||
Continue Action Continuer le script
|
||||
Delete Action Step Supprimer l’étape du script
|
||||
Press Play Current Selection in the Actions panel to go on. Pour continuer, cliquez sur Exécuter la sélection actuelle dans le panneau Scripts.
|
||||
Stop: {message} Arrêt : {message}
|
||||
@msg no action is waiting at a stop aucun script n’attend à un arrêt
|
||||
@msg message must be text message doit être du texte
|
||||
@msg allowContinue must be true or false allowContinue doit valoir true ou false
|
||||
@msg Batch cannot play an action with a stop Le traitement par lots ne peut pas exécuter un script comportant un arrêt
|
||||
Playback Options Options d’exécution
|
||||
Accelerated Accélérée
|
||||
Step by Step Pas à pas
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3290,6 +3290,19 @@
|
||||
Play Action खेल कार्रवाई
|
||||
Play Current Selection वर्तमान सिलेक्शन
|
||||
Play: चलाएँ:
|
||||
Insert Stop… स्टॉप जोड़ें…
|
||||
Insert Stop स्टॉप जोड़ें
|
||||
Record Stop स्टॉप रिकॉर्ड करें
|
||||
Allow Continue जारी रखने दें
|
||||
Continue जारी रखें
|
||||
Continue Action एक्शन जारी रखें
|
||||
Delete Action Step एक्शन का चरण हटाएं
|
||||
Press Play Current Selection in the Actions panel to go on. आगे बढ़ने के लिए एक्शन्स पैनल में वर्तमान सिलेक्शन प्ले करें दबाएँ।
|
||||
Stop: {message} स्टॉप: {message}
|
||||
@msg no action is waiting at a stop कोई एक्शन स्टॉप पर प्रतीक्षा नहीं कर रहा है
|
||||
@msg message must be text message टेक्स्ट होना चाहिए
|
||||
@msg allowContinue must be true or false allowContinue true या false होना चाहिए
|
||||
@msg Batch cannot play an action with a stop बैच स्टॉप वाला एक्शन नहीं चला सकता
|
||||
Playback Options प्लेबैक ऑप्शन्स
|
||||
Playback Options… प्लेबैक ऑप्शन्स…
|
||||
Plug-in Info प्लगइन जानकारी
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -5779,6 +5779,19 @@ axis Y Axis Y tengely
|
||||
Action Options… Művelet beállításai…
|
||||
Action Options Művelet beállításai
|
||||
Playback Options… Lejátszási beállítások…
|
||||
Insert Stop… Megállás beszúrása…
|
||||
Insert Stop Megállás beszúrása
|
||||
Record Stop Megállás rögzítése
|
||||
Allow Continue Folytatás engedélyezése
|
||||
Continue Folytatás
|
||||
Continue Action Művelet folytatása
|
||||
Delete Action Step Műveletlépés törlése
|
||||
Press Play Current Selection in the Actions panel to go on. A folytatáshoz nyomja meg a Műveletek panelen a Kijelölt művelet lejátszása gombot.
|
||||
Stop: {message} Megállás: {message}
|
||||
@msg no action is waiting at a stop egyetlen művelet sem várakozik megállásnál
|
||||
@msg message must be text message: szöveg kell
|
||||
@msg allowContinue must be true or false allowContinue: true vagy false kell
|
||||
@msg Batch cannot play an action with a stop A kötegelt feldolgozás nem játszhat le megállást tartalmazó műveletet
|
||||
Playback Options Lejátszási beállítások
|
||||
Accelerated Gyorsított
|
||||
Step by Step Lépésenként
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5695,6 +5695,19 @@ axis Y Axis Sumbu Y
|
||||
Action Options… Opsi tindakan…
|
||||
Action Options Opsi tindakan
|
||||
Playback Options… Opsi pemutaran…
|
||||
Insert Stop… Sisipkan henti…
|
||||
Insert Stop Sisipkan henti
|
||||
Record Stop Rekam henti
|
||||
Allow Continue Izinkan lanjutkan
|
||||
Continue Lanjutkan
|
||||
Continue Action Lanjutkan tindakan
|
||||
Delete Action Step Hapus langkah tindakan
|
||||
Press Play Current Selection in the Actions panel to go on. Untuk melanjutkan, tekan Putar seleksi saat ini di panel Tindakan.
|
||||
Stop: {message} Henti: {message}
|
||||
@msg no action is waiting at a stop tidak ada tindakan yang menunggu di titik henti
|
||||
@msg message must be text message harus berupa teks
|
||||
@msg allowContinue must be true or false allowContinue harus true atau false
|
||||
@msg Batch cannot play an action with a stop Batch tidak dapat memutar tindakan dengan titik henti
|
||||
Playback Options Opsi pemutaran
|
||||
Accelerated Dipercepat
|
||||
Step by Step Langkah demi langkah
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2240 and column 5.
|
@@ -5412,6 +5412,19 @@ axis Y Axis Asse Y
|
||||
Action Options… Opzioni azione…
|
||||
Action Options Opzioni azione
|
||||
Playback Options… Opzioni di riproduzione…
|
||||
Insert Stop… Inserisci interruzione…
|
||||
Insert Stop Inserisci interruzione
|
||||
Record Stop Registra interruzione
|
||||
Allow Continue Consenti di continuare
|
||||
Continue Continua
|
||||
Continue Action Continua azione
|
||||
Delete Action Step Elimina passaggio dell’azione
|
||||
Press Play Current Selection in the Actions panel to go on. Per continuare, premi Esegui selezione corrente nel pannello Azioni.
|
||||
Stop: {message} Interruzione: {message}
|
||||
@msg no action is waiting at a stop nessuna azione è in attesa a un'interruzione
|
||||
@msg message must be text message deve essere testo
|
||||
@msg allowContinue must be true or false allowContinue deve essere true o false
|
||||
@msg Batch cannot play an action with a stop L'elaborazione batch non può eseguire un'azione con un'interruzione
|
||||
Playback Options Opzioni di riproduzione
|
||||
Accelerated Accelerata
|
||||
Step by Step Passo per passo
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5477,6 +5477,19 @@ axis Y Axis Y 軸
|
||||
Action Options… アクションオプション…
|
||||
Action Options アクションオプション
|
||||
Playback Options… 再生オプション…
|
||||
Insert Stop… 停止を挿入…
|
||||
Insert Stop 停止を挿入
|
||||
Record Stop 停止を記録
|
||||
Allow Continue 続行を許可
|
||||
Continue 続行
|
||||
Continue Action アクションを続行
|
||||
Delete Action Step アクションステップを削除
|
||||
Press Play Current Selection in the Actions panel to go on. 続行するには、アクションパネルの「選択項目を再生」を押します。
|
||||
Stop: {message} 停止: {message}
|
||||
@msg no action is waiting at a stop 停止で待機中のアクションはありません
|
||||
@msg message must be text message にはテキストを指定してください
|
||||
@msg allowContinue must be true or false allowContinue には true または false を指定してください
|
||||
@msg Batch cannot play an action with a stop バッチでは停止を含むアクションを再生できません
|
||||
Playback Options 再生オプション
|
||||
Accelerated 高速
|
||||
Step by Step ステップ実行
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5719,6 +5719,19 @@ axis Y Axis Y ღერძი
|
||||
Action Options… მოქმედების პარამეტრები…
|
||||
Action Options მოქმედების პარამეტრები
|
||||
Playback Options… შესრულების პარამეტრები…
|
||||
Insert Stop… გაჩერების ჩასმა…
|
||||
Insert Stop გაჩერების ჩასმა
|
||||
Record Stop გაჩერების ჩაწერა
|
||||
Allow Continue გაგრძელების დაშვება
|
||||
Continue გაგრძელება
|
||||
Continue Action მოქმედების გაგრძელება
|
||||
Delete Action Step მოქმედების ნაბიჯის წაშლა
|
||||
Press Play Current Selection in the Actions panel to go on. გასაგრძელებლად მოქმედებების პანელზე დააჭირეთ „მიმდინარე მონიშნულის შესრულებას“.
|
||||
Stop: {message} გაჩერება: {message}
|
||||
@msg no action is waiting at a stop გაჩერებაზე არცერთი მოქმედება არ ელოდება
|
||||
@msg message must be text message უნდა იყოს ტექსტი
|
||||
@msg allowContinue must be true or false allowContinue უნდა იყოს true ან false
|
||||
@msg Batch cannot play an action with a stop პაკეტურ დამუშავებას არ შეუძლია გაჩერების მქონე მოქმედების შესრულება
|
||||
Playback Options შესრულების პარამეტრები
|
||||
Accelerated დაჩქარებული
|
||||
Step by Step ნაბიჯ-ნაბიჯ
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -5373,6 +5373,19 @@ axis Y Axis Y축
|
||||
Action Options… 액션 옵션…
|
||||
Action Options 액션 옵션
|
||||
Playback Options… 재생 옵션…
|
||||
Insert Stop… 중지 삽입…
|
||||
Insert Stop 중지 삽입
|
||||
Record Stop 중지 기록
|
||||
Allow Continue 계속 허용
|
||||
Continue 계속
|
||||
Continue Action 액션 계속
|
||||
Delete Action Step 액션 단계 삭제
|
||||
Press Play Current Selection in the Actions panel to go on. 계속하려면 액션 패널에서 현재 선택 항목 재생을 누르세요.
|
||||
Stop: {message} 중지: {message}
|
||||
@msg no action is waiting at a stop 중지에서 대기 중인 액션이 없습니다
|
||||
@msg message must be text message의 값은 텍스트여야 합니다
|
||||
@msg allowContinue must be true or false allowContinue의 값은 true 또는 false여야 합니다
|
||||
@msg Batch cannot play an action with a stop 일괄 처리에서는 중지가 있는 액션을 재생할 수 없습니다
|
||||
Playback Options 재생 옵션
|
||||
Accelerated 가속
|
||||
Step by Step 단계별
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5741,6 +5741,19 @@ axis Y Axis Y-as
|
||||
Action Options… Actieopties…
|
||||
Action Options Actieopties
|
||||
Playback Options… Afspeelopties…
|
||||
Insert Stop… Stop invoegen…
|
||||
Insert Stop Stop invoegen
|
||||
Record Stop Stop opnemen
|
||||
Allow Continue Doorgaan toestaan
|
||||
Continue Doorgaan
|
||||
Continue Action Actie voortzetten
|
||||
Delete Action Step Actiestap verwijderen
|
||||
Press Play Current Selection in the Actions panel to go on. Druk in het paneel Acties op Huidige selectie afspelen om door te gaan.
|
||||
Stop: {message} Stop: {message}
|
||||
@msg no action is waiting at a stop geen actie wacht bij een stop
|
||||
@msg message must be text message moet tekst zijn
|
||||
@msg allowContinue must be true or false allowContinue moet true of false zijn
|
||||
@msg Batch cannot play an action with a stop Batch kan geen actie met een stop afspelen
|
||||
Playback Options Afspeelopties
|
||||
Accelerated Versneld
|
||||
Step by Step Stap voor stap
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5649,6 +5649,19 @@ axis Y Axis Oś Y
|
||||
Action Options… Opcje operacji…
|
||||
Action Options Opcje operacji
|
||||
Playback Options… Opcje odtwarzania…
|
||||
Insert Stop… Wstaw zatrzymanie…
|
||||
Insert Stop Wstaw zatrzymanie
|
||||
Record Stop Nagraj zatrzymanie
|
||||
Allow Continue Zezwalaj na kontynuację
|
||||
Continue Kontynuuj
|
||||
Continue Action Kontynuuj operację
|
||||
Delete Action Step Usuń krok operacji
|
||||
Press Play Current Selection in the Actions panel to go on. Aby kontynuować, naciśnij Odtwórz bieżące zaznaczenie w panelu Operacje.
|
||||
Stop: {message} Zatrzymanie: {message}
|
||||
@msg no action is waiting at a stop żadna operacja nie czeka na zatrzymaniu
|
||||
@msg message must be text message musi być tekstem
|
||||
@msg allowContinue must be true or false allowContinue musi mieć wartość true lub false
|
||||
@msg Batch cannot play an action with a stop Przetwarzanie wsadowe nie może odtworzyć operacji z zatrzymaniem
|
||||
Playback Options Opcje odtwarzania
|
||||
Accelerated Przyspieszone
|
||||
Step by Step Krok po kroku
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5711,6 +5711,19 @@ axis Y Axis Eixo Y
|
||||
Action Options… Opções da Ação…
|
||||
Action Options Opções da Ação
|
||||
Playback Options… Opções de Reprodução…
|
||||
Insert Stop… Inserir Parada…
|
||||
Insert Stop Inserir Parada
|
||||
Record Stop Gravar Parada
|
||||
Allow Continue Permitir Continuar
|
||||
Continue Continuar
|
||||
Continue Action Continuar Ação
|
||||
Delete Action Step Excluir Etapa da Ação
|
||||
Press Play Current Selection in the Actions panel to go on. Para continuar, pressione Reproduzir Seleção Atual no painel Ações.
|
||||
Stop: {message} Parada: {message}
|
||||
@msg no action is waiting at a stop nenhuma ação está aguardando em uma parada
|
||||
@msg message must be text message deve ser texto
|
||||
@msg allowContinue must be true or false allowContinue deve ser true ou false
|
||||
@msg Batch cannot play an action with a stop Lote não pode reproduzir uma ação com uma parada
|
||||
Playback Options Opções de Reprodução
|
||||
Accelerated Acelerada
|
||||
Step by Step Passo a Passo
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -5407,6 +5407,19 @@ axis Y Axis Ось Y
|
||||
Action Options… Параметры действия…
|
||||
Action Options Параметры действия
|
||||
Playback Options… Параметры воспроизведения…
|
||||
Insert Stop… Вставить остановку…
|
||||
Insert Stop Вставить остановку
|
||||
Record Stop Записать остановку
|
||||
Allow Continue Разрешить продолжение
|
||||
Continue Продолжить
|
||||
Continue Action Продолжить действие
|
||||
Delete Action Step Удалить шаг действия
|
||||
Press Play Current Selection in the Actions panel to go on. Чтобы продолжить, нажмите «Воспроизвести текущее выделение» на панели «Действия».
|
||||
Stop: {message} Остановка: {message}
|
||||
@msg no action is waiting at a stop ни одно действие не ожидает на остановке
|
||||
@msg message must be text message должно быть текстом
|
||||
@msg allowContinue must be true or false allowContinue должно быть true или false
|
||||
@msg Batch cannot play an action with a stop Пакет не может воспроизвести действие с остановкой
|
||||
Playback Options Параметры воспроизведения
|
||||
Accelerated Ускоренно
|
||||
Step by Step Пошагово
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5819,6 +5819,19 @@ axis Y Axis Y-axel
|
||||
Action Options… Alternativ för åtgärd…
|
||||
Action Options Alternativ för åtgärd
|
||||
Playback Options… Uppspelningsalternativ…
|
||||
Insert Stop… Infoga stopp…
|
||||
Insert Stop Infoga stopp
|
||||
Record Stop Spela in stopp
|
||||
Allow Continue Tillåt fortsättning
|
||||
Continue Fortsätt
|
||||
Continue Action Fortsätt åtgärd
|
||||
Delete Action Step Radera åtgärdssteg
|
||||
Press Play Current Selection in the Actions panel to go on. Fortsätt genom att trycka på Spela upp aktuell markering i panelen Åtgärder.
|
||||
Stop: {message} Stopp: {message}
|
||||
@msg no action is waiting at a stop ingen åtgärd väntar vid ett stopp
|
||||
@msg message must be text message måste vara text
|
||||
@msg allowContinue must be true or false allowContinue måste vara true eller false
|
||||
@msg Batch cannot play an action with a stop Batch kan inte spela upp en åtgärd med ett stopp
|
||||
Playback Options Uppspelningsalternativ
|
||||
Accelerated Accelererad
|
||||
Step by Step Steg för steg
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -5753,6 +5753,19 @@ axis Y Axis Y ekseni
|
||||
Action Options… Eylem Seçenekleri…
|
||||
Action Options Eylem Seçenekleri
|
||||
Playback Options… Oynatma Seçenekleri…
|
||||
Insert Stop… Durak Ekle…
|
||||
Insert Stop Durak Ekle
|
||||
Record Stop Durak Kaydet
|
||||
Allow Continue Devam Etmeye İzin Ver
|
||||
Continue Devam Et
|
||||
Continue Action Eyleme Devam Et
|
||||
Delete Action Step Eylem Adımını Sil
|
||||
Press Play Current Selection in the Actions panel to go on. Devam etmek için Eylemler panelinde Geçerli Seçimi Oynat'a basın.
|
||||
Stop: {message} Durak: {message}
|
||||
@msg no action is waiting at a stop durakta bekleyen eylem yok
|
||||
@msg message must be text "message" metin olmalıdır
|
||||
@msg allowContinue must be true or false "allowContinue" true veya false olmalıdır
|
||||
@msg Batch cannot play an action with a stop Toplu işlem durak içeren bir eylemi oynatamaz
|
||||
Playback Options Oynatma Seçenekleri
|
||||
Accelerated Hızlandırılmış
|
||||
Step by Step Adım Adım
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -5392,6 +5392,19 @@ axis Y Axis Вісь Y
|
||||
Action Options… Параметри дії…
|
||||
Action Options Параметри дії
|
||||
Playback Options… Параметри відтворення…
|
||||
Insert Stop… Вставити зупинку…
|
||||
Insert Stop Вставити зупинку
|
||||
Record Stop Записати зупинку
|
||||
Allow Continue Дозволити продовження
|
||||
Continue Продовжити
|
||||
Continue Action Продовжити дію
|
||||
Delete Action Step Видалити крок дії
|
||||
Press Play Current Selection in the Actions panel to go on. Щоб продовжити, натисніть «Відтворити поточне виділення» на панелі «Дії».
|
||||
Stop: {message} Зупинка: {message}
|
||||
@msg no action is waiting at a stop жодна дія не очікує на зупинці
|
||||
@msg message must be text message має бути текстом
|
||||
@msg allowContinue must be true or false allowContinue має бути true або false
|
||||
@msg Batch cannot play an action with a stop Пакет не може відтворити дію із зупинкою
|
||||
Playback Options Параметри відтворення
|
||||
Accelerated Прискорено
|
||||
Step by Step Покроково
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 177 and column 5.
|
@@ -5393,6 +5393,19 @@ axis Y Axis Trục Y
|
||||
Action Options… Tùy chọn hành động…
|
||||
Action Options Tùy chọn hành động
|
||||
Playback Options… Tùy chọn phát lại…
|
||||
Insert Stop… Chèn điểm dừng…
|
||||
Insert Stop Chèn điểm dừng
|
||||
Record Stop Ghi điểm dừng
|
||||
Allow Continue Cho phép tiếp tục
|
||||
Continue Tiếp tục
|
||||
Continue Action Tiếp tục hành động
|
||||
Delete Action Step Xóa bước hành động
|
||||
Press Play Current Selection in the Actions panel to go on. Để tiếp tục, nhấn Phát vùng chọn hiện tại trong bảng Hành động.
|
||||
Stop: {message} Điểm dừng: {message}
|
||||
@msg no action is waiting at a stop không có hành động nào đang chờ ở điểm dừng
|
||||
@msg message must be text message phải là văn bản
|
||||
@msg allowContinue must be true or false allowContinue phải là true hoặc false
|
||||
@msg Batch cannot play an action with a stop Hàng loạt không thể phát hành động có điểm dừng
|
||||
Playback Options Tùy chọn phát lại
|
||||
Accelerated Tăng tốc
|
||||
Step by Step Từng bước
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 199 and column 5.
|
@@ -5634,6 +5634,19 @@ axis Y Axis Y 轴
|
||||
Action Options… 动作选项…
|
||||
Action Options 动作选项
|
||||
Playback Options… 播放选项…
|
||||
Insert Stop… 插入停止…
|
||||
Insert Stop 插入停止
|
||||
Record Stop 记录停止
|
||||
Allow Continue 允许继续
|
||||
Continue 继续
|
||||
Continue Action 继续动作
|
||||
Delete Action Step 删除动作步骤
|
||||
Press Play Current Selection in the Actions panel to go on. 要继续,请按“动作”面板中的“播放当前选择项目”。
|
||||
Stop: {message} 停止:{message}
|
||||
@msg no action is waiting at a stop 没有动作在停止处等待
|
||||
@msg message must be text message 必须是文本
|
||||
@msg allowContinue must be true or false allowContinue 必须是 true 或 false
|
||||
@msg Batch cannot play an action with a stop 批处理无法播放含有停止的动作
|
||||
Playback Options 播放选项
|
||||
Accelerated 加速
|
||||
Step by Step 逐步
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5430,6 +5430,19 @@ axis Y Axis Y 軸
|
||||
Action Options… 動作選項…
|
||||
Action Options 動作選項
|
||||
Playback Options… 播放選項…
|
||||
Insert Stop… 插入停止…
|
||||
Insert Stop 插入停止
|
||||
Record Stop 記錄停止
|
||||
Allow Continue 允許繼續
|
||||
Continue 繼續
|
||||
Continue Action 繼續動作
|
||||
Delete Action Step 刪除動作步驟
|
||||
Press Play Current Selection in the Actions panel to go on. 若要繼續,請按「動作」面板中的「播放目前選取項目」。
|
||||
Stop: {message} 停止:{message}
|
||||
@msg no action is waiting at a stop 沒有動作在停止處等待
|
||||
@msg message must be text message 必須是文字
|
||||
@msg allowContinue must be true or false allowContinue 必須是 true 或 false
|
||||
@msg Batch cannot play an action with a stop 批次無法播放含有停止的動作
|
||||
Playback Options 播放選項
|
||||
Accelerated 加速
|
||||
Step by Step 逐步
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -848,6 +848,9 @@ fn run_ui_part11(app: &mut VectorcraftApp, id: &str, p: &Value) -> Option<Result
|
||||
crate::panels::actions::PLAYBACK_OPTIONS => crate::panels::actions::playback_options(app, p),
|
||||
crate::panels::actions::START_RECORDING => crate::panels::actions::record(app, p),
|
||||
crate::panels::actions::STOP_RECORDING => crate::panels::actions::stop(app, p),
|
||||
crate::panels::actions::INSERT_STOP => crate::panels::actions::insert_stop(app, p),
|
||||
crate::panels::actions::CONTINUE_PLAYBACK => crate::panels::actions::continue_playback(app, p),
|
||||
crate::panels::actions::DELETE_STEP => crate::panels::actions::delete_step(app, p),
|
||||
"ui.batchDialog" => {
|
||||
let set = p.get("set").and_then(Value::as_u64).unwrap_or(0) as usize;
|
||||
let action = p.get("action").and_then(Value::as_u64).unwrap_or(0) as usize;
|
||||
|
||||
@@ -1269,7 +1269,7 @@ pub const UI_COMMANDS: &[(&str, &str, &str, &str)] = &[
|
||||
crate::panels::actions::PLAY_ACTION,
|
||||
"Play Action",
|
||||
"",
|
||||
"{action: name, set?: name} play the Actions panel's action named action at the speed ui.action.playbackOptions sets; set names the set to look in (default: every set). Accelerated plays it as one undoable batch → what command.batch returns. Step by Step and Pause For play its first step now and the others one at a time, each its own undo step, until the last, ui.action.stop, or a step that comes due while a different document is active than after the step before → {results: [the first step's result], pending: the steps left}. A name no action has, or one that more than one action in the sets looked in has, or an action played while another is still playing step by step or with pauses, is an error and nothing plays",
|
||||
"{action: name, set?: name} play the Actions panel's action named action at the speed ui.action.playbackOptions sets; set names the set to look in (default: every set). Accelerated plays it as one undoable batch → what command.batch returns. Step by Step and Pause For play its first step now and the others one at a time, each its own undo step, until the last, ui.action.stop, or a step that comes due while a different document is active than after the step before → {results: [the first step's result], pending: the steps left}. An action with a stop, at any speed, plays up to the stop and waits until ui.action.continue or ui.action.stop; at Accelerated the steps between stops are one undoable batch each → {results, pending, atStop?: true when it already waits}. A name no action has, or one that more than one action in the sets looked in has, or an action played while another is still playing step by step or with pauses, is an error and nothing plays",
|
||||
),
|
||||
(
|
||||
crate::panels::actions::PLAYBACK_OPTIONS,
|
||||
@@ -1287,7 +1287,25 @@ pub const UI_COMMANDS: &[(&str, &str, &str, &str)] = &[
|
||||
crate::panels::actions::STOP_RECORDING,
|
||||
"Stop Playing/Recording",
|
||||
"",
|
||||
"{} end the Actions panel's recording and keep its steps, in the action ui.action.new made for it, else in a new action after the last action of its set, as the panel's Stop Playing/Recording button does. It also ends an action playing step by step or with pauses: the steps played stay and the rest do not run. With nothing recording or playing it changes nothing → {stopped}",
|
||||
"{} end the Actions panel's recording and keep its steps, in the action ui.action.new made for it, else in a new action after the last action of its set, as the panel's Stop Playing/Recording button does. It also ends an action playing step by step or with pauses, or one waiting at a stop, whose message box closes: the steps played stay and the rest do not run. With nothing recording or playing it changes nothing → {stopped}",
|
||||
),
|
||||
(
|
||||
crate::panels::actions::INSERT_STOP,
|
||||
"Insert Stop",
|
||||
"",
|
||||
"{set?: index, action?: index, step?: index, message?, allowContinue?: bool} insert a stop, at which a playing action waits and shows message. With set and action (0 is the top set or action), the stop goes into that action, after step, else after its last step; without them it goes into the recording in progress, after the steps recorded so far. message defaults to none, and allowContinue, which offers Continue in the message box, defaults to false. A stop in an action becomes the panel's selected step, and its action and set become the selected ones. An index past the last set, action or step, a param of another type, params that are not an object, or no action and no recording is an error and changes nothing. The panel menu's Insert Stop… (dialog `actionStopRecord` with message, allowContinue, set, action and step) runs this on OK → {set, action, step}, or {recording: true}",
|
||||
),
|
||||
(
|
||||
crate::panels::actions::CONTINUE_PLAYBACK,
|
||||
"Continue Action",
|
||||
"",
|
||||
"{} play on from the stop the Actions panel's playing action waits at, on the document active now, and close the stop's message box (dialog `actionStopMessage`): the next step runs at once, or at Accelerated the steps up to the next stop as one undo step. The panel's Play Current Selection runs this while an action waits. With no action waiting at a stop it is an error → {results, pending, atStop?}",
|
||||
),
|
||||
(
|
||||
crate::panels::actions::DELETE_STEP,
|
||||
"Delete Action Step",
|
||||
"",
|
||||
"{set: index, action: index, step: index} delete one step, a stop or a command, of the Actions panel's action at action in set (0 is the top set, action or step). The steps after it keep whether they are excluded, and no step of that action stays selected. A Record Stop dialog open on that step closes, and one open on a later step of the action follows it up. A missing or invalid index is an error and changes nothing. Undo does not bring the step back. The panel's Delete Selection runs this for the selected step → {set, action, step}",
|
||||
),
|
||||
(
|
||||
"ui.batchDialog",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,14 @@
|
||||
//! Action set files: the Actions panel menu's Save Actions… and Load Actions….
|
||||
//!
|
||||
//! An action set file (`.vcactions`) is JSON: `{"format": "vcactions", "version": 1 or 2, "name",
|
||||
//! An action set file (`.vcactions`) is JSON: `{"format": "vcactions", "version": 1, 2 or 3, "name",
|
||||
//! "actions": [{"name", "steps": [{"command", "params", "excluded"?}], "key"?, "color"?}]}`. Each step is a
|
||||
//! command id and its params, as `command.batch` takes them. `key` is the action's function key
|
||||
//! command id and its params, as `command.batch` takes them, or a stop: the command `action.stop`
|
||||
//! with `{"message", "allowContinue"}`. `key` is the action's function key
|
||||
//! (`{"key": 1 to 15, "cmd", "shift"}`) and `color` its Button Mode color; an action without them,
|
||||
//! or with a value that is not one, has none. `excluded: true` keeps a step but skips it during
|
||||
//! playback. Sets with exclusions use version 2 so older builds refuse them rather than replay
|
||||
//! excluded steps. Sets without exclusions use version 1, and earlier version 1 files still work.
|
||||
//! excluded steps, and sets with stops use version 3 so older builds refuse them rather than fail
|
||||
//! at a stop. Other sets use version 1, and earlier version 1 and 2 files still work.
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Value, json};
|
||||
@@ -67,6 +69,19 @@ fn is_false(value: &bool) -> bool {
|
||||
!value
|
||||
}
|
||||
|
||||
/// The params of the stops in a step: a stop's own, or those of the stops a `command.batch` step
|
||||
/// holds, which playback runs as its own steps.
|
||||
fn stops_in<'a>(command: &str, params: &'a Value) -> Vec<&'a Value> {
|
||||
if command == super::STOP_STEP {
|
||||
return vec![params];
|
||||
}
|
||||
if command != "command.batch" {
|
||||
return vec![];
|
||||
}
|
||||
let steps = params.get("commands").and_then(Value::as_array).into_iter().flatten();
|
||||
steps.filter(|step| super::is_stop(step)).map(|step| step.get("params").unwrap_or(&Value::Null)).collect()
|
||||
}
|
||||
|
||||
/// `set` as the text of an action set file.
|
||||
pub fn write_set(set: &ActionSet) -> String {
|
||||
let actions = set
|
||||
@@ -84,7 +99,12 @@ pub fn write_set(set: &ActionSet) -> String {
|
||||
color: a.color.clone(),
|
||||
})
|
||||
.collect();
|
||||
let version = if set.actions.iter().any(|a| !a.excluded_steps.is_empty()) { 2 } else { 1 };
|
||||
let has_stop = set.actions.iter().flat_map(|a| &a.steps).any(|(command, params)| !stops_in(command, params).is_empty());
|
||||
let version = match (has_stop, set.actions.iter().any(|a| !a.excluded_steps.is_empty())) {
|
||||
(true, _) => 3,
|
||||
(false, true) => 2,
|
||||
(false, false) => 1,
|
||||
};
|
||||
let file = SetFile { format: ACTIONS_EXT.into(), version, name: set.name.clone(), actions };
|
||||
serde_json::to_string_pretty(&file).unwrap_or_default()
|
||||
}
|
||||
@@ -98,7 +118,7 @@ pub fn read_set(text: &str, name: &str) -> Result<ActionSet, String> {
|
||||
if f.format != ACTIONS_EXT {
|
||||
return Err("not an action set file".into());
|
||||
}
|
||||
if !matches!(f.version, 1 | 2) {
|
||||
if !matches!(f.version, 1..=3) {
|
||||
return Err("the action set file needs a later version of VectorCraft".into());
|
||||
}
|
||||
if f.actions.len() > MAX_SET_ACTIONS {
|
||||
@@ -107,6 +127,10 @@ pub fn read_set(text: &str, name: &str) -> Result<ActionSet, String> {
|
||||
if f.actions.iter().any(|a| a.steps.len() > MAX_ACTION_STEPS) {
|
||||
return Err("an action in the action set file has more than 10,000 steps".into());
|
||||
}
|
||||
let mut stops = f.actions.iter().flat_map(|a| &a.steps).flat_map(|s| stops_in(&s.command, &s.params));
|
||||
if stops.any(|p| super::stop_params(p).is_err()) {
|
||||
return Err("not an action set file".into());
|
||||
}
|
||||
let actions = f
|
||||
.actions
|
||||
.into_iter()
|
||||
|
||||
+34
-8
@@ -1852,11 +1852,13 @@ already walks Image Trace. Short agent entry points:
|
||||
the file at `path`, else a picked one, or the file's text `data`, adds its set after the other sets and returns
|
||||
`{set, name, actions}`. A set named like one already in the panel gets the next free number (`Print 2`), and the
|
||||
other sets and the current set stay as they are. An action set file (`.vcactions`) is JSON:
|
||||
`{"format": "vcactions", "version": 1 or 2, "name", "actions": [{"name", "steps": [{"command", "params", "excluded"?}]}]}`, each step
|
||||
a command id and its params as `command.batch` takes them. `excluded: true` preserves a step but omits it from playback;
|
||||
an absent or false flag includes the step. Files with excluded steps use version 2, so older builds refuse them
|
||||
instead of playing the excluded steps; files without exclusions use version 1. A file with another `format` or a `version` other than
|
||||
1 or 2, a file larger than 8 MiB, one with more than 1,000 actions and one with an action of more than 10,000 steps are
|
||||
`{"format": "vcactions", "version": 1, 2 or 3, "name", "actions": [{"name", "steps": [{"command", "params", "excluded"?}]}]}`, each step
|
||||
a command id and its params as `command.batch` takes them, or a stop: the command `action.stop` with
|
||||
`{message, allowContinue}`. `excluded: true` preserves a step but omits it from playback;
|
||||
an absent or false flag includes the step. Files with stops use version 3, and files with excluded steps and no stops
|
||||
use version 2, so older builds refuse them
|
||||
instead of playing the excluded steps or failing at a stop; other files use version 1. A file with another `format` or a `version` other than
|
||||
1, 2 or 3, a stop whose message is not text or whose `allowContinue` is not true or false, a file larger than 8 MiB, one with more than 1,000 actions and one with an action of more than 10,000 steps are
|
||||
refused, and no set is added. The Actions panel menu's Save Actions… and Load Actions… run these; Load Actions… is
|
||||
disabled where there is no open dialog (the web).
|
||||
- Actions: `ui.action.rename {set, action, name}` renames the Actions panel's action at `action` in set `set` (0 is
|
||||
@@ -1899,7 +1901,29 @@ already walks Image Trace. Short agent entry points:
|
||||
action has, or that more than one action in the sets looked in has, or whose every step is excluded, is an error, and
|
||||
then nothing plays. So is an action played while another is still playing at Step by Step or Pause For. A
|
||||
`command.batch` step, which an action played or a panel operation run as one batch records, plays as its own steps,
|
||||
here and in Batch….
|
||||
here and in Batch…. An action with an included stop plays up to the stop at any speed and then waits, with its
|
||||
message box open, until `ui.action.continue` or `ui.action.stop`. At Accelerated the steps between two stops are one
|
||||
undoable batch each. The result is then `{results, pending, atStop?}`, with `atStop: true` when the action already
|
||||
waits. Batch… refuses an action with an included stop, and a stop that is excluded does not hold playback.
|
||||
- Actions: `ui.action.insertStop {set?, action?, step?, message?, allowContinue?}` inserts a stop. With `set` and
|
||||
`action`, the stop goes into that action, after step `step`, else after its last step, and the command returns
|
||||
`{set, action, step}`. Without them it goes into the recording in progress, after the steps recorded so far, and
|
||||
returns `{recording: true}`. `message` is the text playback shows (default: none), and `allowContinue` (default:
|
||||
false) offers Continue in the message box. An action with an empty message still waits at the stop, which is
|
||||
VectorCraft's own rule. A stop in an action becomes the panel's selected step, and its action and set become the
|
||||
selected ones. An index past the last set, action or step, a param of another type, params that are not an
|
||||
object, or no action and no recording is an error, and then nothing changes. The panel menu's Insert Stop… opens the `actionStopRecord` dialog
|
||||
(`message`, `allowContinue`, `set`, `action`, `step`), whose OK runs this.
|
||||
- Actions: `ui.action.continue {}` plays on from the stop the playing action waits at, on the document active now, and
|
||||
closes the stop's message box (`actionStopMessage`). The next step runs at once, or at Accelerated the steps up to
|
||||
the next stop as one undo step. It returns `{results, pending, atStop?}`. With no action waiting at a stop it is an
|
||||
error. The panel's Play Current Selection runs this while an action waits. In the message box, Continue (shown with
|
||||
Allow Continue) runs this, and Stop closes the box while the action keeps waiting for the manual task.
|
||||
- Actions: `ui.action.deleteStep {set, action, step}` deletes one step, a stop or a command, of the action at `action`
|
||||
in set `set` (0 is the top set, action or step), and returns `{set, action, step}`. The steps after it keep whether
|
||||
they are excluded, and no step of that action stays selected. A Record Stop dialog open on that step closes, and one
|
||||
open on a later step of the action follows it up. A missing or invalid index is an error, and then nothing changes.
|
||||
Undo does not restore a deleted step. The panel's Delete Selection runs this for the selected step.
|
||||
- Actions: `ui.action.playbackOptions {speed?, seconds?}` sets how the Actions panel plays actions and returns
|
||||
`{speed, seconds}`. `speed` is `accelerated` (the default: every step at once), `step` (one step at a time, with the
|
||||
window drawn after each step before the next runs) or `pause` (a pause of `seconds` between steps). `seconds` is a
|
||||
@@ -1909,14 +1933,16 @@ already walks Image Trace. Short agent entry points:
|
||||
this. Batch… (`action.batch`) plays every step at once whatever the setting.
|
||||
- Actions: `ui.action.stop {}` ends the recording in progress and keeps its steps, in the action `ui.action.new` made
|
||||
for it, else in a new action after the last action of its set, and returns `{stopped}`. It also ends an action
|
||||
playing at Step by Step or Pause For: the steps already played stay, and the rest do not play. With nothing
|
||||
playing at Step by Step or Pause For, or one waiting at a stop, whose message box closes: the steps already played
|
||||
stay, and the rest do not play. With nothing
|
||||
recording or playing it changes nothing. The panel's Stop Playing/Recording button runs this.
|
||||
- Action sets: `ui.actionSet.delete {sets?: [index], ids?: [id]}` deletes the Actions panel's sets at these indexes
|
||||
(0 is the top set) with their actions, by default the current set, and returns `{deleted}`. An index past the last
|
||||
set is an error, and then no set is deleted. `ids` holds the panel's own set ids, which its question passes: the
|
||||
sets with these ids are deleted wherever they are now and `sets` is not read; when one of them no longer exists, the
|
||||
command returns an error and deletes no set. A recording into a deleted set stops and keeps no steps; a recording into another set
|
||||
goes on in that set. The panel's Delete Selection (the trash button and the panel menu's Delete) asks before it runs
|
||||
goes on in that set. The panel's Delete Selection (the trash button and the panel menu's Delete) deletes a selected
|
||||
step (`ui.action.deleteStep`), else a selected action. Otherwise it asks before it runs
|
||||
this for the selected sets, and Shift-click on a set's name selects the sets from the current one to it. Undo does
|
||||
not restore a deleted set.
|
||||
`ui.actionSet.duplicate {set?: index, action?: index}` copies the action at `action` in set `set` to right after it
|
||||
|
||||
@@ -632,6 +632,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
- Actions panel: the current set is kept with the UI preferences, so after a restart a recording goes into the set that was current, not into the first set. With no set current, Begin Recording records into the first set and makes it current.
|
||||
- Actions panel: expand an action to show its recorded steps, then clear a step's checkmark to keep it in the action but skip it during playback. The action and set checkmarks include or exclude all their steps; a mixed checkmark includes all. Alt/Option-clicking a step checkmark keeps that step as it was and applies the opposite inclusion state to the other steps in its action. This follows the public [Exclude commands from an action](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/exclude-commands-from-actions.html) guide; the scope of the mixed-state and Alt-click behavior is VectorCraft's design. The exclusion survives UI restart, action duplication, and `.vcactions` save/load. Existing version 1 action set files load with every step included.
|
||||
- Actions panel: the panel menu's Playback Options… sets how actions play: Accelerated (the default) plays every step at once, Step by Step plays one step at a time with the canvas drawn after each, and Pause For waits the given number of seconds between steps ([Specify playback speed](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/specify-playback-speed.html); `ui.action.playbackOptions`). VectorCraft's own rules, which the page does not cover: the pause is a whole number of seconds from 1 to 60, the setting is kept with the UI preferences, a paced playback ends at Stop Playing/Recording or when a step comes due while another document is active, each step of a paced playback is its own undo step, and Batch… plays at full speed.
|
||||
- Actions panel: the panel menu's Insert Stop… opens Record Stop, with a Message box and Allow Continue, and adds a stop to the recording in progress, after the selected command, or at the end of the selected action ([Insert stops in actions](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/insert-stops-in-actions.html); `ui.action.insertStop`). A playing action waits at the stop and shows the message so the user can do a manual task, and Play Current Selection plays the rest ([Illustrator CS5 help](https://help.adobe.com/archive/en_US/illustrator/cs5/illustrator_cs5_help.pdf#page=459); `ui.action.continue`). With Allow Continue, the message box also has Continue. VectorCraft's own rules, which the pages do not cover: an empty message still waits, Stop Playing/Recording ends the playback and keeps the steps already played, the rest plays on the document active then, a stop waits at every playback speed, at Accelerated the steps between two stops are one undo step, Batch… refuses an action with an included stop, and Delete Selection on a selected step deletes that step, a stop or a command, without asking (`ui.action.deleteStep`).
|
||||
- Actions panel: Delete Selection deletes the selected action set with its actions and keeps the other sets ([Actions panel overview](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/actions-panel-overview.html); `ui.actionSet.delete`). VectorCraft's own rules, which the overview does not cover: deleting a set asks first, Shift-click on a set's name selects a range of sets to delete together, the panel menu's Delete does the same, and Default Actions and the last set can be deleted. Undo does not bring a deleted set back.
|
||||
- Actions panel: the panel menu's Duplicate copies the selected action, else the current action set with all its actions ([Actions panel overview](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/actions-panel-overview.html); `ui.actionSet.duplicate`). VectorCraft's own rules, which the overview does not cover: the copy goes right after the original, is named after it with " copy" added and is selected.
|
||||
- Batch… over data sets names each file after the document and the data set (`action.batch`). It writes `/`, `\`, `:`, `<`, `>`, `"`, `|`, `?`, `*` and control characters in the data set's name as `-`, and adds `-2`, `-3`… to a name an earlier data set used.
|
||||
|
||||
Reference in New Issue
Block a user