Index: gc_lang/fr/oxt/Conjugueur/Conjugueur.py ================================================================== --- gc_lang/fr/oxt/Conjugueur/Conjugueur.py +++ gc_lang/fr/oxt/Conjugueur/Conjugueur.py @@ -1,6 +1,5 @@ -# -*- coding: utf8 -*- # Conjugueur # by Olivier R. # License: GPL 3 import unohelper @@ -10,13 +9,14 @@ import grammalecte.fr.conj as conj_fr import helpers from com.sun.star.task import XJobExecutor from com.sun.star.awt import XActionListener +from com.sun.star.awt import XTopWindowListener -class Conjugueur (unohelper.Base, XActionListener, XJobExecutor): +class Conjugueur (unohelper.Base, XActionListener, XTopWindowListener, XJobExecutor): def __init__ (self, ctx): self.ctx = ctx self.xSvMgr = self.ctx.ServiceManager self.xContainer = None self.xDialog = None @@ -212,11 +212,11 @@ self.xDialog.PositionY = int((xWindowSize.Height / 2) - (self.xDialog.Height / 2)) ## container self.xContainer = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.UnoControlDialog', self.ctx) self.xContainer.setModel(self.xDialog) - self.xContainer.setVisible(False) + self.xContainer.setVisible(True) # True for non modal dialog #self.xContainer.getControl('input').addEventListener(self) #self.xContainer.getControl('input').addEventCommand('New') self.xContainer.getControl('cbutton').addActionListener(self) self.xContainer.getControl('cbutton').setActionCommand('New') @@ -228,34 +228,58 @@ self.xContainer.getControl('oint').setActionCommand('Change') self.xContainer.getControl('otco').addActionListener(self) self.xContainer.getControl('otco').setActionCommand('Change') self.xContainer.getControl('ofem').addActionListener(self) self.xContainer.getControl('ofem').setActionCommand('Change') + self.xContainer.addTopWindowListener(self) # listener with XTopWindowListener methods + #self.xContainer.execute() # Modal dialog ## set verb self.input.Text = sArgs if sArgs else "ĂȘtre" self._newVerb() ## mysterious action xToolkit = self.xSvMgr.createInstanceWithContext('com.sun.star.awt.ExtToolkit', self.ctx) self.xContainer.createPeer(xToolkit, None) - self.xContainer.execute() # XActionListener def actionPerformed (self, xActionEvent): try: if xActionEvent.ActionCommand == 'Close': - self.xContainer.endExecute() + self.xContainer.dispose() # Non modal dialog + #self.xContainer.endExecute() # Modal dialog elif xActionEvent.ActionCommand == 'New': self._newVerb() elif xActionEvent.ActionCommand == 'Change': if self.oVerb: self._displayResults() else: print(str(xActionEvent)) except: traceback.print_exc() + + # XTopWindowListener (useful for non modal dialog only) + def windowOpened (self, xEvent): + return + + def windowClosing (self, xEvent): + self.xContainer.dispose() # Non modal dialog + + def windowClosed (self, xEvent): + return + + def windowMinimized (self, xEvent): + return + + def windowNormalized (self, xEvent): + return + + def windowActivated (self, xEvent): + return + + def windowDeactivated (self, xEvent): + return # XJobExecutor def trigger (self, args): try: xDialog = Conjugueur(self.ctx)