예제 #1
0
    def __init__(self, *args,
                 **kwargs):  # , source, destination, fps, size, gui, serial
        self.log = logging.getLogger(__name__)
        QtGui.QMainWindow.__init__(self)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Spotter main class, handles Grabber, Writer, Tracker, Chatter
        self.__spotter_ref = Spotter(*args, **kwargs)

        # Status Bar
        self.status_bar = StatusBar(self)
        self.statusBar().addWidget(self.status_bar)

        # Side bar widget
        self.side_bar = SideBar.SideBar(self)
        self.ui.frame_parameters.addWidget(self.side_bar)

        # Exit Signals
        self.ui.actionE_xit.setShortcut('Ctrl+Q')
        self.ui.actionE_xit.setStatusTip('Exit Spotter')
        self.connect(self.ui.actionE_xit, QtCore.SIGNAL('triggered()'),
                     QtCore.SLOT('close()'))

        # About window
        self.connect(self.ui.actionAbout, QtCore.SIGNAL('triggered()'),
                     self.about)

        # Menu Bar items
        #   File
        self.connect(self.ui.actionFile, QtCore.SIGNAL('triggered()'),
                     self.file_open_video)
        self.connect(self.ui.actionCamera, QtCore.SIGNAL('triggered()'),
                     self.file_open_device)
        #   Configuration
        self.connect(self.ui.actionLoadConfig, QtCore.SIGNAL('triggered()'),
                     self.load_config)
        self.connect(self.ui.actionSaveConfig, QtCore.SIGNAL('triggered()'),
                     self.save_config)
        self.connect(self.ui.actionRemoveTemplate,
                     QtCore.SIGNAL('triggered()'),
                     self.side_bar.remove_all_tabs)

        # Toolbar items
        self.connect(self.ui.actionRecord, QtCore.SIGNAL('toggled(bool)'),
                     self.record_video)
        self.connect(self.ui.actionSourceProperties,
                     QtCore.SIGNAL('triggered()'),
                     self.spotter.grabber.get_capture_properties)
        # Serial/Arduino Connection status indicator
        self.arduino_indicator = SerialIndicator(self.spotter.chatter)
        self.ui.toolBar.addWidget(self.arduino_indicator)

        # OpenGL frame
        self.gl_frame = GLFrame(AA=True)
        self.ui.frame_video.addWidget(self.gl_frame)
        self.gl_frame.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                    QtGui.QSizePolicy.Expanding)

        # handling mouse events by the tabs for selection of regions etc.
        self.gl_frame.sig_event.connect(self.mouse_event_to_tab)

        # Loading template list in folder
        default_path = os.path.join(os.path.abspath(DIR_CONFIG),
                                    DEFAULT_TEMPLATE)
        self.template_default = self.parse_config(default_path, True)
        #list_of_files = [f for f in os.listdir(DIR_TEMPLATES) if f.lower().endswith('ini')]

        # Main Window states
        self.center_window()
        self.connect(self.ui.actionOnTop, QtCore.SIGNAL('toggled(bool)'),
                     self.toggle_window_on_top)

        # Starts main frame grabber loop
        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.refresh)
        self.timer.start(GUI_REFRESH_INTERVAL)

        self.stopwatch = QtCore.QElapsedTimer()
        self.stopwatch.start()
예제 #2
0
    def __init__(self, *args,
                 **kwargs):  # , source, destination, fps, size, gui, serial
        self.log = logging.getLogger(__name__)
        QtGui.QMainWindow.__init__(self)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Spotter main class, handles Grabber, Writer, Tracker, Chatter
        #  self.spotter_queue= multiprocessing.Queue(16)
        self.__spotter_ref = Spotter(*args, **kwargs)

        # Status Bar
        self.status_bar = StatusBar(self)
        self.statusBar().addWidget(self.status_bar)

        # Side bar widget
        self.side_bar = SideBar.SideBar(self)
        self.ui.frame_parameters.addWidget(self.side_bar)

        # Exit Signals
        #self.ui.actionE_xit.setShortcut('Ctrl+Q')
        #self.ui.actionE_xit.setStatusTip('Exit Spotter')
        #self.connect(self.ui.actionE_xit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

        # About window
        self.connect(self.ui.actionAbout, QtCore.SIGNAL('triggered()'),
                     self.about)

        #  Open File
        self.connect(self.ui.actionFile, QtCore.SIGNAL('toggled(bool)'),
                     self.file_open_video)
        # Open Video
        self.connect(self.ui.actionCamera, QtCore.SIGNAL('toggled(bool)'),
                     self.file_open_device)
        #   Configuration
        # Load template
        self.connect(self.ui.actionLoadConfig, QtCore.SIGNAL('triggered()'),
                     self.load_config)
        # Save template
        self.connect(self.ui.actionSaveConfig, QtCore.SIGNAL('triggered()'),
                     self.save_config)
        #remove all templates
        self.connect(self.ui.actionRemoveTemplate,
                     QtCore.SIGNAL('triggered()'),
                     self.side_bar.remove_all_tabs)
        #turns GUI on/off --> stabilizes framerate
        self.connect(self.ui.actionGUI_on_off, QtCore.SIGNAL('toggled(bool)'),
                     self.GUI_timers)

        # Toolbar items
        #record video
        self.connect(self.ui.actionRecord, QtCore.SIGNAL('toggled(bool)'),
                     self.record_video)
        #record data log
        self.connect(self.ui.actionLogger, QtCore.SIGNAL('toggled(bool)'),
                     self.start_log)
        #outputs the results for each object to a separate figure
        self.connect(self.ui.actionReset, QtCore.SIGNAL('triggered()'),
                     self.reset_hist)
        #clears output history, and resets filters
        self.connect(self.ui.actionGraph, QtCore.SIGNAL('triggered()'),
                     self.output_graph)
        #show action properties
        #self.connect(self.ui.actionSourceProperties, QtCore.SIGNAL('triggered()'),self.props)
        # Serial/Arduino Connection status indicator
        self.arduino_indicator = SerialIndicator(self.spotter.chatter)
        self.ui.toolBar.addWidget(self.arduino_indicator)

        # OpenGL frame
        self.gl_frame = GLFrame(AA=True)
        self.ui.frame_video.addWidget(self.gl_frame)
        self.gl_frame.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                    QtGui.QSizePolicy.Expanding)

        # handling mouse events by the tabs for selection of regions etc.
        self.gl_frame.sig_event.connect(self.mouse_event_to_tab)

        # Loading template list in folder
        default_path = os.path.join(os.path.abspath(DIR_CONFIG),
                                    DEFAULT_TEMPLATE)

        self.template_default = self.parse_config(default_path, True)
        #list_of_files = [f for f in os.listdir(DIR_TEMPLATES) if f.lower().endswith('ini')]

        # Main Window states
        self.center_window()
        self.connect(self.ui.actionOnTop, QtCore.SIGNAL('toggled(bool)'),
                     self.toggle_window_on_top)
        #Outputs FPS signal
        self.connect(self.ui.actionFPS_test, QtCore.SIGNAL('toggled(bool)'),
                     self.trackFPS)

        #asynchronously updates GUI
        self.connect(self.ui.actionSpeed_up, QtCore.SIGNAL('toggled(bool)'),
                     self.speedUp)

        # Starts main frame grabber loop
        self.timerGL = QtCore.QTimer(self)
        self.timerGL.timeout.connect(self.refresh)

        self.timerSide = QtCore.QTimer(self)
        self.timerSide.timeout.connect(self.side_bar.update_current_page)

        #
        self.stopwatch = QtCore.QElapsedTimer()
        self.stopwatch.start()
        #Main timer for updating Spotter
        self.timer2 = QtCore.QTimer(self)
        self.timer2.timeout.connect(self.spotterUpdate)
        #SPOTTER_REFRESH_INTERVAL=int(1000.0/self.spotter.grabber.capture.get(5))
        self.timer2.start(SPOTTER_REFRESH_INTERVAL)

        self.ui.actionSpeed_up.setChecked(True)
        self.ui.actionFPS_test.setChecked(True)