diff --git a/apps/code/Makefile b/apps/code/Makefile index de11dcb4c..92646ed61 100644 --- a/apps/code/Makefile +++ b/apps/code/Makefile @@ -15,6 +15,7 @@ app_code_src = $(addprefix apps/code/,\ sandbox_controller.cpp \ script_name_cell.cpp \ script_parameter_controller.cpp \ + toolbox_ion_keys.cpp \ ) app_code_test_src = $(addprefix apps/code/,\ diff --git a/apps/code/app.cpp b/apps/code/app.cpp index 63537618c..661f65071 100644 --- a/apps/code/app.cpp +++ b/apps/code/app.cpp @@ -115,6 +115,10 @@ Toolbox * App::toolboxForInputEventHandler(InputEventHandler * textInput) { return &m_toolbox; } +Code::toolboxIonKeys * App::toolboxIonKeys() { + return &m_toolboxIonKeys; +} + VariableBoxController * App::variableBoxForInputEventHandler(InputEventHandler * textInput) { return &m_variableBoxController; } diff --git a/apps/code/app.h b/apps/code/app.h index a9babedce..b6e859b1d 100644 --- a/apps/code/app.h +++ b/apps/code/app.h @@ -10,6 +10,7 @@ #include "python_toolbox.h" #include "variable_box_controller.h" #include "../shared/shared_app.h" +#include "toolbox_ion_keys.h" namespace Code { @@ -75,6 +76,8 @@ public: static constexpr int k_pythonHeapSize = 32768; + Code::toolboxIonKeys * toolboxIonKeys(); + private: /* Python delegate: * MicroPython requires a heap. To avoid dynamic allocation, we keep a working @@ -91,6 +94,7 @@ private: StackViewController m_codeStackViewController; PythonToolbox m_toolbox; VariableBoxController m_variableBoxController; + Code::toolboxIonKeys m_toolboxIonKeys; }; } diff --git a/apps/code/catalog.de.i18n b/apps/code/catalog.de.i18n index ab998c81b..73eb3acec 100644 --- a/apps/code/catalog.de.i18n +++ b/apps/code/catalog.de.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Check if x is infinity" PythonIsNaN = "Check if x is a NaN" PythonIsKeyDown = "Return True if the k key is down" PythonKandinskyFunction = "kandinsky module function prefix" -PythonKeyLeft = "LEFT ARROW key" -PythonKeyUp = "UP ARROW key" -PythonKeyDown = "DOWN ARROW key" -PythonKeyRight = "RIGHT ARROW key" -PythonKeyOk = "OK key" -PythonKeyBack = "BACK key" -PythonKeyHome = "HOME key" -PythonKeyOnOff = "ON/OFF key" -PythonKeyShift = "SHIFT key" -PythonKeyAlpha = "ALPHA key" -PythonKeyXnt = "X,N,T key" -PythonKeyVar = "VAR key" -PythonKeyToolbox = "TOOLBOX key" -PythonKeyBackspace = "BACKSPACE key" -PythonKeyExp = "EXPONENTIAL key" -PythonKeyLn = "NATURAL LOGARITHM key" -PythonKeyLog = "DECIMAL LOGARITHM key" -PythonKeyImaginary = "IMAGINARY I key" -PythonKeyComma = "COMMA key" -PythonKeyPower = "POWER key" -PythonKeySine = "SINE key" -PythonKeyCosine = "COSINE key" -PythonKeyTangent = "TANGENT key" -PythonKeyPi = "PI key" -PythonKeySqrt = "SQUARE ROOT key" -PythonKeySquare = "SQUARE key" -PythonKeySeven = "7 key" -PythonKeyEight = "8 key" -PythonKeyNine = "9 key" -PythonKeyLeftParenthesis = "LEFT PARENTHESIS key" -PythonKeyRightParenthesis = "RIGHT PARENTHESIS key" -PythonKeyFour = "4 key" -PythonKeyFive = "5 key" -PythonKeySix = "6 key" -PythonKeyMultiplication = "MULTIPLICATION key" -PythonKeyDivision = "DIVISION key" -PythonKeyOne = "1 key" -PythonKeyTwo = "2 key" -PythonKeyThree = "3 key" -PythonKeyPlus = "PLUS key" -PythonKeyMinus = "MINUS key" -PythonKeyZero = "0 key" -PythonKeyDot = "DOT key" -PythonKeyEe = "10 POWER X key" -PythonKeyAns = "ANS key" -PythonKeyExe = "EXE key" PythonLdexp = "Return x*(2**i), inverse of frexp" PythonLength = "Length of an object" PythonLgamma = "Log-gamma function" diff --git a/apps/code/catalog.en.i18n b/apps/code/catalog.en.i18n index eaffc09a7..ee27566c8 100644 --- a/apps/code/catalog.en.i18n +++ b/apps/code/catalog.en.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Check if x is infinity" PythonIsKeyDown = "Return True if the k key is down" PythonIsNaN = "Check if x is a NaN" PythonKandinskyFunction = "kandinsky module function prefix" -PythonKeyLeft = "LEFT ARROW key" -PythonKeyUp = "UP ARROW key" -PythonKeyDown = "DOWN ARROW key" -PythonKeyRight = "RIGHT ARROW key" -PythonKeyOk = "OK key" -PythonKeyBack = "BACK key" -PythonKeyHome = "HOME key" -PythonKeyOnOff = "ON/OFF key" -PythonKeyShift = "SHIFT key" -PythonKeyAlpha = "ALPHA key" -PythonKeyXnt = "X,N,T key" -PythonKeyVar = "VAR key" -PythonKeyToolbox = "TOOLBOX key" -PythonKeyBackspace = "BACKSPACE key" -PythonKeyExp = "EXPONENTIAL key" -PythonKeyLn = "NATURAL LOGARITHM key" -PythonKeyLog = "DECIMAL LOGARITHM key" -PythonKeyImaginary = "IMAGINARY I key" -PythonKeyComma = "COMMA key" -PythonKeyPower = "POWER key" -PythonKeySine = "SINE key" -PythonKeyCosine = "COSINE key" -PythonKeyTangent = "TANGENT key" -PythonKeyPi = "PI key" -PythonKeySqrt = "SQUARE ROOT key" -PythonKeySquare = "SQUARE key" -PythonKeySeven = "7 key" -PythonKeyEight = "8 key" -PythonKeyNine = "9 key" -PythonKeyLeftParenthesis = "LEFT PARENTHESIS key" -PythonKeyRightParenthesis = "RIGHT PARENTHESIS key" -PythonKeyFour = "4 key" -PythonKeyFive = "5 key" -PythonKeySix = "6 key" -PythonKeyMultiplication = "MULTIPLICATION key" -PythonKeyDivision = "DIVISION key" -PythonKeyOne = "1 key" -PythonKeyTwo = "2 key" -PythonKeyThree = "3 key" -PythonKeyPlus = "PLUS key" -PythonKeyMinus = "MINUS key" -PythonKeyZero = "0 key" -PythonKeyDot = "DOT key" -PythonKeyEe = "10 POWER X key" -PythonKeyAns = "ANS key" -PythonKeyExe = "EXE key" PythonLdexp = "Return x*(2**i), inverse of frexp" PythonLength = "Length of an object" PythonLgamma = "Log-gamma function" diff --git a/apps/code/catalog.es.i18n b/apps/code/catalog.es.i18n index eaffc09a7..ee27566c8 100644 --- a/apps/code/catalog.es.i18n +++ b/apps/code/catalog.es.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Check if x is infinity" PythonIsKeyDown = "Return True if the k key is down" PythonIsNaN = "Check if x is a NaN" PythonKandinskyFunction = "kandinsky module function prefix" -PythonKeyLeft = "LEFT ARROW key" -PythonKeyUp = "UP ARROW key" -PythonKeyDown = "DOWN ARROW key" -PythonKeyRight = "RIGHT ARROW key" -PythonKeyOk = "OK key" -PythonKeyBack = "BACK key" -PythonKeyHome = "HOME key" -PythonKeyOnOff = "ON/OFF key" -PythonKeyShift = "SHIFT key" -PythonKeyAlpha = "ALPHA key" -PythonKeyXnt = "X,N,T key" -PythonKeyVar = "VAR key" -PythonKeyToolbox = "TOOLBOX key" -PythonKeyBackspace = "BACKSPACE key" -PythonKeyExp = "EXPONENTIAL key" -PythonKeyLn = "NATURAL LOGARITHM key" -PythonKeyLog = "DECIMAL LOGARITHM key" -PythonKeyImaginary = "IMAGINARY I key" -PythonKeyComma = "COMMA key" -PythonKeyPower = "POWER key" -PythonKeySine = "SINE key" -PythonKeyCosine = "COSINE key" -PythonKeyTangent = "TANGENT key" -PythonKeyPi = "PI key" -PythonKeySqrt = "SQUARE ROOT key" -PythonKeySquare = "SQUARE key" -PythonKeySeven = "7 key" -PythonKeyEight = "8 key" -PythonKeyNine = "9 key" -PythonKeyLeftParenthesis = "LEFT PARENTHESIS key" -PythonKeyRightParenthesis = "RIGHT PARENTHESIS key" -PythonKeyFour = "4 key" -PythonKeyFive = "5 key" -PythonKeySix = "6 key" -PythonKeyMultiplication = "MULTIPLICATION key" -PythonKeyDivision = "DIVISION key" -PythonKeyOne = "1 key" -PythonKeyTwo = "2 key" -PythonKeyThree = "3 key" -PythonKeyPlus = "PLUS key" -PythonKeyMinus = "MINUS key" -PythonKeyZero = "0 key" -PythonKeyDot = "DOT key" -PythonKeyEe = "10 POWER X key" -PythonKeyAns = "ANS key" -PythonKeyExe = "EXE key" PythonLdexp = "Return x*(2**i), inverse of frexp" PythonLength = "Length of an object" PythonLgamma = "Log-gamma function" diff --git a/apps/code/catalog.fr.i18n b/apps/code/catalog.fr.i18n index f98473ed8..d1c7c6eec 100644 --- a/apps/code/catalog.fr.i18n +++ b/apps/code/catalog.fr.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Teste si x est infini" PythonIsKeyDown = "Renvoie True si touche k enfoncée" PythonIsNaN = "Teste si x est NaN" PythonKandinskyFunction = "Préfixe fonction module kandinsky" -PythonKeyLeft = "Touche FLECHE GAUCHE" -PythonKeyUp = "Touche FLECHE HAUT" -PythonKeyDown = "Touche FLECHE BAS" -PythonKeyRight = "Touche FLECHE DROITE" -PythonKeyOk = "Touche OK" -PythonKeyBack = "Touche RETOUR" -PythonKeyHome = "Touche HOME" -PythonKeyOnOff = "Touche ON/OFF" -PythonKeyShift = "Touche SHIFT" -PythonKeyAlpha = "Touche ALPHA" -PythonKeyXnt = "Touche X,N,T" -PythonKeyVar = "Touche VAR" -PythonKeyToolbox = "Touche BOITE A OUTILS" -PythonKeyBackspace = "Touche EFFACER" -PythonKeyExp = "Touche EXPONENTIELLE" -PythonKeyLn = "Touche LOGARITHME NEPERIEN" -PythonKeyLog = "Touche LOGARITHME DECIMAL" -PythonKeyImaginary = "Touche I IMAGINAIRE" -PythonKeyComma = "Touche VIRGULE" -PythonKeyPower = "Touche PUISSANCE" -PythonKeySine = "Touche SINUS" -PythonKeyCosine = "Touche COSINUS" -PythonKeyTangent = "Touche TANGENTE" -PythonKeyPi = "Touche PI" -PythonKeySqrt = "Touche RACINE CARREE" -PythonKeySquare = "Touche CARRE" -PythonKeySeven = "Touche 7" -PythonKeyEight = "Touche 8" -PythonKeyNine = "Touche 9" -PythonKeyLeftParenthesis = "Touche PARENTHESE GAUCHE" -PythonKeyRightParenthesis = "Touche PARENTHESE DROITE" -PythonKeyFour = "Touche 4" -PythonKeyFive = "Touche 5" -PythonKeySix = "Touche 6" -PythonKeyMultiplication = "Touche MULTIPLICATION" -PythonKeyDivision = "Touche DIVISION" -PythonKeyOne = "Touche 1" -PythonKeyTwo = "Touche 2" -PythonKeyThree = "Touche 3" -PythonKeyPlus = "Touche PLUS" -PythonKeyMinus = "Touche MOINS" -PythonKeyZero = "Touche 0" -PythonKeyDot = "Touche POINT" -PythonKeyEe = "Touche 10 PUISSANCE X" -PythonKeyAns = "Touche ANS" -PythonKeyExe = "Touche EXE" PythonLdexp = "Inverse de frexp : x*(2**i)" PythonLength = "Longueur d'un objet" PythonLgamma = "Logarithme de la fonction gamma" diff --git a/apps/code/catalog.it.i18n b/apps/code/catalog.it.i18n index 51223cbdc..0a2dbe02b 100644 --- a/apps/code/catalog.it.i18n +++ b/apps/code/catalog.it.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Testa se x est infinito" PythonIsKeyDown = "Restituisce True premendo tasto k" PythonIsNaN = "Testa se x è NaN" PythonKandinskyFunction = "Prefisso funzione modulo kandinsky" -PythonKeyLeft = "Tasto FRECCIA SINISTRA" -PythonKeyUp = "Tasto FRECCIA ALTO" -PythonKeyDown = "Tasto FRECCIA BASSO" -PythonKeyRight = "Tasto FRECCIA DESTRA" -PythonKeyOk = "Tasto OK" -PythonKeyBack = "Tasto INDIETRO" -PythonKeyHome = "Tasto CASA" -PythonKeyOnOff = "Tasto ON/OFF" -PythonKeyShift = "Tasto SHIFT" -PythonKeyAlpha = "Tasto ALPHA" -PythonKeyXnt = "Tasto X,N,T" -PythonKeyVar = "Tasto VAR" -PythonKeyToolbox = "Tasto TOOLBOX" -PythonKeyBackspace = "Tasto CANCELLA" -PythonKeyExp = "Tasto ESPONENZIALE" -PythonKeyLn = "Tasto LOGARITMO NEPERIANO" -PythonKeyLog = "Tasto LOGARITMO DECIMALE" -PythonKeyImaginary = "Tasto I IMMAGINE" -PythonKeyComma = "Tasto VIRGOLA" -PythonKeyPower = "Tasto POTENZA" -PythonKeySine = "Tasto SENO" -PythonKeyCosine = "Tasto COSENO" -PythonKeyTangent = "Tasto TANGENTE" -PythonKeyPi = "Tasto PI" -PythonKeySqrt = "Tasto RADICE QUADRATA" -PythonKeySquare = "Tasto QUADRATO" -PythonKeySeven = "Tasto 7" -PythonKeyEight = "Tasto 8" -PythonKeyNine = "Tasto 9" -PythonKeyLeftParenthesis = "Tasto PARENTESI SINISTRA" -PythonKeyRightParenthesis = "Tasto PARENTESI DESTRA" -PythonKeyFour = "Tasto 4" -PythonKeyFive = "Tasto 5" -PythonKeySix = "Tasto 6" -PythonKeyMultiplication = "Tasto MOLTIPLICAZIONE" -PythonKeyDivision = "Tasto DIVISIONE" -PythonKeyOne = "Tasto 1" -PythonKeyTwo = "Tasto 2" -PythonKeyThree = "Tasto 3" -PythonKeyPlus = "Tasto PIÙ" -PythonKeyMinus = "Tasto MENO" -PythonKeyZero = "Tasto 0" -PythonKeyDot = "Tasto PUNTO" -PythonKeyEe = "Tasto 10 POTENZA X" -PythonKeyAns = "Tasto ANS" -PythonKeyExe = "Tasto EXE" PythonLdexp = "Inversa di frexp : x*(2**i)" PythonLength = "Longhezza di un oggetto" PythonLgamma = "Logaritmo della funzione gamma" diff --git a/apps/code/catalog.nl.i18n b/apps/code/catalog.nl.i18n index 84be69878..894a5f6bf 100644 --- a/apps/code/catalog.nl.i18n +++ b/apps/code/catalog.nl.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Controleer of x oneindig is" PythonIsKeyDown = "Geef True als k toets omlaag is" PythonIsNaN = "Controleer of x geen getal is" PythonKandinskyFunction = "kandinsky module voorvoegsel" -PythonKeyLeft = "PIJL NAAR LINKS toets" -PythonKeyUp = "PIJL OMHOOG toets" -PythonKeyDown = "PIJL OMLAAG toets" -PythonKeyRight = "PIJL NAAR RECHTS toets" -PythonKeyOk = "OK toets" -PythonKeyBack = "TERUG toets" -PythonKeyHome = "HOME toets" -PythonKeyOnOff = "AAN/UIT toets" -PythonKeyShift = "SHIFT toets" -PythonKeyAlpha = "ALPHA toets" -PythonKeyXnt = "X,N,T toets" -PythonKeyVar = "VAR toets" -PythonKeyToolbox = "TOOLBOX toets" -PythonKeyBackspace = "BACKSPACE toets" -PythonKeyExp = "EXPONENTIEEL toets" -PythonKeyLn = "NATUURLIJKE LOGARITME toets" -PythonKeyLog = "BRIGGSE LOGARITME toets" -PythonKeyImaginary = "IMAGINAIRE I toets" -PythonKeyComma = "KOMMA toets" -PythonKeyPower = "MACHT toets" -PythonKeySine = "SINUS toets" -PythonKeyCosine = "COSINUS toets" -PythonKeyTangent = "TANGENS toets" -PythonKeyPi = "PI toets" -PythonKeySqrt = "VIERKANTSWORTEL toets" -PythonKeySquare = "KWADRAAT toets" -PythonKeySeven = "7 toets" -PythonKeyEight = "8 toets" -PythonKeyNine = "9 toets" -PythonKeyLeftParenthesis = "HAAKJE OPENEN toets" -PythonKeyRightParenthesis = "HAAKJE SLUITEN toets" -PythonKeyFour = "4 toets" -PythonKeyFive = "5 toets" -PythonKeySix = "6 toets" -PythonKeyMultiplication = "VERMENIGVULDIGEN toets" -PythonKeyDivision = "DELEN toets" -PythonKeyOne = "1 toets" -PythonKeyTwo = "2 toets" -PythonKeyThree = "3 toets" -PythonKeyPlus = "PLUS toets" -PythonKeyMinus = "MIN toets" -PythonKeyZero = "0 toets" -PythonKeyDot = "PUNT toets" -PythonKeyEe = "10 TOT DE MACHT X toets" -PythonKeyAns = "ANS toets" -PythonKeyExe = "EXE toets" PythonLdexp = "Geeft x*(2**i), inversie van frexp" PythonLength = "Lengte van een object" PythonLgamma = "Log-gammafunctie" diff --git a/apps/code/catalog.pt.i18n b/apps/code/catalog.pt.i18n index 4f50cadaa..58c898b78 100644 --- a/apps/code/catalog.pt.i18n +++ b/apps/code/catalog.pt.i18n @@ -81,52 +81,6 @@ PythonIsInfinite = "Verificar se x é infinito" PythonIsKeyDown = "Devolve True se tecla k pressionada" PythonIsNaN = "Verificar se x é um NaN" PythonKandinskyFunction = "Prefixo da função do módulo kandinsky" -PythonKeyLeft = "tecla SETA ESQUERDA" -PythonKeyUp = "tecla SETA CIMA " -PythonKeyDown = "tecla SETA BAIXO" -PythonKeyRight = "tecla SETA DIREITA" -PythonKeyOk = "tecla OK" -PythonKeyBack = "tecla VOLTAR" -PythonKeyHome = "tecla HOME" -PythonKeyOnOff = "tecla ON/OFF" -PythonKeyShift = "tecla SHIFT" -PythonKeyAlpha = "tecla ALPHA" -PythonKeyXnt = "tecla X,N,T" -PythonKeyVar = "tecla VAR" -PythonKeyToolbox = "tecla CAIXA DE FERRAMENTAS" -PythonKeyBackspace = "tecla APAGAR" -PythonKeyExp = "tecla EXPONENCIAL" -PythonKeyLn = "tecla LOGARITMO NATURAL" -PythonKeyLog = "tecla LOGARITMO DECIMAL" -PythonKeyImaginary = "tecla I IMAGINÁRIO" -PythonKeyComma = "tecla VÍRGULA" -PythonKeyPower = "tecla EXPOENTE" -PythonKeySine = "tecla SENO" -PythonKeyCosine = "tecla COSSENO" -PythonKeyTangent = "tecla TANGENTE" -PythonKeyPi = "tecla PI" -PythonKeySqrt = "tecla RAIZ QUADRADA" -PythonKeySquare = "tecla AO QUADRADO" -PythonKeySeven = "tecla 7" -PythonKeyEight = "tecla 8" -PythonKeyNine = "tecla 9" -PythonKeyLeftParenthesis = "tecla PARÊNTESE ESQUERDO" -PythonKeyRightParenthesis = "tecla PARÊNTESE DIREITO" -PythonKeyFour = "tecla 4" -PythonKeyFive = "tecla 5" -PythonKeySix = "tecla 6" -PythonKeyMultiplication = "tecla MULTIPLICAÇÃO" -PythonKeyDivision = "tecla DIVISÃO" -PythonKeyOne = "tecla 1" -PythonKeyTwo = "tecla 2" -PythonKeyThree = "tecla 3" -PythonKeyPlus = "tecla MAIS" -PythonKeyMinus = "tecla MENOS" -PythonKeyZero = "tecla 0" -PythonKeyDot = "tecla PONTO" -PythonKeyEe = "tecla 10 expoente X" -PythonKeyAns = "tecla ANS" -PythonKeyExe = "tecla EXE" PythonLdexp = "Devolve x*(2**i), inverso de frexp" PythonLength = "Comprimento de um objeto" PythonLgamma = "Logaritmo da função gama" diff --git a/apps/code/python_toolbox.cpp b/apps/code/python_toolbox.cpp index bcc0bef7b..984bfaa18 100644 --- a/apps/code/python_toolbox.cpp +++ b/apps/code/python_toolbox.cpp @@ -5,6 +5,7 @@ extern "C" { #include #include } +#include "app.h" namespace Code { @@ -200,52 +201,7 @@ const ToolboxMessageTree IonModuleChildren[] = { ToolboxMessageTree::Leaf(I18n::Message::PythonCommandImportFromIon, I18n::Message::PythonImportIon, false), ToolboxMessageTree::Leaf(I18n::Message::PythonCommandIonFunction, I18n::Message::PythonIonFunction, false, I18n::Message::PythonCommandIonFunctionWithoutArg), ToolboxMessageTree::Leaf(I18n::Message::PythonCommandIsKeyDown, I18n::Message::PythonIsKeyDown), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyLeft, I18n::Message::PythonKeyLeft, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyUp, I18n::Message::PythonKeyUp, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyDown, I18n::Message::PythonKeyDown, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyRight, I18n::Message::PythonKeyRight, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyOk, I18n::Message::PythonKeyOk, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyBack, I18n::Message::PythonKeyBack, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyHome, I18n::Message::PythonKeyHome, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyOnOff, I18n::Message::PythonKeyOnOff, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyShift, I18n::Message::PythonKeyShift, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyAlpha, I18n::Message::PythonKeyAlpha, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyXnt, I18n::Message::PythonKeyXnt, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyVar, I18n::Message::PythonKeyVar, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyToolbox, I18n::Message::PythonKeyToolbox, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyBackspace, I18n::Message::PythonKeyBackspace, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyExp, I18n::Message::PythonKeyExp, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyLn, I18n::Message::PythonKeyLn, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyLog, I18n::Message::PythonKeyLog, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyImaginary, I18n::Message::PythonKeyImaginary, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyComma, I18n::Message::PythonKeyComma, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyPower, I18n::Message::PythonKeyPower, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeySine, I18n::Message::PythonKeySine, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyCosine, I18n::Message::PythonKeyCosine, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyTangent, I18n::Message::PythonKeyTangent, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyPi, I18n::Message::PythonKeyPi, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeySqrt, I18n::Message::PythonKeySqrt, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeySquare, I18n::Message::PythonKeySquare, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeySeven, I18n::Message::PythonKeySeven, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyEight, I18n::Message::PythonKeyEight, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyNine, I18n::Message::PythonKeyNine, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyLeftParenthesis, I18n::Message::PythonKeyLeftParenthesis, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyRightParenthesis, I18n::Message::PythonKeyRightParenthesis, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyFour, I18n::Message::PythonKeyFour, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyFive, I18n::Message::PythonKeyFive, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeySix, I18n::Message::PythonKeySix, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyMultiplication, I18n::Message::PythonKeyMultiplication, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyDivision, I18n::Message::PythonKeyDivision, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyOne, I18n::Message::PythonKeyOne, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyTwo, I18n::Message::PythonKeyTwo, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyThree, I18n::Message::PythonKeyThree, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyPlus, I18n::Message::PythonKeyPlus, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyMinus, I18n::Message::PythonKeyMinus, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyZero, I18n::Message::PythonKeyZero, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyDot, I18n::Message::PythonKeyDot, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyEe, I18n::Message::PythonKeyEe, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyAns, I18n::Message::PythonKeyAns, false), - ToolboxMessageTree::Leaf(I18n::Message::PythonCommandKeyExe, I18n::Message::PythonKeyExe, false) + ToolboxMessageTree::Leaf(I18n::Message::IonSelector, I18n::Message::IonSelector) }; const ToolboxMessageTree TimeModuleChildren[] = { @@ -498,6 +454,11 @@ KDCoordinate PythonToolbox::rowHeight(int j) { bool PythonToolbox::selectLeaf(int selectedRow) { m_selectableTableView.deselectTable(); ToolboxMessageTree * node = (ToolboxMessageTree *)m_messageTreeModel->childAtIndex(selectedRow); + if(node->insertedText() == I18n::Message::IonSelector){ + App::app()->toolboxIonKeys()->setSender(sender()); + Container::activeApp()->displayModalViewController(static_cast(App::app()->toolboxIonKeys()), 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, 0, Metric::PopUpRightMargin); + return true; + } const char * editedText = I18n::translate(node->insertedText()); // strippedEditedText array needs to be in the same scope as editedText char strippedEditedText[k_maxMessageSize]; diff --git a/apps/code/toolbox.universal.i18n b/apps/code/toolbox.universal.i18n index 5a5072475..d1048eff9 100644 --- a/apps/code/toolbox.universal.i18n +++ b/apps/code/toolbox.universal.i18n @@ -48,3 +48,5 @@ PythonCommandDef = "def \x11():\n " PythonCommandDefWithArg = "def function(x):" PythonCommandReturn = "return " RandomModule = "random" +IonSelector = "Key selector" +PressAKey = "Press a key" diff --git a/apps/code/toolbox_ion_keys.cpp b/apps/code/toolbox_ion_keys.cpp new file mode 100644 index 000000000..b3e67f63f --- /dev/null +++ b/apps/code/toolbox_ion_keys.cpp @@ -0,0 +1,50 @@ +#include "toolbox_ion_keys.h" +#include +#include +#include +extern "C" { +#include +#include +} +extern const mp_rom_map_elem_t modion_module_globals_table[48]; + +namespace Code { + toolboxIonKeys::toolboxIonKeys() : + ViewController(nullptr), + m_view() + { + } + + bool toolboxIonKeys::handleEvent(Ion::Events::Event e) { + Ion::Keyboard::State state = Ion::Keyboard::scan(); + for(uint16_t i = 0; i < sizeof(modion_module_globals_table)/sizeof(_mp_rom_map_elem_t); i++){ + _mp_rom_map_elem_t element = modion_module_globals_table[i]; + if(mp_obj_is_small_int(element.value)){ + int key = mp_obj_get_int(element.value); + if(state.keyDown(static_cast(key))){ + m_sender->handleEventWithText(qstr_str(MP_OBJ_QSTR_VALUE(element.key)), true); + } + } + } + Container::activeApp()->dismissModalViewController(); + AppsContainer::sharedAppsContainer()->redrawWindow(); + return true; + } + + toolboxIonKeys::toolboxIonView::toolboxIonView(): + View() + { + } + + void toolboxIonKeys::toolboxIonView::drawRect(KDContext * ctx, KDRect rect) const { + ctx->fillRect(rect, Palette::GrayBright); + ctx->strokeRect(rect, Palette::GrayDark); + ctx->drawString(I18n::translate(I18n::Message::PressAKey),KDPoint(rect.left()+80, rect.top()+20)); + + } + + View * toolboxIonKeys::view(){ + return &m_view; + } + +} diff --git a/apps/code/toolbox_ion_keys.h b/apps/code/toolbox_ion_keys.h new file mode 100644 index 000000000..4efe2036d --- /dev/null +++ b/apps/code/toolbox_ion_keys.h @@ -0,0 +1,21 @@ +#include + +namespace Code { + + class toolboxIonKeys : public ViewController { + public : + toolboxIonKeys(); + View * view() override; + bool handleEvent(Ion::Events::Event e) override; + void setSender(InputEventHandler * sender) { m_sender = sender; } + private : + class toolboxIonView : public View { + public : + toolboxIonView(); + void drawRect(KDContext * ctx, KDRect rect) const override; + }; + toolboxIonView m_view; + InputEventHandler * m_sender; + }; + +} diff --git a/python/port/mod/ion/modion_table.cpp b/python/port/mod/ion/modion_table.cpp index aed204c1f..18c12c54e 100644 --- a/python/port/mod/ion/modion_table.cpp +++ b/python/port/mod/ion/modion_table.cpp @@ -16,7 +16,7 @@ const mp_obj_fun_builtin_fixed_t modion_keyboard_keydown_obj = { {(mp_fun_0_t)modion_keyboard_keydown} }; -STATIC const mp_rom_map_elem_t modion_module_globals_table[] = { +extern "C" const mp_rom_map_elem_t modion_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ion) }, { MP_ROM_QSTR(MP_QSTR_keydown), MP_ROM_PTR(&modion_keyboard_keydown_obj) }, { MP_ROM_QSTR(MP_QSTR_KEY_LEFT), MP_OBJ_NEW_SMALL_INT(Ion::Keyboard::Key::Left) },