Changeset 4317

Show
Ignore:
Timestamp:
07/24/08 14:04:54 (1 month ago)
Author:
paul
Message:

Fixed dDialog.CancelOnEscape? on Windows. Will test Mac and Windows next.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/dabo/ui/uiwx/dDialog.py

    r4316 r4317  
    5151        self.Sizer = dabo.ui.dSizer("V") 
    5252        super(dDialog, self)._afterInit() 
    53         self.bindKey("esc", self._onEscape) 
    5453 
    5554 
     
    9998        return retVals.get(ret) 
    10099         
    101  
    102     def _onEscape(self, evt): 
    103         evt.stop() 
    104         self.hide() 
    105100 
    106101 
     
    235230 
    236231    def _addControls(self): 
     232        # Tell wx not to intercept the esc key. 
     233        self.SetEscapeId(wx.ID_NONE) 
     234 
    237235        # Set some default Sizer properties (user can easily override): 
    238236        sz = self.Sizer 
     
    281279            elif id_ == wx.ID_NO: 
    282280                self.btnNo = newbtn = dabo.ui.dButton(btn.Parent) 
     281                self.setEscapeButton(newbtn) 
    283282                mthd = self._onNo 
    284283            elif id_ == wx.ID_OK: 
     
    288287                self.btnCancel = newbtn = dabo.ui.dButton(btn.Parent) 
    289288                mthd = self._onCancel 
     289                self.setEscapeButton(newbtn) 
    290290            elif id_ == wx.ID_HELP: 
    291291                self.btnHelp = btn 
     
    316316        for pos, btn in enumerate(buttons[1:]): 
    317317            btn.MoveAfterInTabOrder(buttons[pos-1]) 
    318         self.SetEscapeId(wx.ID_NONE) 
    319         self.bindKey("esc", self._onEscapePressed) 
    320318 
    321319        # Let the user add their controls 
     
    334332 
    335333 
    336     def _onEscapePressed(self, evt): 
    337         if self.CancelOnEscape: 
    338             if self.CancelButton: 
    339                self._onCancel(evt) 
    340            elif self.NoButton: 
    341                self._onNo(evt) 
    342             elif self.OKButton: 
    343                self._onOK(evt) 
    344             elif self.YesButton: 
    345                 self._onYes(evt) 
     334    def setEscapeButton(self, btn=None): 
     335        """Set which button gets hit when Esc pressed. 
     336 
     337        CancelOnEscape must be True for this to work. 
     338        """ 
     339        if not self.CancelOnEscape or not btn: 
     340            self.SetEscapeId(wx.ID_NONE) 
     341        else: 
     342            self.SetEscapeId(btn.GetId()) 
     343 
    346344 
    347345 
     
    367365        if self.runOK() is not False: 
    368366            self.EndModal(kons.DLG_OK) 
     367 
    369368    def _onCancel(self, evt): 
    370369        self.Accepted = False 
     
    381380        if self.runCancel() is not False: 
    382381            self.EndModal(kons.DLG_CANCEL) 
     382        else: 
     383            evt.stop() 
    383384    def _onYes(self, evt): 
    384385        self.Accepted = True 
    385386        if self.runYes() is not False: 
    386387            self.EndModal(kons.DLG_YES) 
     388 
    387389    def _onNo(self, evt): 
    388390        self.Accepted = False 
    389391        if self.runNo() is not False: 
    390392            self.EndModal(kons.DLG_NO) 
     393        else: 
     394            evt.stop() 
     395 
    391396    def _onHelp(self, evt): 
    392397        self.runHelp() 
     
    461466        if self._constructed(): 
    462467            self._cancelOnEscape = val 
     468            self.setEscapeButton(None) 
     469            if val: 
     470                for trial in (self.btnCancel, self.btnNo): 
     471                    if trial is not None: 
     472                        self.setEscapeButton(trial) 
     473                        break 
    463474        else: 
    464475            self._properties["CancelOnEscape"] = val