Il "suffit" de gérer les événements soi-même, ainsi tu peux passer ce que tu veux (l'objet
.
c'est plus facile, puisqu'il est chaque fois possible de la passer en argument.
Code : Tout sélectionner
import unohelper
from com.sun.star.awt import XItemListener
class ItemListener(unohelper.Base, XItemListener):
def __init__(self, solide):
self.solide = solide
def disposing(self, source):
pass
def itemStateChanged(self, event):
self.solide.opacite = [100, 20, 0][event.Selected]
for x in self.solide.faces:
x[1].FillTransparence = self.solide.opacite
def MisePlaceSolide(*oEvt):
"""entrée du programme"""
gdoc = XSCRIPTCONTEXT.getDocument()
maBoite = loadDialog("Standard","ChoixSolide", "document", gdoc)
if maBoite.execute() == CANCEL:
return
NoSolide = maBoite.getControl('LbSolide').SelectedItemPos
A = [ [1,1,1], [-1,-1,1], [1,-1,-1], [-1,1,-1] ] # pour cube, tétraèdre, octaèdre, icosaèdre et dodécaèdre
B = A + [ [1,-1,1], [-1,1,1], [1,1,-1], [-1,-1,-1] ]
a, b = 1.618033989, (1, 0.618033988)[NoSolide == 4]
T = [ [0,a,b], [0,a,-b], [0,-a,b], [0,-a,-b], [b,0,a], [b,0,-a], [-b,0,a], [-b,0,-a], [a,b,0], [a,-b,0], [-a,b,0], [-a,-b,0] ]
dico = {0: ('cube', B), 1: ('tétraèdre', A), 2: ('octaèdre', A), 3: ('icosaèdre', T), 4: ('dodécaèdre', T + B)}
faces = trouveFaces(dico[NoSolide] [1] )
solide = Solide(dico[NoSolide], faces)
solide.affiche(gdoc)
maBoite.dispose()
maBoite = loadDialog("Standard","TourneSolide", "document", gdoc)
liste = maBoite.getControl("LbOpacite")
itemlistener = ItemListener(solide)
liste.addItemListener(itemlistener)
maBoite.execute()
maBoite.dispose()