Example #1
0
class MainFrame(wx.Frame):
    def __init__(self, parent, title, theProject, fielddef, config, package,
                 transDescs):
        self.theProject = theProject
        self.config = config
        self.fielddef = fielddef
        self.package = package
        self.transDescs = transDescs
        self.switch = None
        self.splitter = None
        self.configChanged = False

        wx.Frame.__init__(self, parent, -1, title, wx.Point(200, 200),
                          wx.Size(800, 600))
        wx.EVT_SIZE(self, self.OnSize)
        self.Menubar = wx.MenuBar(wx.MB_DOCKABLE)
        wx.EVT_MENU(self, 0x201, self.OnMenuClose)
        wx.EVT_MENU(self, 0x203, self.OnMenuConnect)
        wx.EVT_MENU(self, 0x204, self.OnMenuDisconnect)
        wx.EVT_MENU(self, 0x205, self.OnMenuSetting)
        wx.EVT_MENU(self, 0x206, self.OnMenuHelp)

        FileMenu = wx.Menu("", wx.MENU_TEAROFF)
        FileMenu.Append(0x201, "Exit", "")
        self.Menubar.Append(FileMenu, "File")
        MngMenu = wx.Menu("", wx.MENU_TEAROFF)
        MngMenu.Append(0x203, "Open Connection", "")
        MngMenu.Append(0x204, "Close Connection", "")
        MngMenu.Append(0x205, "Setting", "")
        self.Menubar.Append(MngMenu, "Managment")
        HelpMenu = wx.Menu("", wx.MENU_TEAROFF)
        HelpMenu.Append(0x206, "About")
        self.Menubar.Append(HelpMenu, "Help")
        self.SetMenuBar(self.Menubar)

        self.splitter = wx.SplitterWindow(self, -1, style=wx.SP_3D)
        if doingStressTest:
            self.dataFrame = StressTestFrame(self.splitter, self.package,
                                             self.transDescs)
        else:
            self.dataFrame = SingleCaseFrame(self.splitter, self.package,
                                             self.transDescs)
        self.logFrame = MsgLogFrame(self.splitter, -1)
        self.splitter.SplitVertically(self.dataFrame, self.logFrame, 550)
        self.dataFrame._logFrame = self.logFrame

        wx.EVT_CLOSE(self, self.OnCloseWindow)

        icon = wx.Icon('icons/Simulator.ico', wx.BITMAP_TYPE_ICO)
        self.SetIcon(icon)

    def OnCloseWindow(self, event):
        if self.configChanged:
            SaveConfiguration(self.theProject, self.config)
        if (self.switch != None):
            self.switch.quit()

        self.dataFrame.OnCloseWindow(event)
        self.Destroy()
        event.Skip()

    def OnSize(self, event):
        size = self.GetClientSize()
        if (self.splitter != None):
            self.splitter.SetSize(size)
        event.Skip()

    def OnMenuClose(self, event):
        self.Close()
        event.Skip()

    def OnMenuOpen(self, event):
        dlg = wx.FileDialog(self)
        btn = dlg.ShowModal()
        if (btn == wx.ID_OK):
            filename = dlg.GetPath()
            self.transDesc = CreateTransDescObject(self.fields, filename,
                                                   self.config)
            self.dataFrame.setTransDesc(self.transDesc)
            self.config['case'] = filename
        return

    def OnMenuConnect(self, event):
        if (self.switch == None):
            self.switch = Switch(self.config, self.fielddef, self.package)
            self.switch.online()
            self.dataFrame.setSwitch(self.switch)
            self.switch.setTransactionThread(self.dataFrame)

    def OnMenuDisconnect(self, event):
        if (self.switch != None):
            self.switch.quit()
            self.switch = None
            self.dataFrame.setSwitch(None)

    def OnMenuSetting(self, event):
        dlg = SettingDialog(self, "Setting Dialog", self.config)
        dlg.CenterOnScreen()
        val = dlg.ShowModal()
        if (val == wx.ID_OK):
            if dlg.changed:
                self.config = dlg.config
                self.configChanged = true
        dlg.Destroy()

    def OnMenuHelp(self, event):
        dlg = AboutDialog(self, "About")
        dlg.CenterOnScreen()
        dlg.ShowModal()
        dlg.Destroy()