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()
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)