- Timestamp:
- Apr 27, 2015 4:29:39 PM (10 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 3cd840f
- Parents:
- 7e0f9b5
- 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 r373d4ee 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))) … … 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: … … 2205 2192 StatusEvent(status="Smear: %s" % msg)) 2206 2193 return 2207 2208 2194 # Need update param values 2209 2195 self._update_paramv_on_fit() … … 2345 2331 ## set smearing value whether or not the data contain the smearing info 2346 2332 2333 enable_smearer = not self.disable_smearer.GetValue() 2347 2334 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)2335 fid=self.data.id, 2336 qmin=float(self.qmin_x), 2337 qmax=float(self.qmax_x), 2338 enable_smearer=enable_smearer, 2339 uid=self.uid) 2353 2340 return msg 2354 2341 … … 2475 2462 of the values entered for slit smear 2476 2463 """ 2477 if self.data.__class__.__name__ == "Data2D" or \ 2478 self.enable2D: 2464 if self.data.__class__.__name__ == "Data2D" or self.enable2D: 2479 2465 return 2480 2466 # make sure once more if it is smearer … … 2513 2499 self.current_smearer = smear_selection(data, self.model) 2514 2500 ## set smearing value whether or not the data contain the smearing info 2501 enable_smearer = not self.disable_smearer.GetValue() 2515 2502 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)2503 fid=self.data.id, 2504 qmin=float(self.qmin_x), 2505 qmax=float(self.qmax_x), 2506 enable_smearer=enable_smearer, 2507 uid=self.uid) 2521 2508 return msg 2522 2509 … … 2563 2550 # Need update param values 2564 2551 self._update_paramv_on_fit() 2565 if self.model !=None:2552 if self.model is not None: 2566 2553 if self.data.is_data: 2567 2554 self._manager.page_finder[self.uid].add_data(data=self.data) … … 2573 2560 2574 2561 ## set smearing value whether or not the data contain the smearing info 2562 enable_smearer = not self.disable_smearer.GetValue() 2575 2563 wx.CallAfter(self._manager.set_smearer, uid=self.uid, 2576 2564 smearer=temp_smearer, … … 2578 2566 qmin=float(self.qmin_x), 2579 2567 qmax=float(self.qmax_x), 2580 enable_smearer= not self.disable_smearer.GetValue(),2568 enable_smearer=enable_smearer, 2581 2569 draw=True) 2582 2570 … … 2594 2582 self._get_smear_info() 2595 2583 #renew smear sizer 2596 if self.smear_type !=None:2584 if self.smear_type is not None: 2597 2585 self.smear_description_smear_type.SetValue(str(self.smear_type)) 2598 2586 self.smear_data_left.SetValue(str(self.dq_l)) … … 2607 2595 self.current_smearer = temp_smearer 2608 2596 if self.enable_smearer.GetValue(): 2609 if self.current_smearer ==None:2597 if self.current_smearer is None: 2610 2598 wx.PostEvent(self._manager.parent, 2611 2599 StatusEvent(status="Data contains no smearing information")) … … 2953 2941 wx.EVT_COMBOBOX(fun_box, -1, self._on_fun_box) 2954 2942 else: 2955 fun_box = self.ModelTextCtrl(self, -1,2956 2943 fun_box = ModelTextCtrl(self, -1, 2944 size=(_BOX_WIDTH, 20), 2957 2945 style=wx.TE_PROCESS_ENTER, name='%s' % item) 2958 2946 fun_box.SetToolTipString(\ … … 2977 2965 ix += 1 2978 2966 value = self.model.getParam(item) 2979 ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),2980 style=wx.TE_PROCESS_ENTER)2967 ctl1 = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 2968 style=wx.TE_PROCESS_ENTER) 2981 2969 ctl1.SetToolTipString(\ 2982 2970 "Hit 'Enter' after typing to update the plot.") … … 2999 2987 3000 2988 ix += 1 3001 ctl3 = self.ModelTextCtrl(self, -1,3002 3003 2989 ctl3 = ModelTextCtrl(self, -1, 2990 size=(_BOX_WIDTH / 1.9, 20), 2991 style=wx.TE_PROCESS_ENTER, 3004 2992 text_enter_callback=self._onparamRangeEnter) 3005 2993 min_bound = self.model.details[item][1] … … 3011 2999 3012 3000 ix += 1 3013 ctl4 = self.ModelTextCtrl(self, -1,3014 3015 3001 ctl4 = ModelTextCtrl(self, -1, 3002 size=(_BOX_WIDTH / 1.9, 20), 3003 style=wx.TE_PROCESS_ENTER, 3016 3004 text_enter_callback=self._onparamRangeEnter) 3017 3005 max_bound = self.model.details[item][2] … … 3115 3103 ix += 1 3116 3104 value = self.model.getParam(item) 3117 ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),3118 style=wx.TE_PROCESS_ENTER)3105 ctl1 = ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20), 3106 style=wx.TE_PROCESS_ENTER) 3119 3107 ctl1.SetToolTipString(\ 3120 3108 "Hit 'Enter' after typing to update the plot.") … … 3142 3130 3143 3131 ix += 1 3144 ctl3 = self.ModelTextCtrl(self, -1,3145 3146 3132 ctl3 = ModelTextCtrl(self, -1, 3133 size=(_BOX_WIDTH / 1.8, 20), 3134 style=wx.TE_PROCESS_ENTER, 3147 3135 text_enter_callback=self._onparamRangeEnter) 3148 3136 … … 3152 3140 3153 3141 ix += 1 3154 ctl4 = self.ModelTextCtrl(self, -1,3155 3156 3142 ctl4 = ModelTextCtrl(self, -1, 3143 size=(_BOX_WIDTH / 1.8, 20), 3144 style=wx.TE_PROCESS_ENTER, 3157 3145 text_enter_callback=self._onparamRangeEnter) 3158 3146 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.