def __init__(self, parent): QtWidgets.QDialog.__init__(self, parent) self._ui = Ui_WatchWindow() self._ui.setupUi(self) self._boxWithFocus = self._ui.unvaryingEdit self._prevDualScrollVal = 0 self._parent = parent self._searchString = "" self.addAction(self._ui.actionFind) self.addAction(self._ui.actionFindNext) self.addAction(self._ui.actionFindPrevious) self._ui.doneButton.clicked.connect(self.accept) self.finished.connect(self._cleanUpAndClose) self._ui.dualScroller.valueChanged.connect(self._changeBothSliders) self._ui.diffButton.clicked.connect(self._diff) self._ui.actionFind.triggered.connect(self._find) self._ui.actionFindNext.triggered.connect(self._findNext) self._ui.actionFindPrevious.triggered.connect(self._findPrevious) self._ui.varyingEdit.cursorPositionChanged.connect( self._varyingCursorChanged) self._ui.unvaryingEdit.cursorPositionChanged.connect( self._unvaryingCursorChanged) # save splitter state self._ui.splitter.splitterMoved.connect(self._splitterMoved) #create a timer for saving splitter state only when it stops moving self._splitterTimer = QtCore.QTimer(self) self._splitterTimer.setInterval(500) self._splitterTimer.timeout.connect(self._saveSplitterState) self._resetSettings()
def __init__(self, parent): QtWidgets.QDialog.__init__(self,parent) self._ui = Ui_WatchWindow() self._ui.setupUi(self) self._boxWithFocus = self._ui.unvaryingEdit self._prevDualScrollVal = 0 self._parent = parent self._searchString = "" self.addAction(self._ui.actionFind) self.addAction(self._ui.actionFindNext) self.addAction(self._ui.actionFindPrevious) self._ui.doneButton.clicked.connect(self.accept) self.finished.connect(self._cleanUpAndClose) self._ui.dualScroller.valueChanged.connect(self._changeBothSliders) self._ui.diffButton.clicked.connect(self._diff) self._ui.actionFind.triggered.connect(self._find) self._ui.actionFindNext.triggered.connect(self._findNext) self._ui.actionFindPrevious.triggered.connect(self._findPrevious) self._ui.varyingEdit.cursorPositionChanged.connect( self._varyingCursorChanged) self._ui.unvaryingEdit.cursorPositionChanged.connect( self._unvaryingCursorChanged) # save splitter state self._ui.splitter.splitterMoved.connect(self._splitterMoved) #create a timer for saving splitter state only when it stops moving self._splitterTimer = QtCore.QTimer(self) self._splitterTimer.setInterval(500) self._splitterTimer.timeout.connect(self._saveSplitterState) self._resetSettings()
class WatchWindow(QtWidgets.QDialog): def __init__(self, parent): QtWidgets.QDialog.__init__(self, parent) self._ui = Ui_WatchWindow() self._ui.setupUi(self) self._boxWithFocus = self._ui.unvaryingEdit self._prevDualScrollVal = 0 self._parent = parent self._searchString = "" self.addAction(self._ui.actionFind) self.addAction(self._ui.actionFindNext) self.addAction(self._ui.actionFindPrevious) self._ui.doneButton.clicked.connect(self.accept) self.finished.connect(self._cleanUpAndClose) self._ui.dualScroller.valueChanged.connect(self._changeBothSliders) self._ui.diffButton.clicked.connect(self._diff) self._ui.actionFind.triggered.connect(self._find) self._ui.actionFindNext.triggered.connect(self._findNext) self._ui.actionFindPrevious.triggered.connect(self._findPrevious) self._ui.varyingEdit.cursorPositionChanged.connect( self._varyingCursorChanged) self._ui.unvaryingEdit.cursorPositionChanged.connect( self._unvaryingCursorChanged) # save splitter state self._ui.splitter.splitterMoved.connect(self._splitterMoved) #create a timer for saving splitter state only when it stops moving self._splitterTimer = QtCore.QTimer(self) self._splitterTimer.setInterval(500) self._splitterTimer.timeout.connect(self._saveSplitterState) self._resetSettings() def _splitterMoved(self, pos, index): # reset the timer every time the splitter moves # when the splitter stop moving for half a second, save state self._splitterTimer.stop() self._splitterTimer.start() def _saveSplitterState(self): self._parent._settings.setAndSave( watchWindowSplitter=self._ui.splitter.saveState()) self._splitterTimer.stop() def _varyingCursorChanged(self): self._boxWithFocus = self._ui.varyingEdit def _unvaryingCursorChanged(self): self._boxWithFocus = self._ui.unvaryingEdit def _find(self): searchString = QtWidgets.QInputDialog.getText(self, "Find", "Enter search string\nUse Ctrl+G to \"Find Next\"\n" + \ "Use Ctrl+Shift+G to \"Find Previous\"") if searchString[1]: self._searchString = searchString[0] if (not self._boxWithFocus.find(self._searchString)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.Start) self._boxWithFocus.find(self._searchString) def _findNext(self): if (self._searchString == ""): return if (not self._boxWithFocus.find(self._searchString)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.Start) self._boxWithFocus.find(self._searchString) def _findPrevious(self): if (self._searchString == ""): return if (not self._boxWithFocus.find(self._searchString, QtGui.QTextDocument.FindBackward)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.End) self._boxWithFocus.find(self._searchString, QtGui.QTextDocument.FindBackward) def _diff(self): import tempfile unvarFile = tempfile.NamedTemporaryFile() unvarFile.write(str(self._ui.unvaryingEdit.toPlainText())) unvarFile.flush() varFile = tempfile.NamedTemporaryFile() varFile.write(str(self._ui.varyingEdit.toPlainText())) varFile.flush() os.system("xxdiff %s %s" % (unvarFile.name, varFile.name)) unvarFile.close() varFile.close() def _changeBothSliders(self, val): delta = val - self._prevDualScrollVal self._ui.varyingEdit.verticalScrollBar().setValue( self._ui.varyingEdit.verticalScrollBar().value() + delta) self._ui.unvaryingEdit.verticalScrollBar().setValue( self._ui.unvaryingEdit.verticalScrollBar().value() + delta) self._prevDualScrollVal = val def appendContents(self, s, color=QtGui.QColor(0, 0, 0)): self._ui.varyingEdit.setTextColor(color) self._ui.varyingEdit.append(s) self._ui.dualScroller.setMaximum( max(self._ui.unvaryingEdit.verticalScrollBar().maximum(), self._ui.varyingEdit.verticalScrollBar().maximum())) self._ui.dualScroller.setPageStep( min(self._ui.unvaryingEdit.verticalScrollBar().pageStep(), self._ui.varyingEdit.verticalScrollBar().pageStep())) self._boxWithFocus = self._ui.varyingEdit def appendUnvaryingContents(self, s, color=QtGui.QColor(0, 0, 0)): self._ui.unvaryingEdit.setTextColor(color) self._ui.unvaryingEdit.append(s) self._ui.dualScroller.setMaximum( max(self._ui.unvaryingEdit.verticalScrollBar().maximum(), self._ui.varyingEdit.verticalScrollBar().maximum())) self._ui.dualScroller.setPageStep( min(self._ui.unvaryingEdit.verticalScrollBar().pageStep(), self._ui.varyingEdit.verticalScrollBar().pageStep())) self._boxWithFocus = self._ui.unvaryingEdit def appendSeparator(self): self.appendContents(separatorString, separatorColor) self.appendUnvaryingContents(separatorString, separatorColor) def clearContents(self): self._ui.varyingEdit.setText("") self._ui.unvaryingEdit.setText("") def _cleanUpAndClose(self, result): self._parent._ui.actionWatch_Window.setChecked(False) def _resetSettings(self): # restore splitter position splitterpos = self._parent._settings.get('watchWindowSplitter') if not splitterpos is None: self._ui.splitter.restoreState(splitterpos)
class WatchWindow(QtWidgets.QDialog): def __init__(self, parent): QtWidgets.QDialog.__init__(self,parent) self._ui = Ui_WatchWindow() self._ui.setupUi(self) self._boxWithFocus = self._ui.unvaryingEdit self._prevDualScrollVal = 0 self._parent = parent self._searchString = "" self.addAction(self._ui.actionFind) self.addAction(self._ui.actionFindNext) self.addAction(self._ui.actionFindPrevious) self._ui.doneButton.clicked.connect(self.accept) self.finished.connect(self._cleanUpAndClose) self._ui.dualScroller.valueChanged.connect(self._changeBothSliders) self._ui.diffButton.clicked.connect(self._diff) self._ui.actionFind.triggered.connect(self._find) self._ui.actionFindNext.triggered.connect(self._findNext) self._ui.actionFindPrevious.triggered.connect(self._findPrevious) self._ui.varyingEdit.cursorPositionChanged.connect( self._varyingCursorChanged) self._ui.unvaryingEdit.cursorPositionChanged.connect( self._unvaryingCursorChanged) # save splitter state self._ui.splitter.splitterMoved.connect(self._splitterMoved) #create a timer for saving splitter state only when it stops moving self._splitterTimer = QtCore.QTimer(self) self._splitterTimer.setInterval(500) self._splitterTimer.timeout.connect(self._saveSplitterState) self._resetSettings() def _splitterMoved(self, pos, index): # reset the timer every time the splitter moves # when the splitter stop moving for half a second, save state self._splitterTimer.stop() self._splitterTimer.start() def _saveSplitterState(self): self._parent._settings.setAndSave( watchWindowSplitter = self._ui.splitter.saveState()) self._splitterTimer.stop() def _varyingCursorChanged(self): self._boxWithFocus = self._ui.varyingEdit def _unvaryingCursorChanged(self): self._boxWithFocus = self._ui.unvaryingEdit def _find(self): searchString = QtWidgets.QInputDialog.getText(self, "Find", "Enter search string\nUse Ctrl+G to \"Find Next\"\n" + \ "Use Ctrl+Shift+G to \"Find Previous\"") if searchString[1]: self._searchString = searchString[0] if (not self._boxWithFocus.find(self._searchString)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.Start) self._boxWithFocus.find(self._searchString) def _findNext(self): if (self._searchString == ""): return if (not self._boxWithFocus.find(self._searchString)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.Start) self._boxWithFocus.find(self._searchString) def _findPrevious(self): if (self._searchString == ""): return if (not self._boxWithFocus.find(self._searchString, QtGui.QTextDocument.FindBackward)): self._boxWithFocus.moveCursor(QtGui.QTextCursor.End) self._boxWithFocus.find(self._searchString, QtGui.QTextDocument.FindBackward) def _diff(self): import tempfile unvarFile = tempfile.NamedTemporaryFile() unvarFile.write(str(self._ui.unvaryingEdit.toPlainText())) unvarFile.flush() varFile = tempfile.NamedTemporaryFile() varFile.write(str(self._ui.varyingEdit.toPlainText())) varFile.flush() os.system("xxdiff %s %s" % (unvarFile.name, varFile.name)) unvarFile.close() varFile.close() def _changeBothSliders(self, val): delta = val - self._prevDualScrollVal self._ui.varyingEdit.verticalScrollBar().setValue( self._ui.varyingEdit.verticalScrollBar().value() + delta) self._ui.unvaryingEdit.verticalScrollBar().setValue( self._ui.unvaryingEdit.verticalScrollBar().value() + delta) self._prevDualScrollVal = val def appendContents(self, s, color = QtGui.QColor(0,0,0)): self._ui.varyingEdit.setTextColor(color) self._ui.varyingEdit.append(s) self._ui.dualScroller.setMaximum(max( self._ui.unvaryingEdit.verticalScrollBar().maximum(), self._ui.varyingEdit.verticalScrollBar().maximum())) self._ui.dualScroller.setPageStep(min( self._ui.unvaryingEdit.verticalScrollBar().pageStep(), self._ui.varyingEdit.verticalScrollBar().pageStep())) self._boxWithFocus = self._ui.varyingEdit def appendUnvaryingContents(self, s, color = QtGui.QColor(0,0,0)): self._ui.unvaryingEdit.setTextColor(color) self._ui.unvaryingEdit.append(s) self._ui.dualScroller.setMaximum(max( self._ui.unvaryingEdit.verticalScrollBar().maximum(), self._ui.varyingEdit.verticalScrollBar().maximum())) self._ui.dualScroller.setPageStep(min( self._ui.unvaryingEdit.verticalScrollBar().pageStep(), self._ui.varyingEdit.verticalScrollBar().pageStep())) self._boxWithFocus = self._ui.unvaryingEdit def appendSeparator(self): self.appendContents(separatorString, separatorColor) self.appendUnvaryingContents(separatorString, separatorColor) def clearContents(self): self._ui.varyingEdit.setText("") self._ui.unvaryingEdit.setText("") def _cleanUpAndClose(self, result): self._parent._ui.actionWatch_Window.setChecked(False) def _resetSettings(self): # restore splitter position splitterpos = self._parent._settings.get('watchWindowSplitter') if not splitterpos is None: self._ui.splitter.restoreState(splitterpos)