progliste AT framalistes.org
Objet : Liste sur la programmation tous languages, orienté déficients visuels
Archives de la liste
Re: [progliste] NGPad, les méthodes wx.MenuBar:setMenuLabel et wx.Menu:setLabel
Chronologique Discussions
- From: "Pierre-Louis R@RPTools" <plr.listes AT rptools.org>
- To: <progliste AT framalistes.org>
- Subject: Re: [progliste] NGPad, les méthodes wx.MenuBar:setMenuLabel et wx.Menu:setLabel
- Date: Fri, 12 Apr 2024 17:57:36 +0200
- Authentication-results: rod3.framasoft.org; dkim=none; dmarc=none; spf=pass (rod3.framasoft.org: domain of plr.listes AT rptools.org designates 178.32.121.110 as permitted sender) smtp.mailfrom=plr.listes AT rptools.org
Bonjour Abdel,
Puisque tu es dans le bain WX, j'aimerais te demander si tu sais comment programmer un menu d'options à cocher qui ne se referme pas lorsqu'on a coché ou décoché une option ?
Ce serait très pratique lorsque le menu comporte beaucoup d'éléments à cocher.
J'ai cherché mais en vain pour mon extension pour NVDA.
Bien cordialement, merci,
Pierre-Louis
Salut les scripteurs,
Il existe certaines méthodes et propriétés, propres à wx, qui
sont très bien documentées dans la documentation officielle.
Elles ne sont cependant pas documentées dans la doc de NGPad,
mais peu-importe...
Parmi ces méthodes et propriétés, je citerait par exemple une
méthode propre à la classe wx.MenuBar, il s'agit de
setMenuLabel.
Elle permet, comme son nom l'indique, de redéfinir le libellé
d'un menu présent dans la barre de menus.
Son premier paramètre est l'objet self, qui symbolise la barre
de menu courante, que l'on peut très bien rendre implicite en
utilisant le symbole ":".
Son second paramètre est la position du menu en question, qui
est représentée par un index qui commence à 0 pour le menu
"Fichier", 1 pour "Édition", etc.
Le troisième paramètre est le nouveau libellé que l'on souhaite
attribuer à notre menu.
Faisons un petit test dans la console LUA de NGPad et saisissons
ce qui suit :
app.currentDocument.menus:setMenuLabel(0, "Nou&veau libellé pour le menu Fichier");
Maintenant, consultons la barre de menus et positionnons-nous
sur le premier menu, on entend :
Nouveau libellé pour le menu Fichier sous-menu Alt + V
Pour les items de menu, nous disposons de la méthode
"setLabel", disponible aussi bien dans la classe "wx.Menu" que
dans la classe "wx.MenuItem".
Dans l'exemple suivant, nous allons définir un nouveau libellé
pour un item de menu, vous verrez, il y a 2 façons de le faire,
une plutôt contraignante et l'autre, beaucoup plus simple.
On va commencer par la contraignante.
Nous allons définir un nouveau libellé pour l'item "Nouveau
sous-menu" du menu "Fichier".
Pour commencer, nous devons mettre la main sur le menu fichier :
menuFichier = app.currentDocument.menus:getMenu(1);
Le paramètre permettant d'indiquer la position de la méthode
"wx.MenuBar:getMenu" est différent de celui de
"wx.MenuBar:setMenuLabel", les indices commençaient à 0, et là,
ils commencent à 1.
Maintenant, pointons sur le premier item du menu fichier :
nouveau = menuFichier[1]; -- Là aussi, l'indice commence à 1.
Récupérons son "id" :
nouveauId = nouveau:getId();
Maintenant, nous allons pouvoir utiliser la méthode "setLabel"
de la classe "wx.Menu").
Son premier paramètre est "self", que l'on peut définir comme
implicite avec le symbole ":".
Le second paramètre est l'Id de l'item de menu dont on souhaite
redéfinir le libellé, attention, ce n'est pas l'indice, mais
l'identificateur qui est récupérable grâce à la méthode "getId"
de la classe "wx.MenuItem").
Le troisième paramètre est le nouveau libellé que l'on souhaite
attribuer.
Allons-y :
menuFichier:setLabel(nouveauId, "Nouveau libellé pour l'item de menu &Nouveau");
Consultons le menu "Fichier" est constatons les changements...
Bien sûr, il y a beaucoup plus simple :
nouveau.label = "Encore un nouveau libellé pour l'item de menu &Nouveau";
Ou encore :
nouveau:setLabel("Un troisième libellé pour l'item de menu &Nouveau");
Remarquez bien que dans le dernier exemple, on utilise le
symbole ":".
C'est parce que la méthode "setLabel" de la classe "wx.MenuItem"
utilise elle aussi comme premier paramètre, l'objet "self", que
l'on peut définir comme implicite grâce aux ":".
Voilà donc pour ce tour d'horizon de ces petites méthodes qui
pourraient vous être utiles dans le scripting de NGPad.
Cordialement,
Abdel.
-
[progliste] NGPad, les méthodes wx.MenuBar:setMenuLabel et wx.Menu:setLabel,
Abdel, 12/04/2024
- Re: [progliste] NGPad, les méthodes wx.MenuBar:setMenuLabel et wx.Menu:setLabel, Pierre-Louis R@RPTools, 12/04/2024
Archives gérées par MHonArc 2.6.24.