CustomUi : Customiser l'Interface Utilisateur. By Max Smirnov
Post Original : 9 Janvier 2018
Remplacer la "CustomBar.html" et mettre le reste dans \AppData\Roaming\Moi\ |
Pour la version Beta V 4 (à partir de la 12 dec 2017)
Il peut être utile de mettre la CustomBar originale à l'abri! |
Pour une interface à thème sombre voir Cody!
Fabriquée à partir de l'interface utilisateur de Max Smirnov! Ci-contre l'Interface à thème Sombre de Cody
|
Post Original pour la V 3.0
Version pour PC et MAC
CustomUi.1.03.Win.Mac.zip
CustomUi.1.03.Win.Mac.zip
En l'utilisant, vous pouvez ajouter des boutons et des menus personnalisés pour La barre de Commande.
Avantages de CustomUI :
1 . CustomUI ajoute une seule ligne dans le fichier CommandBar.htm
2 . Structure de module flexible
3 . Tous les fichiers de CustomUI entreposés séparément des fichiers MoI. ( en d'autres termes, vous pouvez le supprimer en une seconde !
Installation :
- Sauvegarder le fichier .../ ui / CommandBar.htm (le renommer par exemple en CommandBar.htm_original )
- Extraire les archives de CustomUI dans le répertoire MoI/ ui /...
- Exécuter moi.exe
Description des fichiers :
"objects" - répertoire de la bibliothèque d'objets ( contient des objets de démonstration ) .
"SnapShots" - répertoire où sont stockés les Snapshot (capture d'écran)
.../ ui / CommandBar.htm - remplace le fichier d'origine CommandBar.htm
.../ ui / EmptyStrings.txt - fichier de langue vide ( l'addon Snapshot utilise ce fichier pour activer / désactiver une étiquette de la fenêtre d'affichage ( Front/Left/3D etc...)
.../ ui/customui/-05 Select.htm ..... modules boutons / Menus - / ui/customui/88 LightingPresets.htm
... / ui / customUI / CustomInit.js - le script d'initialisation de CustomUI -
.../ ui / customUI / mods / - répertoire de scripts / configs / - données des menus supplémentaires .. etc
Utilisation:
Allez dans le répertoire / de customUI et sélectionner les modules que vous souhaitez utiliser. Pour désactiver le module, il suffit de mettre symbole "-" au début du nom du fichier ( la plupart des modules sont déjà désactivés) .
-45 History.htm - bouton d'Historique désactivé
45 history.htm - bouton Historique activé
Vous pouvez modifier l'ordre des boutons en éditant un nombre à deux chiffres dans les noms de fichiers.
00 - sera le premiers, 99 - le dernier.
Note: J'utilise l'encodage base64 pour stocker des icônes directement dans le fichier htm comme lors de la création d'un fichier PNG.
Presque tous les modules exécutent les commandes intégrées de MoI ( copier, coller , masquer, verrouiller ...)
Mais j'ai écrit quatre extensions pour montrer la réelle puissance de ce système.
ObjLibrary
---------------
Avec cette extension, vous pouvez ajouter un objet à des bibliothèques d'objets.
Sélectionnez l'objet(s). Ouvrez le menu Bibliothèque. Cliquez sur le nom Library ( le symbole "+" apparaît).
Entrez le nom de l'objet. Tous les objets sélectionnés seront ajoutés comme objet de bibliothèque unique.
Si aucun objet n'est sélectionné, tous les objets seront enregistrés dans la bibliothèque comme objet unique.
Pour importer un objet : Open Library, clic gauche - objet d'importation ( commande d'importation de l'objet).
Faites un clic droit - import rapide ( commande d'importation ).
Utilisez le bouton central de la souris pour renommer l'objet.
Laissez le champ de nom vide et appuyez sur OK pour supprimer l'objet.
Vous pouvez utiliser n'importe quel répertoire de bibliothèque. Modifier \ customUI \ mods \ ObjLibrary.cfg.htm avec le bloc-notes pour ajouter / supprimer des bibliothèques.
ObjLibrary.cfg.htm est un fichier texte avec des valeurs séparées par des virgules.
Nom de la bibliothèque, le chemin complet vers le répertoire ( le symbole ";" est également accepté )
* Vous pouvez utiliser l'abréviation MOI au lieu du chemin complet pour pointer vers le répertoire du programme MOI. (MOI en majuscules! )
Exemples:
Les objets locaux : MOI\objects
Dropbox : C:\Users\DropboxUser\Dropbox\MoI library
Astuce: Pour obtenir le chemin complet d'un dossier sous Windows, maintenez la touche Maj, clic droit et sélectionnez "Copier en tant que chemin d'accès"
Il est recommandé de mettre les dossiers Objects et SnapShots en dehors du Répertoire Moi!
Il faut donc modifier en conséquence par exemple le fichier ...\ui\customui\mods\ObjLibrary.cfg.htm
La ligne 1: Object Library;MOI\objects devient Object Library;C:\Users\votre_nom\Desktop\objects
si vos dossiers se trouvent sur le bureau!
Cerise sur le gâteau vous pouvez mettre autant de Bibliothèques (noms indifférents) que vous voulez donc autant de lignes dans le même fichier ObjLibrary.cfg.htm ! Par exemple il suffit d'ajouter ces 3 lignes
Nom de la Biblio1;C:\Users\votre_nom\Desktop\Pif\objects (Nom de la Biblio1 peut être différent de Pif)
Nom de la Biblio 2;C:\Users\votre_nom\Desktop\Paf\objects (Biblio 2 : Espaces acceptés)
Nom de la Biblio3;C:\Users\votre_nom\Desktop\Pof\objects... si vos dossiers se trouvent sur le bureau!
etc...ou n'importe quels chemins dans le fichier ObjLibrary.cfg.htm si vos dossiers sont ailleurs!
Et pour le dossier Snapshots la ligne 27 du dossier .../ui/customui/84 SnapShot.htm
var Path = moi.command.getOption('ExePath', false) + "\\snapshots\\";
devient (attention au double \\ )
var Path = "C:\\Users\\votre_nom\\Desktop\\snapshots\\";
Avantages de CustomUI :
1 . CustomUI ajoute une seule ligne dans le fichier CommandBar.htm
2 . Structure de module flexible
3 . Tous les fichiers de CustomUI entreposés séparément des fichiers MoI. ( en d'autres termes, vous pouvez le supprimer en une seconde !
Installation :
- Sauvegarder le fichier .../ ui / CommandBar.htm (le renommer par exemple en CommandBar.htm_original )
- Extraire les archives de CustomUI dans le répertoire MoI/ ui /...
- Exécuter moi.exe
Description des fichiers :
"objects" - répertoire de la bibliothèque d'objets ( contient des objets de démonstration ) .
"SnapShots" - répertoire où sont stockés les Snapshot (capture d'écran)
.../ ui / CommandBar.htm - remplace le fichier d'origine CommandBar.htm
.../ ui / EmptyStrings.txt - fichier de langue vide ( l'addon Snapshot utilise ce fichier pour activer / désactiver une étiquette de la fenêtre d'affichage ( Front/Left/3D etc...)
.../ ui/customui/-05 Select.htm ..... modules boutons / Menus - / ui/customui/88 LightingPresets.htm
... / ui / customUI / CustomInit.js - le script d'initialisation de CustomUI -
.../ ui / customUI / mods / - répertoire de scripts / configs / - données des menus supplémentaires .. etc
Utilisation:
Allez dans le répertoire / de customUI et sélectionner les modules que vous souhaitez utiliser. Pour désactiver le module, il suffit de mettre symbole "-" au début du nom du fichier ( la plupart des modules sont déjà désactivés) .
-45 History.htm - bouton d'Historique désactivé
45 history.htm - bouton Historique activé
Vous pouvez modifier l'ordre des boutons en éditant un nombre à deux chiffres dans les noms de fichiers.
00 - sera le premiers, 99 - le dernier.
Note: J'utilise l'encodage base64 pour stocker des icônes directement dans le fichier htm comme lors de la création d'un fichier PNG.
Presque tous les modules exécutent les commandes intégrées de MoI ( copier, coller , masquer, verrouiller ...)
Mais j'ai écrit quatre extensions pour montrer la réelle puissance de ce système.
ObjLibrary
---------------
Avec cette extension, vous pouvez ajouter un objet à des bibliothèques d'objets.
Sélectionnez l'objet(s). Ouvrez le menu Bibliothèque. Cliquez sur le nom Library ( le symbole "+" apparaît).
Entrez le nom de l'objet. Tous les objets sélectionnés seront ajoutés comme objet de bibliothèque unique.
Si aucun objet n'est sélectionné, tous les objets seront enregistrés dans la bibliothèque comme objet unique.
Pour importer un objet : Open Library, clic gauche - objet d'importation ( commande d'importation de l'objet).
Faites un clic droit - import rapide ( commande d'importation ).
Utilisez le bouton central de la souris pour renommer l'objet.
Laissez le champ de nom vide et appuyez sur OK pour supprimer l'objet.
Vous pouvez utiliser n'importe quel répertoire de bibliothèque. Modifier \ customUI \ mods \ ObjLibrary.cfg.htm avec le bloc-notes pour ajouter / supprimer des bibliothèques.
ObjLibrary.cfg.htm est un fichier texte avec des valeurs séparées par des virgules.
Nom de la bibliothèque, le chemin complet vers le répertoire ( le symbole ";" est également accepté )
* Vous pouvez utiliser l'abréviation MOI au lieu du chemin complet pour pointer vers le répertoire du programme MOI. (MOI en majuscules! )
Exemples:
Les objets locaux : MOI\objects
Dropbox : C:\Users\DropboxUser\Dropbox\MoI library
Astuce: Pour obtenir le chemin complet d'un dossier sous Windows, maintenez la touche Maj, clic droit et sélectionnez "Copier en tant que chemin d'accès"
Il est recommandé de mettre les dossiers Objects et SnapShots en dehors du Répertoire Moi!
Il faut donc modifier en conséquence par exemple le fichier ...\ui\customui\mods\ObjLibrary.cfg.htm
La ligne 1: Object Library;MOI\objects devient Object Library;C:\Users\votre_nom\Desktop\objects
si vos dossiers se trouvent sur le bureau!
Cerise sur le gâteau vous pouvez mettre autant de Bibliothèques (noms indifférents) que vous voulez donc autant de lignes dans le même fichier ObjLibrary.cfg.htm ! Par exemple il suffit d'ajouter ces 3 lignes
Nom de la Biblio1;C:\Users\votre_nom\Desktop\Pif\objects (Nom de la Biblio1 peut être différent de Pif)
Nom de la Biblio 2;C:\Users\votre_nom\Desktop\Paf\objects (Biblio 2 : Espaces acceptés)
Nom de la Biblio3;C:\Users\votre_nom\Desktop\Pof\objects... si vos dossiers se trouvent sur le bureau!
etc...ou n'importe quels chemins dans le fichier ObjLibrary.cfg.htm si vos dossiers sont ailleurs!
Et pour le dossier Snapshots la ligne 27 du dossier .../ui/customui/84 SnapShot.htm
var Path = moi.command.getOption('ExePath', false) + "\\snapshots\\";
devient (attention au double \\ )
var Path = "C:\\Users\\votre_nom\\Desktop\\snapshots\\";
ExtScripts
--------------
Cet addon génère dynamiquement la liste de tous les scripts externes. En outre, il ajoute à la liste quelques commandes "cachées" de Moi. (n°80 de la liste par défaut)
Il y a une autre version de cet addon - ExtScriptsFull . Il fonctionne exactement comme ExtScripts, mais il charge toutes les commandes de Moi. (N°81 de la liste par défaut)
Il faut donc mettre un - devant celui que l'on ne veut pas utiliser!
-80 ExtScripts par exemple et 81 ExtScriptsFull désactive le plug principal et va montrer toutes les commandes externes et internes et cachées!
Vous pouvez ouvrir ExtScripts.menu.htm ( ExtScriptsFull.menu.htm ) avec le Bloc-notes et modifier la valeur de "maxlines" (par défaut 50 ) pour modifier le nombre maximum de lignes.
Remarque: Comme vous l'avez remarqué ( ou peut-être pas ) , j'utilise toujours symbole "_" au début de mes noms de scripts. L'utilisation de cette astuce permet de trouver et gérer facilement les scripts externes dans le répertoire / commands .
ExtScripts supprime automatiquement le symbole "_" , donc " _vClone script" sera affiché comme "vClone".
Snapshots (copy d'écran instantanée)
-------------
Avec cette extension, vous pouvez faire un instantané de la dernière fenêtre cliquée.
La résolution est fixe : 1600x1200
Clic Gauche - grille est visible
Faites un clic Droit - la grille est caché
Maj + Clic = résolution x 2
Ctrl + Maj + Clic = résolution x 3
Les Snapshots seront enregistrés dans le répertoire "snapshots" .
Il y a un petit bug avec le Snapshot, on n'a plus les icônes Pan Mvt Zoom...
il suffit de changer de langue et de revenir au bon fançais!
LightingPresets Eclairages prédéfinis (intégré maintenant dans le menu Options)
---------------------
Cet addon peut être utilisé uniquement avec le plugin d'options d'éclairage ( par Dinos ). Grand plug-in!
Merci Dinos!
(mettre les fichiers dézippés LightingOptions et .DS_Store dans le dossier ui (renommer l'ancien en LightingOptions_temp par exemple)
Utilisez les options d'éclairage du menu Option pour créer un éclairage prédéfini. Après cela, vous pouvez effectuer un préréglage à la volée en utilisant cet addon par l'icône ampoule du bas.
--------------
Cet addon génère dynamiquement la liste de tous les scripts externes. En outre, il ajoute à la liste quelques commandes "cachées" de Moi. (n°80 de la liste par défaut)
Il y a une autre version de cet addon - ExtScriptsFull . Il fonctionne exactement comme ExtScripts, mais il charge toutes les commandes de Moi. (N°81 de la liste par défaut)
Il faut donc mettre un - devant celui que l'on ne veut pas utiliser!
-80 ExtScripts par exemple et 81 ExtScriptsFull désactive le plug principal et va montrer toutes les commandes externes et internes et cachées!
Vous pouvez ouvrir ExtScripts.menu.htm ( ExtScriptsFull.menu.htm ) avec le Bloc-notes et modifier la valeur de "maxlines" (par défaut 50 ) pour modifier le nombre maximum de lignes.
Remarque: Comme vous l'avez remarqué ( ou peut-être pas ) , j'utilise toujours symbole "_" au début de mes noms de scripts. L'utilisation de cette astuce permet de trouver et gérer facilement les scripts externes dans le répertoire / commands .
ExtScripts supprime automatiquement le symbole "_" , donc " _vClone script" sera affiché comme "vClone".
Snapshots (copy d'écran instantanée)
-------------
Avec cette extension, vous pouvez faire un instantané de la dernière fenêtre cliquée.
La résolution est fixe : 1600x1200
Clic Gauche - grille est visible
Faites un clic Droit - la grille est caché
Maj + Clic = résolution x 2
Ctrl + Maj + Clic = résolution x 3
Les Snapshots seront enregistrés dans le répertoire "snapshots" .
Il y a un petit bug avec le Snapshot, on n'a plus les icônes Pan Mvt Zoom...
il suffit de changer de langue et de revenir au bon fançais!
LightingPresets Eclairages prédéfinis (intégré maintenant dans le menu Options)
---------------------
Cet addon peut être utilisé uniquement avec le plugin d'options d'éclairage ( par Dinos ). Grand plug-in!
Merci Dinos!
(mettre les fichiers dézippés LightingOptions et .DS_Store dans le dossier ui (renommer l'ancien en LightingOptions_temp par exemple)
Utilisez les options d'éclairage du menu Option pour créer un éclairage prédéfini. Après cela, vous pouvez effectuer un préréglage à la volée en utilisant cet addon par l'icône ampoule du bas.
Si vous vouliez rajouter une bouton personnel dans la Barre de Commande pour la Commande LineWeb par exemple.
Dessinez votre icône et sauvegardez l'image sous forme de texte en base64 grâce à ce site.
Créez un fichier "60 LineWeb.htm" dans le dossier customui avec ces 2 lignes!
<moi:Spacer/>
<moi:CommandButton icon="data:image/png;base64, ...ici le texte base64 de votre image..." command="LineWeb">LineWeb</moi:CommandButton>
Pour un Script il aurait fallu employer
onbuttonclick="contenu du script">texte de l'icône</moi:CommandButton>
Par exemple avec le script de Sélection Fermée script:/*Loop selection*/moi.geometryDatabase.selectLoop();
on aurait à la place de command="...
onbuttonclick="moi.geometryDatabase.selectLoop();">texte de l'icône</moi:CommandButton>
Ici l'icône a un fond blanc car l'image en PNG n'a pas été sauvegardée avec un fond transparent!
Dessinez votre icône et sauvegardez l'image sous forme de texte en base64 grâce à ce site.
Créez un fichier "60 LineWeb.htm" dans le dossier customui avec ces 2 lignes!
<moi:Spacer/>
<moi:CommandButton icon="data:image/png;base64, ...ici le texte base64 de votre image..." command="LineWeb">LineWeb</moi:CommandButton>
Pour un Script il aurait fallu employer
onbuttonclick="contenu du script">texte de l'icône</moi:CommandButton>
Par exemple avec le script de Sélection Fermée script:/*Loop selection*/moi.geometryDatabase.selectLoop();
on aurait à la place de command="...
onbuttonclick="moi.geometryDatabase.selectLoop();">texte de l'icône</moi:CommandButton>
Ici l'icône a un fond blanc car l'image en PNG n'a pas été sauvegardée avec un fond transparent!
Une autre méthode car celle du dessus ne semble plus être valide! Avec la Commande Cercle par exemple!
Ces 4 lignes terminée par un ";". On récupère l'Icône dans le dossier icons...
var html='<moi:Spacer/>';
var title = "Cercle";
html += '<moi:Spacer/><moi:CommandButton icon="moi://ui/icons/CircleSetIcon.png" Command="Circle"> '+title+' </moi:CommandButton>';
moi.ui.commandBar.CommandBarCustomUI.insertAdjacentHTML( "beforeEnd", html);
Les copier dans un éditeur de texte et sauvegarder sous Circle.js et le mettre dans
"C:\Users\user\AppData\Roaming\Moi\startup\Circle.js"
On pourra lui donner un N° d'ordre dans le nom du fichier pour le positionner dans la liste!
60 circle.js par exemple
Ces 4 lignes terminée par un ";". On récupère l'Icône dans le dossier icons...
var html='<moi:Spacer/>';
var title = "Cercle";
html += '<moi:Spacer/><moi:CommandButton icon="moi://ui/icons/CircleSetIcon.png" Command="Circle"> '+title+' </moi:CommandButton>';
moi.ui.commandBar.CommandBarCustomUI.insertAdjacentHTML( "beforeEnd", html);
Les copier dans un éditeur de texte et sauvegarder sous Circle.js et le mettre dans
"C:\Users\user\AppData\Roaming\Moi\startup\Circle.js"
On pourra lui donner un N° d'ordre dans le nom du fichier pour le positionner dans la liste!
60 circle.js par exemple
PS Et on peut aussi faire accepter tous les Scripts "une ligne" des raccourcis sous une seule icône!
Il suffit de faire un fichier "js" pour chacun avec n'importe quel éditeur de texte et de le sauvegarder dans le dossier commands!
C'est le nom de sauvegarde de ce fichier qui sera donc la commande du script!
Il sera lu et interprété comme tel par les scripts de Max vus au-dessus et apparaitront donc dans la liste!
En faire un raccourci est donc facultatif!
Par exemple "Styles100Degrades.js" (pas d'accent pour éviter les conflits) contient ce texte:
script: /* Faire un dégradé de 100 teintes */ var red = 12, green = 15, blue = 20; for ( var i = 1; i <= 100; ++i ) { var style = moi.geometryDatabase.addStyle(); style.name = 'Gradient ' + i; style.color = ((red%256)<<16) | ((green%256)<<8) | (blue%256); red += 2; green += 3; blue += 7; }
Il apparaîtra dans la liste des commandes de Max Smirnov comme Styles100Degrades!
Il suffit de faire un fichier "js" pour chacun avec n'importe quel éditeur de texte et de le sauvegarder dans le dossier commands!
C'est le nom de sauvegarde de ce fichier qui sera donc la commande du script!
Il sera lu et interprété comme tel par les scripts de Max vus au-dessus et apparaitront donc dans la liste!
En faire un raccourci est donc facultatif!
Par exemple "Styles100Degrades.js" (pas d'accent pour éviter les conflits) contient ce texte:
script: /* Faire un dégradé de 100 teintes */ var red = 12, green = 15, blue = 20; for ( var i = 1; i <= 100; ++i ) { var style = moi.geometryDatabase.addStyle(); style.name = 'Gradient ' + i; style.color = ((red%256)<<16) | ((green%256)<<8) | (blue%256); red += 2; green += 3; blue += 7; }
Il apparaîtra dans la liste des commandes de Max Smirnov comme Styles100Degrades!
Une utilisation possible avec le Kitbash de Chipp Walters! :)
La palette complète! Les noms d'images et de fichiersdoivent exactement le même nom!
On peut mixer capitales et minuscules mais le nom doit être identique à la lettre près!
Nipple.png et Nipple.3dm marchera, NIPPLE.png & NiPPle.3dm ne marchera pas!
La palette complète! Les noms d'images et de fichiersdoivent exactement le même nom!
On peut mixer capitales et minuscules mais le nom doit être identique à la lettre près!
Nipple.png et Nipple.3dm marchera, NIPPLE.png & NiPPle.3dm ne marchera pas!