Added option to duplicate scripts (closes 176)

This commit is contained in:
M4x1m3
2020-01-23 23:21:42 +01:00
parent 346b7eb62a
commit 56b9bd0a61
10 changed files with 29 additions and 2 deletions

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Skriptoptionen"
ExecuteScript = "Skript ausführen"
AutoImportScript = "Automatischer Import in Konsole"
DeleteScript = "Skript löschen"
DuplicateScript = "Skript duplizieren"
FunctionsAndVariables = "Funktionen und Variablen"
AllowedCharactersaz09 = "Erlaubte Zeichen: a-z, 0-9, _"

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Script options"
ExecuteScript = "Execute script"
AutoImportScript = "Auto import in shell"
DeleteScript = "Delete script"
DuplicateScript = "Duplicate script"
FunctionsAndVariables = "Functions and variables"
AllowedCharactersaz09 = "Allowed characters: a-z, 0-9, _"

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Opciones del archivo"
ExecuteScript = "Ejecutar el archivo"
AutoImportScript = "Importación auto en intérprete"
DeleteScript = "Eliminar el archivo"
DuplicateScript = "Duplicar el guión"
FunctionsAndVariables = "Funciones y variables"
AllowedCharactersaz09 = "Caracteres permitidos : a-z, 0-9, _"

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Options de script"
ExecuteScript = "Exécuter le script"
AutoImportScript = "Importation auto dans la console"
DeleteScript = "Supprimer le script"
DuplicateScript = "Dupliquer le script"
FunctionsAndVariables = "Fonctions et variables"
AllowedCharactersaz09 = "Caractères autorisés : a-z, 0-9, _"

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Script beállítások"
ExecuteScript = "Script indítása"
AutoImportScript = "Script automata importálása"
DeleteScript = "Script törlése"
DuplicateScript = "Másolja a szkriptet"
FunctionsAndVariables = "Függvények és változók"
AllowedCharactersaz09 = "Engedélyezett karakterek: a-z, 0-9, _"

View File

@@ -4,5 +4,6 @@ ScriptOptions = "Opções de script"
ExecuteScript = "Executar o script"
AutoImportScript = "Importação auto no interpretador"
DeleteScript = "Eliminar o script"
DuplicateScript = "Duplicar o script"
FunctionsAndVariables = "Funções e variáveis"
AllowedCharactersaz09 = "Caracteres permitidos : a-z, 0-9, _"

View File

@@ -4,6 +4,7 @@
#include "../apps_container.h"
#include <assert.h>
#include <escher/metric.h>
#include <ion.h>
#include <ion/events.h>
#include <ion/unicode/utf8_decoder.h>
@@ -133,6 +134,18 @@ void MenuController::renameSelectedScript() {
tf->setCursorLocation(tf->text() + strlen(previousText));
}
void MenuController::duplicateScript(Script script) {
assert(!script.isNull());
// Clone here
char buffer[10];
Script::DefaultName(buffer, 10);
Ion::Storage::sharedStorage()->createRecordWithExtension(buffer, Code::ScriptStore::k_scriptExtension, script.value().buffer, script.value().size);
updateAddScriptRowDisplay();
}
void MenuController::deleteScript(Script script) {
assert(!script.isNull());
script.destroy();

View File

@@ -19,6 +19,7 @@ public:
StackViewController * stackViewController();
void willExitResponderChain(Responder * nextFirstResponder) override;
void renameSelectedScript();
void duplicateScript(Script script);
void deleteScript(Script script);
void reloadConsole();
void openConsoleWithScript(Script script);

View File

@@ -10,6 +10,7 @@ ScriptParameterController::ScriptParameterController(Responder * parentResponder
m_renameScript(I18n::Message::Rename),
m_autoImportScript(I18n::Message::AutoImportScript),
m_deleteScript(I18n::Message::DeleteScript),
m_duplicateScript(I18n::Message::DuplicateScript),
m_selectableTableView(this),
m_script(Ion::Storage::Record()),
m_menuController(menuController)
@@ -52,6 +53,11 @@ bool ScriptParameterController::handleEvent(Ion::Events::Event event) {
m_menuController->deleteScript(s);
m_menuController->reloadConsole();
return true;
case 4:
dismissScriptParameterController();
m_menuController->duplicateScript(s);
m_menuController->reloadConsole();
return true;
default:
assert(false);
return false;
@@ -73,7 +79,7 @@ void ScriptParameterController::didBecomeFirstResponder() {
HighlightCell * ScriptParameterController::reusableCell(int index) {
assert(index >= 0);
assert(index < k_totalNumberOfCell);
HighlightCell * cells[] = {&m_executeScript, &m_renameScript, &m_autoImportScript, &m_deleteScript};
HighlightCell * cells[] = {&m_executeScript, &m_renameScript, &m_autoImportScript, &m_deleteScript, &m_duplicateScript};
return cells[index];
}

View File

@@ -30,13 +30,14 @@ public:
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
private:
constexpr static int k_totalNumberOfCell = 4;
constexpr static int k_totalNumberOfCell = 5;
StackViewController * stackViewController();
I18n::Message m_pageTitle;
MessageTableCell m_executeScript;
MessageTableCell m_renameScript;
MessageTableCellWithSwitch m_autoImportScript;
MessageTableCell m_deleteScript;
MessageTableCell m_duplicateScript;
SelectableTableView m_selectableTableView;
Script m_script;
MenuController * m_menuController;