Example #1
0
 def __init__(self, parent=None):
     QWidget.__init__(self, parent)
     self._layout = l = QVBoxLayout(self)
     self.header = QLabel(
         _('Double click on any entry to change the'
           ' keyboard shortcuts associated with it'))
     l.addWidget(self.header)
     self.view = QTreeView(self)
     self.view.setAlternatingRowColors(True)
     self.view.setHeaderHidden(True)
     self.view.setAnimated(True)
     self.view.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
     self.view.customContextMenuRequested.connect(self.show_context_menu)
     l.addWidget(self.view)
     self.delegate = Delegate()
     self.view.setItemDelegate(self.delegate)
     self.delegate.sizeHintChanged.connect(
         self.editor_opened, type=Qt.ConnectionType.QueuedConnection)
     self.delegate.changed_signal.connect(self.changed_signal)
     self.search = SearchBox2(self)
     self.search.initialize('shortcuts_search_history',
                            help_text=_('Search for a shortcut by name'))
     self.search.search.connect(self.find)
     self._h = h = QHBoxLayout()
     l.addLayout(h)
     h.addWidget(self.search)
     self.nb = QPushButton(QIcon(I('arrow-down.png')), _('&Next'), self)
     self.pb = QPushButton(QIcon(I('arrow-up.png')), _('&Previous'), self)
     self.nb.clicked.connect(self.find_next)
     self.pb.clicked.connect(self.find_previous)
     h.addWidget(self.nb), h.addWidget(self.pb)
     h.setStretch(0, 100)
Example #2
0
 def __init__(self, parent):
     QTreeView.__init__(self, parent)
     self.setAnimated(True)
     self.setHeaderHidden(True)
     self.setObjectName('recipes')
     self.setExpandsOnDoubleClick(True)
     self.doubleClicked.connect(self.double_clicked)
     self.setSizePolicy(QSizePolicy.Policy.Minimum,
                        QSizePolicy.Policy.Expanding)
Example #3
0
 def __init__(self, parent=None):
     QTreeView.__init__(self, parent)
     self.setHeaderHidden(True)
     self.setAnimated(True)
     self.activated.connect(self.item_activated)
     self.clicked.connect(self.item_activated)
     set_no_activate_on_click(self)
     self.initialized = False
     self.setExpandsOnDoubleClick(False)
Example #4
0
 def __init__(self, *args):
     QTreeView.__init__(self, *args)
     self.setFocusPolicy(Qt.FocusPolicy.NoFocus)
     self.delegate = Delegate(self)
     self.setItemDelegate(self.delegate)
     self.setMinimumWidth(80)
     self.header().close()
     self.setMouseTracking(True)
     self.set_style_sheet()
     self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
     self.customContextMenuRequested.connect(self.context_menu)
     QApplication.instance().palette_changed.connect(self.set_style_sheet, type=Qt.ConnectionType.QueuedConnection)
Example #5
0
    def __init__(self, *args):
        QTreeView.__init__(self, *args)

        self._model = Matches()
        self.setModel(self._model)

        self.rt_delegate = RichTextDelegate(self)
        self.img_delegate = ImageDelegate(self)

        for i in self._model.HTML_COLS:
            self.setItemDelegateForColumn(i, self.rt_delegate)
        for i in self._model.IMG_COLS:
            self.setItemDelegateForColumn(i, self.img_delegate)
Example #6
0
 def __init__(self, *args):
     QTreeView.__init__(self, *args)
     self.setFocusPolicy(Qt.FocusPolicy.NoFocus)
     self.delegate = Delegate(self)
     self.setItemDelegate(self.delegate)
     self.setMinimumWidth(80)
     self.header().close()
     self.setMouseTracking(True)
     self.set_style_sheet()
     self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
     self.context_menu = None
     self.customContextMenuRequested.connect(self.show_context_menu)
     QApplication.instance().palette_changed.connect(
         self.set_style_sheet, type=Qt.ConnectionType.QueuedConnection)
     self.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
     self.gesture_manager = GestureManager(self)
Example #7
0
 def setup_ui(self):
     self.l = l = QVBoxLayout(self)
     self.recipes = r = QTreeView(self)
     r.setAnimated(True)
     r.setHeaderHidden(True)
     self.model = ChooseBuiltinRecipeModel(self)
     self.model.setSourceModel(self.recipe_model)
     r.setModel(self.model)
     r.doubleClicked.connect(self.accept)
     self.search = s = SearchBox2(self)
     self.search.initialize('scheduler_search_history')
     self.search.setMinimumContentsLength(15)
     self.search.search.connect(self.recipe_model.search)
     self.recipe_model.searched.connect(
         self.search.search_done, type=Qt.ConnectionType.QueuedConnection)
     self.recipe_model.searched.connect(self.search_done)
     self.go_button = b = QToolButton(self)
     b.setText(_("Go"))
     b.clicked.connect(self.search.do_search)
     h = QHBoxLayout()
     h.addWidget(s), h.addWidget(b)
     l.addLayout(h)
     l.addWidget(self.recipes)
     l.addWidget(self.bb)
     self.search.setFocus(Qt.FocusReason.OtherFocusReason)
Example #8
0
    def __init__(self, *args):
        QTreeView.__init__(self,*args)

        self._model = Matches([p for p in store_plugins()])
        self.setModel(self._model)

        self.setIconSize(QSize(24, 24))

        self.rt_delegate = RichTextDelegate(self)
        self.delegate = Delegate()
        self.setItemDelegate(self.delegate)

        for i in self._model.HTML_COLS:
            self.setItemDelegateForColumn(i, self.rt_delegate)

        for i in range(self._model.columnCount()):
            self.resizeColumnToContents(i)

        self.model().sort(1, Qt.SortOrder.AscendingOrder)
        self.header().setSortIndicator(self.model().sort_col, self.model().sort_order)
Example #9
0
 def dropEvent(self, event):
     # the dropEvent() implementation of QTreeWidget handles InternalMoves
     # internally and is not suitable for us. QTreeView::dropEvent calls
     # dropMimeData() where we handle the drop
     QTreeView.dropEvent(self, event)
Example #10
0
 def mouseMoveEvent(self, ev):
     if self.indexAt(ev.pos()).isValid():
         self.setCursor(Qt.CursorShape.PointingHandCursor)
     else:
         self.unsetCursor()
     return QTreeView.mouseMoveEvent(self, ev)
Example #11
0
 def setModel(self, model):
     QTreeView.setModel(self, model)
     model.current_toc_nodes_changed.connect(
         self.current_toc_nodes_changed,
         type=Qt.ConnectionType.QueuedConnection)
Example #12
0
 def currentChanged(self, current, previous):
     QTreeView.currentChanged(self, current, previous)
     self.parent().current_changed(current, previous)
Example #13
0
class ShortcutConfig(QWidget):  # {{{

    changed_signal = pyqtSignal()

    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self._layout = l = QVBoxLayout(self)
        self.header = QLabel(
            _('Double click on any entry to change the'
              ' keyboard shortcuts associated with it'))
        l.addWidget(self.header)
        self.view = QTreeView(self)
        self.view.setAlternatingRowColors(True)
        self.view.setHeaderHidden(True)
        self.view.setAnimated(True)
        self.view.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
        self.view.customContextMenuRequested.connect(self.show_context_menu)
        l.addWidget(self.view)
        self.delegate = Delegate()
        self.view.setItemDelegate(self.delegate)
        self.delegate.sizeHintChanged.connect(
            self.editor_opened, type=Qt.ConnectionType.QueuedConnection)
        self.delegate.changed_signal.connect(self.changed_signal)
        self.search = SearchBox2(self)
        self.search.initialize('shortcuts_search_history',
                               help_text=_('Search for a shortcut by name'))
        self.search.search.connect(self.find)
        self._h = h = QHBoxLayout()
        l.addLayout(h)
        h.addWidget(self.search)
        self.nb = QPushButton(QIcon(I('arrow-down.png')), _('&Next'), self)
        self.pb = QPushButton(QIcon(I('arrow-up.png')), _('&Previous'), self)
        self.nb.clicked.connect(self.find_next)
        self.pb.clicked.connect(self.find_previous)
        h.addWidget(self.nb), h.addWidget(self.pb)
        h.setStretch(0, 100)

    def show_context_menu(self, pos):
        menu = QMenu(self)
        menu.addAction(_('Expand all'), self.view.expandAll)
        menu.addAction(_('Collapse all'), self.view.collapseAll)
        menu.exec_(self.view.mapToGlobal(pos))

    def restore_defaults(self):
        self._model.restore_defaults()
        self.changed_signal.emit()

    def commit(self):
        if self.view.state() == QAbstractItemView.State.EditingState:
            self.delegate.accept_changes()
        self._model.commit()

    def initialize(self, keyboard):
        self._model = ConfigModel(keyboard, parent=self)
        self.view.setModel(self._model)

    def editor_opened(self, index):
        self.view.scrollTo(index, QAbstractItemView.ScrollHint.EnsureVisible)

    @property
    def is_editing(self):
        return self.view.state() == QAbstractItemView.State.EditingState

    def find(self, query):
        if not query:
            return
        try:
            idx = self._model.find(query)
        except ParseException:
            self.search.search_done(False)
            return
        self.search.search_done(True)
        if not idx.isValid():
            info_dialog(self,
                        _('No matches'),
                        _('Could not find any shortcuts matching %s') % query,
                        show=True,
                        show_copy_button=False)
            return
        self.highlight_index(idx)

    def highlight_index(self, idx):
        self.view.scrollTo(idx)
        self.view.selectionModel().select(
            idx, QItemSelectionModel.SelectionFlag.ClearAndSelect)
        self.view.setCurrentIndex(idx)
        self.view.setFocus(Qt.FocusReason.OtherFocusReason)

    def find_next(self, *args):
        idx = self.view.currentIndex()
        if not idx.isValid():
            idx = self._model.index(0, 0)
        idx = self._model.find_next(idx,
                                    unicode_type(self.search.currentText()))
        self.highlight_index(idx)

    def find_previous(self, *args):
        idx = self.view.currentIndex()
        if not idx.isValid():
            idx = self._model.index(0, 0)
        idx = self._model.find_next(idx,
                                    unicode_type(self.search.currentText()),
                                    backwards=True)
        self.highlight_index(idx)

    def highlight_group(self, group_name):
        idx = self.view.model().index_for_group(group_name)
        if idx is not None:
            self.view.expand(idx)
            self.view.scrollTo(idx, QAbstractItemView.ScrollHint.PositionAtTop)
            self.view.selectionModel().select(
                idx, QItemSelectionModel.SelectionFlag.ClearAndSelect)
            self.view.setCurrentIndex(idx)
            self.view.setFocus(Qt.FocusReason.OtherFocusReason)