En effet, n'ont été créés que les 2 fichiers utiles au fonctionnement de Blockly : le créateur du bloc et le générateur de code. Mais Blockly@rduino ne sait toujours pas que ces fichiers existent et qu'il faut les utiliser, voici dnc comment terminer la procédure.

Il faut éditer les 2 fichiers '\blocks\arduino_resume.js' (qui contient la liste de toutes les définitions de blocs dans lesquelles piocher pour les construire) ET '\generators\arduino_resume.js' (qui contient la liste de toutes les traductions des blocs en langage Arduino dans lesquelles piocher pour les traduire).

Respectons un peu d'ordre, il suffit de copier une ligne existante et de changer le dossier ET le nom du fichier :

  • tout d'abord les définitions du bloc '\blocks\arduino_resume.js', autant les mettre par ordre alphabétique du nom de dossier(qui est identique au nom du fichier javascript) :

  • ensuite faire de même dans la liste '\generators\arduino_resume.js' des générateurs de code :

Il ne reste plus qu'à rafraîchir la page de Blockly@rduino et admirer le travail !!!

Bon, ben là, il ne se passe toujours rien…si tout est normal c'est déjà que vous n'avez pas rajouté d'erreur…

Il sait qu'il doit examiner ces contenus, mais il les affiche quand ? A quel endroit dans le menu ? Ah mais oui, nom de Zeus la toolbox !!!

La 'toolbox' est le nom donné par Blockly pour les menus, les différents fichiers sont enregistrés dans le dossier '\toolbox\' :

Libre à vous de créer d'autres toolbox en n'oubliant pas de modifier index.html :

Bref ouvrons donc la ou les toolbox à modifier et rajoutons les lignes correspondantes en s'inspirant de ce qui existe déjà :

C'est facile à décrypter :

  • je ne vous explique pas la différence entre category et block
  • je mets en nom de catégorie un variable CAT_FLYCAMONE
  • je rajoute un appel à chacun des 3 blocs que j'ai créés en utilisant le même nom que le nom de la fonction ! block type=“flycam_switch” <→ Blockly.Blocks.flycam_switch
  • colour = la même valeur que celle qui définit graphiquement les blocs
  • l'entrée 'shadow' permet de pré-remplir l'entrée dont le nom de variable est PIN avec un bloc 'fantôme', à tester pour comprendre vite

Dans mon exemple j'ai choisi de le disposer avant la catégorie 'CAT_BQ'. Ce n'est pas le nom qui apparaît…

Comme nous n'avons utilisé que des variables, les textes portent pour l'instant le nom de la variable et non pas son contenu ! Là c'est très facile car il suffit de porter les équivalences dans les fichiers de langue ad-hoc dans le dossier '\lang\blocks\'(merci de compléter au moins le english en plus) :

  • dans fr.js on va retrouver :
    • le nom de la catégorie avec les autres (merci de les laisser par ordre alphabétique) :
    • la définition de chaque variable pour lesquels on veut voir du texte apparaître dans le bloc :
  • dans le fichier en.js, à peu près aux mêmes endroits vous rajoutez la version anglaise :

TRUC & ASTUCE: comme il s'agit de variables, par aspect pratique, j'ai fait des équivalences de variables : Blockly.Msg.FLYCAM_STOP_INPUT = Blockly.Msg.FLYCAM_SWITCH_INPUT; car la variable Blockly.Msg.FLYCAM_SWITCH_INPUT est définie juste au-dessus. Car le système lit les informations dans l'ordre des lignes !

Ca y est !!! A vous la gloire d'avoir contribué à ce magnifique projet !!!

Et la joie de debugger si comme moi vous faites régulièrement des fautes de frappe, d'oubli de points virgule ; , etc…

En effet, en programmation héritée des langages C, il est indispensable de définir la nature des objets, donc le type des variables. Grâce à l'excellent script du créateur d'Ardublockly (et pas Ardublock), tous les types sont recensés dans le fichier '\core_Ardublockly\static_typing.js' :

Donc il va aussi falloir expliquer à Blockly@rduino de quelle nature/type (en référence aux noms dans le fichier ci-dessus) est chaque bloc créé :

Blockly.Types.CHARACTER            // Single character
Blockly.Types.TEXT                  // General text string type
Blockly.Types.BOOLEAN               // Can only have two values, generally 0 for false, or 1 for true
Blockly.Types.NUMBER                // A general number type
Blockly.Types.VOLATIL_NUMBER        // Volatil specific for interruption
Blockly.Types.SHORT_NUMBER          // Short integer number
Blockly.Types.LARGE_NUMBER          // Number in a large range
Blockly.Types.DECIMAL               // Number type for numbers with a fractional part
Blockly.Types.ARRAY                 // Array of any type of items
Blockly.Types.NULL                  // Used as a "no type" wild card natively
Blockly.Types.UNDEF                 // Can be used to delegate type assignment
Blockly.Types.CHILD_BLOCK_MISSING   // Set when no child block (meant to define the variable type) is connected

Créez pour mon exemple le fichier 'blocksflycamone-eco-v2blocks_typing.js' et rajoutez les lignes ad-hoc en bas :

Cela permet de typer automatiquement les variables en fonction des blocs en entrée :

Puis finir en recensant ce nouveau fichier de typages dans le fichier centralisateur 'blocksblocks_typing.js'

Il ne vous reste plus qu'à envoyer un petit mail à scanet@libreduc.cc pour un petit merci, un petit coucou et surtout contribuer en proposant de rajouter à cette aventure collective vos travaux !

  • fr/arduino/blockly_rduino/creerblocsmultiling/blocdefext.txt
  • Dernière modification: 2018/12/29 16:50
  • (modification externe)