def addWorkspaceSelectionMenu(self, obj): menu = QtGui.QMenu(obj) for s in self.__workspaces: menu.addAction(s) # TODO add custom workspaces menu.addSeparator() menu.addAction("Reset") menu.addAction("New Workspace") menu.triggered.connect(self.__menuItemTriggered) self.btn = QtGui.QToolButton(obj) self.btn.setFocusPolicy(QtCore.Qt.NoFocus) self.btn.setText("") self.btn.setPopupMode(QtGui.QToolButton.InstantPopup) self.btn.setMenu(menu) obj.addWidget(self.btn)
def __init__(self, text, help, parent=None): QtGui.QWidget.__init__(self, parent) QtGui.QHBoxLayout(self) self.__help = help self.__btn = QtGui.QToolButton(self) self.__btn.setIcon(QtGui.QIcon(":/images/help.png")) self.__btn.setFocusPolicy(QtCore.Qt.NoFocus) self.__btn.clicked.connect(self.__show_popup) self.__btn.setStyleSheet("QToolButton { border: 0px }") self.__label = QtGui.QLabel(text, self) self.layout().setContentsMargins(0, 0, 0, 0) self.layout().setSpacing(0) self.layout().addWidget(self.__btn) self.layout().addSpacing(5) self.layout().addWidget(self.__label) self.layout().addStretch()
def __init__(self, job=None, task=None, attrs=None, parent=None): QtGui.QWidget.__init__(self, parent) self.__task = None self.__log_file = QtCore.QFile() self.__log_stream = QtCore.QTextStream() openAction = QtGui.QAction("Open Log File", self) openAction.setShortcut(QtGui.QKeySequence.Open) self.addAction(openAction) self.__searchLine = QtGui.QLineEdit(self) self.__chk_tail = QtGui.QAction("Tail log", self) self.__chk_tail.setCheckable(True) prev = QtGui.QToolButton(self) prev.setIcon(QtGui.QIcon(":/images/left_arrow.png")) prev.setToolTip("Find Previous Match") prev.setFixedSize(20,20) nxt = QtGui.QToolButton(self) nxt.setToolTip("Find Next Match") nxt.setIcon(QtGui.QIcon(":/images/right_arrow.png")) nxt.setFixedSize(20,20) self.__logSelector = sel = QtGui.QComboBox(self) sel.setToolTip("Choose logs from previous retries") sel.setMaximumWidth(100) self.__jobNameLabel = label = QtGui.QLabel(self) label.setIndent(10) label.setWordWrap(True) # label.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) label.hide() self.__jobNameSpacer = QtGui.QWidget(self) self.__jobNameSpacer.setFixedHeight(6) self.__jobNameSpacer.hide() def spacer(width): w = QtGui.QWidget() w.setFixedWidth(width) return w stretch = QtGui.QWidget() stretch.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) self.__toolbar = tb = QtGui.QToolBar(self) tb.addWidget(spacer(4)) tb.addWidget(QtGui.QLabel("Find: ", self)) tb.addWidget(self.__searchLine) self.__findPrevBtn = tb.addWidget(prev) self.__findNextBtn = tb.addWidget(nxt) tb.addWidget(stretch) tb.addWidget(self.__logSelector) tb.addAction(self.__chk_tail) tb.addWidget(spacer(4)) self.__view = view = QtGui.QPlainTextEdit(self) font = view.font() font.setPixelSize(DEFAULT_FONT_SIZE) view.setFont(font) view.setLineWrapMode(view.WidgetWidth) view.setReadOnly(True) view.setMaximumBlockCount(1000000) # self.__view.setFocusPolicy(QtCore.Qt.NoFocus) layout = QtGui.QVBoxLayout(self) layout.setSpacing(0) layout.setContentsMargins(0,0,0,0) layout.addWidget(self.__toolbar) layout.addWidget(self.__jobNameLabel) layout.addWidget(self.__jobNameSpacer) layout.addWidget(self.__view) self.__highlighter = TextHighlighter(view.document()) self.__logWatcher = FileWatcher(self) # Connections self.__logWatcher.fileChanged.connect(self.__logUpdated) self.__chk_tail.toggled.connect(self.__logTailToggled) self.__searchLine.textChanged.connect(self.findText) self.__searchLine.returnPressed.connect(self.findNext) self.__findPrevBtn.triggered.connect(self.findPrev) self.__findNextBtn.triggered.connect(self.findNext) self.__logSelector.activated[int].connect(self.__logVersionChanged) openAction.triggered.connect(self.openLogFile) # Optional args if job: self.setJobName(job.name) if task: self.setCurrentTask(task)