示例#1
0
文件: view.py 项目: Pitrified/snippet
    def __init__(self, root):
        log = logging.getLogger(f"c.{__name__}.init")
        log.info("Start init")

        self.root = root

        # setup grid for root
        self.root.grid_rowconfigure(0, weight=1)
        self.root.grid_columnconfigure(0, weight=1)
        self.root.grid_columnconfigure(1, weight=0)

        # create children widget
        self.plot_panel = PlotPanel(self.root, bg="SeaGreen1")
        self.side_panel = SidePanel(self.root, bg="dark orange")

        # grid children widget
        self.plot_panel.grid(row=0, column=0, sticky="nsew")
        self.side_panel.grid(row=0, column=1, sticky="nsew")
示例#2
0
    def __init__(self, parent, title):

        wx.Frame.__init__(self, parent, title=title, size=(1200, 600))

        self.splash = Splash(os.path.normpath(
            os.path.join(MEDIA_PATH, "Jormungandr.jpg")),
                             parent=self)

        # Icon
        _icon = wx.NullIcon
        _icon.CopyFromBitmap(
            wx.Bitmap(os.path.normpath(os.path.join(MEDIA_PATH, "icon.png")),
                      wx.BITMAP_TYPE_ANY))
        self.SetIcon(_icon)

        # Status Bar
        self.statusbar = self.CreateStatusBar()

        # Menu Bar
        self.frame_1_menubar = wx.MenuBar()

        # File menu
        wxglade_tmp_menu = wx.Menu()
        ID_FILE_OPEN = wxglade_tmp_menu.Append(wx.ID_ANY, "&Open\tCTRL+O",
                                               "Open a previous session",
                                               wx.ITEM_NORMAL).GetId()
        ID_FILE_SAVE = wxglade_tmp_menu.Append(wx.ID_ANY, "&Save\tCTRL+S",
                                               "Save this session",
                                               wx.ITEM_NORMAL).GetId()
        ID_FILE_SAVEAS = wxglade_tmp_menu.Append(wx.ID_ANY,
                                                 "Save &As\tALT+SHIFT+S",
                                                 "Save this session as...",
                                                 wx.ITEM_NORMAL).GetId()
        ID_FILE_QUIT = wxglade_tmp_menu.Append(wx.ID_ANY, "&Quit\tCTRL+Q",
                                               "Quit this session",
                                               wx.ITEM_NORMAL).GetId()
        self.frame_1_menubar.Append(wxglade_tmp_menu, "&File")

        # Help menu
        wxglade_tmp_menu = wx.Menu()
        ID_HELP_ABOUT = wxglade_tmp_menu.Append(wx.ID_ANY, "&About",
                                                "Display about dialog",
                                                wx.ITEM_NORMAL).GetId()
        self.frame_1_menubar.Append(wxglade_tmp_menu, "&Help")
        self.SetMenuBar(self.frame_1_menubar)

        # Splitter Window
        self.sp = wx.SplitterWindow(self, style=wx.SUNKEN_BORDER)
        self.p2 = PlotPanel(self.sp, self.statusbar)
        self.p1 = PropertyGridPanel(self.sp, self.p2.updatePlot)
        self.sp.SplitVertically(self.p1, self.p2, 400)

        # Event Bindings
        self.Bind(wx.EVT_MENU, self.OnOpen, id=ID_FILE_OPEN)
        self.Bind(wx.EVT_MENU, self.OnSave, id=ID_FILE_SAVE)
        self.Bind(wx.EVT_MENU, self.OnSaveAs, id=ID_FILE_SAVEAS)
        self.Bind(wx.EVT_MENU, self.OnExit, id=ID_FILE_QUIT)
        self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_HELP_ABOUT)

        # Open Menu Wildcard
        self.wildcard = "GUI Save File (*.map)|*.map"

        # Current Working File
        self.working_file = None

        # update the plot
        self.p2.plot(self.p1.pg.GetPropertyValues())

        # Set Statusbar text
        self.statusbar.SetStatusText('Ready')
    def __do_layout(self):

        #Sizers:
        main_sizer = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.FlexGridSizer(2, 1, 0, 0)
        sizerTitleBar = wx.FlexGridSizer(1, 7, 0, 0)

        #Titlebar:
        iconTitleBar = wx.StaticBitmap(self.panelTitleBar, wx.ID_ANY, wx.Bitmap("Lx_Icons/Desktop_Icon22x22.png", wx.BITMAP_TYPE_ANY))
        sizerTitleBar.Add(iconTitleBar, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 1)

        title = wx.StaticText(self.panelTitleBar, wx.ID_ANY, "Visual Speech Training System v2.0 ")
        title.SetForegroundColour(wx.Colour(255, 255, 255))
        title.SetFont(wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
        sizerTitleBar.Add(title, 0, wx.ALIGN_CENTER_VERTICAL | wx.BOTTOM | wx.TOP, 10)
        sizerTitleBar.Add(self.btnManual, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 4)
        sizerTitleBar.Add(self.btnColor, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 4)
        sizerTitleBar.Add(self.btnMinimize, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 4)
        sizerTitleBar.Add(self.btnMaximize, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 4)
        sizerTitleBar.Add(self.btnExit, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 4)
        sizerTitleBar.AddGrowableRow(0)
        sizerTitleBar.AddGrowableCol(1)

        self.panelTitleBar.SetSizer(sizerTitleBar)
        grid_sizer_1.Add(self.panelTitleBar, 1, wx.EXPAND, 0)

        grid_sizer_1.Add(self.panelBody, 1, wx.EXPAND, 0)
        grid_sizer_1.AddGrowableRow(1)
        grid_sizer_1.AddGrowableCol(0)
        main_sizer.Add(grid_sizer_1,0, wx.EXPAND, 0) #minimize


        """Start of frame_box that holds boxsizers which Initialise the left, right toolbars and left, right Panels"""
        frame_box = wx.BoxSizer(wx.VERTICAL)

        top_box = wx.BoxSizer(wx.HORIZONTAL)

        '''Start of left_toolbar_box to hold all the tool on left side of the App'''
        left_toolbar_box = wx.BoxSizer(wx.VERTICAL)

        self.leftToolbar = wx.ToolBar(self, style=wx.TB_VERTICAL | wx.EXPAND | wx.TB_FLAT | wx.TB_NODIVIDER)
        # Add a tool button for clearing the current signal
        for i in range(20):
            self.leftToolbar.AddStretchableSpace()
        # Add a tool button for acquiring a new signal
        img = wx.Image('Lx_Icons/Signal_Normal.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        l_acquire_tool = self.leftToolbar.AddTool(2, 'Signal', wx.Bitmap(img), 'Acquire new signal')
        self.Bind(wx.EVT_TOOL, self.on_Switch_Left_Panel, l_acquire_tool)
        for i in range(3):
            self.leftToolbar.AddStretchableSpace()

        # Add a tool button for analyzing the current signal
        img = wx.Image('Lx_Icons/Analysis_Normal.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        l_analyze_tool = self.leftToolbar.AddTool(3, 'Analyze', wx.Bitmap(img), 'Analyze current signal')
        self.Bind(wx.EVT_TOOL, self.on_Switch_Left_Analysis_Panel, l_analyze_tool)
        for i in range(3):
            self.leftToolbar.AddStretchableSpace()

        # Add a tool button for animating the current signal
        img = wx.Image('Lx_Icons/Animation_Disabled.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        l_animate_tool = self.leftToolbar.AddTool(4, 'Animation', wx.Bitmap(img), 'Animate current signal')
        # self.on_left_animation(None, init=True)
        self.leftToolbar.EnableTool(4, enable=False)
        self.Bind(wx.EVT_TOOL, self.on_Switch_Left_Animation_Panel, l_animate_tool)
        self.leftToolbar.AddStretchableSpace()

        self.leftToolbar.Realize()

        left_toolbar_box.Add(self.leftToolbar, 1, wx.EXPAND, 1)

        self.editLeftMessage = wx.TextCtrl(self, wx.ID_ANY, u"Message", wx.DefaultPosition, wx.Size( 107,40 ), wx.TE_CENTRE|wx.TE_READONLY |wx.TE_RICH2)
        self.editLeftMessage.SetFont(wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
        self.editLeftMessage.SetForegroundColour(wx.Colour(255, 255, 255))
        self.editLeftMessage.SetBackgroundColour(wx.Colour(64,134,170,1))
        left_toolbar_box.Add(self.editLeftMessage, 0)

        top_box.Add(left_toolbar_box, 0, wx.ALL | wx.EXPAND, 1)
        '''End of left_toolbar_box'''

        '''Start of left_signal_box to hold PlotPanel and SignalAcquisitionDialog Panel on Left Side'''
        left_signal_box = wx.BoxSizer(wx.VERTICAL)

        self.plot_panel[0] = PlotPanel(self, title=self.user_data[0].user_name)
        left_signal_box.Add(self.plot_panel[0], 1, wx.ALL | wx.EXPAND, 1)  # Expanded

        self.signal_acqui[0] = SignalAcquisitionDialog(self, self.user_data[0])
        self.signal_acqui[0].Hide()
        left_signal_box.Add(self.signal_acqui[0], 1, wx.ALL | wx.EXPAND, 1)

        self.analysis_panel[0] = Analysis_Panel(self, self.user_data[0])
        self.analysis_panel[0].Hide()
        left_signal_box.Add(self.analysis_panel[0], 1, wx.ALL | wx.EXPAND, 1)

        self.analysis_lower_left[0] = Analysis_Lower_Left(self, self.user_data[0])
        self.analysis_lower_left[0].Hide()

        left_signal_box.Add(self.analysis_lower_left[0], 1, wx.ALL | wx.EXPAND, 1)

        self.animation_panel[0] = AnimationLeftPanel(self, self.user_data[0])
        self.animation_panel[0].Hide()
        left_signal_box.Add(self.animation_panel[0], 0, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 1)


        top_box.Add(left_signal_box, 1, wx.ALL | wx.EXPAND, 1)
        '''End of left_signal_box'''

        '''Start of right_signal_box to hold PlotPanel and SignalAcquisitionDialog Panel on Right Side'''
        right_signal_box = wx.BoxSizer(wx.VERTICAL)

        self.plot_panel[1] = PlotPanel(self, title=self.user_data[1].user_name)
        right_signal_box.Add(self.plot_panel[1], 1, wx.ALL | wx.EXPAND, 1)
        self.signal_acqui[1] = SignalAcquisitionDialog(self, self.user_data[1])
        self.signal_acqui[1].Hide()
        right_signal_box.Add(self.signal_acqui[1], 1, wx.ALL | wx.EXPAND, 1)

        self.analysis_panel[1] = Analysis_Panel(self, self.user_data[1])
        self.analysis_panel[1].Hide()
        right_signal_box.Add(self.analysis_panel[1], 1, wx.ALL | wx.EXPAND, 1)

        self.analysis_lower_left[1] = Analysis_Lower_Left(self, self.user_data[1])
        self.analysis_lower_left[1].Hide()
        right_signal_box.Add(self.analysis_lower_left[1], 1, wx.ALL | wx.EXPAND, 1)

        self.animation_panel[1] = AnimationRightPanel(self, self.user_data[0])
        self.animation_panel[1].Hide()
        right_signal_box.Add(self.animation_panel[1], 0, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 1)

        top_box.Add(right_signal_box, 1, wx.ALL | wx.EXPAND, 1)
        '''End of right_signal_box'''


        '''Start of right_toolbar_box to hold all the tool on right side of the App'''
        right_toolbar_box = wx.BoxSizer(wx.VERTICAL)
        self.rightToolbar = wx.ToolBar(self, style=wx.TB_VERTICAL | wx.EXPAND | wx.TB_FLAT | wx.TB_NODIVIDER)

        for i in range(20):
            self.rightToolbar.AddStretchableSpace()


        # Add a tool button for acquiring a new signal
        img = wx.Image('Lx_Icons/Signal_Normal.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        self.r_acquire_tool = self.rightToolbar.AddTool(101, 'Signal', wx.Bitmap(img), 'Acquire new signal')
        # self.Bind(wx.EVT_TOOL, self.on_acquire_signal_right, self.r_acquire_tool)
        # self.on_right_signal(None, init=True)
        self.Bind(wx.EVT_TOOL, self.on_Switch_Right_Panel, self.r_acquire_tool)
        for i in range(3):
            self.rightToolbar.AddStretchableSpace()
        # self.rightToolbar.AddSeparator()

        # Add a tool button for analyzing the current signal
        img = wx.Image('Lx_Icons/Analysis_Normal.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        self.r_analyze_tool = self.rightToolbar.AddTool(102, 'Analyze', wx.Bitmap(img), 'Analyze current signal')
        self.Bind(wx.EVT_TOOL, self.on_Switch_Right_Analysis_Panel, self.r_analyze_tool)
        # self.on_right_analysis(None, init=True)
        # self.Bind(wx.EVT_TOOL, self.on_right_analysis, self.r_analyze_tool)
        for i in range(3):
            self.rightToolbar.AddStretchableSpace()
        # self.rightToolbar.AddSeparator()

        # Add a tool button for animating the current signal
        img = wx.Image('Lx_Icons/Animation_Disabled.png').Scale(100, 60, wx.IMAGE_QUALITY_HIGH)
        r_animate_tool = self.rightToolbar.AddTool(103, 'Animation', wx.Bitmap(img), 'Animate current signal')
        self.Bind(wx.EVT_TOOL, self.onClear(), r_animate_tool)
        self.rightToolbar.EnableTool(103, enable=False)
        # self.on_right_animation(None, init=True)
        self.Bind(wx.EVT_TOOL, self.on_Switch_Right_Animation_Panel, r_animate_tool)
        self.rightToolbar.AddStretchableSpace()

        self.rightToolbar.Realize()
        # self.rightToolbar.SetBackgroundColour('#4086aa')  # Setting Background Colour on rightToolbar
        self.leftToolbar.SetBackgroundColour((64,134,170,1))  # Setting Background Colour on leftToolbar
        self.rightToolbar.SetBackgroundColour((64,134,170,1))


        right_toolbar_box.Add(self.rightToolbar, 1, wx.EXPAND, 1)

        self.editRightMessage = wx.TextCtrl(self, wx.ID_ANY, u"Message", wx.DefaultPosition, wx.Size(107, 40),
                                           wx.TE_CENTRE|wx.TE_READONLY |wx.TE_RICH2)
        self.editRightMessage.SetFont(wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
        self.editRightMessage.SetForegroundColour(wx.Colour(255, 255, 255))
        self.editRightMessage.SetBackgroundColour(wx.Colour(64, 134, 170, 1))
        right_toolbar_box.Add(self.editRightMessage, 0)


        top_box.Add(right_toolbar_box, 0, wx.ALL | wx.EXPAND, 1)
        '''End of right_toolbar_box'''

        frame_box.Add(top_box, 1, wx.ALL | wx.EXPAND, 1)
        """End of frame_box that holds all boxsizers"""
        main_sizer.Add(frame_box, 1, wx.EXPAND, 0)


        self.SetSizer(main_sizer)
        self.Layout()