Example #1
0
    def eventFilter(self, source, event):
        if(event.type() == QtCore.QEvent.MouseButtonPress and
           event.buttons() == QtCore.Qt.RightButton and
           source is self.ui.table.viewport()):

            item = self.ui.table.itemAt(event.position().toPoint())
            if item is not None:
                menu = QMenu()
                menu.addAction('Copy password',lambda: self.copy(item.row()))
                menu.addAction('Add new',lambda: self.ui.stacked_wid.setCurrentIndex(3))
                menu.exec(event.globalPosition().toPoint())

        return super().eventFilter(source,event)
Example #2
0
 def open_menu(self):
     menu = QMenu(self)
     add_group = QAction('Add Group', self)
     add_trigger = QAction('Add Trigger', self)
     add_group.triggered.connect(self.add_group)
     add_trigger.triggered.connect(self.add_trigger)
     menu.addAction(add_group)
     menu.addAction(add_trigger)
     menu.addSeparator()
     add_edit = QAction('Edit', self)
     add_delete = QAction('Delete', self)
     add_edit.triggered.connect(self.open_item)
     add_delete.triggered.connect(self.delete_item)
     menu.addAction(add_edit)
     menu.addAction(add_delete)
     menu.exec(QCursor().pos())
Example #3
0
class QudTreeView(QTreeView):
    """Custom tree view for the object hierarchy browser, including icons."""
    def __init__(self, selection_handler, *args, **kwargs):
        """selection_handler: a function in the parent window to pass selected indices to"""
        self.selection_handler = selection_handler
        super().__init__(*args, **kwargs)
        size_policy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(1)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
        self.setSizePolicy(size_policy)
        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.setObjectName("treeView")
        self.setIndentation(10)
        self.setIconSize(QSize(16, 24))
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.tree_menu = QMenu()
        self.context_action_expand = QAction('Expand all', self.tree_menu)
        self.tree_menu.addAction(self.context_action_expand)
        self.context_action_scan = QAction('Scan wiki for selected objects',
                                           self.tree_menu)
        self.tree_menu.addAction(self.context_action_scan)
        self.context_action_upload_page = QAction(
            'Upload templates for selected objects', self.tree_menu)
        self.tree_menu.addAction(self.context_action_upload_page)
        self.context_action_upload_tile = QAction(
            'Upload tiles for selected objects', self.tree_menu)
        self.tree_menu.addAction(self.context_action_upload_tile)
        self.context_action_upload_extra = QAction(
            'Upload extra image(s) for selected objects', self.tree_menu)
        self.tree_menu.addAction(self.context_action_upload_extra)
        self.context_action_diff = QAction('Diff template against wiki',
                                           self.tree_menu)
        self.tree_menu.addAction(self.context_action_diff)
        self.customContextMenuRequested.connect(self.on_context_menu)

    def on_context_menu(self, point):
        """Callback registered for right click in the tree view."""
        self.tree_menu.exec(self.mapToGlobal(point))

    def selectionChanged(self, selected, deselected):
        """Custom override to handle all forms of selection (keyboard, mouse)"""
        indices = self.selectedIndexes()
        self.selection_handler(indices)
        super().selectionChanged(selected, deselected)
    def contextMenuEvent(self, event) -> None:
        context_menu = QMenu(self)
        file_is_synced = self.settings_model.is_id_in_sync_list(self.id)

        # se il file non รจ syncato mostra aggiungi, altrimenti mostra rimuovi
        if file_is_synced is False:
            add_sync_action = context_menu.addAction("Aggiungi a sync")
        else:
            remove_sync_action = context_menu.addAction("Rimuovi da sync")

        # selezione voci menu
        if file_is_synced is False:
            action = context_menu.exec(self.mapToGlobal(event.pos()))
            if action == add_sync_action:
                self.Sg_add_sync_file.emit(self.id)
        else:
            action = context_menu.exec(self.mapToGlobal(event.pos()))
            if action == remove_sync_action:
                self.Sg_remove_sync_file.emit(self.id)
Example #5
0
class MainWindow(QWidget):
    def __init__(self, download_keyword, dirname, parent=None):
        super(MainWindow,
              self).__init__(parent,
                             Qt.WindowStaysOnTopHint | Qt.CustomizeWindowHint)
        self.__dirname = dirname
        self.__download_widget = None
        self.__image_view = None
        self.__mouse_left_press_pos = None
        self.__menu = QMenu(self)

        self.init_common_ui()
        if download_keyword:
            self.init_download_ui(download_keyword)
            self.__download_widget.start_download()
        else:
            self.init_image_ui()
            self.__image_view.start_view()

    def init_common_ui(self):
        height = self.screen().size().height() // 5
        self.resize(height * 5 // 3, height)
        self.setWindowTitle('cappuccino')

        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(QMargins(0, 0, 0, 0))
        self.setLayout(vbox)

        self.init_menu()

    def init_menu(self):
        def _inner_clear():
            result = QMessageBox.question(self, self.windowTitle(),
                                          'Delete all images ?',
                                          QMessageBox.Ok | QMessageBox.Cancel,
                                          QMessageBox.Cancel)
            if result == QMessageBox.Ok:
                shutil.rmtree(self.__dirname)

        _window = self

        def _inner_toggle(state):
            if state:
                _window.setWindowFlags(_window.windowFlags()
                                       | Qt.WindowStaysOnTopHint)
            else:
                _window.setWindowFlags(_window.windowFlags()
                                       & ~Qt.WindowStaysOnTopHint)
            _window.show()

        top = QAction('&Top', self, checkable=True)
        top.triggered.connect(_inner_toggle)
        top.setChecked(True)
        hide = QAction('&Hide', self)
        hide.triggered.connect(lambda: self.setWindowState(Qt.WindowMinimized))
        clear = QAction('&Clear', self)
        clear.triggered.connect(_inner_clear)
        exit_ = QAction('&Exit', self)
        exit_.triggered.connect(lambda: self.close())
        self.__menu.addAction(top)
        self.__menu.addAction(hide)
        self.__menu.addAction(clear)
        self.__menu.addAction(exit_)

    def init_download_ui(self, download_keyword):
        self.__download_widget = DownloadWidget(download_keyword,
                                                self.__dirname, self)

        layout = self.layout()
        layout.removeWidget(self.__image_view)
        layout.addWidget(self.__download_widget)

        self.__download_widget.mouse_left_press.connect(
            self.on_mouse_left_press)
        self.__download_widget.mouse_left_move.connect(self.on_mouse_left_move)
        self.__download_widget.mouse_left_release.connect(
            self.on_mouse_left_release)
        self.__download_widget.mouse_left_double_click.connect(
            self.on_mouse_left_double_click)
        self.__download_widget.complete_download.connect(
            self.on_complete_download)
        self.__download_widget.setContextMenuPolicy(Qt.CustomContextMenu)
        self.__download_widget.customContextMenuRequested.connect(
            self.on_context_menu_requested)

    def init_image_ui(self):
        self.__image_view = ImageView(self.__dirname, self)

        layout = self.layout()
        if self.__download_widget:
            layout.removeWidget(self.__download_widget)
        layout.addWidget(self.__image_view)

        self.__image_view.mouse_left_press.connect(self.on_mouse_left_press)
        self.__image_view.mouse_left_move.connect(self.on_mouse_left_move)
        self.__image_view.mouse_left_release.connect(
            self.on_mouse_left_release)
        self.__image_view.mouse_left_double_click.connect(
            self.on_mouse_left_double_click)
        self.__image_view.setContextMenuPolicy(Qt.CustomContextMenu)
        self.__image_view.customContextMenuRequested.connect(
            self.on_context_menu_requested)

    def on_complete_download(self):
        self.init_image_ui()
        self.__image_view.start_view()

    def on_mouse_left_press(self, gpos):
        self.__mouse_left_press_pos = self.mapFromGlobal(
            gpos) - self.mapFromGlobal(self.pos())

    def on_mouse_left_move(self, gpos):
        if not self.__mouse_left_press_pos:
            return
        self.move(gpos - self.__mouse_left_press_pos)

    def on_mouse_left_release(self, gpos):
        self.__mouse_left_press_pos = None

    def on_mouse_left_double_click(self, event):
        self.setWindowState(Qt.WindowMinimized)

    def on_context_menu_requested(self, pos):
        self.__menu.exec(self.mapToGlobal(pos))