class TrackerUserInterface(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.batch_tracking_enabled = False #main widget self.setObjectName(_fromUtf8("self")) self.resize(1000, 835) self.setMinimumSize(QtCore.QSize(450, 770)) # main vertical layout self.vertLO_main = QtGui.QVBoxLayout(self) self.vertLO_main.setObjectName(_fromUtf8("vertLO_main")) # horizontal layout video + options self.hoLO_video_plus_options = QtGui.QHBoxLayout() self.hoLO_video_plus_options.setObjectName( _fromUtf8("hoLO_video_plus_options")) # graphical output label # self.lbl_video_output_label = QtGui.QLabel(self) # self.lbl_video_output_label.setMinimumWidth((self.geometry().width()-22)/2) # self.lbl_video_output_label.setObjectName(_fromUtf8("lbl_videl_output_label")) # self.lbl_video_output_label.setAlignment(QtCore.Qt.AlignCenter) # self.hoLO_video_plus_options.addWidget(self.lbl_video_output_label) # options tab widget self.tab_widget_options = QtGui.QTabWidget(self) self.tab_widget_options.setObjectName(_fromUtf8("tab_widget_options")) # file tab self.tab_file = TabFile() self.tab_widget_options.addTab(self.tab_file, _fromUtf8("")) # roi tab self.tab_roi = TabRoi() self.tab_widget_options.addTab(self.tab_roi, _fromUtf8("")) # adv tab self.tab_adv = TabAdv() self.tab_widget_options.addTab(self.tab_adv, _fromUtf8("")) # visuals tab self.tab_visual = TabVisual() self.tab_widget_options.addTab(self.tab_visual, _fromUtf8("")) # meta tab self.tab_meta = TabMeta() self.tab_widget_options.addTab(self.tab_meta, _fromUtf8("")) # add options widget to horizontal layout self.hoLO_video_plus_options.addWidget(self.tab_widget_options) # add video_plus_options tab to main widget self.vertLO_main.addLayout(self.hoLO_video_plus_options) # horizontal layout bot buttons self.hoLO_bot_buttons = QtGui.QHBoxLayout() self.hoLO_bot_buttons.setObjectName(_fromUtf8("hoLO_bot_buttons")) # button start tracking self.btn_start_tracking = QtGui.QPushButton(self) self.btn_start_tracking.setMinimumSize(QtCore.QSize(0, 50)) self.btn_start_tracking.setObjectName(_fromUtf8("btn_start_tracking")) self.btn_start_tracking.setDisabled(False) self.hoLO_bot_buttons.addWidget(self.btn_start_tracking) # vertical layout file label and progress label self.vert_lo_file_progress = QtGui.QVBoxLayout() # file bel self.lbl_file = QtGui.QLabel() self.lbl_file.setObjectName(_fromUtf8("lbl_file")) self.lbl_file.setText(_fromUtf8("no file started")) self.vert_lo_file_progress.addWidget(self.lbl_file) # progress label self.lbl_progress = QtGui.QLabel() self.lbl_progress.setObjectName(_fromUtf8("lbl_progress")) self.lbl_progress.setText(_fromUtf8("Progress:")) self.vert_lo_file_progress.addWidget(self.lbl_progress) self.hoLO_bot_buttons.addLayout(self.vert_lo_file_progress) # button abort tracking self.btn_abort_tracking = QtGui.QPushButton(self) self.btn_abort_tracking.setMinimumSize(QtCore.QSize(0, 50)) self.btn_abort_tracking.setObjectName(_fromUtf8("btn_abort_tracking")) self.btn_abort_tracking.setDisabled(True) self.hoLO_bot_buttons.addWidget(self.btn_abort_tracking) # add button layout to main widget layout self.vertLO_main.addLayout(self.hoLO_bot_buttons) self.retranslate_ui(self) self.tab_widget_options.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(self) self.controller = Controller(self) self.connect_controller_to_tabs() self.tracker = Tracker(controller=self.controller) # self.tab_roi.populate(self.tracker.roim) self.controller.preset_options() self.connect_widgets() self.set_shortcuts() def connect_controller_to_tabs(self): self.tab_roi.connect_to_controller(self.controller) self.tab_meta.connect_to_controller(self.controller) # TODO connect to other tabs def retranslate_ui(self, tracker_main_widget): tracker_main_widget.setWindowTitle( _translate("tracker_main_widget", "Tool For Tracking Fish - [TF]² Ver. 1.5 beta", None)) self.tab_file.retranslate_tab_file() self.tab_roi.retranslate_tab_roi() self.tab_adv.retranslate_tab_adv() self.tab_visual.retranslate_tab_visual() self.tab_meta.retranslate_tab_meta() self.tab_widget_options.setTabText( self.tab_widget_options.indexOf(self.tab_file), _translate("tracker_main_widget", "File", None)) self.tab_widget_options.setTabText( self.tab_widget_options.indexOf(self.tab_roi), _translate("tracker_main_widget", "ROI", None)) self.tab_widget_options.setTabText( self.tab_widget_options.indexOf(self.tab_adv), _translate("tracker_main_widget", "Advanced", None)) self.tab_widget_options.setTabText( self.tab_widget_options.indexOf(self.tab_visual), _translate("tracker_main_widget", "Visualization", None)) self.tab_widget_options.setTabText( self.tab_widget_options.indexOf(self.tab_meta), _translate("tracker_main_widget", "Meta Data", None)) self.btn_start_tracking.setText( _translate("tracker_main_widget", "Start Tracking", None)) self.btn_abort_tracking.setText( _translate("tracker_main_widget", "Abort Tracking", None)) def set_shortcuts(self): self.btn_start_tracking.setShortcut('Ctrl+s') self.btn_start_tracking.setToolTip("Strg + S") self.tab_file.btn_browse_file.setShortcut('Ctrl+f') self.tab_file.btn_browse_file.setToolTip("Strg + F") def center_ui(self, qApp): # screen = QDesktopWidget().screenGeometry() screen = qApp.desktop().screenGeometry() gui_size = self.geometry() x_pos = (screen.width() - gui_size.width()) / 2 y_pos = (screen.height() - gui_size.height() - gui_size.height()) / 2 self.move(x_pos, y_pos) def set_new_tracker(self, controller): self.tab_roi.clear() self.tab_meta.clear_tabs() if self.batch_tracking_enabled: self.tracker = Tracker(controller=controller, batch_mode_on=True) else: self.tracker = Tracker(controller=controller) return def connect_widgets(self): self.tab_file.connect_widgets(self.controller) self.tab_roi.connect_widgets(self.controller) self.tab_adv.connect_widgets(self.controller) self.tab_visual.connect_widgets(self.controller) self.tab_meta.connect_widgets(self.controller) self.btn_start_tracking.clicked.connect(self.controller.start_tracking) self.btn_abort_tracking.clicked.connect(self.controller.abort_tracking)