Le Samedi 11 Février 2006 07:54, vous avez écrit :
> Bonjour,
Bonjour,

>
> Je me permet de te contacter suite a ton message sur
> prog@fr.openoffice.org concernant la creation d'une fenetre dockable.
>
> As tu reussi ? Car je suis dans le meme cas que toi. J'ai a peut pres
> le meme code que toi (en Java) mais ca ne fonctionne pas.
Oui, je pense avoir réussi et voici le code python que j'utilise (qui peut 
être simplifié).
Ce code créé une barre d'état en bas de la fenêtre ouverte avec une zone de 
texte et 7 "check box". Il faut ajouter ensuite le code pour la gestion de 
nouvelle fenêtre ou barre d'état pour moi.
       import uno
       from com.sun.star.awt.WindowClass import SIMPLE

        ctx = aContext
        smgr = ctx.ServiceManager
        desktop = 
smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",.ctx)
        # accès au document draw courant
        aController = desktop.getCurrentComponent().getCurrentController()
        # faire de la place pour la barra d'état
        aPosSize = desktop.CurrentFrame.ComponentWindow.PosSize
        aRect = uno.createUnoStruct("com.sun.star.awt.Rectangle")
        aRect.X, aRect.Y, aRect.Width, aRect.Height = aPosSize.X, 
aPosSize.Y+aPosSize.Height-45, aPosSize.Width, 45
        aController.Frame.ComponentWindow.setPosSize(aPosSize.X, aPosSize.Y, 
aPosSize.Width, aPosSize.Height-45, 15)
        # créer une nouvelle fenêtre pour une barre d'état
        aWindowDescriptor = 
uno.createUnoStruct("com.sun.star.awt.WindowDescriptor")
        aWindowDescriptor.Type = SIMPLE
        aWindowDescriptor.WindowServiceName = "dockingwindow"
        aWindowDescriptor.Parent = aController.Frame.ContainerWindow
        aWindowDescriptor.ParentIndex = -1
        aWindowDescriptor.Bounds = aRect
        aWindowDescriptor.WindowAttributes = 0
        aWinPeer = 
aController.Frame.ContainerWindow.Toolkit.createWindow(aWindowDescriptor)
        aWinPeer.setBackground(0xf0f0f0)
        aWinPeer.setPosSize(aRect.X, aRect.Y, aRect.Width, aRect.Height, 15)
        aWinPeer.setVisible(True)
        # créer un label à insérer dans la barre
        aLabel = 
ctx.ServiceManager.createInstance( "com.sun.star.awt.UnoControlFixedTextModel" )
        aLabel.Label = "No comment"
        aLabel.Border = 1
        aLabel.BackgroundColor = 0xf0f0f0
        aLabelControl = 
ctx.ServiceManager.createInstance("com.sun.star.awt.UnoControlFixedText")
        aLabelControl.setModel(aLabel)
        aLabelControl.createPeer(aWinPeer.Toolkit, aWinPeer)
        aPeer = aLabelControl.getPeer()
        aPeer.setPosSize(0, 0, aRect.Width, 20, 15)
        aPeer.setVisible(True)
        aLabelControl.setDesignMode(False)
        aCheckBoxControl = []
        aCheckBox = []
        for i in range(7):
            # créer des check box                    
aCheckBox.append(ctx.ServiceManager.createInstance("com.sun.star.awt.UnoControlCheckBoxModel"))
            aCheckBox[-1].Label = aArgs[0].Value[i]
            # créer le check box controller 
aCheckBoxControl.append(ctx.ServiceManager.createInstance("com.sun.star.awt.UnoControlCheckBox"))
            aCheckBoxControl[-1].setModel(aCheckBox[-1])
            aCheckBoxControl[-1].createPeer(aWinPeer.Toolkit, aWinPeer)
            aPeer = aCheckBoxControl[-1].getPeer()
            aPeer.setPosSize(i*aRect.Width/7, 20, aRect.Width/7, 20, 15)
            aPeer.setVisible(True)
            aPeer.setBackground(0xf0f0f0)
            aCheckBoxControl[-1].setDesignMode(False)

>
> Desole de te contacter directement par mail, mais je ne suis pas
> (encore!) inscrit a la mailing list.
Je poste une copie à la liste au cas où cela pourrait intéresser d'autres 
personnes.

>
> Merci!
J'espère avoir été assez clair.

NB: le code ci-dessus est extrait d'un composant uno que j'ai créé pour une 
barre d'état utilisée dans CADOOo
-- 
gerard deneux

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à