Changeset 5371 for trunk/GSASIIctrlGUI.py
- Timestamp:
- Nov 14, 2022 9:28:04 AM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIctrlGUI.py
r5370 r5371 554 554 self.notBlank = notBlank 555 555 self.ASCIIonly = ASCIIonly 556 self.type = str556 557 557 # patch: remove this when min & max are no longer used to call this 558 558 if min is not None: … … 566 566 print('Call to ValidatedTxtCtrl using max (change to xmax) here:') 567 567 G2obj.HowDidIgetHere(True) 568 # end patch 569 568 570 # initialization 569 571 self.invalid = False # indicates if the control has invalid contents 570 572 self.evaluated = False # set to True when the validator recognizes an expression 573 self.timer = None # tracks pending updates for expressions in float textctrls 574 self.delay = 5000 # delay for timer update (5 sec) 575 self.type = str 576 571 577 val = loc[key] 572 578 if 'style' in kw: # add a "Process Enter" to style … … 672 678 if self.nDig and show and not self.invalid: 673 679 wx.TextCtrl.SetValue(self,str(G2py3.FormatValue(val,self.nDig))) 680 self.evaluated = False # expression has been recast as value, reset flag 674 681 elif show and not self.invalid: 675 682 wx.TextCtrl.SetValue(self,str(G2py3.FormatSigFigs(val)).rstrip('0')) 683 self.evaluated = False # expression has been recast as value, reset flag 676 684 else: 677 685 if self.ASCIIonly: … … 705 713 self._onLoseFocus(None) 706 714 if event: event.Skip() 715 if self.timer: 716 self.timer.Restart(self.delay) 707 717 708 718 def _onStringKey(self,event): … … 783 793 def _onLeaveWindow(self,event): 784 794 '''If the mouse leaves the text box, save the result, if valid, 785 but (unlike _onLoseFocus) don't update the textbox contents. 795 but (unlike _onLoseFocus) there is a two second delay before 796 the textbox contents are updated with the value from the formula. 786 797 ''' 798 def delayedUpdate(): 799 self.timer = None 800 try: 801 self._setValue(self.result[self.key]) 802 except: 803 pass 787 804 if self.type is not str: 788 805 if not self.IsModified(): return #ignore mouse crusing … … 790 807 return 791 808 if self.evaluated and not self.invalid: # deal with computed expressions 792 self.evaluated = False # expression has been recast as value, reset flag 809 if self.timer: 810 self.timer.Restart(self.delay) 811 else: 812 self.timer = wx.CallLater(self.delay,delayedUpdate) # this includes a try in case the widget is deleted 793 813 if self.invalid: # don't update an invalid expression 794 814 if event: event.Skip() … … 813 833 if self.invalid: # don't substitute for an invalid expression 814 834 return 815 self.evaluated = False # expression has been recast as value, reset flag816 835 self._setValue(self.result[self.key]) 817 836 elif self.result is not None: # show formatted result, as Bob wants … … 819 838 if not self.invalid: # don't update an invalid expression 820 839 self._setValue(self.result[self.key]) 840 821 841 if self.OnLeave: 822 842 self.event = event … … 1450 1470 def _OnEvent(event): 1451 1471 if event.GetEventObject() not in buttons: 1452 print('Strange: unknown button')1472 if GSASIIpath.GetConfigValue('debug'): print('Strange: unknown button') 1453 1473 return 1454 1474 loc[key] = values[buttons.index(event.GetEventObject())]
Note: See TracChangeset
for help on using the changeset viewer.