Changes in / [b78707b0:f07b2e9] in sasview
- Location:
- src/sas
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/data_util/calcthread.py
r79492222 r373d4ee 84 84 should be implemented vary from framework to framework. 85 85 86 For wx, something like the following is needed: ::86 For wx, something like the following is needed:: 87 87 88 88 import wx, wx.lib.newevent -
src/sas/guiframe/plugin_base.py
r0fa825c r373d4ee 13 13 ################################################################################ 14 14 15 class PluginBase :15 class PluginBase(object): 16 16 """ 17 17 This class defines the interface for a Plugin class … … 36 36 def __init__(self, name="Test_plugin", standalone=True): 37 37 """ 38 38 Abstract class for gui_manager Plugins. 39 39 """ 40 40 # Define if the plugin is local to Viewerframe and always active -
src/sas/perspectives/fitting/basepage.py
racf8e4a5 r373d4ee 398 398 batch_menu.Enable(self.batch_on and flag) 399 399 400 class ModelTextCtrl(wx.TextCtrl):401 """402 Text control for model and fit parameters.403 Binds the appropriate events for user interactions.404 Default callback methods can be overwritten on initialization405 406 :param kill_focus_callback: callback method for EVT_KILL_FOCUS event407 :param set_focus_callback: callback method for EVT_SET_FOCUS event408 :param mouse_up_callback: callback method for EVT_LEFT_UP event409 :param text_enter_callback: callback method for EVT_TEXT_ENTER event410 411 """412 ## Set to True when the mouse is clicked while whole string is selected413 full_selection = False414 ## Call back for EVT_SET_FOCUS events415 _on_set_focus_callback = None416 417 def __init__(self, parent, id=-1,418 value=wx.EmptyString,419 pos=wx.DefaultPosition,420 size=wx.DefaultSize,421 style=0,422 validator=wx.DefaultValidator,423 name=wx.TextCtrlNameStr,424 kill_focus_callback=None,425 set_focus_callback=None,426 mouse_up_callback=None,427 text_enter_callback=None):428 429 wx.TextCtrl.__init__(self, parent, id, value, pos,430 size, style, validator, name)431 432 # Bind appropriate events433 self._on_set_focus_callback = parent.onSetFocus \434 if set_focus_callback is None else set_focus_callback435 self.Bind(wx.EVT_SET_FOCUS, self._on_set_focus)436 self.Bind(wx.EVT_KILL_FOCUS, self._silent_kill_focus \437 if kill_focus_callback is None else kill_focus_callback)438 self.Bind(wx.EVT_TEXT_ENTER, parent._onparamEnter \439 if text_enter_callback is None else text_enter_callback)440 if not ON_MAC:441 self.Bind(wx.EVT_LEFT_UP, self._highlight_text \442 if mouse_up_callback is None else mouse_up_callback)443 444 def _on_set_focus(self, event):445 """446 Catch when the text control is set in focus to highlight the whole447 text if necessary448 449 :param event: mouse event450 451 """452 event.Skip()453 self.full_selection = True454 return self._on_set_focus_callback(event)455 456 def _highlight_text(self, event):457 """458 Highlight text of a TextCtrl only of no text has be selected459 460 :param event: mouse event461 462 """463 # Make sure the mouse event is available to other listeners464 event.Skip()465 control = event.GetEventObject()466 if self.full_selection:467 self.full_selection = False468 # Check that we have a TextCtrl469 if issubclass(control.__class__, wx.TextCtrl):470 # Check whether text has been selected,471 # if not, select the whole string472 (start, end) = control.GetSelection()473 if start == end:474 control.SetSelection(-1, -1)475 476 def _silent_kill_focus(self, event):477 """478 Save the state of the page479 """480 481 event.Skip()482 #pass483 484 400 def set_page_info(self, page_info): 485 401 """ … … 1680 1596 draw=False) 1681 1597 elif not self._is_2D(): 1598 enable_smearer = not self.disable_smearer.GetValue() 1682 1599 self._manager.set_smearer(smearer=temp_smearer, 1683 1600 qmin=float(self.qmin_x), … … 1685 1602 fid=self.data.id, 1686 1603 qmax=float(self.qmax_x), 1687 enable_smearer=not self.disable_smearer.GetValue(),1688 1604 enable_smearer=enable_smearer, 1605 draw=False) 1689 1606 if self.data != None: 1690 1607 index_data = ((self.qmin_x <= self.data.x) & \ … … 3774 3691 toggle view of model from 1D to 2D or 2D from 1D if implemented 3775 3692 """ 3693 3694 class ModelTextCtrl(wx.TextCtrl): 3695 """ 3696 Text control for model and fit parameters. 3697 Binds the appropriate events for user interactions. 3698 Default callback methods can be overwritten on initialization 3699 3700 :param kill_focus_callback: callback method for EVT_KILL_FOCUS event 3701 :param set_focus_callback: callback method for EVT_SET_FOCUS event 3702 :param mouse_up_callback: callback method for EVT_LEFT_UP event 3703 :param text_enter_callback: callback method for EVT_TEXT_ENTER event 3704 3705 """ 3706 ## Set to True when the mouse is clicked while whole string is selected 3707 full_selection = False 3708 ## Call back for EVT_SET_FOCUS events 3709 _on_set_focus_callback = None 3710 3711 def __init__(self, parent, id=-1, 3712 value=wx.EmptyString, 3713 pos=wx.DefaultPosition, 3714 size=wx.DefaultSize, 3715 style=0, 3716 validator=wx.DefaultValidator, 3717 name=wx.TextCtrlNameStr, 3718 kill_focus_callback=None, 3719 set_focus_callback=None, 3720 mouse_up_callback=None, 3721 text_enter_callback=None): 3722 3723 wx.TextCtrl.__init__(self, parent, id, value, pos, 3724 size, style, validator, name) 3725 3726 # Bind appropriate events 3727 self._on_set_focus_callback = parent.onSetFocus \ 3728 if set_focus_callback is None else set_focus_callback 3729 self.Bind(wx.EVT_SET_FOCUS, self._on_set_focus) 3730 self.Bind(wx.EVT_KILL_FOCUS, self._silent_kill_focus \ 3731 if kill_focus_callback is None else kill_focus_callback) 3732 self.Bind(wx.EVT_TEXT_ENTER, parent._onparamEnter \ 3733 if text_enter_callback is None else text_enter_callback) 3734 if not ON_MAC: 3735 self.Bind(wx.EVT_LEFT_UP, self._highlight_text \ 3736 if mouse_up_callback is None else mouse_up_callback) 3737 3738 def _on_set_focus(self, event): 3739 """ 3740 Catch when the text control is set in focus to highlight the whole 3741 text if necessary 3742 3743 :param event: mouse event 3744 3745 """ 3746 event.Skip() 3747 self.full_selection = True 3748 return self._on_set_focus_callback(event) 3749 3750 def _highlight_text(self, event): 3751 """ 3752 Highlight text of a TextCtrl only of no text has be selected 3753 3754 :param event: mouse event 3755 3756 """ 3757 # Make sure the mouse event is available to other listeners 3758 event.Skip() 3759 control = event.GetEventObject() 3760 if self.full_selection: 3761 self.full_selection = False 3762 # Check that we have a TextCtrl 3763 if issubclass(control.__class__, wx.TextCtrl): 3764 # Check whether text has been selected, 3765 # if not, select the whole string 3766 (start, end) = control.GetSelection() 3767 if start == end: 3768 control.SetSelection(-1, -1) 3769 3770 def _silent_kill_focus(self, event): 3771 """ 3772 Save the state of the page 3773 """ 3774 3775 event.Skip() 3776 #pass 3777 -
src/sas/perspectives/fitting/batchfitpage.py
r2f4b430 r373d4ee 122 122 # self.sizer5.Clear(True) 123 123 # 124 # self.qmin = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),124 # self.qmin = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 125 125 # style=wx.TE_PROCESS_ENTER, 126 126 # text_enter_callback = self._onQrangeEnter) … … 128 128 # self.qmin.SetToolTipString("Minimun value of Q in linear scale.") 129 129 # 130 # self.qmax = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),130 # self.qmax = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 131 131 # style=wx.TE_PROCESS_ENTER, 132 132 # text_enter_callback=self._onQrangeEnter) -
src/sas/perspectives/fitting/fitpage.py
r85ccd3a r5265420 26 26 from sas.perspectives.fitting.basepage import PageInfoEvent as PageInfoEvent 27 27 from sas.models.qsmearing import smear_selection 28 from .basepage import ModelTextCtrl 28 29 29 30 … … 284 285 285 286 #textcntrl for custom resolution 286 self.smear_pinhole_max = self.ModelTextCtrl(self, -1,287 self.smear_pinhole_max = ModelTextCtrl(self, -1, 287 288 size=(_BOX_WIDTH - 25, 20), 288 289 style=wx.TE_PROCESS_ENTER, 289 290 text_enter_callback=self.onPinholeSmear) 290 self.smear_pinhole_min = self.ModelTextCtrl(self, -1,291 self.smear_pinhole_min = ModelTextCtrl(self, -1, 291 292 size=(_BOX_WIDTH - 25, 20), 292 293 style=wx.TE_PROCESS_ENTER, 293 294 text_enter_callback=self.onPinholeSmear) 294 self.smear_slit_height = self.ModelTextCtrl(self, -1,295 self.smear_slit_height = ModelTextCtrl(self, -1, 295 296 size=(_BOX_WIDTH - 25, 20), 296 297 style=wx.TE_PROCESS_ENTER, 297 298 text_enter_callback=self.onSlitSmear) 298 self.smear_slit_width = self.ModelTextCtrl(self, -1,299 self.smear_slit_width = ModelTextCtrl(self, -1, 299 300 size=(_BOX_WIDTH - 25, 20), 300 301 style=wx.TE_PROCESS_ENTER, … … 303 304 ## smear 304 305 self.smear_data_left = BGTextCtrl(self, -1, 305 size=(_BOX_WIDTH - 25, 20), style=0)306 size=(_BOX_WIDTH - 25, 20), style=0) 306 307 self.smear_data_left.SetValue(str(self.dq_l)) 307 308 self.smear_data_right = BGTextCtrl(self, -1, 308 size=(_BOX_WIDTH - 25, 20), style=0)309 size=(_BOX_WIDTH - 25, 20), style=0) 309 310 self.smear_data_right.SetValue(str(self.dq_r)) 310 311 … … 355 356 self.Npts_fit.SetToolTipString(\ 356 357 " Npts : number of points selected for fitting") 357 self.Npts_total = self.ModelTextCtrl(self, -1,358 size=(_BOX_WIDTH, 20),359 style=wx.TE_PROCESS_ENTER,360 text_enter_callback=self._onQrangeEnter)358 self.Npts_total = ModelTextCtrl(self, -1, 359 size=(_BOX_WIDTH, 20), 360 style=wx.TE_PROCESS_ENTER, 361 text_enter_callback=self._onQrangeEnter) 361 362 self.Npts_total.SetValue(format_number(self.npts_x)) 362 363 self.Npts_total.SetToolTipString(\ … … 515 516 self.sizer5.Clear(True) 516 517 517 self.qmin = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),518 519 520 521 518 self.qmin = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 519 style=wx.TE_PROCESS_ENTER, 520 set_focus_callback=self.qrang_set_focus, 521 text_enter_callback=self._onQrangeEnter, 522 name='qmin') 522 523 self.qmin.SetValue(str(self.qmin_x)) 523 524 q_tip = "Click outside of the axes\n to remove the lines." … … 526 527 self.qmin.SetToolTipString(qmin_tip) 527 528 528 self.qmax = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),529 530 531 532 529 self.qmax = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 530 style=wx.TE_PROCESS_ENTER, 531 set_focus_callback=self.qrang_set_focus, 532 text_enter_callback=self._onQrangeEnter, 533 name='qmax') 533 534 self.qmax.SetValue(str(self.qmax_x)) 534 535 qmax_tip = "Maximum value of Q.\n" … … 686 687 ix = 1 687 688 value = self.model.getParam(name1) 688 ctl1 = self.ModelTextCtrl(self, -1,689 690 689 ctl1 = ModelTextCtrl(self, -1, 690 size=(_BOX_WIDTH / 1.3, 20), 691 style=wx.TE_PROCESS_ENTER) 691 692 ctl1.SetLabel('PD[ratio]') 692 693 poly_text = "Polydispersity (STD/mean) of %s\n" % item … … 715 716 716 717 ix = 4 717 ctl3 = self.ModelTextCtrl(self, -1,718 719 720 718 ctl3 = ModelTextCtrl(self, -1, 719 size=(_BOX_WIDTH / 2, 20), 720 style=wx.TE_PROCESS_ENTER, 721 text_enter_callback=self._onparamRangeEnter) 721 722 722 723 self.sizer4_4.Add(ctl3, (iy, ix), (1, 1), … … 724 725 725 726 ix = 5 726 ctl4 = self.ModelTextCtrl(self, -1,727 728 727 ctl4 = ModelTextCtrl(self, -1, 728 size=(_BOX_WIDTH / 2, 20), 729 style=wx.TE_PROCESS_ENTER, 729 730 text_enter_callback=self._onparamRangeEnter) 730 731 … … 738 739 ix = 6 739 740 value = self.model.getParam(name2) 740 Tctl = self.ModelTextCtrl(self, -1,741 742 741 Tctl = ModelTextCtrl(self, -1, 742 size=(_BOX_WIDTH / 2.2, 20), 743 style=wx.TE_PROCESS_ENTER) 743 744 744 745 Tctl.SetValue(str(format_number(value))) … … 750 751 ix = 7 751 752 value = self.model.getParam(name3) 752 Tct2 = self.ModelTextCtrl(self, -1,753 754 753 Tct2 = ModelTextCtrl(self, -1, 754 size=(_BOX_WIDTH / 2.2, 20), 755 style=wx.TE_PROCESS_ENTER) 755 756 756 757 Tct2.SetValue(str(format_number(value))) … … 811 812 ix = 1 812 813 value = self.model.getParam(name1) 813 ctl1 = self.ModelTextCtrl(self, -1,814 815 814 ctl1 = ModelTextCtrl(self, -1, 815 size=(_BOX_WIDTH / 1.3, 20), 816 style=wx.TE_PROCESS_ENTER) 816 817 poly_tip = "Absolute Sigma for %s." % item 817 818 ctl1.SetToolTipString(poly_tip) … … 859 860 860 861 ix = 4 861 ctl3 = self.ModelTextCtrl(self, -1,862 863 862 ctl3 = ModelTextCtrl(self, -1, 863 size=(_BOX_WIDTH / 2, 20), 864 style=wx.TE_PROCESS_ENTER, 864 865 text_enter_callback=self._onparamRangeEnter) 865 866 … … 870 871 871 872 ix = 5 872 ctl4 = self.ModelTextCtrl(self, -1,873 size=(_BOX_WIDTH / 2, 20),874 style=wx.TE_PROCESS_ENTER,873 ctl4 = ModelTextCtrl(self, -1, 874 size=(_BOX_WIDTH / 2, 20), 875 style=wx.TE_PROCESS_ENTER, 875 876 text_enter_callback=self._onparamRangeEnter) 876 877 self.sizer4_4.Add(ctl4, (iy, ix), (1, 1), … … 886 887 ix = 6 887 888 value = self.model.getParam(name2) 888 Tctl = self.ModelTextCtrl(self, -1,889 890 889 Tctl = ModelTextCtrl(self, -1, 890 size=(_BOX_WIDTH / 2.2, 20), 891 style=wx.TE_PROCESS_ENTER) 891 892 892 893 Tctl.SetValue(str(format_number(value))) … … 906 907 ix = 7 907 908 value = self.model.getParam(name3) 908 Tct2 = self.ModelTextCtrl(self, -1,909 910 909 Tct2 = ModelTextCtrl(self, -1, 910 size=(_BOX_WIDTH / 2.2, 20), 911 style=wx.TE_PROCESS_ENTER) 911 912 912 913 Tct2.SetValue(str(format_number(value))) … … 1061 1062 label = "Fit" 1062 1063 color = "black" 1063 self.btFit.Enable(False)1064 #self.btFit.Enable(False) 1064 1065 self.btFit.SetLabel(label) 1065 1066 self.btFit.SetForegroundColour(color) … … 1140 1141 self.state.formfactorcombobox = self.formfactorbox.GetLabel() 1141 1142 self.enable_fit_button() 1142 if self.model !=None:1143 if self.model is not None: 1143 1144 self.m_name = self.model.name 1144 1145 self.state.m_name = self.m_name … … 1152 1153 self._keep.Enable(not self.batch_on) 1153 1154 self._set_save_flag(True) 1154 # Reset smearer, model and data1155 if not copy_flag:1156 self.disable_smearer.SetValue(True)1157 self.enable_smearer.SetValue(False)1158 1155 1159 1156 # more disables for 2D … … 1162 1159 try: 1163 1160 # update smearer sizer 1164 #if not self.enable_smearer.GetValue():1165 # self.disable_smearer.SetValue(True)1166 1161 self.onSmear(None) 1167 1162 temp_smear = None … … 1268 1263 elif self.data.__class__.__name__ != "Data2D" and \ 1269 1264 not self.enable2D: 1265 enable_smearer = not self.disable_smearer.GetValue() 1270 1266 self._manager.set_smearer(smearer=temp_smearer, 1271 1267 fid=self.data.id, … … 1273 1269 qmin=float(self.qmin_x), 1274 1270 qmax=float(self.qmax_x), 1275 enable_smearer=not self.disable_smearer.GetValue(),1276 draw=True)1271 enable_smearer=enable_smearer, 1272 draw=True) 1277 1273 if flag: 1278 1274 #self.compute_chisqr(smearer= temp_smearer) … … 1772 1768 self.current_smearer = smear_selection(data, self.model) 1773 1769 flag = self.disable_smearer.GetValue() 1774 self.disable_smearer.SetValue(flag) 1775 if self.current_smearer == None: 1770 if self.current_smearer is None: 1776 1771 self.enable_smearer.Disable() 1777 1772 else: … … 1959 1954 if flag: 1960 1955 #set model view button 1961 if not self.enable_smearer.GetValue():1962 self.disable_smearer.SetValue(True)1963 1956 self.onSmear(None) 1964 1957 … … 2132 2125 if numpy.isfinite(float(cov[ind])): 2133 2126 val_err = format_number(cov[ind], True) 2134 if not self.is_mac: 2135 item[3].Show(True) 2136 item[4].Show(True) 2137 item[4].SetForegroundColour(wx.BLACK) 2138 item[4].SetValue(val_err) 2139 has_error = True 2140 else: 2141 val_err = 'NaN' 2142 if not self.is_mac: 2143 item[3].Show(True) 2144 item[4].Show(True) 2145 item[4].SetForegroundColour(wx.RED) 2146 item[4].SetValue(val_err) 2147 has_error = True 2127 else: 2128 val_err = 'NaN' 2129 if not self.is_mac: 2130 item[3].Show(True) 2131 item[4].Show(True) 2132 item[4].SetForegroundColour(wx.RED) 2133 item[4].SetValue(val_err) 2134 has_error = True 2148 2135 i += 1 2149 2136 else: … … 2196 2183 2197 2184 """ 2198 if self.model == None:2199 self.disable_smearer.SetValue(True)2200 if event == None:2201 return2202 msg = "Please select a Model first..."2203 wx.MessageBox(msg, 'Info')2204 wx.PostEvent(self._manager.parent,2205 StatusEvent(status="Smear: %s" % msg))2206 return2207 2208 2185 # Need update param values 2209 2186 self._update_paramv_on_fit() … … 2345 2322 ## set smearing value whether or not the data contain the smearing info 2346 2323 2324 enable_smearer = not self.disable_smearer.GetValue() 2347 2325 self._manager.set_smearer(smearer=self.current_smearer, 2348 fid=self.data.id,2349 qmin=float(self.qmin_x),2350 qmax=float(self.qmax_x),2351 enable_smearer=not self.disable_smearer.GetValue(),2352 uid=self.uid)2326 fid=self.data.id, 2327 qmin=float(self.qmin_x), 2328 qmax=float(self.qmax_x), 2329 enable_smearer=enable_smearer, 2330 uid=self.uid) 2353 2331 return msg 2354 2332 … … 2378 2356 are compute when fitting 2379 2357 """ 2380 if self.model == None:2381 self.disable_smearer.SetValue(True)2382 if event == None:2383 return2384 msg = "Please select a Model first..."2385 wx.MessageBox(msg, 'Info')2386 wx.PostEvent(self._manager.parent,2387 StatusEvent(status="Smear: %s" % msg))2388 return2389 2390 2358 # Need update param values 2391 2359 self._update_paramv_on_fit() … … 2475 2443 of the values entered for slit smear 2476 2444 """ 2477 if self.data.__class__.__name__ == "Data2D" or \ 2478 self.enable2D: 2445 if self.data.__class__.__name__ == "Data2D" or self.enable2D: 2479 2446 return 2480 2447 # make sure once more if it is smearer … … 2513 2480 self.current_smearer = smear_selection(data, self.model) 2514 2481 ## set smearing value whether or not the data contain the smearing info 2482 enable_smearer = not self.disable_smearer.GetValue() 2515 2483 self._manager.set_smearer(smearer=self.current_smearer, 2516 fid=self.data.id,2517 qmin=float(self.qmin_x),2518 qmax=float(self.qmax_x),2519 enable_smearer=not self.disable_smearer.GetValue(),2520 uid=self.uid)2484 fid=self.data.id, 2485 qmin=float(self.qmin_x), 2486 qmax=float(self.qmax_x), 2487 enable_smearer=enable_smearer, 2488 uid=self.uid) 2521 2489 return msg 2522 2490 … … 2552 2520 return 2553 2521 2554 if self.model == None:2555 self.disable_smearer.SetValue(True)2556 if event == None:2557 return2558 msg = "Please select a Model first..."2559 wx.MessageBox(msg, 'Info')2560 wx.PostEvent(self._manager.parent,2561 StatusEvent(status="Smear: %s" % msg))2562 return2563 2522 # Need update param values 2564 2523 self._update_paramv_on_fit() 2565 if self.model !=None:2524 if self.model is not None: 2566 2525 if self.data.is_data: 2567 2526 self._manager.page_finder[self.uid].add_data(data=self.data) … … 2573 2532 2574 2533 ## set smearing value whether or not the data contain the smearing info 2534 enable_smearer = not self.disable_smearer.GetValue() 2575 2535 wx.CallAfter(self._manager.set_smearer, uid=self.uid, 2576 2536 smearer=temp_smearer, … … 2578 2538 qmin=float(self.qmin_x), 2579 2539 qmax=float(self.qmax_x), 2580 enable_smearer= not self.disable_smearer.GetValue(),2540 enable_smearer=enable_smearer, 2581 2541 draw=True) 2582 2542 … … 2594 2554 self._get_smear_info() 2595 2555 #renew smear sizer 2596 if self.smear_type !=None:2556 if self.smear_type is not None: 2597 2557 self.smear_description_smear_type.SetValue(str(self.smear_type)) 2598 2558 self.smear_data_left.SetValue(str(self.dq_l)) … … 2607 2567 self.current_smearer = temp_smearer 2608 2568 if self.enable_smearer.GetValue(): 2609 if self.current_smearer ==None:2569 if self.current_smearer is None: 2610 2570 wx.PostEvent(self._manager.parent, 2611 2571 StatusEvent(status="Data contains no smearing information")) … … 2953 2913 wx.EVT_COMBOBOX(fun_box, -1, self._on_fun_box) 2954 2914 else: 2955 fun_box = self.ModelTextCtrl(self, -1,2956 2915 fun_box = ModelTextCtrl(self, -1, 2916 size=(_BOX_WIDTH, 20), 2957 2917 style=wx.TE_PROCESS_ENTER, name='%s' % item) 2958 2918 fun_box.SetToolTipString(\ … … 2977 2937 ix += 1 2978 2938 value = self.model.getParam(item) 2979 ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),2980 style=wx.TE_PROCESS_ENTER)2939 ctl1 = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 2940 style=wx.TE_PROCESS_ENTER) 2981 2941 ctl1.SetToolTipString(\ 2982 2942 "Hit 'Enter' after typing to update the plot.") … … 2999 2959 3000 2960 ix += 1 3001 ctl3 = self.ModelTextCtrl(self, -1,3002 3003 2961 ctl3 = ModelTextCtrl(self, -1, 2962 size=(_BOX_WIDTH / 1.9, 20), 2963 style=wx.TE_PROCESS_ENTER, 3004 2964 text_enter_callback=self._onparamRangeEnter) 3005 2965 min_bound = self.model.details[item][1] … … 3011 2971 3012 2972 ix += 1 3013 ctl4 = self.ModelTextCtrl(self, -1,3014 3015 2973 ctl4 = ModelTextCtrl(self, -1, 2974 size=(_BOX_WIDTH / 1.9, 20), 2975 style=wx.TE_PROCESS_ENTER, 3016 2976 text_enter_callback=self._onparamRangeEnter) 3017 2977 max_bound = self.model.details[item][2] … … 3115 3075 ix += 1 3116 3076 value = self.model.getParam(item) 3117 ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),3118 style=wx.TE_PROCESS_ENTER)3077 ctl1 = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 3078 style=wx.TE_PROCESS_ENTER) 3119 3079 ctl1.SetToolTipString(\ 3120 3080 "Hit 'Enter' after typing to update the plot.") … … 3142 3102 3143 3103 ix += 1 3144 ctl3 = self.ModelTextCtrl(self, -1,3145 3146 3104 ctl3 = ModelTextCtrl(self, -1, 3105 size=(_BOX_WIDTH / 1.8, 20), 3106 style=wx.TE_PROCESS_ENTER, 3147 3107 text_enter_callback=self._onparamRangeEnter) 3148 3108 … … 3152 3112 3153 3113 ix += 1 3154 ctl4 = self.ModelTextCtrl(self, -1,3155 3156 3114 ctl4 = ModelTextCtrl(self, -1, 3115 size=(_BOX_WIDTH / 1.8, 20), 3116 style=wx.TE_PROCESS_ENTER, 3157 3117 text_enter_callback=self._onparamRangeEnter) 3158 3118 sizer.Add(ctl4, (iy, ix), (1, 1), -
src/sas/perspectives/fitting/fitting.py
racf8e4a5 r373d4ee 1211 1211 del self.fit_thread_list[uid] 1212 1212 1213 self._update_fit_button(page_id)1213 wx.CallAfter(self._update_fit_button, page_id) 1214 1214 t1 = time.time() 1215 1215 str_time = time.strftime("%a, %d %b %Y %H:%M:%S ", time.localtime(t1)) … … 1450 1450 type="stop")) 1451 1451 wx.PostEvent(self.result_panel, PlotResultEvent(result=result)) 1452 self._update_fit_button(page_id)1452 wx.CallAfter(self._update_fit_button, page_id) 1453 1453 result = result[0] 1454 1454 self.fit_thread_list = {} … … 1470 1470 info="warning", 1471 1471 type="stop")) 1472 self._update_fit_button(page_id)1472 wx.CallAfter(self._update_fit_button, page_id) 1473 1473 else: 1474 1474 #set the panel when fit result are float not list
Note: See TracChangeset
for help on using the changeset viewer.