class Temperature_graph(): def __init__(self): ''' This method adds the matplotlib pyplot to the UI. It fits the plot inside a layout, which is then set to a QFrame. The graph redrawing should be handled by a thread other than the main one. ''' #self.queue = temp_queue #t = threading.Thread(target = self.queue.read_port) #t.daemon = True #t.start() # a figure instance to plot on self.figure = plt.figure() # this is the Canvas Widget that displays the `figure` self.canvas = FigureCanvas(self.figure) #Add a timer to redraw the graph #The timer is not optimal, and this should run on a separate thread. #The graph should be updated on demand... each time a new value is read from the serial port... #self.plot_timer = self.canvas.new_timer(interval=50) #self.plot_timer.add_callback(self.redraw_graph) #Create the layout for the frame self.layout = QHBoxLayout() #Add the Figure to the layout self.layout.addWidget(self.canvas) self.layout.setStretchFactor(self.canvas, 1) #self.redraw_graph() #self.plot_timer.start() def set_graph_queue(self, temperature_queue): self.queue = temperature_queue def get_layout(self): return self.layout def redraw_graph(self, new_value_read): #def redraw_graph(self): ''' This method redraws the graph. It's called everytime the plot_timer reaches zero. ''' #print "I enter here... x =", x # the histogram of the data #x should be my queue... data = self.queue.get_queue() #n, bins, patches = plt.hist(list(data), 50, normed=1, facecolor='b', alpha=0.75) #matplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, **kwargs) N = numpy.arange(len(data)) #number of data to be plotted #print "N = ", N bar_plot = plt.bar( N, height = data, width = 0.8, bottom = None, color = 'c', hold = None) #plt.xlabel('Smarts') plt.ylabel('Valor de Temperatura') #plt.title('Histogram of IQ') #plt.text(60, .025, r'$\mu=100,\ \sigma=15$') #plt.axis([40, 160, 0, 0.03]) plt.grid(True) plt.xlim(0, 20) plt.ylim(0, 45) #I erase the old data graph, because I'm redrawing it with new values. plt.hold(False) #Re-draw the graph (with the new values) self.canvas.draw() #plt.show() ''' # random data data = self.queue.get_queue() print "cola = ", list(self.queue.get_queue()) #data = [10,17,30,22,6,3,34,24,15] #random.random() for i in range(10) # create an axis ax = self.figure.add_subplot(111) # discards the old graph ax.hold(False) # plot data ax.plot(data, '*-') #Set rango de valores del eje y ax.set_ylim([0,42]) ax.set_xlim([-1,20]) ax.set_title("Variacion de Temperatura") #ax.xlabel('Smarts') # refresh canvas self.canvas.draw() '''
class StepperWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) # filename = QFileDialog.getOpenFileName(self, "Open File")[0] # self.setWindowTitle(os.path.basename(filename)) # self.transcript = StepperTranscript(filename) self.transcript = None self.outer_widget = QWidget() self.setCentralWidget(self.outer_widget) outer_layout = QHBoxLayout() self.outer_widget.setLayout(outer_layout) self.setLayout(outer_layout) left_layout = QVBoxLayout() outer_layout.addLayout(left_layout) display_widget = QWidget() left_layout.addWidget(display_widget) self.display_layout = QHBoxLayout() # self.turn = self.transcript.current_turn() self.time_field = qHotField("time", str, "00:00:00", min_size=75, max_size=75, pos="top", handler=self.update_time) self.display_layout.addWidget(self.time_field) self.speaker_field = qHotField("speaker", str, " ", min_size=75, max_size=75, pos="top", handler=self.update_speaker) self.display_layout.addWidget(self.speaker_field) self.utt_field = qHotField("utterance", str, " ", min_size=350, pos="top", handler=self.update_utterance, multiline=True) self.utt_field.setStyleSheet("font: 14pt \"Courier\";") # self.utt_field.efield.setFont(QFont('SansSerif', 12)) self.display_layout.addWidget(self.utt_field) display_widget.setLayout(self.display_layout) self.display_layout.setStretchFactor(self.speaker_field, 0) self.display_layout.setStretchFactor(self.utt_field, 1) self.transcript_slider = QSlider(QtCore.Qt.Horizontal, self) self.display_layout.addWidget(self.transcript_slider) self.transcript_slider.setMaximum(100) self.connect(self.transcript_slider, QtCore.SIGNAL("sliderMoved(int)"), self.position_transcript) left_layout.addWidget(self.transcript_slider) button_widget = TranscriptButtons(self) left_layout.addWidget(button_widget) left_layout.addWidget(QWidget()) left_layout.setStretch(0, 0) left_layout.setStretch(1, 0) left_layout.setStretch(2, 0) left_layout.setStretch(3, 1) # video_buttons = VideoButtons(self) # outer_layout.addWidget(video_buttons) self.createKeypadButtons(self) left_layout.addWidget(self.keypadWidget) self.player = Player() outer_layout.addWidget(self.player) outer_layout.setStretch(0, 0) outer_layout.setStretch(1, 1) self.save_file_name = None command_list = [ [self.open_video, "Open Video", {}, "Ctrl+o"], [self.open_transcript, "Open Transcript", {}, "Ctrl+t"], [self.play_or_pause, "Play/Pause", {}, Qt.CTRL + Qt.Key_P], [self.save_file, "Save", {}, "Ctrl+s"], [self.player.jump_video_backward, "Jump Back", {}, Qt.CTRL + Qt.Key_4], [self.player.jump_video_forward, "Jump Forward", {}, Qt.CTRL + Qt.Key_6], [self.go_to_previous_turn, "Previous", {}, "Ctrl+["], [self.go_to_next_turn, "Next", {}, "Ctrl+]"], ] menubar = self.menuBar() create_menu(self, menubar, "Stepper", command_list) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_0), self, self.play_or_pause) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_5), self, self.play_or_pause) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_7), self, self.go_to_previous_turn) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_9), self, self.go_to_next_turn) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_4), self, self.player.jump_video_backward) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_6), self, self.player.jump_video_forward) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_2), self, self.player.reset_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_1), self, self.player.decrease_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_3), self, self.player.increase_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_G), self, self.sync_video_and_play) def createKeypadButtons(self, stepperWindow): self.keypadWidget = QtGui.QWidget() self.keypadWidget.setGeometry(QtCore.QRect(0, 0, 191, 101)) self.keypadWidget.setMinimumSize(QtCore.QSize(191, 101)) self.keypadWidget.setMaximumSize(QtCore.QSize(191, 101)) self.keypadWidget.setObjectName("gridLayoutWidget") self.keypadGridLayout = QtGui.QGridLayout(self.keypadWidget) self.keypadGridLayout.setContentsMargins(0, 0, 0, 0) self.keypadGridLayout.setObjectName("keypadGridLayout") self.fasterbutton = QtGui.QPushButton(self.keypadWidget) self.fasterbutton.setObjectName("fasterbutton") self.keypadGridLayout.addWidget(self.fasterbutton, 2, 2, 1, 1) self.jumpforwardbutton = QtGui.QPushButton(self.keypadWidget) self.jumpforwardbutton.setObjectName("jumpforwardbutton") self.keypadGridLayout.addWidget(self.jumpforwardbutton, 1, 2, 1, 1) self.normalbutton = QtGui.QPushButton(self.keypadWidget) self.normalbutton.setObjectName("normalbutton") self.keypadGridLayout.addWidget(self.normalbutton, 2, 1, 1, 1) self.NextButton = QtGui.QPushButton(self.keypadWidget) self.NextButton.setObjectName("NextButton") self.keypadGridLayout.addWidget(self.NextButton, 0, 2, 1, 1) self.jumpbackbutton = QtGui.QPushButton(self.keypadWidget) self.jumpbackbutton.setObjectName("jumpbackbutton") self.keypadGridLayout.addWidget(self.jumpbackbutton, 1, 0, 1, 1) self.playButton = QtGui.QPushButton(self.keypadWidget) self.playButton.setObjectName("playButton") self.keypadGridLayout.addWidget(self.playButton, 1, 1, 1, 1) self.PreviousButton = QtGui.QPushButton(self.keypadWidget) self.PreviousButton.setObjectName("PreviousButton") self.keypadGridLayout.addWidget(self.PreviousButton, 0, 0, 1, 1) self.slowerbutton = QtGui.QPushButton(self.keypadWidget) self.slowerbutton.setObjectName("slowerbutton") self.keypadGridLayout.addWidget(self.slowerbutton, 2, 0, 1, 1) self.gotobutton = QtGui.QPushButton(self.keypadWidget) self.gotobutton.setObjectName("gotobutton") self.keypadGridLayout.addWidget(self.gotobutton, 0, 1, 1, 1) self.retranslateKeypadUi(stepperWindow) QtCore.QObject.connect(self.NextButton, QtCore.SIGNAL("clicked()"), stepperWindow.go_to_next_turn) QtCore.QObject.connect(self.PreviousButton, QtCore.SIGNAL("clicked()"), stepperWindow.go_to_previous_turn) QtCore.QObject.connect(self.gotobutton, QtCore.SIGNAL("clicked()"), stepperWindow.sync_video_and_play) QtCore.QObject.connect(self.jumpbackbutton, QtCore.SIGNAL("clicked()"), stepperWindow.jump_back) QtCore.QObject.connect(self.jumpforwardbutton, QtCore.SIGNAL("clicked()"), stepperWindow.jump_forward) QtCore.QObject.connect(self.slowerbutton, QtCore.SIGNAL("clicked()"), stepperWindow.slower) QtCore.QObject.connect(self.normalbutton, QtCore.SIGNAL("clicked()"), stepperWindow.normal_speed) QtCore.QObject.connect(self.fasterbutton, QtCore.SIGNAL("clicked()"), stepperWindow.faster) QtCore.QObject.connect(self.playButton, QtCore.SIGNAL("clicked()"), stepperWindow.play_or_pause) QtCore.QMetaObject.connectSlotsByName(stepperWindow) def retranslateKeypadUi(self, stepperWindow): stepperWindow.setWindowTitle(QtGui.QApplication.translate("stepperWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.fasterbutton.setText(QtGui.QApplication.translate("stepperWindow", "Faster", None, QtGui.QApplication.UnicodeUTF8)) self.jumpforwardbutton.setText(QtGui.QApplication.translate("stepperWindow", "Jump+", None, QtGui.QApplication.UnicodeUTF8)) self.normalbutton.setText(QtGui.QApplication.translate("stepperWindow", "Normal", None, QtGui.QApplication.UnicodeUTF8)) self.NextButton.setText(QtGui.QApplication.translate("stepperWindow", "Next", None, QtGui.QApplication.UnicodeUTF8)) self.jumpbackbutton.setText(QtGui.QApplication.translate("stepperWindow", "Jump-", None, QtGui.QApplication.UnicodeUTF8)) self.playButton.setText(QtGui.QApplication.translate("stepperWindow", "Play", None, QtGui.QApplication.UnicodeUTF8)) self.PreviousButton.setText(QtGui.QApplication.translate("stepperWindow", "Prev", None, QtGui.QApplication.UnicodeUTF8)) self.slowerbutton.setText(QtGui.QApplication.translate("stepperWindow", "Slower", None, QtGui.QApplication.UnicodeUTF8)) self.gotobutton.setText(QtGui.QApplication.translate("stepperWindow", "GoTo", None, QtGui.QApplication.UnicodeUTF8)) def open_transcript(self): filename = QFileDialog.getOpenFileName(self, "Open File")[0] self.setWindowTitle(os.path.basename(filename)) self.transcript = StepperTranscript(filename) self.display_current_turn() def position_transcript(self, position): self.transcript.move_to_position(1.0 * position / 100) self.display_current_turn() def go_to_next_turn(self): self.transcript.go_to_next() self.display_current_turn() def update_time(self): self.turn["time"] = self.time_field.value def update_speaker(self): self.turn["speaker"] = self.speaker_field.value def update_utterance(self): self.turn["utterance"] = self.utt_field.value def go_to_previous_turn(self): self.transcript.go_to_previous() self.display_current_turn() def display_current_turn(self): self.turn = self.transcript.current_turn() self.time_field.value = self.turn["time"] self.speaker_field.value = self.turn["speaker"] self.utt_field.value = self.turn["utterance"] def delete_current_turn(self): self.transcript.delete_current() self.display_current_turn() def save_file_as(self): filename = QFileDialog.getSaveFileName(self, "File name for save")[0] self.save_file_name = filename self.transcript.commit_all() self.transcript.save_as_csv(filename) def save_file(self): if self.save_file_name is None: self.save_file_as() else: self.transcript.commit_all() self.transcript.save_as_csv(self.save_file_name) def revert_current_and_redisplay(self): self.transcript.revert_current() self.display_current_turn() def open_video(self): # self.player = Player() # self.player.show() # self.player.resize(640, 480) self.player.OpenFile() def play_or_pause(self): self.player.PlayPause() def slower(self): self.player.decrease_rate() def faster(self): self.player.increase_rate() def normal_speed(self): self.player.reset_rate() def fill_time_code(self): self.time_field.value = self.player.getCurrentTimeCode() def sync_video_and_play(self): self.sync_video() if not self.player.mediaplayer.is_playing(): self.play_or_pause() def jump_back(self): self.player.jump_video_backward() def jump_forward(self): self.player.jump_video_forward() def sync_video(self): self.player.setTimeCode(self.time_field.value) def insert_before(self): new_uid = self.transcript.insert_new(self.transcript.current_uid) self.display_current_turn() def insert_after(self): new_uid = self.transcript.insert_new(self.transcript.current_uid, "after") self.display_current_turn() def closeEvent(self, event): msgBox = QMessageBox() msgBox.setText("Do you want to save before quitting?") msgBox.setInformativeText("Do you want to save your changes?") msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) msgBox.setDefaultButton(QMessageBox.Save) ret = msgBox.exec_() if ret == QMessageBox.Save: self.save_file() event.accept() elif ret == QMessageBox.Discard: event.accept() else: event.ignore() def commit(self): self.transcript.commit_current() def commit_all(self): self.transcript.commit_all()
class StepperWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) # filename = QFileDialog.getOpenFileName(self, "Open File")[0] # self.setWindowTitle(os.path.basename(filename)) # self.transcript = StepperTranscript(filename) self.save_file_name = None self.explorer_table = None self.transcript = None self.setupUi(self) self.setAcceptDrops(True) def dragEnterEvent(self, event): event.accept() def dropEvent(self, event): for url in event.mimeData().urls(): path = url.toLocalFile() self.open_transcript(fullname=path) def open_transcript(self, fullname=None): if self.transcript is not None: newStepperWindow = StepperWindow() stepper_windows.append(newStepperWindow) newStepperWindow.show() newStepperWindow.resize(1250, 1000) newStepperWindow.open_transcript(fullname) else: if fullname is None: fullname = QFileDialog.getOpenFileName(self, "Open File")[0] self.save_file_name = fullname self.setWindowTitle(os.path.basename(fullname)) self.transcript = StepperTranscript(fullname) self.display_current_turn() self.show_transcript_in_explorer() if self.transcript.video_file_name != None: self.open_video(self.transcript.video_file_name) def position_transcript(self, position): self.transcript.move_to_position(1.0 * position / 100) self.display_current_turn() def show_transcript_in_explorer(self): transcript_array = self.transcript.get_transcript_as_array() self.click_handler = ExploreClickHandler(self) self.explorer_table = ExplorerTable(transcript_array, click_handler=self.click_handler) self.big_splitter.addWidget(self.explorer_table) # self.outer_layout.setStretch(2, 1) self.explorer_table.highlight_row(self.transcript.current_index()) def go_to_next_turn(self): self.transcript.go_to_next() self.display_current_turn() def update_time(self): self.turn["time"] = self.time_field.value if self.explorer_table is not None: table_item = self.explorer_table.item(self.transcript.current_index(), 1) table_item.setText(self.time_field.value) def update_speaker(self): self.turn["speaker"] = self.speaker_field.value if self.explorer_table is not None: table_item = self.explorer_table.item(self.transcript.current_index(), 2) table_item.setText(self.speaker_field.value) def update_utterance(self): self.turn["utterance"] = self.utt_field.value if self.explorer_table is not None: table_item = self.explorer_table.item(self.transcript.current_index(), 3) table_item.setText(self.utt_field.value) def go_to_previous_turn(self): self.transcript.go_to_previous() self.display_current_turn() def go_to_row(self, the_row): self.transcript.go_to_index(the_row) self.display_current_turn() def display_current_turn(self): self.turn = self.transcript.current_turn() self.time_field.value = self.turn["time"] self.speaker_field.value = self.turn["speaker"] self.utt_field.value = self.turn["utterance"] if self.explorer_table is not None: self.explorer_table.highlight_row(self.transcript.current_index()) self.utt_field.efield.setFocus() self.utt_field.efield.moveCursor(QTextCursor.Start, mode=QTextCursor.MoveAnchor) def delete_current_turn(self): self.transcript.delete_current() self.display_current_turn() def save_file_as(self): filename = QFileDialog.getSaveFileName(self, "File name for save")[0] self.save_file_name = filename self.transcript.commit_all() self.transcript.save_as_csv(filename) def save_file(self): if self.save_file_name is None: self.save_file_as() else: self.transcript.commit_all() self.transcript.save_as_csv(self.save_file_name) def revert_current_and_redisplay(self): self.transcript.revert_current() self.display_current_turn() def open_video(self, filename=None): # self.player = Player() # self.player.show() # self.player.resize(640, 480) self.player.OpenFile(filename) def play_or_pause(self): self.player.PlayPause() def slower(self): self.player.decrease_rate() def faster(self): self.player.increase_rate() def normal_speed(self): self.player.reset_rate() def fill_time_code(self): self.time_field.value = self.player.getCurrentTimeCode() def sync_video_and_play(self): self.sync_video() if not self.player.mediaplayer.is_playing(): self.play_or_pause() def jump_back(self): self.player.jump_video_backward() def jump_forward(self): self.player.jump_video_forward() def sync_video(self): self.player.setTimeCode(self.time_field.value) def insert_before(self): new_uid = self.transcript.insert_new(self.transcript.current_uid) if self.explorer_table is not None: self.explorer_table.insert_row(self.transcript.current_index(), [new_uid, "", "", ""]) self.display_current_turn() def insert_after(self): new_uid = self.transcript.insert_new(self.transcript.current_uid, "after") if self.explorer_table is not None: self.explorer_table.insert_row(self.transcript.current_index(), [new_uid, "", "", ""]) self.display_current_turn() def closeEvent(self, event): msgBox = QMessageBox() msgBox.setText("Do you want to save before quitting?") msgBox.setInformativeText("Do you want to save your changes?") msgBox.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) msgBox.setDefaultButton(QMessageBox.Save) ret = msgBox.exec_() if ret == QMessageBox.Save: self.save_file() event.accept() elif ret == QMessageBox.Discard: event.accept() else: event.ignore() def commit(self): self.transcript.commit_current() def commit_all(self): self.transcript.commit_all() def go_to_next_word(self): c = self.utt_field.efield.textCursor() if c.selectedText() != "": # If nothing is selected, select the current word self.utt_field.efield.moveCursor(QTextCursor.NextWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.EndOfWord, QTextCursor.KeepAnchor) c = self.utt_field.efield.textCursor() if c.selectedText() == "": # this addresses the case where I'm in front of a blank space self.utt_field.efield.moveCursor(QTextCursor.NextWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.EndOfWord, QTextCursor.KeepAnchor) def go_to_previous_word(self): c = self.utt_field.efield.textCursor() pos = c.position() self.utt_field.efield.moveCursor(QTextCursor.StartOfWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.PreviousWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.EndOfWord, QTextCursor.KeepAnchor) c = self.utt_field.efield.textCursor() if c.position() == pos: self.utt_field.efield.moveCursor(QTextCursor.StartOfWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.PreviousWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.PreviousWord, QTextCursor.MoveAnchor) self.utt_field.efield.moveCursor(QTextCursor.EndOfWord, QTextCursor.KeepAnchor) def setupUi(self, stepperWindow): stepperWindow.setObjectName("stepperWindow") self.outer_widget = QtGui.QWidget(stepperWindow) # sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) # sizePolicy.setHorizontalStretch(0) # sizePolicy.setVerticalStretch(0) # sizePolicy.setHeightForWidth(self.outer_widget.sizePolicy().hasHeightForWidth()) # self.outer_widget.setSizePolicy(sizePolicy) self.outer_widget.setObjectName("outer_widget") self.outer_layout = QtGui.QHBoxLayout(self.outer_widget) self.outer_layout.setContentsMargins(0, 0, 0, 0) self.outer_layout.setObjectName("outer_layout") self.big_splitter = QSplitter() self.outer_layout.addWidget(self.big_splitter) self.left_layout = QtGui.QVBoxLayout() self.left_layout.setObjectName("left_layout") self.left_widget = QWidget() self.left_widget.setLayout(self.left_layout) self.big_splitter.addWidget(self.left_widget) self.player = Player() self.left_layout.addWidget(self.player) self.left_layout.setStretch(0, 1) self.createDisplayFields() # Add all of the buttons self.allbuttonslayout = QtGui.QHBoxLayout() self.allbuttonslayout.setSizeConstraint(QtGui.QLayout.SetNoConstraint) self.allbuttonslayout.setObjectName("allbuttonslayout") self.gridbuttonlayout = QtGui.QGridLayout() self.gridbuttonlayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) self.gridbuttonlayout.setVerticalSpacing(1) self.gridbuttonlayout.setObjectName("gridbuttonlayout") self.DeleteButton = QtGui.QPushButton(self.outer_widget) self.DeleteButton.setObjectName("DeleteButton") self.gridbuttonlayout.addWidget(self.DeleteButton, 0, 2, 1, 1) self.InsertAfterButton = QtGui.QPushButton(self.outer_widget) self.InsertAfterButton.setObjectName("InsertAfterButton") self.gridbuttonlayout.addWidget(self.InsertAfterButton, 0, 1, 1, 1) self.SaveAsButton = QtGui.QPushButton(self.outer_widget) self.SaveAsButton.setObjectName("SaveAsButton") self.gridbuttonlayout.addWidget(self.SaveAsButton, 1, 1, 1, 1) self.CommitAllButton = QtGui.QPushButton(self.outer_widget) self.CommitAllButton.setObjectName("CommitAllButton") self.gridbuttonlayout.addWidget(self.CommitAllButton, 2, 1, 1, 1) self.CommitButton = QtGui.QPushButton(self.outer_widget) self.CommitButton.setObjectName("CommitButton") self.gridbuttonlayout.addWidget(self.CommitButton, 2, 0, 1, 1) self.InsertBeforeButton = QtGui.QPushButton(self.outer_widget) self.InsertBeforeButton.setObjectName("InsertBeforeButton") self.gridbuttonlayout.addWidget(self.InsertBeforeButton, 0, 0, 1, 1) self.SaveButton = QtGui.QPushButton(self.outer_widget) self.SaveButton.setObjectName("SaveButton") self.gridbuttonlayout.addWidget(self.SaveButton, 1, 0, 1, 1) self.RevertButton = QtGui.QPushButton(self.outer_widget) self.RevertButton.setObjectName("RevertButton") self.gridbuttonlayout.addWidget(self.RevertButton, 2, 2, 1, 1) self.allbuttonslayout.addLayout(self.gridbuttonlayout) self.keypadGridLayout = QtGui.QGridLayout() self.keypadGridLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) self.keypadGridLayout.setObjectName("keypadGridLayout") self.SlowerButton = QtGui.QPushButton(self.outer_widget) self.SlowerButton.setObjectName("SlowerButton") self.keypadGridLayout.addWidget(self.SlowerButton, 2, 0, 1, 1) self.FasterButton = QtGui.QPushButton(self.outer_widget) self.FasterButton.setObjectName("FasterButton") self.keypadGridLayout.addWidget(self.FasterButton, 2, 2, 1, 1) self.NormalButton = QtGui.QPushButton(self.outer_widget) self.NormalButton.setObjectName("NormalButton") self.keypadGridLayout.addWidget(self.NormalButton, 2, 1, 1, 1) self.JumpBackButton = QtGui.QPushButton(self.outer_widget) self.JumpBackButton.setObjectName("JumpBackButton") self.keypadGridLayout.addWidget(self.JumpBackButton, 1, 0, 1, 1) self.NextButton = QtGui.QPushButton(self.outer_widget) self.NextButton.setObjectName("NextButton") self.keypadGridLayout.addWidget(self.NextButton, 0, 2, 1, 1) self.JumpForward = QtGui.QPushButton(self.outer_widget) self.JumpForward.setObjectName("JumpForward") self.keypadGridLayout.addWidget(self.JumpForward, 1, 2, 1, 1) self.PlayButton = QtGui.QPushButton(self.outer_widget) self.PlayButton.setObjectName("PlayButton") self.keypadGridLayout.addWidget(self.PlayButton, 1, 1, 1, 1) self.PreviousButton = QtGui.QPushButton(self.outer_widget) self.PreviousButton.setObjectName("PreviousButton") self.keypadGridLayout.addWidget(self.PreviousButton, 0, 0, 1, 1) self.GotoButton = QtGui.QPushButton(self.outer_widget) self.GotoButton.setObjectName("GotoButton") self.keypadGridLayout.addWidget(self.GotoButton, 0, 1, 1, 1) self.SyncButton = QtGui.QPushButton(self.outer_widget) self.SyncButton.setObjectName("SyncButton") self.keypadGridLayout.addWidget(self.SyncButton, 3, 2, 1, 1) self.FillButton = QtGui.QPushButton(self.outer_widget) self.FillButton.setObjectName("FillButton") self.keypadGridLayout.addWidget(self.FillButton, 3, 0, 1, 1) self.allbuttonslayout.addLayout(self.keypadGridLayout) self.ExplorerButton = QtGui.QPushButton(self.outer_widget) self.ExplorerButton.setObjectName("ExplorerButton") self.gridbuttonlayout.addWidget(self.ExplorerButton, 1, 2, 1, 1) # Change made by hand here self.left_layout.addLayout(self.allbuttonslayout) self.left_layout.setStretch(1, 0) self.left_layout.setStretch(2, 0) # self.splitter = QSplitter() # self.splitter.addWidget(self.player) # self.outer_layout.addWidget(self.splitter) # self.outer_layout.setStretch(1, 1) # stepperWindow.show_transcript_in_explorer() # if stepperWindow.transcript.video_file_name != None: # self.open_video(stepperWindow.transcript.video_file_name) stepperWindow.setCentralWidget(self.outer_widget) self.menubar = QtGui.QMenuBar() self.menubar.setGeometry(QtCore.QRect(0, 0, 1500, 22)) self.menubar.setObjectName("menubar") stepperWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(stepperWindow) self.statusbar.setObjectName("statusbar") stepperWindow.setStatusBar(self.statusbar) self.retranslateUi(stepperWindow) QtCore.QObject.connect(self.GotoButton, QtCore.SIGNAL("clicked()"), stepperWindow.sync_video_and_play) QtCore.QObject.connect(self.JumpForward, QtCore.SIGNAL("clicked()"), stepperWindow.jump_forward) QtCore.QObject.connect(self.PlayButton, QtCore.SIGNAL("clicked()"), stepperWindow.play_or_pause) QtCore.QObject.connect(self.SyncButton, QtCore.SIGNAL("clicked()"), stepperWindow.sync_video) QtCore.QObject.connect(self.FillButton, QtCore.SIGNAL("clicked()"), stepperWindow.fill_time_code) QtCore.QObject.connect(self.NextButton, QtCore.SIGNAL("clicked()"), stepperWindow.go_to_next_turn) QtCore.QObject.connect(self.CommitButton, QtCore.SIGNAL("clicked()"), stepperWindow.commit) QtCore.QObject.connect(self.InsertBeforeButton, QtCore.SIGNAL("clicked()"), stepperWindow.insert_before) QtCore.QObject.connect(self.JumpBackButton, QtCore.SIGNAL("clicked()"), stepperWindow.jump_back) QtCore.QObject.connect(self.SlowerButton, QtCore.SIGNAL("clicked()"), stepperWindow.slower) QtCore.QObject.connect(self.FasterButton, QtCore.SIGNAL("clicked()"), stepperWindow.faster) QtCore.QObject.connect(self.NormalButton, QtCore.SIGNAL("clicked()"), stepperWindow.normal_speed) QtCore.QObject.connect(self.PreviousButton, QtCore.SIGNAL("clicked()"), stepperWindow.go_to_previous_turn) QtCore.QObject.connect(self.SaveButton, QtCore.SIGNAL("clicked()"), stepperWindow.save_file) QtCore.QObject.connect(self.SaveAsButton, QtCore.SIGNAL("clicked()"), stepperWindow.save_file_as) QtCore.QObject.connect(self.RevertButton, QtCore.SIGNAL("clicked()"), stepperWindow.revert_current_and_redisplay) QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL("clicked()"), stepperWindow.delete_current_turn) QtCore.QObject.connect(self.InsertAfterButton, QtCore.SIGNAL("clicked()"), stepperWindow.insert_after) QtCore.QObject.connect(self.CommitAllButton, QtCore.SIGNAL("clicked()"), stepperWindow.commit_all) # Added this line by hand QtCore.QObject.connect(self.ExplorerButton, QtCore.SIGNAL("clicked()"), stepperWindow.show_transcript_in_explorer) QtCore.QMetaObject.connectSlotsByName(stepperWindow) # The following menu and shortcut stuff added by hand command_list = [ [self.open_transcript, "Open Transcript", {}, "Ctrl+t"], [self.open_video, "Open Video", {}, "Ctrl+v"], [self.play_or_pause, "Play/Pause", {}, Qt.CTRL + Qt.Key_K], [self.save_file, "Save", {}, "Ctrl+s"], [self.player.jump_video_backward, "Jump Back", {}, Qt.CTRL + Qt.Key_J], [self.player.jump_video_forward, "Jump Forward", {}, Qt.CTRL + Qt.Key_L], [self.go_to_previous_turn, "Previous Turn", {}, "Ctrl+u"], [self.go_to_next_turn, "Next Turn", {}, "Ctrl+o"], [self.go_to_previous_word, "Previous Word", {}, "Ctrl+n"], [self.go_to_next_word, "Next Word", {}, "Ctrl+m"] ] menubar = self.menuBar() create_menu(self, menubar, "Stepper", command_list) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_0), self, self.play_or_pause) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_5), self, self.play_or_pause) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_7), self, self.go_to_previous_turn) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_9), self, self.go_to_next_turn) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_4), self, self.player.jump_video_backward) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_6), self, self.player.jump_video_forward) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_2), self, self.player.reset_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_1), self, self.player.decrease_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_3), self, self.player.increase_rate) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_I), self, self.sync_video_and_play) QShortcut(QKeySequence(Qt.CTRL + Qt.Key_8), self, self.sync_video_and_play) def retranslateUi(self, stepperWindow): stepperWindow.setWindowTitle(QtGui.QApplication.translate("stepperWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.DeleteButton.setText(QtGui.QApplication.translate("stepperWindow", "Delete", None, QtGui.QApplication.UnicodeUTF8)) self.InsertAfterButton.setText(QtGui.QApplication.translate("stepperWindow", "Ins After", None, QtGui.QApplication.UnicodeUTF8)) self.SaveAsButton.setText(QtGui.QApplication.translate("stepperWindow", "Save As ...", None, QtGui.QApplication.UnicodeUTF8)) self.CommitAllButton.setText(QtGui.QApplication.translate("stepperWindow", "Commit all", None, QtGui.QApplication.UnicodeUTF8)) self.CommitButton.setText(QtGui.QApplication.translate("stepperWindow", "Commit", None, QtGui.QApplication.UnicodeUTF8)) self.InsertBeforeButton.setText(QtGui.QApplication.translate("stepperWindow", "Ins Before", None, QtGui.QApplication.UnicodeUTF8)) self.SaveButton.setText(QtGui.QApplication.translate("stepperWindow", "Save", None, QtGui.QApplication.UnicodeUTF8)) self.RevertButton.setText(QtGui.QApplication.translate("stepperWindow", "Revert", None, QtGui.QApplication.UnicodeUTF8)) self.SlowerButton.setText(QtGui.QApplication.translate("stepperWindow", "Slower", None, QtGui.QApplication.UnicodeUTF8)) self.FasterButton.setText(QtGui.QApplication.translate("stepperWindow", "Faster", None, QtGui.QApplication.UnicodeUTF8)) self.NormalButton.setText(QtGui.QApplication.translate("stepperWindow", "Normal", None, QtGui.QApplication.UnicodeUTF8)) self.JumpBackButton.setText(QtGui.QApplication.translate("stepperWindow", "Jump-", None, QtGui.QApplication.UnicodeUTF8)) self.NextButton.setText(QtGui.QApplication.translate("stepperWindow", "Next", None, QtGui.QApplication.UnicodeUTF8)) self.JumpForward.setText(QtGui.QApplication.translate("stepperWindow", "Jump+", None, QtGui.QApplication.UnicodeUTF8)) self.PlayButton.setText(QtGui.QApplication.translate("stepperWindow", "Play", None, QtGui.QApplication.UnicodeUTF8)) self.PreviousButton.setText(QtGui.QApplication.translate("stepperWindow", "Prev", None, QtGui.QApplication.UnicodeUTF8)) self.GotoButton.setText(QtGui.QApplication.translate("stepperWindow", "GoTo", None, QtGui.QApplication.UnicodeUTF8)) self.SyncButton.setText(QtGui.QApplication.translate("stepperWindow", "Sync Vid", None, QtGui.QApplication.UnicodeUTF8)) self.FillButton.setText(QtGui.QApplication.translate("stepperWindow", "Fill Time", None, QtGui.QApplication.UnicodeUTF8)) self.ExplorerButton.setText(QtGui.QApplication.translate("stepperWindow", "Explorer", None, QtGui.QApplication.UnicodeUTF8)) def createDisplayFields(self): display_widget = QFrame() display_widget.setFrameStyle(QtGui.QFrame.Panel | QtGui.QFrame.Sunken) self.left_layout.addWidget(display_widget) self.display_layout = QHBoxLayout() # self.turn = self.transcript.current_turn() self.time_field = qHotField("time", str, "00:00:00", min_size=75, max_size=75, pos="top", handler=self.update_time) self.display_layout.addWidget(self.time_field) self.speaker_field = qHotField("speaker", str, " ", min_size=75, max_size=75, pos="top", handler=self.update_speaker) self.display_layout.addWidget(self.speaker_field) self.utt_field = qHotField("utterance", str, " ", min_size=350, max_size=500, pos="top", handler=self.update_utterance, multiline=True) self.utt_field.setStyleSheet("font: 14pt \"Courier\";") # self.utt_field.efield.setFont(QFont('SansSerif', 12)) self.display_layout.addWidget(self.utt_field) display_widget.setLayout(self.display_layout) self.display_layout.setStretchFactor(self.speaker_field, 0) self.display_layout.setStretchFactor(self.utt_field, 1) self.transcript_slider = QSlider(QtCore.Qt.Horizontal, self) self.display_layout.addWidget(self.transcript_slider) self.transcript_slider.setMaximum(100) self.connect(self.transcript_slider, QtCore.SIGNAL("sliderMoved(int)"), self.position_transcript) self.left_layout.addWidget(self.transcript_slider)