Changeset ae84427 in sasview for calculatorview


Ignore:
Timestamp:
Apr 20, 2013 7:14:41 PM (12 years ago)
Author:
Jae Cho <jhjcho@…>
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:
ba152f1
Parents:
d4895dd
Message:

mdi frames for main applications

Location:
calculatorview/src/sans/perspectives/calculator
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • calculatorview/src/sans/perspectives/calculator/calculator.py

    r3e001f9 rae84427  
    1212################################################################################ 
    1313 
    14  
     14import wx 
    1515from sans.guiframe.plugin_base import PluginBase 
    1616from sans.perspectives.calculator.data_operator import DataOperatorWindow 
     17from sans.perspectives.calculator.data_editor import DataEditorWindow 
     18from sans.perspectives.calculator.kiessig_calculator_panel import KiessigWindow 
     19from sans.perspectives.calculator.sld_panel import SldWindow 
     20from sans.perspectives.calculator.density_panel import DensityWindow 
     21from sans.perspectives.calculator.slit_length_calculator_panel \ 
     22            import SlitLengthCalculatorWindow 
     23from sans.perspectives.calculator.resolution_calculator_panel \ 
     24            import ResolutionWindow 
     25from sans.perspectives.calculator.gen_scatter_panel import SasGenWindow 
     26from sans.perspectives.calculator.image_viewer import ImageView 
     27from sans.perspectives.calculator.pyconsole import PyConsole 
    1728import logging 
    1829 
     
    2738        logging.info("Calculator plug-in started")    
    2839        self.sub_menu = "Tool"  
     40        self.data_edit_frame = None 
    2941        # data operator use one frame all the time 
    3042        self.data_operator_frame = None 
     43        self.kiessig_frame = None 
     44        self.sld_frame = None 
     45        self.cal_md_frame = None 
     46        self.cal_slit_frame = None 
     47        self.cal_res_frame = None 
     48        self.gen_frame = None 
     49        self.image_view = None 
     50        self.py_frame = None 
     51         
    3152         
    3253    def help(self, evt): 
     
    88109        Edit meta data  
    89110        """ 
    90         from sans.perspectives.calculator.data_editor import DataEditorWindow 
    91         frame = DataEditorWindow(parent=self.parent, data=[], 
    92                                   title="Data Editor") 
    93         self.put_icon(frame) 
    94         frame.Show(True) 
     111        if self.data_edit_frame == None: 
     112            self.data_edit_frame = DataEditorWindow(parent=self.parent,  
     113                                                    manager=self, data=[], 
     114                                                    title="Data Editor") 
     115            self.put_icon(self.data_edit_frame) 
     116        self.data_edit_frame.Show(False)     
     117        self.data_edit_frame.Show(True) 
    95118               
    96119    def on_data_operation(self, event): 
     
    101124            # Use one frame all the time 
    102125            self.data_operator_frame = DataOperatorWindow(parent=self.parent,  
     126                                                manager=self,  
    103127                                                title="Data Operation") 
    104128            self.put_icon(self.data_operator_frame) 
     
    111135        Compute the Kiessig thickness 
    112136        """ 
    113         from sans.perspectives.calculator.kiessig_calculator_panel \ 
    114         import KiessigWindow 
    115         frame = KiessigWindow() 
    116         self.put_icon(frame) 
    117         frame.Show(True)  
    118      
     137        if self.kiessig_frame == None: 
     138            frame = KiessigWindow(parent=self.parent, manager=self) 
     139            self.put_icon(frame) 
     140            self.kiessig_frame = frame 
     141        self.kiessig_frame.Show(False) 
     142        self.kiessig_frame.Show(True)  
     143         
    119144    def on_calculate_sld(self, event): 
    120145        """ 
    121146        Compute the scattering length density of molecula 
    122147        """ 
    123         from sans.perspectives.calculator.sld_panel import SldWindow 
    124         frame = SldWindow(base=self.parent) 
    125         self.put_icon(frame) 
    126         frame.Show(True)  
     148        if self.sld_frame == None: 
     149            frame = SldWindow(base=self.parent, manager=self) 
     150            self.put_icon(frame) 
     151            self.sld_frame = frame 
     152        self.sld_frame.Show(False) 
     153        self.sld_frame.Show(True)  
    127154     
    128155    def on_calculate_dv(self, event): 
     
    130157        Compute the mass density or molar voulme 
    131158        """ 
    132         from sans.perspectives.calculator.density_panel import DensityWindow 
    133         frame = DensityWindow(base=self.parent) 
    134         self.put_icon(frame) 
    135         frame.Show(True)  
     159        if self.cal_md_frame == None: 
     160            frame = DensityWindow(base=self.parent, manager=self) 
     161            self.put_icon(frame) 
     162            self.cal_md_frame = frame 
     163        self.cal_md_frame.Show(False) 
     164        self.cal_md_frame.Show(True)  
    136165               
    137166    def on_calculate_slit_size(self, event): 
     
    139168        Compute the slit size a given data 
    140169        """ 
    141         from sans.perspectives.calculator.slit_length_calculator_panel \ 
    142         import SlitLengthCalculatorWindow 
    143         frame = SlitLengthCalculatorWindow(parent=self.parent)   
    144         self.put_icon(frame)   
    145         frame.Show(True) 
     170        if self.cal_slit_frame == None: 
     171            frame = SlitLengthCalculatorWindow(parent=self.parent, manager=self)   
     172            self.put_icon(frame) 
     173            self.cal_slit_frame = frame  
     174        self.cal_slit_frame.Show(False)      
     175        self.cal_slit_frame.Show(True) 
    146176         
    147177    def on_calculate_resoltuion(self, event): 
     
    149179        Estimate the instrumental resolution 
    150180        """ 
    151         from sans.perspectives.calculator.resolution_calculator_panel \ 
    152         import ResolutionWindow 
    153         frame = ResolutionWindow(parent=self.parent) 
    154         self.put_icon(frame) 
    155         frame.Show(True)  
     181        if self.cal_res_frame == None: 
     182            frame = ResolutionWindow(parent=self.parent, manager=self) 
     183            self.put_icon(frame) 
     184            self.cal_res_frame = frame 
     185        self.cal_res_frame.Show(False) 
     186        self.cal_res_frame.Show(True)  
    156187         
    157188    def on_gen_model(self, event): 
     
    159190        On Generic model menu event 
    160191        """ 
    161         from sans.perspectives.calculator.gen_scatter_panel \ 
    162         import SasGenWindow 
    163         frame = SasGenWindow(parent=self.parent) 
    164         self.put_icon(frame) 
    165         frame.Show(True)  
     192        if self.gen_frame == None: 
     193            frame = SasGenWindow(parent=self.parent, manager=self) 
     194            self.put_icon(frame) 
     195            self.gen_frame = frame 
     196        self.gen_frame.Show(False) 
     197        self.gen_frame.Show(True)  
    166198 
    167199    def on_image_viewer(self, event): 
     
    171203        :param event: menu event 
    172204        """ 
    173         from sans.perspectives.calculator.image_viewer import ImageView 
    174         image_view = ImageView(parent=self.parent) 
    175         image_view.load() 
     205        self.image_view = ImageView(parent=self.parent) 
     206        self.image_view.load() 
    176207         
    177208    def on_python_console(self, event): 
     
    189220        :param filename: file name to open in editor 
    190221        """ 
    191         from sans.perspectives.calculator.pyconsole import PyConsole 
    192         frame = PyConsole(parent=self.parent, filename=filename) 
    193         self.put_icon(frame) 
    194         frame.Show(True)  
     222        if self.py_frame == None: 
     223            frame = PyConsole(parent=self.parent, base=self,  
     224                              filename=filename) 
     225            self.put_icon(frame) 
     226            self.py_frame = frame 
     227        self.py_frame.Show(False) 
     228        self.py_frame.Show(True)  
    195229         
    196230    def put_icon(self, frame): 
  • calculatorview/src/sans/perspectives/calculator/data_editor.py

    r7c720e9 rae84427  
    636636         
    637637class DataEditorWindow(wx.Frame): 
    638     def __init__(self, parent, data=None, *args, **kwds): 
     638    def __init__(self, parent, manager, data=None, *args, **kwds): 
    639639        kwds["size"] = (PANEL_WIDTH, PANEL_HEIGTH) 
    640640        wx.Frame.__init__(self, parent, *args, **kwds) 
    641641        self.parent = parent 
     642        self.manager = manager 
    642643        self.panel = DataEditorPanel(parent=self, data=data) 
    643644        self.Show() 
  • calculatorview/src/sans/perspectives/calculator/data_operator.py

    r657e52c rae84427  
    615615        event.Skip() 
    616616     
     617    def disconnect_panels(self): 
     618        """ 
     619        """ 
     620        self.out_pic.connect.disconnect() 
     621        self.equal_pic.connect.disconnect() 
     622        self.data1_pic.connect.disconnect() 
     623        self.operator_pic.connect.disconnect() 
     624        self.data2_pic.connect.disconnect() 
     625     
    617626    def on_close(self, event): 
    618627        """ 
     
    926935         
    927936class DataOperatorWindow(wx.Frame): 
    928     def __init__(self, parent, *args, **kwds): 
     937    def __init__(self, parent, manager, *args, **kwds): 
    929938        kwds["size"] = (PANEL_WIDTH, PANEL_HEIGTH) 
    930939        wx.Frame.__init__(self, parent, *args, **kwds) 
    931940        self.parent = parent 
     941        self.manager = manager 
    932942        self.panel = DataOperPanel(parent=self) 
    933943        wx.EVT_CLOSE(self, self.OnClose) 
     
    939949        On close event 
    940950        """ 
    941         self.Show(False) 
     951        if self.manager != None: 
     952            self.manager.data_operator_frame = None 
     953        self.panel.disconnect_panels() 
     954        self.Destroy() 
    942955 
    943956         
  • calculatorview/src/sans/perspectives/calculator/density_panel.py

    r0efca36 rae84427  
    375375    """ 
    376376    def __init__(self, parent=None, title="Density/Volume Calculator", 
    377                   base=None, size=(PANEL_SIZE, PANEL_SIZE/1.7), *args, **kwds): 
     377                  base=None, manager=None,  
     378                  size=(PANEL_SIZE, PANEL_SIZE/1.7), *args, **kwds): 
    378379        """ 
    379380        """ 
     
    383384        """ 
    384385        """ 
     386        self.manager = manager 
    385387        self.panel = DensityPanel(self, base=base) 
     388        self.Bind(wx.EVT_CLOSE, self.on_close) 
    386389        self.Centre() 
    387390        self.Show(True) 
     391     
     392    def on_close(self, event): 
     393        """ 
     394        On close event 
     395        """ 
     396        if self.manager != None: 
     397            self.manager.cal_md_frame = None 
     398        self.Destroy() 
     399         
    388400         
    389401class ViewApp(wx.App): 
  • calculatorview/src/sans/perspectives/calculator/gen_scatter_panel.py

    rd4895dd rae84427  
    1919matplotlib.use('WXAgg') 
    2020 
     21#from sans.guiframe.gui_manager import MDIFrame 
    2122from data_util.calcthread import CalcThread 
    2223from sans.guiframe.local_perspectives.plotting.SimplePlot import PlotFrame 
     
    11131114        num_graph = str(self.graph_num) 
    11141115        wx.CallAfter(self.parent.draw_graph, new_plot,  
    1115                      title="Graph %s: "% num_graph + new_plot.id ) 
     1116                     title="GEN Graph %s: "% num_graph + new_plot.id ) 
    11161117        self.graph_num += 1 
    11171118                 
     
    11721173        num_graph = str(self.graph_num) 
    11731174        wx.CallAfter(self.parent.draw_graph, new_plot,  
    1174                      title="Graph %s: "% num_graph + new_plot.id ) 
     1175                     title="GEN Graph %s: "% num_graph + new_plot.id ) 
    11751176        self.graph_num += 1 
    1176          
     1177          
    11771178    def set_scale2d(self, scale): 
    11781179        """ 
     
    17941795    GEN SAS main window 
    17951796    """ 
    1796     def __init__(self, parent=None, title="Generic Scattering Calculator", 
     1797    def __init__(self, parent=None, manager= None, title="Generic Scattering Calculator", 
    17971798                size=(PANEL_WIDTH * 1.3, PANEL_HEIGHT * 1.65), *args, **kwds): 
    17981799        """ 
     
    18041805        wx.Frame.__init__(self, parent, *args, **kwds) 
    18051806        self.parent = parent 
     1807        self.base = manager 
    18061808        self.omfpanel = OmfPanel(parent=self) 
    18071809        self.panel = SasGenPanel(parent=self) 
     
    18151817        self._plot_title = '' 
    18161818        self.scale2d = 'log_{10}' 
     1819        self.Bind(wx.EVT_CLOSE, self.on_close) 
    18171820         
    18181821        self._build_toolbar() 
    1819         self._build_menubar() 
    18201822         
    18211823        self.build_panels() 
     
    20082010        frame.Show(True) 
    20092011        frame.SetFocus() 
    2010      
     2012 
     2013    def set_schedule_full_draw(self, panel=None, func='del'):   
     2014        """ 
     2015        Send full draw to gui frame 
     2016        """ 
     2017        self.parent.set_schedule_full_draw(panel, func) 
     2018         
    20112019    def get_npix(self): 
    20122020        """ 
     
    20822090        Close 
    20832091        """ 
     2092        if self.base != None: 
     2093            self.base.gen_frame = None 
    20842094        self.Destroy() 
    20852095         
  • calculatorview/src/sans/perspectives/calculator/image_viewer.py

    r3e001f9 rae84427  
    7070                    parent.put_icon(plot_frame) 
    7171            except: 
     72                print "parent", parent 
     73                raise 
    7274                err_msg += "Failed to load '%s'.\n"% basename 
    7375        if err_msg: 
  • calculatorview/src/sans/perspectives/calculator/kiessig_calculator_panel.py

    r7d45a56 rae84427  
    191191              
    192192class KiessigWindow(wx.Frame): 
    193     def __init__(self, parent=None, title="Kiessig Thickness Calculator", 
    194                   size=(PANEL_WIDTH,PANEL_HEIGHT), *args, **kwds): 
     193    def __init__(self, parent=None, manager=None,  
     194                 title="Kiessig Thickness Calculator", 
     195                 size=(PANEL_WIDTH,PANEL_HEIGHT), *args, **kwds): 
    195196        kwds['title'] = title 
    196197        kwds['size'] = size 
    197198        wx.Frame.__init__(self, parent, *args, **kwds) 
    198199        self.parent = parent 
     200        self.manager = manager 
    199201        self.panel = KiessigThicknessCalculatorPanel(parent=self) 
     202        self.Bind(wx.EVT_CLOSE, self.on_close) 
    200203        self.Centre() 
    201204        self.Show(True) 
     205         
     206    def on_close(self, event): 
     207        """ 
     208        Close event 
     209        """ 
     210        if self.manager != None: 
     211            self.manager.kiessig_frame = None 
     212        self.Destroy() 
     213 
    202214         
    203215if __name__ == "__main__":  
  • calculatorview/src/sans/perspectives/calculator/pyconsole.py

    rf706e09c rae84427  
    4040    ## Flag to tell the AUI manager to put this panel in the center pane 
    4141    CENTER_PANE = False 
    42     def __init__(self, parent=None, manager=None, panel=None, 
     42    def __init__(self, parent=None, base=None, manager=None, panel=None, 
    4343                    title='Python Shell/Editor', filename=None, 
    4444                    size=(PANEL_WIDTH, PANEL_HEIGHT)): 
     
    4949        self.parent = parent 
    5050        self._manager = manager 
     51        self.base = base 
    5152        self.panel = panel 
    5253        self._add_menu() 
     
    6869        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateCompileMenu, id=ID_COMPILE) 
    6970        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateCompileMenu, id=ID_RUN) 
     71        self.Bind(wx.EVT_CLOSE, self.on_close) 
    7072        if not title.count('Python Shell'): 
    7173            # Delete menu item (open and new) if not python shell 
     
    293295            event.Enable(False) 
    294296             
     297    def on_close(self, event): 
     298        """ 
     299        Close event 
     300        """ 
     301        if self.base != None: 
     302            self.base.py_frame = None 
     303        self.Destroy() 
     304                     
    295305ABOUT =  "Welcome to Python %s! \n\n"% sys.version.split()[0] 
    296306ABOUT += "This uses Py Shell/Editor in wx (developed by Patrick K. O'Brien).\n" 
  • calculatorview/src/sans/perspectives/calculator/resolution_calculator_panel.py

    re95614e rae84427  
    13931393    Resolution Window 
    13941394    """ 
    1395     def __init__(self, parent = None, title = "SANS Resolution Estimator", 
    1396                   size=(PANEL_WIDTH * 2, PANEL_HEIGHT), *args, **kwds): 
     1395    def __init__(self, parent = None, manager=None,  
     1396                 title = "SANS Resolution Estimator", 
     1397                 size=(PANEL_WIDTH * 2, PANEL_HEIGHT), *args, **kwds): 
    13971398        kwds['title'] = title 
    13981399        kwds['size'] = size 
    13991400        wx.Frame.__init__(self, parent=None, *args, **kwds) 
    14001401        self.parent = parent 
     1402        self.manager = manager 
    14011403        self.panel = ResolutionCalculatorPanel(parent=self) 
     1404        self.Bind(wx.EVT_CLOSE, self.OnClose) 
    14021405        self.Centre() 
    14031406        self.Show(True) 
    1404         wx.EVT_CLOSE(self, self.OnClose) 
    14051407     
    14061408    def OnClose(self, event):   
     
    14091411        """ 
    14101412        _pylab_helpers.Gcf.figs = {} 
    1411         self.Destroy()   
     1413        if self.manager != None: 
     1414            self.manager.cal_res_frame = None 
     1415        self.Destroy()  
    14121416 
    14131417         
  • calculatorview/src/sans/perspectives/calculator/sld_panel.py

    r9c30b8c rae84427  
    441441    """ 
    442442    def __init__(self, parent=None, title="SLD Calculator", 
    443                   base=None, size=(PANEL_SIZE, PANEL_SIZE), *args, **kwds): 
     443                  base=None, manager=None,  
     444                  size=(PANEL_SIZE, PANEL_SIZE), *args, **kwds): 
    444445        """ 
    445446        """ 
     
    449450        """ 
    450451        """ 
     452        self.parent = parent 
     453        self.base = base 
     454        self.manager = manager 
    451455        self.panel = SldPanel(self, base=base) 
     456        self.Bind(wx.EVT_CLOSE, self.on_close) 
    452457        self.Centre() 
    453458        self.Show(True) 
     459     
     460    def on_close(self, event): 
     461        """ 
     462        On close event 
     463        """ 
     464        if self.manager != None: 
     465            self.manager.sld_frame = None 
     466        self.Destroy() 
     467         
    454468         
    455469class ViewApp(wx.App): 
  • calculatorview/src/sans/perspectives/calculator/slit_length_calculator_panel.py

    r29a90b0 rae84427  
    254254    """ 
    255255    """ 
    256     def __init__(self, parent=None, title="Slit Size Calculator", 
     256    def __init__(self, parent=None, manager=None, title="Slit Size Calculator", 
    257257                size=(PANEL_WIDTH,PANEL_HEIGHT), *args, **kwds): 
    258258        """ 
     
    262262        wx.Frame.__init__(self, parent, *args, **kwds) 
    263263        self.parent = parent 
     264        self.manager = manager 
    264265        self.panel = SlitLengthCalculatorPanel(parent=self) 
     266        self.Bind(wx.EVT_CLOSE, self.on_close) 
    265267        self.Centre() 
    266268        self.Show(True) 
     269 
     270    def on_close(self, event): 
     271        """ 
     272        Close event 
     273        """ 
     274        if self.manager != None: 
     275            self.manager.cal_slit_frame = None 
     276        self.Destroy() 
    267277         
    268278if __name__ == "__main__":  
Note: See TracChangeset for help on using the changeset viewer.