pyMez.Code.FrontEnds.AdvancedInterfaceFrame API documentation
Description: Advanced wx.Frame with standard containers for interface and control this is meant as a template for...

Top

# pyMez.Code.FrontEnds.AdvancedInterfaceFrame module

Advanced wx.Frame with standard containers for interface and control this is meant as a template for GUI design and a test bed for pyMez

## Help

`pyMez.Code.FrontEnds`

Documentation Home | API Documentation Home | Examples Home | Index

Show source ≡

    #-----------------------------------------------------------------------------
    # Name:        AdvancedInterfaceFrame.py
    # Purpose:     An advanced frame design that includes control and interface areas
    # and all of the standard menu,tool and status bars.
    #
    # Author:      Aric Sanders
    #
    # Created:     2010/04/20
    # RCS-ID:      $Id: AdvancedInterfaceFrame.py $
    #-----------------------------------------------------------------------------
    #Boa:Frame:AdvancedInterfaceFrame
    """ Advanced wx.Frame with standard containers for interface and control this
    is meant as a template for GUI design and a test bed for pyMez

    Help
    ---------------
    <a href="./index.html">`pyMez.Code.FrontEnds`</a>
    <div>
    <a href="../../../pyMez_Documentation.html">Documentation Home</a> |
    <a href="../../index.html">API Documentation Home</a> |
    <a href="../../../Examples/html/Examples_Home.html">Examples Home</a> |
    <a href="../../../Reference_Index.html">Index</a>
    </div>"""
    import sys
    import os
    import wx
    from types import *
    import re
    import copy
    # Add pyMez to sys.path (this allows imports that don't go through pyMez/__init__.py
    sys.path.append(os.path.join(os.path.dirname( __file__ ), '..','..'))
    try:
        #import pyMez
        from Code.FrontEnds.IEPanel import *
        from Code.FrontEnds.EndOfDayDialog import *
        #from Code.FrontEnds.ShellPanel import *
        from Code.FrontEnds.SimpleLogLowerInterfacePanel import *
        from Code.FrontEnds.SimpleArbDBLowerInterfacePanel import *
        from Code.FrontEnds.VisaDialog import *
        from Code.FrontEnds.MatplotlibWxPanel import *
        from Code.FrontEnds.KeithleyIVPanel import *
    except:
        print("""Cannot load Shell Panel or IEPanel add The folder above pyMeaure to sys.path
                Also check that the Boa Constructor Source is on sys.path """)
        raise

    #-------------------------------------------------------------------------------
    #Constants
    PYMEASURE_ROOT=os.path.join(os.path.dirname( __file__ ), '..','..')
    FRONTENDS_DIRECTORY=os.path.join(PYMEASURE_ROOT,'Code','FrontEnds')
    IMAGE_DIRECTORY=os.path.join(PYMEASURE_ROOT,'Code','FrontEnds','img')
    JAVASCRIPT_STRING="""<html>
    <head>
    <script type="text/javascript">
    function disp_prompt()
    {
    var fname=prompt("Please enter your name:","Your name")
    document.getElementById("msg").innerHTML="Greetings " + fname
    }
    </script>
    </head>
    <body>

    <input type="button" onclick="disp_prompt()" value="Display a prompt box" />
    <br /><br />

    <div id="msg"></div>

    </body>
    </html>

    """

    PANELS=['ShellPanel','IEPanel',
        'SimpleLogLowerInterfacePanel','SimpleArbDBLowerInterfacePanel','MatplotlibWxPanel','KeithleyIVPanel']

    #-------------------------------------------------------------------------------
    #Functions

    def get_top_parent(window):
        """Returns the topmost parent window"""
        try:
            parent=window.Parent
            print(parent)
            if parent in [None,''] or not isinstance(parent, InstanceType):
                raise
            get_top_parent(parent)
        except:
            return window
    def convert_datetime(ISO_datetime_string,format_string='%m/%d/%Y at %H:%M:%S GMT') :
        "Converts from long ISO format 2010-05-13T21:54:25.755000 to something reasonable"
        #strip any thing smaller than a second
        time_seconds=ISO_datetime_string.split('.')[0]

        #then get it into a datetime format
        time_datetime=datetime.datetime.strptime(time_seconds,"%Y-%m-%dT%H:%M:%S")
        return time_datetime.strftime(format_string)

    #-------------------------------------------------------------------------------
    # Boa Code

    def create(parent):
        return AdvancedInterfaceFrame(parent)

    [wxID_BASICINTERFACEFRAME, wxID_BASICINTERFACEFRAMEARBDBPANEL,
     wxID_BASICINTERFACEFRAMEBUTTON1, wxID_BASICINTERFACEFRAMEBUTTON2,
     wxID_BASICINTERFACEFRAMEBUTTON3, wxID_BASICINTERFACEFRAMEDISPLAY,
     wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON,
     wxID_BASICINTERFACEFRAMEEXECUTEBUTTON,
     wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON,
     wxID_BASICINTERFACEFRAMEINTERFACESTATUSBAR,
     wxID_BASICINTERFACEFRAMEINTERFACETOOLBAR,
     wxID_BASICINTERFACEFRAMELEFTINTERFACEPANEL,
     wxID_BASICINTERFACEFRAMELOGSPANEL, wxID_BASICINTERFACEFRAMELOWERCONTROLPANEL,
     wxID_BASICINTERFACEFRAMELOWERINTERFACE,
     wxID_BASICINTERFACEFRAMELOWERINTERFACEPANEL,
     wxID_BASICINTERFACEFRAMEMAINPANEL, wxID_BASICINTERFACEFRAMEPANEL1,
     wxID_BASICINTERFACEFRAMEPLOTPANEL,
     wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON,
     wxID_BASICINTERFACEFRAMERIGHTCONTROLPANEL, wxID_BASICINTERFACEFRAMESHELL,
     wxID_BASICINTERFACEFRAMESTATESBUTTON, wxID_BASICINTERFACEFRAMEUPPERINTERFACE,
     wxID_BASICINTERFACEFRAMEUPPERINTERFACEPANEL,
     wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON,
    ] = [wx.NewId() for _init_ctrls in range(26)]

    [wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA,
     wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE,
    ] = [wx.NewId() for _init_coll_InterfaceToolBar_Tools in range(2)]

    [wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS,
     wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON,
    ] = [wx.NewId() for _init_coll_ToolMenu_Items in range(2)]

    [wxID_BASICINTERFACEFRAMEFILEMENUNEW, wxID_BASICINTERFACEFRAMEFILEMENUOPEN,
    ] = [wx.NewId() for _init_coll_FileMenu_Items in range(2)]

    class AdvancedInterfaceFrame(wx.Frame):
        # Needs to have an explicit list for the designer to work
        _custom_classes = {'wx.Panel':['ShellPanel','IEPanel',
        'SimpleLogLowerInterfacePanel','SimpleArbDBLowerInterfacePanel','MatplotlibWxPanel','KeithleyIVPanel'],'wx.Dialog':'EndOfDayDialog'}
        def _init_coll_boxSizer7_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.StatesButton, 0, border=0, flag=0)
            parent.AddWindow(self.InstrumentsButton, 0, border=0, flag=0)

        def _init_coll_boxSizer6_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.button1, 0, border=0, flag=0)
            parent.AddWindow(self.button2, 0, border=0, flag=0)
            parent.AddWindow(self.button3, 0, border=0, flag=0)
            parent.AddWindow(self.ExecuteButton, 0, border=0, flag=0)
            parent.AddWindow(self.ReplaceRightControlButtton, 0, border=0, flag=0)
            parent.AddWindow(self.EndOfTheDayButton, 0, border=0, flag=0)
            parent.AddWindow(self.VisaDialogButton, 0, border=0, flag=0)

        def _init_coll_boxSizer4_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.UpperInterface, 1, border=2,
                  flag=wx.EXPAND | wx.ALL)

        def _init_coll_boxSizer5_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.LowerInterface, 1, border=2,
                  flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer3_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.UpperInterfacePanel, 4, border=2,
                  flag=wx.ALL | wx.EXPAND)
            parent.AddWindow(self.LowerInterfacePanel, 0, border=2,
                  flag=wx.ALL | wx.EXPAND)
            parent.AddWindow(self.LowerControlPanel,0, border=2,
                  flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer1_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.MainPanel, 1, border=1, flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer2_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.LeftInterfacePanel, 1, border=2,
                  flag=wx.EXPAND | wx.ALL)
            parent.AddWindow(self.RightControlPanel, 0, border=2,
                  flag=wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND)

        def _init_coll_ToolMenu_Items(self, parent):
            # generated method, don't edit

            parent.Append(help='Runs a python program as a script',
                  id=wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON,
                  kind=wx.ITEM_NORMAL, text='Run Python Module As a Script')
            parent.Append(help='Load Scripts from a python Module',
                  id=wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS,
                  kind=wx.ITEM_NORMAL, text='Load Scripts from Module')
            self.Bind(wx.EVT_MENU, self.OnToolMenuRun_pythonMenu,
                  id=wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON)
            self.Bind(wx.EVT_MENU, self.OnToolMenuLoadscriptsMenu,
                  id=wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS)

        def _init_coll_FileMenu_Items(self, parent):
            # generated method, don't edit

            parent.Append(help='Open a file',
                  id=wxID_BASICINTERFACEFRAMEFILEMENUOPEN, kind=wx.ITEM_NORMAL,
                  text='Open')
            parent.Append(help='Adds a new panel to main notebook',
                  id=wxID_BASICINTERFACEFRAMEFILEMENUNEW, kind=wx.ITEM_NORMAL,
                  text='New Panel')
            self.Bind(wx.EVT_MENU, self.OnFileMenuOpenMenu,
                  id=wxID_BASICINTERFACEFRAMEFILEMENUOPEN)
            self.Bind(wx.EVT_MENU, self.OnFileMenuNewMenu,
                  id=wxID_BASICINTERFACEFRAMEFILEMENUNEW)

        def _init_coll_InterfaceMenuBar_Menus(self, parent):
            # generated method, don't edit

            parent.Append(menu=self.FileMenu, title='File')
            parent.Append(menu=self.HelpMenu, title='Help')
            parent.Append(menu=self.ToolMenu, title='Tools')

        def _init_coll_UpperInterface_Pages(self, parent):
            # generated method, don't edit

            parent.AddPage(imageId=-1, page=self.Display, select=True,
                  text='Display')
            parent.AddPage(imageId=-1, page=self.PlotPanel, select=False,
                  text='Plot')
            parent.AddPage(imageId=-1, page=self.panel1, select=False,
                  text='Keithley IV')

        def _init_coll_LowerInterface_Pages(self, parent):
            # generated method, don't edit

            parent.AddPage(imageId=-1, page=self.Shell, select=True, text='Shell')
            parent.AddPage(imageId=-1, page=self.LogsPanel, select=False,
                  text='Logs')
            parent.AddPage(imageId=-1, page=self.ArbDBPanel, select=False,
                  text='Files')

        def _init_coll_InterfaceStatusBar_Fields(self, parent):
            # generated method, don't edit
            parent.SetFieldsCount(1)

            parent.SetStatusText(number=0, text='Status')

            parent.SetStatusWidths([-1])

        def _init_coll_InterfaceToolBar_Tools(self, parent):
            # generated method, don't edit

            parent.DoAddTool(bitmap=wx.Bitmap(str(os.path.join(IMAGE_DIRECTORY,'Component.png')),
                  wx.BITMAP_TYPE_PNG), bmpDisabled=wx.NullBitmap,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA,
                  kind=wx.ITEM_NORMAL, label='Boa',
                  longHelp='Launch Boa Constructor',
                  shortHelp='Launch Boa Constructor')
            parent.DoAddTool(bitmap=wx.Bitmap(str(os.path.join(IMAGE_DIRECTORY,'jupyter-logo.png')),
                  wx.BITMAP_TYPE_PNG), bmpDisabled=wx.NullBitmap,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE,
                  kind=wx.ITEM_NORMAL, label='',
                  longHelp='Launch SAGE and display ', shortHelp='Launch SAGE')
            self.Bind(wx.EVT_TOOL, self.OnInterfaceToolBarLaunchboaTool,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA)
            self.Bind(wx.EVT_TOOL, self.OnInterfaceToolBarTools1Tool,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE)

            parent.Realize()

        def _init_sizers(self):
            # generated method, don't edit
            self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer2 = wx.BoxSizer(orient=wx.HORIZONTAL)

            self.boxSizer3 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer4 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer5 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer6 = wx.BoxSizer(orient=wx.HORIZONTAL)

            self.boxSizer7 = wx.BoxSizer(orient=wx.VERTICAL)

            self._init_coll_boxSizer1_Items(self.boxSizer1)
            self._init_coll_boxSizer2_Items(self.boxSizer2)
            self._init_coll_boxSizer3_Items(self.boxSizer3)
            self._init_coll_boxSizer4_Items(self.boxSizer4)
            self._init_coll_boxSizer5_Items(self.boxSizer5)
            self._init_coll_boxSizer6_Items(self.boxSizer6)
            self._init_coll_boxSizer7_Items(self.boxSizer7)

            self.SetSizer(self.boxSizer1)
            self.RightControlPanel.SetSizer(self.boxSizer7)
            self.LowerInterfacePanel.SetSizer(self.boxSizer5)
            self.LeftInterfacePanel.SetSizer(self.boxSizer3)
            self.UpperInterfacePanel.SetSizer(self.boxSizer4)
            self.LowerControlPanel.SetSizer(self.boxSizer6)
            self.MainPanel.SetSizer(self.boxSizer2)

        def _init_utils(self):
            # generated method, don't edit
            self.FileMenu = wx.Menu(title='')

            self.HelpMenu = wx.Menu(title='')

            self.InterfaceMenuBar = wx.MenuBar()

            self.ToolMenu = wx.Menu(title='Tools')

            self._init_coll_FileMenu_Items(self.FileMenu)
            self._init_coll_InterfaceMenuBar_Menus(self.InterfaceMenuBar)
            self._init_coll_ToolMenu_Items(self.ToolMenu)

        def _init_ctrls(self, prnt):
            # generated method, don't edit
            wx.Frame.__init__(self, id=wxID_BASICINTERFACEFRAME,
                  name='AdvancedInterfaceFrame', parent=prnt, pos=wx.Point(-5, 106),
                  size=wx.Size(1448, 874), style=wx.DEFAULT_FRAME_STYLE,
                  title='Advanced Interface')
            self._init_utils()
            self.SetClientSize(wx.Size(1440, 840))
            self.SetMenuBar(self.InterfaceMenuBar)
            self.Bind(wx.EVT_CLOSE, self.OnBasicInterfaceFrameClose)

            self.InterfaceStatusBar = wx.StatusBar(id=wxID_BASICINTERFACEFRAMEINTERFACESTATUSBAR,
                  name='InterfaceStatusBar', parent=self, style=0)
            self.InterfaceStatusBar.SetHelpText('Status')
            self.InterfaceStatusBar.SetLabel('')
            self._init_coll_InterfaceStatusBar_Fields(self.InterfaceStatusBar)
            self.SetStatusBar(self.InterfaceStatusBar)

            self.InterfaceToolBar = wx.ToolBar(id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBAR,
                  name='InterfaceToolBar', parent=self, pos=wx.Point(0, 0),
                  size=wx.Size(1440, 40),
                  style=wx.TAB_TRAVERSAL | wx.TB_3DBUTTONS | wx.TB_HORIZONTAL | wx.MAXIMIZE_BOX | wx.NO_BORDER)
            self.InterfaceToolBar.SetHelpText('Launch Boa Contstructor')
            self.InterfaceToolBar.SetToolTipString('InterfaceToolBar')
            self.InterfaceToolBar.SetToolBitmapSize(wx.Size(30, 30))
            self.InterfaceToolBar.SetToolPacking(0)
            self.InterfaceToolBar.SetToolSeparation(1)
            self.SetToolBar(self.InterfaceToolBar)

            self.MainPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEMAINPANEL,
                  name='MainPanel', parent=self, pos=wx.Point(1, 1),
                  size=wx.Size(1438, 838), style=wx.TAB_TRAVERSAL)

            self.LeftInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELEFTINTERFACEPANEL,
                  name='LeftInterfacePanel', parent=self.MainPanel, pos=wx.Point(2,
                  2), size=wx.Size(1355, 834), style=wx.TAB_TRAVERSAL)

            self.RightControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMERIGHTCONTROLPANEL,
                  name='RightControlPanel', parent=self.MainPanel,
                  pos=wx.Point(1361, 2), size=wx.Size(75, 834),
                  style=wx.TAB_TRAVERSAL)
            self.RightControlPanel.SetBackgroundColour(wx.Colour(192, 192, 192))

            self.LowerControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERCONTROLPANEL,
                  name='LowerControlPanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 808), size=wx.Size(1351, 24),
                  style=wx.TAB_TRAVERSAL)
            self.LowerControlPanel.SetBackgroundColour(wx.Colour(0, 255, 128))

            self.UpperInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACEPANEL,
                  name='UpperInterfacePanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1351, 640),
                  style=wx.TAB_TRAVERSAL)
            self.UpperInterfacePanel.SetBackgroundColour(wx.Colour(128, 128, 128))
            self.UpperInterfacePanel.SetHelpText('UpperInterfacePanel')

            self.LowerInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERINTERFACEPANEL,
                  name='LowerInterfacePanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 646), size=wx.Size(1351, 158),
                  style=wx.TAB_TRAVERSAL)
            self.LowerInterfacePanel.SetBackgroundColour(wx.Colour(192, 192, 192))

            self.UpperInterface = wx.Notebook(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACE,
                  name='UpperInterface', parent=self.UpperInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1347, 636), style=0)

            self.LowerInterface = wx.Treebook(id=wxID_BASICINTERFACEFRAMELOWERINTERFACE,
                  name='LowerInterface', parent=self.LowerInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1347, 154), style=0)
            self.LowerInterface.Bind(wx.EVT_TREEBOOK_PAGE_CHANGED,
                  self.OnLowerInterfaceTreebookPageChanged,
                  id=wxID_BASICINTERFACEFRAMELOWERINTERFACE)

            self.Display = IEPanel(id=wxID_BASICINTERFACEFRAMEDISPLAY,
                  name='Display', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self.Shell = ShellPanel(id=wxID_BASICINTERFACEFRAMESHELL, name='Shell',
                  parent=self.LowerInterface, pos=wx.Point(0, 0), size=wx.Size(1281,
                  154), style=wx.TAB_TRAVERSAL)

            self.button1 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON1,
                  label='Java Script Example', name='button1',
                  parent=self.LowerControlPanel, pos=wx.Point(0, 0),
                  size=wx.Size(136, 23), style=0)
            self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
                  id=wxID_BASICINTERFACEFRAMEBUTTON1)

            self.button2 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON2,
                  label='button2', name='button2', parent=self.LowerControlPanel,
                  pos=wx.Point(136, 0), size=wx.Size(75, 23), style=0)
            self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
                  id=wxID_BASICINTERFACEFRAMEBUTTON2)

            self.button3 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON3,
                  label='button3', name='button3', parent=self.LowerControlPanel,
                  pos=wx.Point(211, 0), size=wx.Size(75, 23), style=0)

            self.ExecuteButton = wx.Button(id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON,
                  label='Execute IEPanel.py', name='ExecuteButton',
                  parent=self.LowerControlPanel, pos=wx.Point(286, 0),
                  size=wx.Size(111, 23), style=0)
            self.ExecuteButton.Bind(wx.EVT_BUTTON, self.OnExecuteButtonButton,
                  id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON)

            self.ReplaceRightControlButtton = wx.Button(id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON,
                  label='Replace Right Control Panel',
                  name='ReplaceRightControlButtton', parent=self.LowerControlPanel,
                  pos=wx.Point(397, 0), size=wx.Size(180, 24), style=0)
            self.ReplaceRightControlButtton.Bind(wx.EVT_BUTTON,
                  self.OnReplaceRightControlButttonButton,
                  id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON)

            self.StatesButton = wx.Button(id=wxID_BASICINTERFACEFRAMESTATESBUTTON,
                  label='States', name='StatesButton',
                  parent=self.RightControlPanel, pos=wx.Point(0, 0),
                  size=wx.Size(75, 23), style=0)
            self.StatesButton.Bind(wx.EVT_BUTTON, self.OnStatesButtonButton,
                  id=wxID_BASICINTERFACEFRAMESTATESBUTTON)

            self.InstrumentsButton = wx.Button(id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON,
                  label='Instruments', name='InstrumentsButton',
                  parent=self.RightControlPanel, pos=wx.Point(0, 23),
                  size=wx.Size(75, 23), style=0)
            self.InstrumentsButton.Bind(wx.EVT_BUTTON,
                  self.OnInstrumentsButtonButton,
                  id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON)

            self.LogsPanel = SimpleLogLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMELOGSPANEL,
                  name='LogsPanel', parent=self.LowerInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL)

            self.ArbDBPanel = SimpleArbDBLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMEARBDBPANEL,
                  name='ArbDBPanel', parent=self.LowerInterface, pos=wx.Point(0,
                  0), size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL)

            self.EndOfTheDayButton = wx.Button(id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON,
                  label='End of The Day Log', name='EndOfTheDayButton',
                  parent=self.LowerControlPanel, pos=wx.Point(577, 0),
                  size=wx.Size(103, 23), style=0)
            self.EndOfTheDayButton.Bind(wx.EVT_BUTTON,
                  self.OnEndOfTheDayButtonButton,
                  id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON)

            self.VisaDialogButton = wx.Button(id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON,
                  label='VISA Communicator', name='VisaDialogButton',
                  parent=self.LowerControlPanel, pos=wx.Point(680, 0),
                  size=wx.Size(184, 23), style=0)
            self.VisaDialogButton.Bind(wx.EVT_BUTTON, self.OnVisaDialogButtonButton,
                  id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON)

            self.PlotPanel = MatplotlibWxPanel(id=wxID_BASICINTERFACEFRAMEPLOTPANEL,
                  name='PlotPanel', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self.panel1 = KeithleyIVPanel(id=wxID_BASICINTERFACEFRAMEPANEL1,
                  name='panel1', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self._init_coll_InterfaceToolBar_Tools(self.InterfaceToolBar)
            self._init_coll_UpperInterface_Pages(self.UpperInterface)
            self._init_coll_LowerInterface_Pages(self.LowerInterface)

            self._init_sizers()

        def __init__(self, parent):
            self._init_ctrls(parent)
            #make the shell self aware--requires that ShellEditor.interp.locals=locals()
            self.Shell.ShellEditor.pushLine("shell=locals()['self']")
            #This assumes the main frame is exactly 6 levels above
            self.Shell.ShellEditor.pushLine("frame=shell.Parent.Parent.Parent.Parent.Parent.Parent")
            self.Shell.ShellEditor.pushLine("print('\# The object corresponding to the main frame is called frame')")
            #self.Shell.ShellEditor.pushLine("shell=locals()['self']",'\n')
            self.right_control_panels=[self.RightControlPanel]
            self.current_right_control_panel=self.right_control_panels[0]

            # TODO Delete this out it is a test
            self.NewPanel=wx.Panel(self.MainPanel,name='Green')
            self.NewPanel.SetBackgroundColour(wx.Colour(0,255,0))
            self.right_control_panels.append(self.NewPanel)
            self.NewPanel2=wx.Panel(self.MainPanel,name='Blue')
            self.NewPanel2.SetBackgroundColour(wx.Colour(0,0,255))
            self.right_control_panels.append(self.NewPanel2)
            self.NewPanel3=wx.Panel(self.MainPanel,name='Red')
            self.NewPanel3.SetBackgroundColour(wx.Colour(255,0,0))
            self.right_control_panels.append(self.NewPanel3)

            self.NewPanel.Show(False)
            self.NewPanel2.Show(False)
            self.NewPanel3.Show(False)

            # This initializes the locals dictionary, needed to get output from
            # execfile command. This attribute needs to be asigned to locals() at
            # the time that the frame is created. See Module Runner
            self.locals={}

            # This passes the button event from the log panel to the main frame
            self.LogsPanel.Bind(wx.EVT_BUTTON,self.update_display)
            self.ScriptsMenu=wx.Menu()
            self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)

            #Added these for script handling
            self.loaded_script_menu_items=[]
            self.event_handlers={}

            self.tool_menu_number=0

            #This adds panels to the FileMenu->Add Panel item
            self.panels_menu()

        def panels_menu(self):
            """ Creates the Add Panels Menu"""
            # First we select only files of the for *Panel.py
            FrontEnds_files=os.listdir(FRONTENDS_DIRECTORY)
            self.panel_files=[]
            for file in FrontEnds_files:
                if re.search('Panel.py',file) and not re.search('.pyc|pyo',file):
                    self.panel_files.append(file)

            #This adds panels to the FileMenu->Add Panel item
            self.add_panel_menu=wx.Menu()
            self.panel_dictionary={}
            for panel in self.panel_files:
                new_id=wx.NewId()
                self.panel_dictionary[new_id]=panel
                self.add_panel_menu.Append(new_id,panel,'Add the Panel %s'%panel)
                self.Bind(wx.EVT_MENU, lambda evt: self.OnAddPanel(evt,new_id),id=new_id)
                #print(new_id,panel)
            #print(self.panel_dictionary)
            self.FileMenu.AppendMenu(0,'Add a Panel',self.add_panel_menu)
        def OnAddPanel(self,event,id):
            """ Adds a panel"""
            sys.path.append(FRONTENDS_DIRECTORY)
            #print(dir(event),event.Id)
            panel_name=self.panel_dictionary[event.Id].replace('.py','')
            exec('from %s import *'%panel_name)
            exec('self.%s_%s=%s(id=%s,name="%s_%s", parent=self.UpperInterface, pos=wx.Point(0, 0),size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)'%(panel_name,id,panel_name,id,panel_name,id))
            exec("self.UpperInterface.AddPage(imageId=-1, page=self.%s_%s, select=True,text='%s')"%(panel_name,id,panel_name))

        def OnFileMenuOpenMenu(self, event):
            event.Skip()

        def OnReplaceRightControlButttonButton(self, event):
            try:
                new=self.right_control_panels.index(
                self.current_right_control_panel)%len(self.right_control_panels)+1
                new_panel=self.right_control_panels[new]
            except:
                new=0
                new_panel=self.right_control_panels[new]

            self.swap_panel(self.current_right_control_panel,new_panel,self.boxSizer2)

        def swap_panel(self,old_panel,new_panel,sizer):
            "Swaps a panel and places the new one in the sizer"
            new_panel.SetPosition(old_panel.Position)
            new_panel.SetSize(old_panel.Size)
            old_panel.Show(False)
            sizer.Replace(old_panel,new_panel)
            new_panel.Show(True)
            self.current_right_control_panel=new_panel
            self.Update()

        def OnInterfaceToolBarLaunchboaTool(self, event):
            os.system(r'start python C:\Anaconda2\Lib\site-packages\boa\Boa.py')
            event.Skip()

        def OnExecuteButtonButton(self, event):
            path=str(os.path.join(PYMEASURE_ROOT,'Code/FrontEnds/IEPanel.py'))
            exec(compile(open(path).read(), path, 'exec'))

        def OnLowerInterfaceTreebookPageChanged(self, event):
            self.update_display()
            event.Skip()

        def update_display(self,event=None):
            "Updates the display"
            if self.LowerInterface.GetCurrentPage() is self.LogsPanel:
                self.Display.ie.Navigate(self.LogsPanel.current_log.path)
            else:
                self.Display.Refresh()

        def OnInterfaceToolBarTools1Tool(self, event):
            #sage_script=r'C:\"Program Files"\AutoIt3\Examples\SAGE_NOIE2.exe'
            #os.system('jupyter notebook')
            self.Display.ie.Navigate('http://localhost:8888/tree')
            pass

        def OnBasicInterfaceFrameClose(self, event):
            """ What to do when the frame is closed, needed to avoid memory leaks"""
            try:
                app=wx.GetApp()
                app.stdioWin.close()
            except:pass

            self.Destroy()

            event.Skip()

        def OnButton1Button(self, event):
            self.Display.write(JAVASCRIPT_STRING)
            event.Skip()

        def OnToolMenuRun_pythonMenu(self, event):
            dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.py', wx.OPEN)
            try:
                if dlg.ShowModal() == wx.ID_OK:
                    filename = dlg.GetPath()

                    try:
                        exec(compile(open(filename).read(), filename, 'exec'),self.locals)
                    except:
                        pass

            finally:
                dlg.Destroy()
            event.Skip()

        def OnToolMenuLoadscriptsMenu(self, event):
            " Loads Scripts to run"
            dlg = wx.FileDialog(self, 'Choose a Python Module', '.', '', '*.py', wx.OPEN)
            try:
                if dlg.ShowModal() == wx.ID_OK:
                    filename = dlg.GetPath()
                    module_scripts=self.import_scripts(filename)
                    module=module_scripts['module']

                    try:

                        for index,script in enumerate(module_scripts['scripts']):
                            new_id=wx.NewId()
                            menu_item=wx.MenuItem(self.ToolMenu,id=new_id,
                            kind=wx.ITEM_NORMAL, text='Run %s '%script,
                            help='Run %s  from the %s module'%(script,module))
                            self.ScriptsMenu.AppendItem(menu_item)
                            self.loaded_script_menu_items.append(menu_item)

                            #event_handler=(lambda event: self.execute_script(event))
                            #eval('def event\_handler%s(event):return self.execute_script(event,module\_scripts["%s"],"%s")'%(index,script,script),locals())

                            #event_handler.func_name='%s'%index
                            self.event_handlers[menu_item.GetId()]=module_scripts[script]
                            #print(self.event_handlers)
                            self.Bind(wx.EVT_MENU,self.execute_script,id=menu_item.GetId())
                        #print(self.event_handlers)
                        #self.bind_menu()

                    except:
                        print(('Could Not Import {0}'.format(module)))
                        raise
            finally:
                dlg.Destroy()
                event.Skip()
                #print(self.event_handlers)

    ##    def bind_menu(self):
    ##        for index,menu_item in enumerate(self.loaded_script_menu_items):
    ##            print(self.event_handlers[menu_item.GetId()],menu_item,menu_item.GetId())
    ##            self.Bind(wx.EVT_MENU,self.event_handlers[menu_item.GetId()],id=menu_item.GetId())

        def import_scripts(self,file_name):
            "Loads a module given a path and returns a dictionary of things recognized as scripts"""
            #added file path to sys.path
            output={}
            scripts=[]
            module_directory=os.path.split(file_name)[0]
            module_name=os.path.split(file_name)[1].replace('.py','')
            sys.path.append(module_directory)
            exec('import {0}'.format(module_name))
            attributes=eval('dir({0})'.format(module_name))
            for item in attributes:
                if re.search('test_|_robot|_script',item,re.IGNORECASE):
                    scripts.append(item)
                    output[item]=eval('{0}.{1}'.format(module_name,item))

            output['module']=module_name
            output['scripts']=scripts

            return output

        def execute_script(self,event):

            #print(self.event_handlers)
            #print(event.Id)
            return self.event_handlers[event.Id]()

        def add_notebook_page(self):
            """ Adds a page to the InterfaceNotebook"""
            pass

        def OnButton2Button(self, event):
            self.tool_menu_number=self.tool_menu_number+1
            if self.tool_menu_number is 1:
                self.ScriptsMenu=wx.Menu()
                self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)
            self.ScriptsMenu.Append(help='Runs the {0} script'.format(self.tool_menu_number),
                                id=-1,kind=wx.ITEM_NORMAL, text='Run the {0} script'.format(self.tool_menu_number))
            event.Skip()
        def OnStatesButtonButton(self, event):
            states_directory=os.path.join(PYMEASURE_ROOT,'Data/States')

            self.Display.ie.Navigate(states_directory)
            event.Skip()

        def OnInstrumentsButtonButton(self, event):
            instruments_directory=os.path.join(PYMEASURE_ROOT,'Instruments')

            self.Display.ie.Navigate(instruments_directory)
            event.Skip()

        def OnEndOfTheDayButtonButton(self, event):
            dlg = EndOfDayDialog(self)
            try:
                result = dlg.ShowModal()
            finally:
                dlg.Destroy()
            event.Skip

        def OnVisaDialogButtonButton(self, event):
            dlg = VisaDialog(self)
            try:
                result = dlg.Show()
            finally:
                pass
            event.Skip

        def OnFileMenuNewMenu(self, event):

    ##        dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.*', wx.OPEN)
    ##        try:
    ##            if dlg.ShowModal() == wx.ID_OK:
    ##                filename = dlg.GetPath()
    ##                # Your code
    ##        finally:
    ##            dlg.Destroy()
    ##        self.upper_Interface.AddPage(
    ##        event.Skip()
            pass
    ##    def OnAddPanel(self, event):
    ##        exec('self.%s'+'_%s'+'=%s(self.UpperInterface)'%(panel_name,panel_number,panel_name))

    def test_AdvancedInterfaceFrame():
        """ Tests the AdvancedInterfaceFrame Class"""
        app = wx.App(False)
        app.RedirectStdio()

        frame = create(None)
        frame.Show()
        # This is needed for the execfile command to output properly--can't redirect
        frame.locals=locals()

        app.MainLoop()

    if __name__ == '__main__':
        app = wx.App(False)
        app.RedirectStdio()
        # The import here stops the Error wx Debug Alert
        from Code.FrontEnds.ShellPanel import *
        frame = create(None)
        frame.Show()
        # This is needed for the execfile command to output properly--can't redirect
        frame.locals=locals()

        app.MainLoop()

## Functions

def convert_datetime(

ISO_datetime_string, format_string='%m/%d/%Y at %H:%M:%S GMT')

Converts from long ISO format 2010-05-13T21:54:25.755000 to something reasonable

Show source ≡

    def convert_datetime(ISO_datetime_string,format_string='%m/%d/%Y at %H:%M:%S GMT') :
        "Converts from long ISO format 2010-05-13T21:54:25.755000 to something reasonable"
        #strip any thing smaller than a second
        time_seconds=ISO_datetime_string.split('.')[0]

        #then get it into a datetime format
        time_datetime=datetime.datetime.strptime(time_seconds,"%Y-%m-%dT%H:%M:%S")
        return time_datetime.strftime(format_string)

def create(

parent)

Show source ≡

    def create(parent):
        return AdvancedInterfaceFrame(parent)

def get_top_parent(

window)

Returns the topmost parent window

Show source ≡

    def get_top_parent(window):
        """Returns the topmost parent window"""
        try:
            parent=window.Parent
            print(parent)
            if parent in [None,''] or not isinstance(parent, InstanceType):
                raise
            get_top_parent(parent)
        except:
            return window

def rand(

...)

rand(d0, d1, ..., dn)

Random values in a given shape.

Create an array of the given shape and populate it with random samples from a uniform distribution over `[0, 1)`.

## Parameters

d0, d1, ..., dn : int, optional The dimensions of the returned array, should all be positive. If no argument is given a single Python float is returned.

## Returns

out : ndarray, shape `(d0, d1, ..., dn)` Random values.

## See Also

random

## Notes

This is a convenience function. If you want an interface that takes a shape-tuple as the first argument, refer to np.random.random_sample .

## Examples

> > > np.random.rand(3,2) array([[ 0.14022471, 0.96360618], #random [ 0.37601032, 0.25528411], #random [ 0.49313049, 0.94909878]]) #random

def test_AdvancedInterfaceFrame(

)

Tests the AdvancedInterfaceFrame Class

Show source ≡

    def test_AdvancedInterfaceFrame():
        """ Tests the AdvancedInterfaceFrame Class"""
        app = wx.App(False)
        app.RedirectStdio()

        frame = create(None)
        frame.Show()
        # This is needed for the execfile command to output properly--can't redirect
        frame.locals=locals()

        app.MainLoop()

## Classes

class AdvancedInterfaceFrame

Frame() Frame(parent, id=ID_ANY, title=EmptyString, pos=DefaultPosition, size=DefaultSize, style=DEFAULT_FRAME_STYLE, name=FrameNameStr)

A frame is a window whose size and position can (usually) be changed by the user.

Show source ≡

    class AdvancedInterfaceFrame(wx.Frame):
        # Needs to have an explicit list for the designer to work
        _custom_classes = {'wx.Panel':['ShellPanel','IEPanel',
        'SimpleLogLowerInterfacePanel','SimpleArbDBLowerInterfacePanel','MatplotlibWxPanel','KeithleyIVPanel'],'wx.Dialog':'EndOfDayDialog'}
        def _init_coll_boxSizer7_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.StatesButton, 0, border=0, flag=0)
            parent.AddWindow(self.InstrumentsButton, 0, border=0, flag=0)

        def _init_coll_boxSizer6_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.button1, 0, border=0, flag=0)
            parent.AddWindow(self.button2, 0, border=0, flag=0)
            parent.AddWindow(self.button3, 0, border=0, flag=0)
            parent.AddWindow(self.ExecuteButton, 0, border=0, flag=0)
            parent.AddWindow(self.ReplaceRightControlButtton, 0, border=0, flag=0)
            parent.AddWindow(self.EndOfTheDayButton, 0, border=0, flag=0)
            parent.AddWindow(self.VisaDialogButton, 0, border=0, flag=0)

        def _init_coll_boxSizer4_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.UpperInterface, 1, border=2,
                  flag=wx.EXPAND | wx.ALL)

        def _init_coll_boxSizer5_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.LowerInterface, 1, border=2,
                  flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer3_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.UpperInterfacePanel, 4, border=2,
                  flag=wx.ALL | wx.EXPAND)
            parent.AddWindow(self.LowerInterfacePanel, 0, border=2,
                  flag=wx.ALL | wx.EXPAND)
            parent.AddWindow(self.LowerControlPanel,0, border=2,
                  flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer1_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.MainPanel, 1, border=1, flag=wx.ALL | wx.EXPAND)

        def _init_coll_boxSizer2_Items(self, parent):
            # generated method, don't edit

            parent.AddWindow(self.LeftInterfacePanel, 1, border=2,
                  flag=wx.EXPAND | wx.ALL)
            parent.AddWindow(self.RightControlPanel, 0, border=2,
                  flag=wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND)

        def _init_coll_ToolMenu_Items(self, parent):
            # generated method, don't edit

            parent.Append(help='Runs a python program as a script',
                  id=wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON,
                  kind=wx.ITEM_NORMAL, text='Run Python Module As a Script')
            parent.Append(help='Load Scripts from a python Module',
                  id=wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS,
                  kind=wx.ITEM_NORMAL, text='Load Scripts from Module')
            self.Bind(wx.EVT_MENU, self.OnToolMenuRun_pythonMenu,
                  id=wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON)
            self.Bind(wx.EVT_MENU, self.OnToolMenuLoadscriptsMenu,
                  id=wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS)

        def _init_coll_FileMenu_Items(self, parent):
            # generated method, don't edit

            parent.Append(help='Open a file',
                  id=wxID_BASICINTERFACEFRAMEFILEMENUOPEN, kind=wx.ITEM_NORMAL,
                  text='Open')
            parent.Append(help='Adds a new panel to main notebook',
                  id=wxID_BASICINTERFACEFRAMEFILEMENUNEW, kind=wx.ITEM_NORMAL,
                  text='New Panel')
            self.Bind(wx.EVT_MENU, self.OnFileMenuOpenMenu,
                  id=wxID_BASICINTERFACEFRAMEFILEMENUOPEN)
            self.Bind(wx.EVT_MENU, self.OnFileMenuNewMenu,
                  id=wxID_BASICINTERFACEFRAMEFILEMENUNEW)

        def _init_coll_InterfaceMenuBar_Menus(self, parent):
            # generated method, don't edit

            parent.Append(menu=self.FileMenu, title='File')
            parent.Append(menu=self.HelpMenu, title='Help')
            parent.Append(menu=self.ToolMenu, title='Tools')

        def _init_coll_UpperInterface_Pages(self, parent):
            # generated method, don't edit

            parent.AddPage(imageId=-1, page=self.Display, select=True,
                  text='Display')
            parent.AddPage(imageId=-1, page=self.PlotPanel, select=False,
                  text='Plot')
            parent.AddPage(imageId=-1, page=self.panel1, select=False,
                  text='Keithley IV')

        def _init_coll_LowerInterface_Pages(self, parent):
            # generated method, don't edit

            parent.AddPage(imageId=-1, page=self.Shell, select=True, text='Shell')
            parent.AddPage(imageId=-1, page=self.LogsPanel, select=False,
                  text='Logs')
            parent.AddPage(imageId=-1, page=self.ArbDBPanel, select=False,
                  text='Files')

        def _init_coll_InterfaceStatusBar_Fields(self, parent):
            # generated method, don't edit
            parent.SetFieldsCount(1)

            parent.SetStatusText(number=0, text='Status')

            parent.SetStatusWidths([-1])

        def _init_coll_InterfaceToolBar_Tools(self, parent):
            # generated method, don't edit

            parent.DoAddTool(bitmap=wx.Bitmap(str(os.path.join(IMAGE_DIRECTORY,'Component.png')),
                  wx.BITMAP_TYPE_PNG), bmpDisabled=wx.NullBitmap,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA,
                  kind=wx.ITEM_NORMAL, label='Boa',
                  longHelp='Launch Boa Constructor',
                  shortHelp='Launch Boa Constructor')
            parent.DoAddTool(bitmap=wx.Bitmap(str(os.path.join(IMAGE_DIRECTORY,'jupyter-logo.png')),
                  wx.BITMAP_TYPE_PNG), bmpDisabled=wx.NullBitmap,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE,
                  kind=wx.ITEM_NORMAL, label='',
                  longHelp='Launch SAGE and display ', shortHelp='Launch SAGE')
            self.Bind(wx.EVT_TOOL, self.OnInterfaceToolBarLaunchboaTool,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA)
            self.Bind(wx.EVT_TOOL, self.OnInterfaceToolBarTools1Tool,
                  id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE)

            parent.Realize()

        def _init_sizers(self):
            # generated method, don't edit
            self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer2 = wx.BoxSizer(orient=wx.HORIZONTAL)

            self.boxSizer3 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer4 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer5 = wx.BoxSizer(orient=wx.VERTICAL)

            self.boxSizer6 = wx.BoxSizer(orient=wx.HORIZONTAL)

            self.boxSizer7 = wx.BoxSizer(orient=wx.VERTICAL)

            self._init_coll_boxSizer1_Items(self.boxSizer1)
            self._init_coll_boxSizer2_Items(self.boxSizer2)
            self._init_coll_boxSizer3_Items(self.boxSizer3)
            self._init_coll_boxSizer4_Items(self.boxSizer4)
            self._init_coll_boxSizer5_Items(self.boxSizer5)
            self._init_coll_boxSizer6_Items(self.boxSizer6)
            self._init_coll_boxSizer7_Items(self.boxSizer7)

            self.SetSizer(self.boxSizer1)
            self.RightControlPanel.SetSizer(self.boxSizer7)
            self.LowerInterfacePanel.SetSizer(self.boxSizer5)
            self.LeftInterfacePanel.SetSizer(self.boxSizer3)
            self.UpperInterfacePanel.SetSizer(self.boxSizer4)
            self.LowerControlPanel.SetSizer(self.boxSizer6)
            self.MainPanel.SetSizer(self.boxSizer2)

        def _init_utils(self):
            # generated method, don't edit
            self.FileMenu = wx.Menu(title='')

            self.HelpMenu = wx.Menu(title='')

            self.InterfaceMenuBar = wx.MenuBar()

            self.ToolMenu = wx.Menu(title='Tools')

            self._init_coll_FileMenu_Items(self.FileMenu)
            self._init_coll_InterfaceMenuBar_Menus(self.InterfaceMenuBar)
            self._init_coll_ToolMenu_Items(self.ToolMenu)

        def _init_ctrls(self, prnt):
            # generated method, don't edit
            wx.Frame.__init__(self, id=wxID_BASICINTERFACEFRAME,
                  name='AdvancedInterfaceFrame', parent=prnt, pos=wx.Point(-5, 106),
                  size=wx.Size(1448, 874), style=wx.DEFAULT_FRAME_STYLE,
                  title='Advanced Interface')
            self._init_utils()
            self.SetClientSize(wx.Size(1440, 840))
            self.SetMenuBar(self.InterfaceMenuBar)
            self.Bind(wx.EVT_CLOSE, self.OnBasicInterfaceFrameClose)

            self.InterfaceStatusBar = wx.StatusBar(id=wxID_BASICINTERFACEFRAMEINTERFACESTATUSBAR,
                  name='InterfaceStatusBar', parent=self, style=0)
            self.InterfaceStatusBar.SetHelpText('Status')
            self.InterfaceStatusBar.SetLabel('')
            self._init_coll_InterfaceStatusBar_Fields(self.InterfaceStatusBar)
            self.SetStatusBar(self.InterfaceStatusBar)

            self.InterfaceToolBar = wx.ToolBar(id=wxID_BASICINTERFACEFRAMEINTERFACETOOLBAR,
                  name='InterfaceToolBar', parent=self, pos=wx.Point(0, 0),
                  size=wx.Size(1440, 40),
                  style=wx.TAB_TRAVERSAL | wx.TB_3DBUTTONS | wx.TB_HORIZONTAL | wx.MAXIMIZE_BOX | wx.NO_BORDER)
            self.InterfaceToolBar.SetHelpText('Launch Boa Contstructor')
            self.InterfaceToolBar.SetToolTipString('InterfaceToolBar')
            self.InterfaceToolBar.SetToolBitmapSize(wx.Size(30, 30))
            self.InterfaceToolBar.SetToolPacking(0)
            self.InterfaceToolBar.SetToolSeparation(1)
            self.SetToolBar(self.InterfaceToolBar)

            self.MainPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEMAINPANEL,
                  name='MainPanel', parent=self, pos=wx.Point(1, 1),
                  size=wx.Size(1438, 838), style=wx.TAB_TRAVERSAL)

            self.LeftInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELEFTINTERFACEPANEL,
                  name='LeftInterfacePanel', parent=self.MainPanel, pos=wx.Point(2,
                  2), size=wx.Size(1355, 834), style=wx.TAB_TRAVERSAL)

            self.RightControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMERIGHTCONTROLPANEL,
                  name='RightControlPanel', parent=self.MainPanel,
                  pos=wx.Point(1361, 2), size=wx.Size(75, 834),
                  style=wx.TAB_TRAVERSAL)
            self.RightControlPanel.SetBackgroundColour(wx.Colour(192, 192, 192))

            self.LowerControlPanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERCONTROLPANEL,
                  name='LowerControlPanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 808), size=wx.Size(1351, 24),
                  style=wx.TAB_TRAVERSAL)
            self.LowerControlPanel.SetBackgroundColour(wx.Colour(0, 255, 128))

            self.UpperInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACEPANEL,
                  name='UpperInterfacePanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1351, 640),
                  style=wx.TAB_TRAVERSAL)
            self.UpperInterfacePanel.SetBackgroundColour(wx.Colour(128, 128, 128))
            self.UpperInterfacePanel.SetHelpText('UpperInterfacePanel')

            self.LowerInterfacePanel = wx.Panel(id=wxID_BASICINTERFACEFRAMELOWERINTERFACEPANEL,
                  name='LowerInterfacePanel', parent=self.LeftInterfacePanel,
                  pos=wx.Point(2, 646), size=wx.Size(1351, 158),
                  style=wx.TAB_TRAVERSAL)
            self.LowerInterfacePanel.SetBackgroundColour(wx.Colour(192, 192, 192))

            self.UpperInterface = wx.Notebook(id=wxID_BASICINTERFACEFRAMEUPPERINTERFACE,
                  name='UpperInterface', parent=self.UpperInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1347, 636), style=0)

            self.LowerInterface = wx.Treebook(id=wxID_BASICINTERFACEFRAMELOWERINTERFACE,
                  name='LowerInterface', parent=self.LowerInterfacePanel,
                  pos=wx.Point(2, 2), size=wx.Size(1347, 154), style=0)
            self.LowerInterface.Bind(wx.EVT_TREEBOOK_PAGE_CHANGED,
                  self.OnLowerInterfaceTreebookPageChanged,
                  id=wxID_BASICINTERFACEFRAMELOWERINTERFACE)

            self.Display = IEPanel(id=wxID_BASICINTERFACEFRAMEDISPLAY,
                  name='Display', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self.Shell = ShellPanel(id=wxID_BASICINTERFACEFRAMESHELL, name='Shell',
                  parent=self.LowerInterface, pos=wx.Point(0, 0), size=wx.Size(1281,
                  154), style=wx.TAB_TRAVERSAL)

            self.button1 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON1,
                  label='Java Script Example', name='button1',
                  parent=self.LowerControlPanel, pos=wx.Point(0, 0),
                  size=wx.Size(136, 23), style=0)
            self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
                  id=wxID_BASICINTERFACEFRAMEBUTTON1)

            self.button2 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON2,
                  label='button2', name='button2', parent=self.LowerControlPanel,
                  pos=wx.Point(136, 0), size=wx.Size(75, 23), style=0)
            self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
                  id=wxID_BASICINTERFACEFRAMEBUTTON2)

            self.button3 = wx.Button(id=wxID_BASICINTERFACEFRAMEBUTTON3,
                  label='button3', name='button3', parent=self.LowerControlPanel,
                  pos=wx.Point(211, 0), size=wx.Size(75, 23), style=0)

            self.ExecuteButton = wx.Button(id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON,
                  label='Execute IEPanel.py', name='ExecuteButton',
                  parent=self.LowerControlPanel, pos=wx.Point(286, 0),
                  size=wx.Size(111, 23), style=0)
            self.ExecuteButton.Bind(wx.EVT_BUTTON, self.OnExecuteButtonButton,
                  id=wxID_BASICINTERFACEFRAMEEXECUTEBUTTON)

            self.ReplaceRightControlButtton = wx.Button(id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON,
                  label='Replace Right Control Panel',
                  name='ReplaceRightControlButtton', parent=self.LowerControlPanel,
                  pos=wx.Point(397, 0), size=wx.Size(180, 24), style=0)
            self.ReplaceRightControlButtton.Bind(wx.EVT_BUTTON,
                  self.OnReplaceRightControlButttonButton,
                  id=wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON)

            self.StatesButton = wx.Button(id=wxID_BASICINTERFACEFRAMESTATESBUTTON,
                  label='States', name='StatesButton',
                  parent=self.RightControlPanel, pos=wx.Point(0, 0),
                  size=wx.Size(75, 23), style=0)
            self.StatesButton.Bind(wx.EVT_BUTTON, self.OnStatesButtonButton,
                  id=wxID_BASICINTERFACEFRAMESTATESBUTTON)

            self.InstrumentsButton = wx.Button(id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON,
                  label='Instruments', name='InstrumentsButton',
                  parent=self.RightControlPanel, pos=wx.Point(0, 23),
                  size=wx.Size(75, 23), style=0)
            self.InstrumentsButton.Bind(wx.EVT_BUTTON,
                  self.OnInstrumentsButtonButton,
                  id=wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON)

            self.LogsPanel = SimpleLogLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMELOGSPANEL,
                  name='LogsPanel', parent=self.LowerInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL)

            self.ArbDBPanel = SimpleArbDBLowerInterfacePanel(id=wxID_BASICINTERFACEFRAMEARBDBPANEL,
                  name='ArbDBPanel', parent=self.LowerInterface, pos=wx.Point(0,
                  0), size=wx.Size(1281, 154), style=wx.TAB_TRAVERSAL)

            self.EndOfTheDayButton = wx.Button(id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON,
                  label='End of The Day Log', name='EndOfTheDayButton',
                  parent=self.LowerControlPanel, pos=wx.Point(577, 0),
                  size=wx.Size(103, 23), style=0)
            self.EndOfTheDayButton.Bind(wx.EVT_BUTTON,
                  self.OnEndOfTheDayButtonButton,
                  id=wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON)

            self.VisaDialogButton = wx.Button(id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON,
                  label='VISA Communicator', name='VisaDialogButton',
                  parent=self.LowerControlPanel, pos=wx.Point(680, 0),
                  size=wx.Size(184, 23), style=0)
            self.VisaDialogButton.Bind(wx.EVT_BUTTON, self.OnVisaDialogButtonButton,
                  id=wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON)

            self.PlotPanel = MatplotlibWxPanel(id=wxID_BASICINTERFACEFRAMEPLOTPANEL,
                  name='PlotPanel', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self.panel1 = KeithleyIVPanel(id=wxID_BASICINTERFACEFRAMEPANEL1,
                  name='panel1', parent=self.UpperInterface, pos=wx.Point(0, 0),
                  size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)

            self._init_coll_InterfaceToolBar_Tools(self.InterfaceToolBar)
            self._init_coll_UpperInterface_Pages(self.UpperInterface)
            self._init_coll_LowerInterface_Pages(self.LowerInterface)

            self._init_sizers()

        def __init__(self, parent):
            self._init_ctrls(parent)
            #make the shell self aware--requires that ShellEditor.interp.locals=locals()
            self.Shell.ShellEditor.pushLine("shell=locals()['self']")
            #This assumes the main frame is exactly 6 levels above
            self.Shell.ShellEditor.pushLine("frame=shell.Parent.Parent.Parent.Parent.Parent.Parent")
            self.Shell.ShellEditor.pushLine("print('\# The object corresponding to the main frame is called frame')")
            #self.Shell.ShellEditor.pushLine("shell=locals()['self']",'\n')
            self.right_control_panels=[self.RightControlPanel]
            self.current_right_control_panel=self.right_control_panels[0]

            # TODO Delete this out it is a test
            self.NewPanel=wx.Panel(self.MainPanel,name='Green')
            self.NewPanel.SetBackgroundColour(wx.Colour(0,255,0))
            self.right_control_panels.append(self.NewPanel)
            self.NewPanel2=wx.Panel(self.MainPanel,name='Blue')
            self.NewPanel2.SetBackgroundColour(wx.Colour(0,0,255))
            self.right_control_panels.append(self.NewPanel2)
            self.NewPanel3=wx.Panel(self.MainPanel,name='Red')
            self.NewPanel3.SetBackgroundColour(wx.Colour(255,0,0))
            self.right_control_panels.append(self.NewPanel3)

            self.NewPanel.Show(False)
            self.NewPanel2.Show(False)
            self.NewPanel3.Show(False)

            # This initializes the locals dictionary, needed to get output from
            # execfile command. This attribute needs to be asigned to locals() at
            # the time that the frame is created. See Module Runner
            self.locals={}

            # This passes the button event from the log panel to the main frame
            self.LogsPanel.Bind(wx.EVT_BUTTON,self.update_display)
            self.ScriptsMenu=wx.Menu()
            self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)

            #Added these for script handling
            self.loaded_script_menu_items=[]
            self.event_handlers={}

            self.tool_menu_number=0

            #This adds panels to the FileMenu->Add Panel item
            self.panels_menu()

        def panels_menu(self):
            """ Creates the Add Panels Menu"""
            # First we select only files of the for *Panel.py
            FrontEnds_files=os.listdir(FRONTENDS_DIRECTORY)
            self.panel_files=[]
            for file in FrontEnds_files:
                if re.search('Panel.py',file) and not re.search('.pyc|pyo',file):
                    self.panel_files.append(file)

            #This adds panels to the FileMenu->Add Panel item
            self.add_panel_menu=wx.Menu()
            self.panel_dictionary={}
            for panel in self.panel_files:
                new_id=wx.NewId()
                self.panel_dictionary[new_id]=panel
                self.add_panel_menu.Append(new_id,panel,'Add the Panel %s'%panel)
                self.Bind(wx.EVT_MENU, lambda evt: self.OnAddPanel(evt,new_id),id=new_id)
                #print(new_id,panel)
            #print(self.panel_dictionary)
            self.FileMenu.AppendMenu(0,'Add a Panel',self.add_panel_menu)
        def OnAddPanel(self,event,id):
            """ Adds a panel"""
            sys.path.append(FRONTENDS_DIRECTORY)
            #print(dir(event),event.Id)
            panel_name=self.panel_dictionary[event.Id].replace('.py','')
            exec('from %s import *'%panel_name)
            exec('self.%s_%s=%s(id=%s,name="%s_%s", parent=self.UpperInterface, pos=wx.Point(0, 0),size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)'%(panel_name,id,panel_name,id,panel_name,id))
            exec("self.UpperInterface.AddPage(imageId=-1, page=self.%s_%s, select=True,text='%s')"%(panel_name,id,panel_name))

        def OnFileMenuOpenMenu(self, event):
            event.Skip()

        def OnReplaceRightControlButttonButton(self, event):
            try:
                new=self.right_control_panels.index(
                self.current_right_control_panel)%len(self.right_control_panels)+1
                new_panel=self.right_control_panels[new]
            except:
                new=0
                new_panel=self.right_control_panels[new]

            self.swap_panel(self.current_right_control_panel,new_panel,self.boxSizer2)

        def swap_panel(self,old_panel,new_panel,sizer):
            "Swaps a panel and places the new one in the sizer"
            new_panel.SetPosition(old_panel.Position)
            new_panel.SetSize(old_panel.Size)
            old_panel.Show(False)
            sizer.Replace(old_panel,new_panel)
            new_panel.Show(True)
            self.current_right_control_panel=new_panel
            self.Update()

        def OnInterfaceToolBarLaunchboaTool(self, event):
            os.system(r'start python C:\Anaconda2\Lib\site-packages\boa\Boa.py')
            event.Skip()

        def OnExecuteButtonButton(self, event):
            path=str(os.path.join(PYMEASURE_ROOT,'Code/FrontEnds/IEPanel.py'))
            exec(compile(open(path).read(), path, 'exec'))

        def OnLowerInterfaceTreebookPageChanged(self, event):
            self.update_display()
            event.Skip()

        def update_display(self,event=None):
            "Updates the display"
            if self.LowerInterface.GetCurrentPage() is self.LogsPanel:
                self.Display.ie.Navigate(self.LogsPanel.current_log.path)
            else:
                self.Display.Refresh()

        def OnInterfaceToolBarTools1Tool(self, event):
            #sage_script=r'C:\"Program Files"\AutoIt3\Examples\SAGE_NOIE2.exe'
            #os.system('jupyter notebook')
            self.Display.ie.Navigate('http://localhost:8888/tree')
            pass

        def OnBasicInterfaceFrameClose(self, event):
            """ What to do when the frame is closed, needed to avoid memory leaks"""
            try:
                app=wx.GetApp()
                app.stdioWin.close()
            except:pass

            self.Destroy()

            event.Skip()

        def OnButton1Button(self, event):
            self.Display.write(JAVASCRIPT_STRING)
            event.Skip()

        def OnToolMenuRun_pythonMenu(self, event):
            dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.py', wx.OPEN)
            try:
                if dlg.ShowModal() == wx.ID_OK:
                    filename = dlg.GetPath()

                    try:
                        exec(compile(open(filename).read(), filename, 'exec'),self.locals)
                    except:
                        pass

            finally:
                dlg.Destroy()
            event.Skip()

        def OnToolMenuLoadscriptsMenu(self, event):
            " Loads Scripts to run"
            dlg = wx.FileDialog(self, 'Choose a Python Module', '.', '', '*.py', wx.OPEN)
            try:
                if dlg.ShowModal() == wx.ID_OK:
                    filename = dlg.GetPath()
                    module_scripts=self.import_scripts(filename)
                    module=module_scripts['module']

                    try:

                        for index,script in enumerate(module_scripts['scripts']):
                            new_id=wx.NewId()
                            menu_item=wx.MenuItem(self.ToolMenu,id=new_id,
                            kind=wx.ITEM_NORMAL, text='Run %s '%script,
                            help='Run %s  from the %s module'%(script,module))
                            self.ScriptsMenu.AppendItem(menu_item)
                            self.loaded_script_menu_items.append(menu_item)

                            #event_handler=(lambda event: self.execute_script(event))
                            #eval('def event\_handler%s(event):return self.execute_script(event,module\_scripts["%s"],"%s")'%(index,script,script),locals())

                            #event_handler.func_name='%s'%index
                            self.event_handlers[menu_item.GetId()]=module_scripts[script]
                            #print(self.event_handlers)
                            self.Bind(wx.EVT_MENU,self.execute_script,id=menu_item.GetId())
                        #print(self.event_handlers)
                        #self.bind_menu()

                    except:
                        print(('Could Not Import {0}'.format(module)))
                        raise
            finally:
                dlg.Destroy()
                event.Skip()
                #print(self.event_handlers)

    ##    def bind_menu(self):
    ##        for index,menu_item in enumerate(self.loaded_script_menu_items):
    ##            print(self.event_handlers[menu_item.GetId()],menu_item,menu_item.GetId())
    ##            self.Bind(wx.EVT_MENU,self.event_handlers[menu_item.GetId()],id=menu_item.GetId())

        def import_scripts(self,file_name):
            "Loads a module given a path and returns a dictionary of things recognized as scripts"""
            #added file path to sys.path
            output={}
            scripts=[]
            module_directory=os.path.split(file_name)[0]
            module_name=os.path.split(file_name)[1].replace('.py','')
            sys.path.append(module_directory)
            exec('import {0}'.format(module_name))
            attributes=eval('dir({0})'.format(module_name))
            for item in attributes:
                if re.search('test_|_robot|_script',item,re.IGNORECASE):
                    scripts.append(item)
                    output[item]=eval('{0}.{1}'.format(module_name,item))

            output['module']=module_name
            output['scripts']=scripts

            return output

        def execute_script(self,event):

            #print(self.event_handlers)
            #print(event.Id)
            return self.event_handlers[event.Id]()

        def add_notebook_page(self):
            """ Adds a page to the InterfaceNotebook"""
            pass

        def OnButton2Button(self, event):
            self.tool_menu_number=self.tool_menu_number+1
            if self.tool_menu_number is 1:
                self.ScriptsMenu=wx.Menu()
                self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)
            self.ScriptsMenu.Append(help='Runs the {0} script'.format(self.tool_menu_number),
                                id=-1,kind=wx.ITEM_NORMAL, text='Run the {0} script'.format(self.tool_menu_number))
            event.Skip()
        def OnStatesButtonButton(self, event):
            states_directory=os.path.join(PYMEASURE_ROOT,'Data/States')

            self.Display.ie.Navigate(states_directory)
            event.Skip()

        def OnInstrumentsButtonButton(self, event):
            instruments_directory=os.path.join(PYMEASURE_ROOT,'Instruments')

            self.Display.ie.Navigate(instruments_directory)
            event.Skip()

        def OnEndOfTheDayButtonButton(self, event):
            dlg = EndOfDayDialog(self)
            try:
                result = dlg.ShowModal()
            finally:
                dlg.Destroy()
            event.Skip

        def OnVisaDialogButtonButton(self, event):
            dlg = VisaDialog(self)
            try:
                result = dlg.Show()
            finally:
                pass
            event.Skip

        def OnFileMenuNewMenu(self, event):

    ##        dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.*', wx.OPEN)
    ##        try:
    ##            if dlg.ShowModal() == wx.ID_OK:
    ##                filename = dlg.GetPath()
    ##                # Your code
    ##        finally:
    ##            dlg.Destroy()
    ##        self.upper_Interface.AddPage(
    ##        event.Skip()
            pass

### Ancestors (in MRO)

- AdvancedInterfaceFrame
- wx._core.Frame
- wx._core.TopLevelWindow
- wx._core.NonOwnedWindow
- wx._core.Window
- wx._core.WindowBase
- wx._core.EvtHandler
- wx._core.Object
- wx._core.Trackable
- sip.wrapper
- sip.simplewrapper
- builtins.object

### Class variables

var ChildrenRepositioningGuard

### Static methods

def __init__(

self, parent)

Initialize self. See help(type(self)) for accurate signature.

Show source ≡

    def __init__(self, parent):
        self._init_ctrls(parent)
        #make the shell self aware--requires that ShellEditor.interp.locals=locals()
        self.Shell.ShellEditor.pushLine("shell=locals()['self']")
        #This assumes the main frame is exactly 6 levels above
        self.Shell.ShellEditor.pushLine("frame=shell.Parent.Parent.Parent.Parent.Parent.Parent")
        self.Shell.ShellEditor.pushLine("print('\# The object corresponding to the main frame is called frame')")
        #self.Shell.ShellEditor.pushLine("shell=locals()['self']",'\n')
        self.right_control_panels=[self.RightControlPanel]
        self.current_right_control_panel=self.right_control_panels[0]

        # TODO Delete this out it is a test
        self.NewPanel=wx.Panel(self.MainPanel,name='Green')
        self.NewPanel.SetBackgroundColour(wx.Colour(0,255,0))
        self.right_control_panels.append(self.NewPanel)
        self.NewPanel2=wx.Panel(self.MainPanel,name='Blue')
        self.NewPanel2.SetBackgroundColour(wx.Colour(0,0,255))
        self.right_control_panels.append(self.NewPanel2)
        self.NewPanel3=wx.Panel(self.MainPanel,name='Red')
        self.NewPanel3.SetBackgroundColour(wx.Colour(255,0,0))
        self.right_control_panels.append(self.NewPanel3)

        self.NewPanel.Show(False)
        self.NewPanel2.Show(False)
        self.NewPanel3.Show(False)

        # This initializes the locals dictionary, needed to get output from
        # execfile command. This attribute needs to be asigned to locals() at
        # the time that the frame is created. See Module Runner
        self.locals={}

        # This passes the button event from the log panel to the main frame
        self.LogsPanel.Bind(wx.EVT_BUTTON,self.update_display)
        self.ScriptsMenu=wx.Menu()
        self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)

        #Added these for script handling
        self.loaded_script_menu_items=[]
        self.event_handlers={}

        self.tool_menu_number=0

        #This adds panels to the FileMenu->Add Panel item
        self.panels_menu()

def Bind(

self, event, handler, source=None, id=-1, id2=-1)

Bind an event to an event handler.

:param event: One of the `EVT_*` event binder objects that specifies the type of event to bind.

:param handler: A callable object to be invoked when the event is delivered to self. Pass `None` to disconnect an event handler.

:param source: Sometimes the event originates from a different window than self, but you still want to catch it in self. (For example, a button event delivered to a frame.) By passing the source of the event, the event handling system is able to differentiate between the same event type from different controls.

:param id: Used to spcify the event source by ID instead of instance.

:param id2: Used when it is desirable to bind a handler to a range of IDs, such as with EVT_MENU_RANGE.

Show source ≡

    def _EvtHandler_Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
        """
        Bind an event to an event handler.

        :param event: One of the ``EVT_*`` event binder objects that
                      specifies the type of event to bind.

        :param handler: A callable object to be invoked when the
                        event is delivered to self.  Pass ``None`` to
                        disconnect an event handler.

        :param source: Sometimes the event originates from a
                       different window than self, but you still
                       want to catch it in self.  (For example, a
                       button event delivered to a frame.)  By
                       passing the source of the event, the event
                       handling system is able to differentiate
                       between the same event type from different
                       controls.

        :param id: Used to spcify the event source by ID instead
                   of instance.

        :param id2: Used when it is desirable to bind a handler
                    to a range of IDs, such as with EVT_MENU_RANGE.
        """
        assert isinstance(event, wx.PyEventBinder)
        assert callable(handler) or handler is None
        assert source is None or hasattr(source, 'GetId')
        if source is not None:
            id  = source.GetId()
        event.Bind(self, id, id2, handler)

def ConvertDialogPointToPixels(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def ConvertDialogSizeToPixels(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def DLG_UNIT(

self, dlg_unit)

A convenience wrapper for :meth:`ConvertDialogToPixels`.

Show source ≡

    def _Window_DLG_UNIT(self, dlg_unit):
        """
        A convenience wrapper for :meth:`ConvertDialogToPixels`.
        """
        is_wxType = isinstance(dlg_unit, (wx.Size, wx.Point))
        pix = self.ConvertDialogToPixels(dlg_unit)
        if not is_wxType:
            pix = tuple(pix)
        return pix

def DestroyLater(

self)

Schedules the window to be destroyed in the near future.

This should be used whenever Destroy could happen too soon, such as when there may still be events for this window or its children waiting in the event queue.

Show source ≡

    def _Window_DestroyLater(self):
        """
        Schedules the window to be destroyed in the near future.

        This should be used whenever Destroy could happen too soon, such
        as when there may still be events for this window or its children
        waiting in the event queue.
        """
        self.Hide()
        wx.GetApp().ScheduleForDestruction(self)

def GetPositionTuple(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def GetSizeTuple(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def GetVirtualSizeTuple(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def MoveXY(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def OnAddPanel(

self, event, id)

Adds a panel

Show source ≡

    def OnAddPanel(self,event,id):
        """ Adds a panel"""
        sys.path.append(FRONTENDS_DIRECTORY)
        #print(dir(event),event.Id)
        panel_name=self.panel_dictionary[event.Id].replace('.py','')
        exec('from %s import *'%panel_name)
        exec('self.%s_%s=%s(id=%s,name="%s_%s", parent=self.UpperInterface, pos=wx.Point(0, 0),size=wx.Size(1339, 610), style=wx.TAB_TRAVERSAL)'%(panel_name,id,panel_name,id,panel_name,id))
        exec("self.UpperInterface.AddPage(imageId=-1, page=self.%s_%s, select=True,text='%s')"%(panel_name,id,panel_name))

def OnBasicInterfaceFrameClose(

self, event)

What to do when the frame is closed, needed to avoid memory leaks

Show source ≡

    def OnBasicInterfaceFrameClose(self, event):
        """ What to do when the frame is closed, needed to avoid memory leaks"""
        try:
            app=wx.GetApp()
            app.stdioWin.close()
        except:pass

        self.Destroy()

        event.Skip()

def OnButton1Button(

self, event)

Show source ≡

    def OnButton1Button(self, event):
        self.Display.write(JAVASCRIPT_STRING)
        event.Skip()

def OnButton2Button(

self, event)

Show source ≡

    def OnButton2Button(self, event):
        self.tool_menu_number=self.tool_menu_number+1
        if self.tool_menu_number is 1:
            self.ScriptsMenu=wx.Menu()
            self.ToolMenu.AppendMenu(-1,'Scripts',self.ScriptsMenu)
        self.ScriptsMenu.Append(help='Runs the {0} script'.format(self.tool_menu_number),
                            id=-1,kind=wx.ITEM_NORMAL, text='Run the {0} script'.format(self.tool_menu_number))
        event.Skip()

def OnEndOfTheDayButtonButton(

self, event)

Show source ≡

    def OnEndOfTheDayButtonButton(self, event):
        dlg = EndOfDayDialog(self)
        try:
            result = dlg.ShowModal()
        finally:
            dlg.Destroy()
        event.Skip

def OnExecuteButtonButton(

self, event)

Show source ≡

    def OnExecuteButtonButton(self, event):
        path=str(os.path.join(PYMEASURE_ROOT,'Code/FrontEnds/IEPanel.py'))
        exec(compile(open(path).read(), path, 'exec'))

def OnFileMenuNewMenu(

self, event)

Show source ≡

    def OnFileMenuNewMenu(self, event):

          dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.*', wx.OPEN)
          try:
              if dlg.ShowModal() == wx.ID_OK:
                  filename = dlg.GetPath()
                  # Your code
          finally:
              dlg.Destroy()
          self.upper_Interface.AddPage(
          event.Skip()
        pass

def OnFileMenuOpenMenu(

self, event)

Show source ≡

    def OnFileMenuOpenMenu(self, event):
        event.Skip()

def OnInstrumentsButtonButton(

self, event)

Show source ≡

    def OnInstrumentsButtonButton(self, event):
        instruments_directory=os.path.join(PYMEASURE_ROOT,'Instruments')

        self.Display.ie.Navigate(instruments_directory)
        event.Skip()

def OnInterfaceToolBarLaunchboaTool(

self, event)

Show source ≡

    def OnInterfaceToolBarLaunchboaTool(self, event):
        os.system(r'start python C:\Anaconda2\Lib\site-packages\boa\Boa.py')
        event.Skip()

def OnInterfaceToolBarTools1Tool(

self, event)

Show source ≡

    def OnInterfaceToolBarTools1Tool(self, event):
        #sage_script=r'C:\"Program Files"\AutoIt3\Examples\SAGE_NOIE2.exe'
        #os.system('jupyter notebook')
        self.Display.ie.Navigate('http://localhost:8888/tree')
        pass

def OnLowerInterfaceTreebookPageChanged(

self, event)

Show source ≡

    def OnLowerInterfaceTreebookPageChanged(self, event):
        self.update_display()
        event.Skip()

def OnReplaceRightControlButttonButton(

self, event)

Show source ≡

    def OnReplaceRightControlButttonButton(self, event):
        try:
            new=self.right_control_panels.index(
            self.current_right_control_panel)%len(self.right_control_panels)+1
            new_panel=self.right_control_panels[new]
        except:
            new=0
            new_panel=self.right_control_panels[new]

        self.swap_panel(self.current_right_control_panel,new_panel,self.boxSizer2)

def OnStatesButtonButton(

self, event)

Show source ≡

    def OnStatesButtonButton(self, event):
        states_directory=os.path.join(PYMEASURE_ROOT,'Data/States')

        self.Display.ie.Navigate(states_directory)
        event.Skip()

def OnToolMenuLoadscriptsMenu(

self, event)

Loads Scripts to run

Show source ≡

    def OnToolMenuLoadscriptsMenu(self, event):
        " Loads Scripts to run"
        dlg = wx.FileDialog(self, 'Choose a Python Module', '.', '', '*.py', wx.OPEN)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()
                module_scripts=self.import_scripts(filename)
                module=module_scripts['module']

                try:
                    for index,script in enumerate(module_scripts['scripts']):
                        new_id=wx.NewId()
                        menu_item=wx.MenuItem(self.ToolMenu,id=new_id,
                        kind=wx.ITEM_NORMAL, text='Run %s '%script,
                        help='Run %s  from the %s module'%(script,module))
                        self.ScriptsMenu.AppendItem(menu_item)
                        self.loaded_script_menu_items.append(menu_item)

                        #event_handler=(lambda event: self.execute_script(event))
                        #eval('def event\_handler%s(event):return self.execute_script(event,module\_scripts["%s"],"%s")'%(index,script,script),locals())

                        #event_handler.func_name='%s'%index
                        self.event_handlers[menu_item.GetId()]=module_scripts[script]
                        #print(self.event_handlers)
                        self.Bind(wx.EVT_MENU,self.execute_script,id=menu_item.GetId())
                    #print(self.event_handlers)
                    #self.bind_menu()

                except:
                    print(('Could Not Import {0}'.format(module)))
                    raise
        finally:
            dlg.Destroy()
            event.Skip()

def OnToolMenuRun_pythonMenu(

self, event)

Show source ≡

    def OnToolMenuRun_pythonMenu(self, event):
        dlg = wx.FileDialog(self, 'Choose a file', '.', '', '*.py', wx.OPEN)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                filename = dlg.GetPath()

                try:
                    exec(compile(open(filename).read(), filename, 'exec'),self.locals)
                except:
                    pass

        finally:
            dlg.Destroy()
        event.Skip()

def OnVisaDialogButtonButton(

self, event)

Show source ≡

    def OnVisaDialogButtonButton(self, event):
        dlg = VisaDialog(self)
        try:
            result = dlg.Show()
        finally:
            pass
        event.Skip

def PostCreate(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def SetClientRect(

self, rect)

Show source ≡

    def _Window_SetClientRect(self, rect):
        return self.SetClientSize(rect)

def SetDimensions(

*args, **kw)

SetDimensions(x, y, width, height, sizeFlags=SIZE_AUTO)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def SetRect(

self, rect)

Show source ≡

    def _Window_SetRect(self, rect):
        return self.SetSize(rect)

def SetSizeHintsSz(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def SetSizeWH(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def SetToolTipString(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def SetVirtualSizeWH(

*args, **kw)

Show source ≡

    def deprecated_func(*args, **kw):
        warnings.warn("Call to deprecated item%s. %s" % (name, msg),
                      wxPyDeprecationWarning, stacklevel=2)
        if not kw:
            return item(*args)
        return item(*args, **kw)

def Unbind(

self, event, source=None, id=-1, id2=-1, handler=None)

Disconnects the event handler binding for event from `self`. Returns `True` if successful.

Show source ≡

    def _EvtHandler_Unbind(self, event, source=None, id=wx.ID_ANY, id2=wx.ID_ANY, handler=None):
        """
        Disconnects the event handler binding for event from `self`.
        Returns ``True`` if successful.
        """
        if source is not None:
            id  = source.GetId()
        return event.Unbind(self, id, id2, handler)

def add_notebook_page(

self)

Adds a page to the InterfaceNotebook

Show source ≡

    def add_notebook_page(self):
        """ Adds a page to the InterfaceNotebook"""
        pass

def execute_script(

self, event)

Show source ≡

    def execute_script(self,event):
        #print(self.event_handlers)
        #print(event.Id)
        return self.event_handlers[event.Id]()

def import_scripts(

self, file_name)

Loads a module given a path and returns a dictionary of things recognized as scripts

Show source ≡

    def import_scripts(self,file_name):
        "Loads a module given a path and returns a dictionary of things recognized as scripts"""
        #added file path to sys.path
        output={}
        scripts=[]
        module_directory=os.path.split(file_name)[0]
        module_name=os.path.split(file_name)[1].replace('.py','')
        sys.path.append(module_directory)
        exec('import {0}'.format(module_name))
        attributes=eval('dir({0})'.format(module_name))
        for item in attributes:
            if re.search('test_|_robot|_script',item,re.IGNORECASE):
                scripts.append(item)
                output[item]=eval('{0}.{1}'.format(module_name,item))

        output['module']=module_name
        output['scripts']=scripts

        return output

Creates the Add Panels Menu

Show source ≡

def swap_panel(

self, old_panel, new_panel, sizer)

Swaps a panel and places the new one in the sizer

Show source ≡

    def swap_panel(self,old_panel,new_panel,sizer):
        "Swaps a panel and places the new one in the sizer"
        new_panel.SetPosition(old_panel.Position)
        new_panel.SetSize(old_panel.Size)
        old_panel.Show(False)
        sizer.Replace(old_panel,new_panel)
        new_panel.Show(True)
        self.current_right_control_panel=new_panel
        self.Update()

def update_display(

self, event=None)

Updates the display

Show source ≡

    def update_display(self,event=None):
        "Updates the display"
        if self.LowerInterface.GetCurrentPage() is self.LogsPanel:
            self.Display.ie.Navigate(self.LogsPanel.current_log.path)
        else:
            self.Display.Refresh()

### Instance variables

var AcceleratorTable

GetAcceleratorTable() -> AcceleratorTable

Gets the accelerator table for this window.

var AutoLayout

GetAutoLayout() -> bool

Returns the sizer of which this window is a member, if any, otherwise NULL.

var BackgroundColour

GetBackgroundColour() -> Colour

Returns the background colour of the window.

var BackgroundStyle

GetBackgroundStyle() -> BackgroundStyle

Returns the background style of the window.

var BestSize

GetBestSize() -> Size

This functions returns the best acceptable minimal size for the window.

var BestVirtualSize

GetBestVirtualSize() -> Size

Return the largest of ClientSize and BestSize (as determined by a sizer, interior children, or other means)

var Border

GetBorder(flags) -> Border GetBorder() -> Border

Get the window border style from the given flags: this is different from simply doing flags & wxBORDER_MASK because it uses GetDefaultBorder() to translate wxBORDER_DEFAULT to something reasonable.

var Caret

GetCaret() -> Caret

Returns the caret() associated with the window.

var CharHeight

GetCharHeight() -> int

Returns the character height for this window.

var CharWidth

GetCharWidth() -> int

Returns the average character width for this window.

var Children

GetChildren() -> WindowList

Returns a reference to the list of the window's children.

var ClassInfo

GetClassInfo() -> ClassInfo

This virtual function is redefined for every class that requires run- time type information, when using the wxDECLARE_CLASS macro (or similar).

var ClassName

GetClassName() -> Char

Returns the class name of the C++ class using wxRTTI.

var ClientAreaOrigin

GetClientAreaOrigin() -> Point

Get the origin of the client area of the window relative to the window top left corner (the client area may be shifted because of the borders, scrollbars, other decorations...)

var ClientRect

GetClientRect() -> Rect

Get the client rectangle in window (i.e. client) coordinates.

var ClientSize

GetClientSize() -> Size

Returns the size of the window 'client area' in pixels.

var Constraints

GetConstraints() -> LayoutConstraints

Returns a pointer to the window's layout constraints, or NULL if there are none.

var ContainingSizer

GetContainingSizer() -> Sizer

Returns the sizer of which this window is a member, if any, otherwise NULL.

var Cursor

GetCursor() -> Cursor

Return the cursor associated with this window.

var DefaultAttributes

GetDefaultAttributes() -> VisualAttributes

Currently this is the same as calling wxWindow::GetClassDefaultAttributes(wxWindow::GetWindowVariant()).

var DefaultItem

GetDefaultItem() -> Window

Returns a pointer to the button which is the default for this window, or NULL.

var DropTarget

GetDropTarget() -> DropTarget

Returns the associated drop target, which may be NULL.

var EffectiveMinSize

GetEffectiveMinSize() -> Size

Merges the window's best size into the min size and returns the result.

var Enabled

IsEnabled() -> bool

Returns true if the window is enabled, i.e. if it accepts user input, false otherwise.

var EventHandler

GetEventHandler() -> EvtHandler

Returns the event handler for this window.

var EvtHandlerEnabled

GetEvtHandlerEnabled() -> bool

Returns true if the event handler is enabled, false otherwise.

var ExtraStyle

GetExtraStyle() -> long

Returns the extra style bits for the window.

var Font

GetFont() -> Font

Returns the font for this window.

var ForegroundColour

GetForegroundColour() -> Colour

Returns the foreground colour of the window.

var GrandParent

GetGrandParent() -> Window

Returns the grandparent of a window, or NULL if there isn't one.

var Handle

GetHandle() -> UIntPtr

Returns the platform-specific handle of the physical window.

var HelpText

GetHelpText() -> String

Gets the help text to be used as context-sensitive help for this window.

var Icon

GetIcon() -> Icon

Returns the standard icon of the window.

var Id

GetId() -> WindowID

Returns the identifier of the window.

var Label

GetLabel() -> String

Generic way of getting a label from any window, for identification purposes.

var LayoutDirection

GetLayoutDirection() -> LayoutDirection

Returns the layout direction for this window, Note that wxLayout_Default is returned if layout direction is not supported.

var MacMetalAppearance

MacGetMetalAppearance() -> bool

var MaxClientSize

GetMaxClientSize() -> Size

Returns the maximum size of window's client area.

var MaxHeight

GetMaxHeight() -> int

Returns the vertical component of window maximal size.

var MaxSize

GetMaxSize() -> Size

Returns the maximum size of the window.

var MaxWidth

GetMaxWidth() -> int

Returns the horizontal component of window maximal size.

var MenuBar

GetMenuBar() -> MenuBar

Returns a pointer to the menubar currently associated with the frame (if any).

var MinClientSize

GetMinClientSize() -> Size

Returns the minimum size of window's client area, an indication to the sizer layout mechanism that this is the minimum required size of its client area.

var MinHeight

GetMinHeight() -> int

Returns the vertical component of window minimal size.

var MinSize

GetMinSize() -> Size

Returns the minimum size of the window, an indication to the sizer layout mechanism that this is the minimum required size.

var MinWidth

GetMinWidth() -> int

Returns the horizontal component of window minimal size.

var Name

GetName() -> String

Returns the window's name.

var NewPanel

var NewPanel2

var NewPanel3

var NextHandler

GetNextHandler() -> EvtHandler

Returns the pointer to the next handler in the chain.

var OSXModified

OSXIsModified() -> bool

Returns the current modified state of the wxTopLevelWindow on OS X.

var Parent

GetParent() -> Window

Returns the parent of the window, or NULL if there is no parent.

var Position

GetPosition() -> Point

This gets the position of the window in pixels, relative to the parent window for the child windows or relative to the display origin for the top level windows.

var PreviousHandler

GetPreviousHandler() -> EvtHandler

Returns the pointer to the previous handler in the chain.

var Rect

GetRect() -> Rect

Returns the position and size of the window as a wxRect object.

var RefData

GetRefData() -> ObjectRefData

Returns the wxObject::m_refData pointer, i.e. the data referenced by this object.

var ScreenPosition

GetScreenPosition() -> Point

Returns the window position in screen coordinates, whether the window is a child window or a top level one.

var ScreenRect

GetScreenRect() -> Rect

Returns the position and size of the window on the screen as a wxRect object.

var ScriptsMenu

var Shown

IsShown() -> bool

Returns true if the window is shown, false if it has been hidden.

var Size

GetSize() -> Size

Returns the size of the entire window in pixels, including title bar, border, scrollbars, etc.

var Sizer

GetSizer() -> Sizer

Returns the sizer associated with the window by a previous call to SetSizer(), or NULL.

var StatusBar

GetStatusBar() -> StatusBar

Returns a pointer to the status bar currently associated with the frame (if any).

var StatusBarPane

GetStatusBarPane() -> int

Returns the status bar pane used to display menu and toolbar help.

var ThemeEnabled

GetThemeEnabled() -> bool

Clears the window by filling it with the current background colour.

var Title

GetTitle() -> String

Gets a string containing the window title.

var TmpDefaultItem

GetTmpDefaultItem() -> Window

var ToolBar

GetToolBar() -> ToolBar

Returns a pointer to the toolbar currently associated with the frame (if any).

var ToolTip

GetToolTip() -> ToolTip

Get the associated tooltip or NULL if none.

var TopLevel

IsTopLevel() -> bool

Returns true if the given window is a top-level one.

var TopLevelParent

GetTopLevelParent() -> Window

Returns the first ancestor of this window which is a top-level window.

var UpdateClientRect

GetUpdateClientRect() -> Rect

Get the update rectangle bounding box in client coords.

var UpdateRegion

GetUpdateRegion() -> Region

Returns the region specifying which parts of the window have been damaged.

var Validator

GetValidator() -> Validator

Validator functions.

var VirtualSize

GetVirtualSize() -> Size

This gets the virtual size of the window in pixels.

var WindowStyle

GetWindowStyle() -> long

See GetWindowStyleFlag() for more info.

var WindowStyleFlag

GetWindowStyleFlag() -> long

Gets the window style that was passed to the constructor or Create() method.

var WindowVariant

GetWindowVariant() -> WindowVariant

Returns the value previously passed to SetWindowVariant().

var current_right_control_panel

var event_handlers

var locals

var right_control_panels

## Module variables

var FRONTENDS_DIRECTORY

var IMAGE_DIRECTORY

var JAVASCRIPT_STRING

var KEITHLEY_INSTRUMENT_SHEET

var LOGS_DIRECTORY

var PANELS

var PYMEASURE_ROOT

var TESTS_DIRECTORY

var overview

var pi

var sin

var wxID_BASICINTERFACEFRAME

var wxID_BASICINTERFACEFRAMEARBDBPANEL

var wxID_BASICINTERFACEFRAMEBUTTON1

var wxID_BASICINTERFACEFRAMEBUTTON2

var wxID_BASICINTERFACEFRAMEBUTTON3

var wxID_BASICINTERFACEFRAMEDISPLAY

var wxID_BASICINTERFACEFRAMEENDOFTHEDAYBUTTON

var wxID_BASICINTERFACEFRAMEEXECUTEBUTTON

var wxID_BASICINTERFACEFRAMEFILEMENUNEW

var wxID_BASICINTERFACEFRAMEFILEMENUOPEN

var wxID_BASICINTERFACEFRAMEINSTRUMENTSBUTTON

var wxID_BASICINTERFACEFRAMEINTERFACESTATUSBAR

var wxID_BASICINTERFACEFRAMEINTERFACETOOLBAR

var wxID_BASICINTERFACEFRAMEINTERFACETOOLBARLAUNCHBOA

var wxID_BASICINTERFACEFRAMEINTERFACETOOLBARSAGE

var wxID_BASICINTERFACEFRAMELEFTINTERFACEPANEL

var wxID_BASICINTERFACEFRAMELOGSPANEL

var wxID_BASICINTERFACEFRAMELOWERCONTROLPANEL

var wxID_BASICINTERFACEFRAMELOWERINTERFACE

var wxID_BASICINTERFACEFRAMELOWERINTERFACEPANEL

var wxID_BASICINTERFACEFRAMEMAINPANEL

var wxID_BASICINTERFACEFRAMEPANEL1

var wxID_BASICINTERFACEFRAMEPLOTPANEL

var wxID_BASICINTERFACEFRAMEREPLACERIGHTCONTROLBUTTTON

var wxID_BASICINTERFACEFRAMERIGHTCONTROLPANEL

var wxID_BASICINTERFACEFRAMESHELL

var wxID_BASICINTERFACEFRAMESTATESBUTTON

var wxID_BASICINTERFACEFRAMETOOLMENULOADSCRIPTS

var wxID_BASICINTERFACEFRAMETOOLMENURUN_PYTHON

var wxID_BASICINTERFACEFRAMEUPPERINTERFACE

var wxID_BASICINTERFACEFRAMEUPPERINTERFACEPANEL

var wxID_BASICINTERFACEFRAMEVISADIALOGBUTTON

var wxID_CONTROL_PANEL

var wxID_EndOfDayDialog

var wxID_EndOfDayDialogCLEAR_FILE

var wxID_EndOfDayDialogDATA_FLAG

var wxID_EndOfDayDialogFILE_CHOOSER

var wxID_EndOfDayDialogFILE_CHOOSER2

var wxID_EndOfDayDialogFILE_DISP

var wxID_EndOfDayDialogFILE_DISP2

var wxID_EndOfDayDialogQUEST1

var wxID_EndOfDayDialogQUEST2

var wxID_EndOfDayDialogQUEST3

var wxID_EndOfDayDialogQUEST4

var wxID_EndOfDayDialogQUEST5

var wxID_EndOfDayDialogQUEST6

var wxID_EndOfDayDialogRESP1

var wxID_EndOfDayDialogRESP2

var wxID_EndOfDayDialogRESP3

var wxID_EndOfDayDialogRESP4

var wxID_EndOfDayDialogRESP5

var wxID_EndOfDayDialogRESP6

var wxID_EndOfDayDialogSTATICBOX

var wxID_EndOfDayDialogSTATICLINE1

var wxID_EndOfDayDialogSUBMIT

var wxID_KEITHLEYIVPANEL

var wxID_KEITHLEYIVPANELACTIONPANEL

var wxID_KEITHLEYIVPANELAQUISTIONCONTROLPANEL

var wxID_KEITHLEYIVPANELAQUISTIONLABELPANEL

var wxID_KEITHLEYIVPANELAQUISTIONPARAMETERPANEL

var wxID_KEITHLEYIVPANELBOWTIECONTROL

var wxID_KEITHLEYIVPANELBOWTIELABEL

var wxID_KEITHLEYIVPANELINFORMATIONPANEL

var wxID_KEITHLEYIVPANELIVBUTTON

var wxID_KEITHLEYIVPANELNOTESCONTROL

var wxID_KEITHLEYIVPANELNOTESLABEL

var wxID_KEITHLEYIVPANELNOTESPANEL

var wxID_KEITHLEYIVPANELNUMBEROFPOINTSCONTROL

var wxID_KEITHLEYIVPANELNUMBEROFPOINTSLABEL

var wxID_KEITHLEYIVPANELPANEL1

var wxID_KEITHLEYIVPANELPLOTBUTTON

var wxID_KEITHLEYIVPANELRESISTANCECONTROL

var wxID_KEITHLEYIVPANELRESISTANCELABEL

var wxID_KEITHLEYIVPANELSAMPLENAMECONTROL

var wxID_KEITHLEYIVPANELSAMPLENAMELABEL

var wxID_KEITHLEYIVPANELSAVEBUTTON

var wxID_KEITHLEYIVPANELSETTLETIMECONTROL

var wxID_KEITHLEYIVPANELSETTLETIMELABEL

var wxID_KEITHLEYIVPANELSTARTCONTROL

var wxID_KEITHLEYIVPANELSTARTLABEL

var wxID_KEITHLEYIVPANELSTOPCONTROL

var wxID_KEITHLEYIVPANELSTOPLABEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELCONTROLSPANEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELCURRENTFILEREGISTERCONTROL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELCURRENTLOGLABEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELCURRENTMETADATACONTROL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELCURRENTMETADATLABEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELDATECONTROL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELDATELABEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELDESCRIPTIONBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELENTRY

var wxID_SIMPLEARBDBLOWERINTERFACEPANELENTRYCONTROLPANEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELIDCONTROL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELIDLABEL

var wxID_SIMPLEARBDBLOWERINTERFACEPANELNEWENTRYBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELNEXTENTRYBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELOPENBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELPREVIOUSENTRYBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELREMOVEENTRYBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELSAVEASBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELSAVEBUTTON

var wxID_SIMPLEARBDBLOWERINTERFACEPANELTEXTENTRYPANEL

var wxID_SIMPLELOGLOWERINTERFACEPANEL

var wxID_SIMPLELOGLOWERINTERFACEPANELCONTROLSPANEL

var wxID_SIMPLELOGLOWERINTERFACEPANELCURRENTLOGCONTROL

var wxID_SIMPLELOGLOWERINTERFACEPANELCURRENTLOGLABEL

var wxID_SIMPLELOGLOWERINTERFACEPANELDATECONTROL

var wxID_SIMPLELOGLOWERINTERFACEPANELDATELABEL

var wxID_SIMPLELOGLOWERINTERFACEPANELDESCRIPTIONBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELENTRY

var wxID_SIMPLELOGLOWERINTERFACEPANELENTRYCONTROLPANEL

var wxID_SIMPLELOGLOWERINTERFACEPANELIDCONTROL

var wxID_SIMPLELOGLOWERINTERFACEPANELIDLABEL

var wxID_SIMPLELOGLOWERINTERFACEPANELNEWENTRYBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELNEXTENTRYBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELOPENBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELPREVIOUSENTRYBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELREMOVEENTRYBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELSAVEASBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELSAVEBUTTON

var wxID_SIMPLELOGLOWERINTERFACEPANELTEXTENTRYPANEL

var wxID_VISADIALOG

var wxID_VISADIALOGASKBUTTON

var wxID_VISADIALOGCOMMANDPANEL

var wxID_VISADIALOGINPUTLABEL

var wxID_VISADIALOGINSTRUMENTCHOICE

var wxID_VISADIALOGINSTRUMENTCHOOSERPANEL

var wxID_VISADIALOGINSTRUMENTLABEL

var wxID_VISADIALOGREADBUTTON

var wxID_VISADIALOGRESPONSELABEL

var wxID_VISADIALOGRESPONSETEXT

var wxID_VISADIALOGTEXTINPUT

var wxID_VISADIALOGTEXTPANEL

var wxID_VISADIALOGWRITEBUTTON