Exemplo n.º 1
0
    def createMenuBar(self):
        self.menuBar = Qt.QMenuBar()

        # File Menu
        self.fileMenu = self.menuBar.addMenu("File")
        self.fileMenu.setStatusTip("Open File Menu")
        self.fileMenu.addAction(self.openFileAct)
        self.fileMenu.addAction(self.setOutputFilePathAct)
        self.fileMenu.addSeparator()
        self.fileMenu.addAction(self.exitAct)

        # Settings Menu
        self.settingsMenu = self.menuBar.addMenu("Settings")
        self.settingsMenu.setStatusTip("Open Settings Menu")

        self.settingsMenu.addAction(self.addPathAct)
        self.settingsMenu.addAction(self.deletePathAct)
        self.settingsMenu.addSeparator()

        self.deepScanMenu = Qt.QMenu("Toogle Deep Scan")
        self.deepScanMenu.setStatusTip("Toggle Deep Scan On/Off")
        self.settingsMenu.addMenu(self.deepScanMenu)
        self.deepScanMenu.addAction(self.deepScanOnAct)
        self.deepScanMenu.addAction(self.deepScanOffAct)

        self.setMenuBar(self.menuBar)
Exemplo n.º 2
0
    def editorEvent(self, event, model, option, midx):
        if not midx.isValid() or option.widget is None:
            return False
        flags = midx.flags()
        item_is_enabled = flags | Qt.Qt.ItemIsEnabled
        item_is_editable = flags | Qt.Qt.ItemIsEditable
        if not item_is_enabled or not item_is_editable:
            return False
        menu = Qt.QMenu(option.widget)
        menu.setAttribute(Qt.Qt.WA_DeleteOnClose)
        choices = midx.data(CHOICES_QITEMDATA_ROLE)
        choice_actions = [menu.addAction(choice) for choice in choices]
        try:
            current_choice = midx.data()
            if isinstance(current_choice, Qt.QVariant):
                current_choice = current_choice.value()
            current_choice_action = choice_actions[choices.index(
                current_choice)]
            menu.setActiveAction(current_choice_action)
        except ValueError:
            current_choice_action = None
        cell_rect = option.widget.visualRect(midx)
        menu_pos = option.widget.mapToGlobal(
            Qt.QPoint(cell_rect.left(),
                      (cell_rect.top() + cell_rect.bottom()) / 2))
        pmidx = Qt.QPersistentModelIndex(midx)

        def on_entry_selected(action):
            if pmidx.isValid():
                model.setData(model.index(pmidx.row(), pmidx.column()),
                              action.text().replace('&', ''))

        menu.triggered.connect(on_entry_selected)
        menu.popup(menu_pos, current_choice_action)
        return False
Exemplo n.º 3
0
 def contextMenuEvent(self, event):
     self.menu = Qt.QMenu(self)
     rows = self.currentRows()
     if len(rows) == 1:
         name = self.item(rows[0], 0).text()
     else:
         name = self.tr("multiple addons")
     self.menu.addAction(self.tr("Context menu for {}").format(name))
     actionUpdate = Qt.QAction(self.tr("Update addon"), self)
     actionUpdate.setStatusTip(
         self.tr("Update currently selected addons if needed"))
     actionUpdate.triggered.connect(self.parent.updateAddons)
     self.menu.addAction(actionUpdate)
     actionForceUpdate = Qt.QAction(self.tr("Force Update addon"), self)
     actionForceUpdate.setStatusTip(
         self.tr("Unconditionally update currently selected addons"))
     actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon)
     self.menu.addAction(actionForceUpdate)
     actionRemovefromlist = Qt.QAction(self.tr("Remove addon from list"),
                                       self)
     actionRemovefromlist.setStatusTip(
         self.tr("Leave all files unaltered, useful for subaddons"))
     actionRemovefromlist.triggered.connect(self.parent.removeFromList)
     self.menu.addAction(actionRemovefromlist)
     self.menu.popup(Qt.QCursor.pos())
Exemplo n.º 4
0
 def contextMenuEvent(self, event):
     self.menu = Qt.QMenu(self)
     row = self.currentRow()
     name = self.item(row, 0).text()
     self.menu.addAction(self.tr("{}").format(name))
     removefromlistAction = Qt.QAction(self.tr("Remove from list"), self)
     removefromlistAction.setStatusTip(
         self.tr("Leave all files unaltered, useful for subaddons"))
     removefromlistAction.triggered.connect(self.removeFromList)
     self.menu.addAction(removefromlistAction)
     actionUpdate = Qt.QAction(self.tr("Update addon"), self)
     actionUpdate.setStatusTip(
         self.tr("Update currently selected addon if needed"))
     actionUpdate.triggered.connect(self.parent.updateAddon)
     self.menu.addAction(actionUpdate)
     actionForceUpdate = Qt.QAction(self.tr("Force Update addon"), self)
     actionForceUpdate.setStatusTip(
         self.tr("Unconditionally update currently selected addon"))
     actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon)
     self.menu.addAction(actionForceUpdate)
     self.menu.addSeparator()
     actionRemove = Qt.QAction(self.tr("Delete addon"), self)
     actionRemove.setStatusTip(self.tr("Completely remove selected addon"))
     actionRemove.triggered.connect(self.parent.removeAddon)
     self.menu.addAction(actionRemove)
     self.menu.popup(Qt.QCursor.pos())
Exemplo n.º 5
0
 def contextMenuEvent(self, event):
     self.menu = Qt.QMenu(self)
     row = self.currentRow()
     name = self.item(row, 0).text()
     self.menu.addAction(self.tr("Menu contextuel de {}").format(name))
     actionUpdate = Qt.QAction(self.tr("Mise à jour Addon"), self)
     actionUpdate.setStatusTip(
         self.tr("Mise à jour des Addons sélectionnés si nécessaire"))
     actionUpdate.triggered.connect(self.parent.updateAddon)
     self.menu.addAction(actionUpdate)
     actionForceUpdate = Qt.QAction(self.tr("Forcer la mise à jour Addon"),
                                    self)
     actionForceUpdate.setStatusTip(
         self.tr("Mise à jour forcée des Addons sélectionnés"))
     actionForceUpdate.triggered.connect(self.parent.forceUpdateAddon)
     self.menu.addAction(actionForceUpdate)
     actionRemovefromlist = Qt.QAction(
         self.tr("Supprimer addon de la liste"), self)
     actionRemovefromlist.setStatusTip(
         self.
         tr("Laisser tous les fichiers inchangés, utile pour les sous-addons"
            ))
     actionRemovefromlist.triggered.connect(self.parent.removeFromList)
     self.menu.addAction(actionRemovefromlist)
     self.menu.popup(Qt.QCursor.pos())
Exemplo n.º 6
0
    def eventFilter(self, obj, event):
        """
        Filter events if this object has been installed as an event
        filter for the watched object.

        Shows dedicated context menu for categories panel.

        Arguments:
            obj (QObject): Watched object.
            event (QEvent): Event being processed.

        Returns:
            bool: *True* if event should be filtered out (i.e. if
            further processing should be stopped); *False* otherwise.
        """
        if obj == self.panel and event.type() == Q.QEvent.ContextMenu:
            menu = Q.QMenu()
            menu.addAction(translate("ShowAllPanel", "Expand all"),
                           self.expandAll)
            menu.addAction(translate("ShowAllPanel", "Collapse all"),
                           self.collapseAll)
            event.accept()
            menu.exec_(self.mapToGlobal(event.pos()))
        # pragma pylint: disable=no-member
        return False
Exemplo n.º 7
0
    def __contextMenu(self, point):
        modelindex = self.ui.treeView.indexAt(point)
        item = self._tree_model.item(modelindex)
        if not item:
            return

        actions = [
            """self.menu.addAction("Sign driver configuration",
            self.actionSaveConfigMth)""",
            """self.menu.addAction("Solve driver configuration conflict",
            self.contextSolveConflict)""",
            """self.menu.addAction("Delete driver not present",
            self.contextDeleteDriverError)""",
            """self.menu.addAction("New driver. Keep or set to default",
            self.contextSolveNewDriver)""",
            """self.menu.addSeparator()""",
            """self.menu.addAction("Start Icepap system configuration",
            self.contextIcepapStart)""",
            """self.menu.addAction("Rescan Icepap system",
            self.contextIcepapStart)""",
            """self.menu.addAction("Finish Icepap system configuration",
            self.contextIcepapStop)""",
            """self.menu.addSeparator()""",
            """self.menu.addAction("Edit Icepap system information",
            self.contextEditIcepap)""",
            """self.menu.addAction("Delete Icepap system configuration",
            self.btnTreeRemove_on_click)""",
            """self.menu.addSeparator()""",
            """self.menu.addAction("Open Icepap console",
            self.contextOpenConsole)""",
        ]
        self.menu = Qt.QMenu(self)
        font = QtGui.QFont()
        font.setPointSize(8)
        self.menu.setFont(font)
        self.context_menu_item = item
        shown_actions = []
        if item.role == IcepapTreeModel.SYSTEM_OFFLINE:
            shown_actions = [5, 8, 9, 10, 11, 12]
        if item.role == IcepapTreeModel.DRIVER:
            shown_actions = [6, 7, 8, 9, 10, 11, 12]
        elif item.role == IcepapTreeModel.DRIVER_CFG:
            shown_actions = [0, 4, 6, 7, 8, 9, 10, 11, 12]
        elif item.role == IcepapTreeModel.DRIVER_ERROR:
            shown_actions = [2, 4, 6, 7, 8, 9, 10, 11, 12]
        elif item.role == IcepapTreeModel.DRIVER_WARNING:
            shown_actions = [1, 4, 6, 7, 8, 9, 10, 11, 12]
        elif item.role == IcepapTreeModel.DRIVER_NEW:
            shown_actions = [3, 4, 6, 7, 8, 9, 10, 11, 12]
        elif item.role == IcepapTreeModel.SYSTEM or \
                item.role == IcepapTreeModel.CRATE or \
                item.role == IcepapTreeModel.SYSTEM_ERROR or \
                item.role == IcepapTreeModel.SYSTEM_WARNING:
            shown_actions = [6, 7, 8, 9, 10, 11, 12]
        for i in shown_actions:
            exec(actions[i])
        self.menu.popup(self.cursor().pos())
Exemplo n.º 8
0
    def contextMenuEvent(self, event):
        focused_midx = self.selectionModel().currentIndex()
        if not focused_midx.isValid():
            return
        row = self.rowAt(event.pos().y())
        col = self.columnAt(event.pos().x())
        if row != focused_midx.row() or col != focused_midx.column():
            return
        try:
            pname = self.layer_table_model.property_names[col]
        except IndexError:
            return
        try:
            psdg = self.layer_table_model._special_data_getters[pname]
        except KeyError:
            return
        if psdg != self.layer_table_model._getd_defaultable_property:
            return
        try:
            layer = self.layer_table_model.layer_stack.layers[-(row + 1)]
        except IndexError:
            return
        try:
            p = getattr(type(layer), pname)
        except AttributeError:
            return
        if p.is_default(layer):
            return
        menu = Qt.QMenu(self)
        reset_to_default_action = Qt.QAction('Reset to default value', menu)

        def on_reset_action():
            p.__delete__(layer)

        reset_to_default_action.triggered.connect(on_reset_action)
        menu.addAction(reset_to_default_action)
        menu.exec(event.globalPos())
Exemplo n.º 9
0
    def __init__(self, app, group_name, list_of_exams):
        super().__init__()

        update_button = Qt.QPushButton(Qt.QIcon(common.UPDATE), '', self)
        update_button.setObjectName('Flat')
        update_button.setCursor(Qt.Qt.PointingHandCursor)
        update_button.setIconSize(Qt.QSize(35, 35))
        update_button.setFixedSize(Qt.QSize(55, 55))
        update_button.clicked.connect(lambda _: app.display_home_page())

        exams_title = Qt.QLabel('Экзамены группы ' + group_name, self)
        exams_title.setFont(Qt.QFont('Arial', 30))

        view_profile_action = Qt.QWidgetAction(self)
        view_profile_action.setFont(Qt.QFont('Arial', 15))
        view_profile_action.setText('Профиль')
        view_profile_action.triggered.connect(
            lambda _: app.display_profile_page())

        exit_action = Qt.QWidgetAction(self)
        exit_action.setFont(Qt.QFont('Arial', 15))
        exit_action.setText('Выйти')
        exit_action.triggered.connect(lambda _: app.logout())

        user_menu = Qt.QMenu(self)
        user_menu.addAction(view_profile_action)
        user_menu.addAction(exit_action)

        user_button = Qt.QPushButton(Qt.QIcon(common.USER), '', self)
        user_button.setObjectName('Flat')
        user_button.setCursor(Qt.Qt.PointingHandCursor)
        user_button.setIconSize(Qt.QSize(35, 35))
        user_button.setFixedSize(Qt.QSize(55, 55))
        user_button.setMenu(user_menu)

        scroll_area = Qt.QScrollArea()
        scroll_area.setFrameShape(Qt.QFrame.NoFrame)

        scroll_layout = Qt.QVBoxLayout()
        scroll_layout.setSizeConstraint(Qt.QLayout.SetMinimumSize)

        for exam in list_of_exams:
            exam_id = exam['rowid']
            exam_name = exam['name']

            exam_button = Qt.QPushButton(Qt.QIcon(common.EXAM30), exam_name,
                                         self)
            exam_button.setObjectName('Flat')
            exam_button.setCursor(Qt.Qt.PointingHandCursor)
            exam_button.setIconSize(Qt.QSize(30, 30))
            exam_button.setFont(Qt.QFont('Arial', 20))
            exam_button.clicked.connect(
                common.return_lambda(app.display_exam, exam_id))

            exam_layout = Qt.QHBoxLayout()
            exam_layout.addWidget(exam_button)
            exam_layout.addStretch(1)

            scroll_layout.addLayout(exam_layout)

        scroll_layout.addStretch(1)

        scroll_widget = Qt.QWidget(self)
        scroll_widget.setLayout(scroll_layout)
        scroll_area.setWidget(scroll_widget)

        upper_layout = Qt.QHBoxLayout()
        upper_layout.addWidget(update_button)
        upper_layout.addStretch(1)
        upper_layout.addWidget(exams_title)
        upper_layout.addStretch(1)
        upper_layout.addWidget(user_button)

        layout = Qt.QVBoxLayout()
        layout.addLayout(upper_layout)
        layout.addSpacerItem(Qt.QSpacerItem(0, 20))
        layout.addWidget(scroll_area)
        self.setLayout(layout)
Exemplo n.º 10
0
    def __init__(self, plugin, gui, icon):

        Qt.QDialog.__init__(self, gui)
        self.plugin = plugin
        self.gui = gui
        self.full_db = gui.current_db
        self.db = gui.current_db.new_api

        self.elastic_search_client = None
        self.conversion_time_dict = {}

        self.setWindowTitle(TITLE)
        self.setWindowIcon(icon)
        self.setWindowFlags(QtCore.Window | QtCore.WindowTitleHint
                            | QtCore.CustomizeWindowHint)

        max_fit_size_policy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)

        self.layout = Qt.QVBoxLayout()
        self.setLayout(self.layout)

        self.search_label = Qt.QLabel('Enter &text to search in content')
        self.layout.addWidget(self.search_label)

        self.search_text_layout = Qt.QHBoxLayout()

        self.search_textbox = Qt.QComboBox(self)
        self.search_textbox.setMinimumWidth(400)
        self.search_textbox.setEditable(True)
        self.search_textbox.setInsertPolicy(Qt.QComboBox.NoInsert)
        for _, value in sorted(prefs.get('search_lru', {}).items()):
            self.search_textbox.addItem(value)
        self.search_textbox.setEditText('')
        self.search_textbox.editTextChanged.connect(
            self.on_search_text_changed)
        self.search_label.setBuddy(self.search_textbox)
        self.search_text_layout.addWidget(self.search_textbox)

        self.search_help_button = Qt.QToolButton(self)
        self.search_help_button.setText('?')
        fixed_size_policy = self.search_help_button.sizePolicy()
        fixed_size_policy.setHorizontalPolicy(QtWidgets.QSizePolicy.Fixed)
        self.search_help_button.setSizePolicy(fixed_size_policy)
        self.search_help_button.clicked.connect(self.on_search_help)
        self.search_text_layout.addWidget(self.search_help_button)

        self.layout.addLayout(self.search_text_layout)

        self.search_button = Qt.QToolButton(self)
        self.search_button.setEnabled(False)
        self.search_button.setToolButtonStyle(QtCore.ToolButtonTextBesideIcon)
        self.search_button.setText('&Search')
        self.search_button.setPopupMode(Qt.QToolButton.MenuButtonPopup)
        self.search_button.clicked.connect(self.on_search_all)
        self.search_dropdown = Qt.QMenu()
        self.search_dropdown.addAction('Search in the &whole library',
                                       self.on_search_all)
        self.search_dropdown.addAction('Search in &selected books',
                                       self.on_search_selected)
        self.search_button.setMenu(self.search_dropdown)
        self.search_button.setSizePolicy(max_fit_size_policy)

        self.layout.addWidget(self.search_button)

        self.cancel_button = Qt.QToolButton(self)
        self.cancel_button.setText('&Cancel')
        self.cancel_button.clicked.connect(self.on_cancel)
        self.cancel_button.setVisible(False)
        self.cancel_button.setSizePolicy(max_fit_size_policy)

        self.layout.addWidget(self.cancel_button)

        self.status_label = Qt.QLabel()
        self.status_label.setAlignment(QtCore.AlignCenter)
        self.layout.addWidget(self.status_label)

        self.progress_bar = Qt.QProgressBar(self)
        self.progress_bar.setVisible(False)
        retain_size_policy = self.progress_bar.sizePolicy()
        retain_size_policy.setRetainSizeWhenHidden(True)
        self.progress_bar.setSizePolicy(retain_size_policy)
        self.layout.addWidget(self.progress_bar)

        self.details_button = Qt.QPushButton(self)
        self.details_button.setText('&Details')
        self.details_button.setVisible(False)
        retain_size_policy = self.details_button.sizePolicy()
        retain_size_policy.setRetainSizeWhenHidden(True)
        self.details_button.setSizePolicy(retain_size_policy)
        self.details_button.setFlat(True)
        self.details_button.setStyleSheet('text-align: left')
        icon = get_icons('images/right-arrow.png')
        self.details_button.setIcon(icon)
        self.details_button.clicked.connect(self.on_details)
        self.layout.addWidget(self.details_button)

        self.details = Qt.QListWidget(self)
        self.details.setVisible(False)
        self.layout.addWidget(self.details)

        self.layout.addStretch()

        self.reindex_button = Qt.QToolButton(self)
        self.reindex_button.setToolButtonStyle(QtCore.ToolButtonTextBesideIcon)
        self.reindex_button.setText('Reindex &new books')
        self.reindex_button.setPopupMode(Qt.QToolButton.MenuButtonPopup)
        self.reindex_button.clicked.connect(self.on_reindex)
        self.reindex_dropdown = Qt.QMenu()
        self.reindex_dropdown.addAction('Reindex &new books', self.on_reindex)
        self.reindex_dropdown.addAction('Reindex &all books',
                                        self.on_reindex_all)
        self.reindex_button.setMenu(self.reindex_dropdown)
        self.reindex_button.setSizePolicy(max_fit_size_policy)

        self.layout.addWidget(self.reindex_button)

        self.conf_button = Qt.QToolButton(self)
        self.conf_button.setText('&Options...')
        self.conf_button.clicked.connect(self.on_config)
        self.conf_button.setSizePolicy(max_fit_size_policy)
        self.layout.addWidget(self.conf_button)

        self.readme_button = Qt.QToolButton(self)
        self.readme_button.setText('&Readme...')
        self.readme_button.clicked.connect(self.on_readme)
        self.readme_button.setSizePolicy(max_fit_size_policy)
        self.layout.addWidget(self.readme_button)

        self.close_button = Qt.QToolButton(self)
        self.close_button.setText('&Close')
        self.close_button.clicked.connect(self.close)
        self.close_button.setSizePolicy(max_fit_size_policy)
        self.layout.addWidget(self.close_button)

        self.thread_pool = Qt.QThreadPool()

        self.add_workers_submitted = 0
        self.add_workers_complete = 0

        self.delete_workers_submitted = 0
        self.delete_workers_complete = 0

        self.first_paint = True

        self.pdftotext_full_path = None

        self.ids = None

        if 'version' not in prefs:
            file_formats = set(prefs['file_formats'].split(',') +
                               ARCHIVE_FORMATS)
            prefs['file_formats'] = ','.join(file_formats)
        prefs['version'] = CapsPlugin.version

        self.key_pressed.connect(self.on_key_pressed)
Exemplo n.º 11
0
    def initUI(self):
        _translate = QtCore.QCoreApplication.translate
        #self.setWindowTitle("毕业设计")
        self.resize(1200, 600)

        rect = self.frameGeometry()
        rect.moveCenter(QApplication.desktop().availableGeometry().center())
        self.move(rect.topLeft())

        self.stuInfoList = QTableWidget(self)
        self.stuInfoList.setEditTriggers(self.stuInfoList.NoEditTriggers)
        self.stuInfoList.verticalHeader().setHidden(True)
        self.stuInfoList.setColumnCount(10)
        self.stuInfoList.setHorizontalHeaderLabels(
            ["学号", "姓名", "性别", "年级", "专业", "政治", "英语", "数学", "专业课", "总分"])
        #选中条目的动作为选中那一行
        self.stuInfoList.setSelectionBehavior(Qt.QAbstractItemView.SelectRows)
        #单行选中
        self.stuInfoList.setSelectionMode(Qt.QAbstractItemView.SingleSelection)
        #将每个条目扩展到充满容器
        self.stuInfoList.horizontalHeader().setStretchLastSection(True)
        #将容器宽度平均分给所有条目
        self.stuInfoList.horizontalHeader().setSectionResizeMode(
            Qt.QHeaderView.Stretch)

        header = self.stuInfoList.horizontalHeader()
        #header.setSortIndicator(5, QtCore.Qt.AscendingOrder)
        header.setSortIndicatorShown(True)
        header.setSectionsClickable(True)
        #connect(headerGoods, SIGNAL(sectionClicked(int)), _nodeTableWidget, SLOT (sortByColumn(int)))

        self.createButton = Qt.QPushButton(self)
        self.createButton.setText("新建")
        self.createButton.setDefault(True)

        self.deleteButton = Qt.QPushButton(self)
        self.deleteButton.setText("删除")

        self.modifyButton = Qt.QPushButton(self)
        self.modifyButton.setText("修改")

        self.queryButton = Qt.QPushButton(self)
        self.queryButton.setText("查询")

        self.flushButton = Qt.QPushButton(self)
        self.flushButton.setText("后退")

        self.menuBar = Qt.QMenuBar(self)

        menu = Qt.QMenu(self.menuBar)
        menu.setTitle("菜单")

        menu_A = Qt.QMenu(self.menuBar)
        menu_A.setTitle("关于")
        self.menuBar.addMenu(menu)
        self.menuBar.addMenu(menu_A)

        self.openAbout = Qt.QAction(menu_A)
        self.openAbout.setText("作品相关")
        menu_A.addAction(self.openAbout)

        self.openDataBaseAction = Qt.QAction(menu)
        self.openDataBaseAction.setText("打开数据库")
        menu.addAction(self.openDataBaseAction)

        self.createNewAction = Qt.QAction(menu)
        self.createNewAction.setText("新建档案")
        #self.enterAction.triggered.connect(self.enterActionTriggered)
        menu.addAction(self.createNewAction)

        self.createNewAccount = Qt.QAction(menu)
        self.createNewAccount.setText("新建学生账户")
        menu.addAction(self.createNewAccount)

        self.findDisqualified = Qt.QAction(menu)
        self.findDisqualified.setText("查询不及格")
        menu.addAction(self.findDisqualified)

        self.fileCloseAction = Qt.QAction(menu)
        self.fileCloseAction.setText("关闭")
        menu.addAction(self.fileCloseAction)
        '''
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 608, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu.setTitle(_translate("MainWindow", "文件(&F)"))
        
        self.menu_E = QtWidgets.QMenu(self.menubar)
        self.menu_E.setObjectName("menu_E")
        self.menu_E.setTitle(_translate("MainWindow", "编辑(&E)"))
        '''
        layout = Qt.QGridLayout(self)
        layout.addWidget(self.stuInfoList, 3, 0, 5, -1)
        layout.addWidget(self.queryButton, 8, 9, 1, 1)
        layout.addWidget(self.createButton, 8, 6, 1, 1)
        layout.addWidget(self.modifyButton, 8, 8, 1, 1)
        layout.addWidget(self.deleteButton, 8, 7, 1, 1)
        layout.addWidget(self.flushButton, 8, 10, 1, 1)
        layout.setMenuBar(self.menuBar)
Exemplo n.º 12
0
    def __init__(self, app, exam_id):
        super().__init__()
        self.app = app
        self.exam_id = exam_id
        self.question_id = None
        self.question_number = None
        self.exam_data = None
        self.question_data = None
        self.questions_ids = []

        back_button = Qt.QPushButton(Qt.QIcon(common.LEFT), '', self)
        back_button.setObjectName('Flat')
        back_button.setCursor(Qt.Qt.PointingHandCursor)
        back_button.setIconSize(Qt.QSize(35, 35))
        back_button.setFixedSize(Qt.QSize(55, 55))
        back_button.clicked.connect(lambda _: app.display_home_page())

        scroll_area = Qt.QScrollArea()
        scroll_area.setWidgetResizable(True)
        scroll_area.setFrameShape(Qt.QFrame.NoFrame)
        scroll_area.setSizePolicy(Qt.QSizePolicy.Minimum,
                                  Qt.QSizePolicy.Minimum)

        self.settings_button = Qt.QPushButton(Qt.QIcon(common.SETTINGS), '',
                                              self)
        self.settings_button.setObjectName('Flat')
        self.settings_button.setCursor(Qt.Qt.PointingHandCursor)
        self.settings_button.setIconSize(Qt.QSize(30, 30))
        self.settings_button.setFixedSize(Qt.QSize(50, 50))
        self.settings_button.clicked.connect(
            lambda _: self.app.view_exam_settings())

        self.questions_layout = Qt.QHBoxLayout()
        self.questions_layout.setSpacing(0)

        short_question_action = Qt.QWidgetAction(self)
        short_question_action.setFont(Qt.QFont('Arial', 15))
        short_question_action.setText('Вопрос с кратким ответом')
        short_question_action.triggered.connect(
            lambda: self.app.create_question(self.exam_id, 'Short'))

        long_question_action = Qt.QWidgetAction(self)
        long_question_action.setFont(Qt.QFont('Arial', 15))
        long_question_action.setText('Вопрос с развёрнутым ответом')
        long_question_action.triggered.connect(
            lambda: self.app.create_question(self.exam_id, 'Long'))

        create_menu = Qt.QMenu(self)
        create_menu.addAction(short_question_action)
        create_menu.addAction(long_question_action)

        create_button = Qt.QPushButton(Qt.QIcon(common.CREATE), '', self)
        create_button.setObjectName('Flat')
        create_button.setCursor(Qt.Qt.PointingHandCursor)
        create_button.setIconSize(Qt.QSize(40, 40))
        create_button.setFixedSize(Qt.QSize(50, 50))
        create_button.setMenu(create_menu)

        self.widget = Qt.QWidget(self)

        scroll_layout = Qt.QHBoxLayout()
        scroll_layout.setSpacing(0)
        scroll_layout.setContentsMargins(0, 0, 0, 0)
        scroll_layout.setSizeConstraint(Qt.QLayout.SetMinimumSize)
        scroll_layout.addWidget(self.settings_button)
        scroll_layout.addLayout(self.questions_layout)
        scroll_layout.addSpacerItem(Qt.QSpacerItem(5, 0))
        scroll_layout.addWidget(create_button)
        scroll_layout.addStretch(1)

        scroll_widget = Qt.QWidget(self)
        scroll_widget.setLayout(scroll_layout)
        scroll_area.setWidget(scroll_widget)

        upper_layout = Qt.QHBoxLayout()
        upper_layout.addWidget(back_button)
        upper_layout.addSpacerItem(Qt.QSpacerItem(10, 0))
        upper_layout.addWidget(scroll_area)

        layout = Qt.QVBoxLayout()
        layout.addLayout(upper_layout)
        layout.addSpacerItem(Qt.QSpacerItem(0, 10))
        layout.addWidget(self.widget)
        self.setLayout(layout)
Exemplo n.º 13
0
 def contextMenuEvent(self, event):
     menu = Qt.QMenu(self)
     menu.addAction(self.consolidate_selected_action)
     menu.addAction(self.delete_selected_action)
     menu.exec(event.globalPos())
Exemplo n.º 14
0
    def __init__(self, astergui, parent=None, **kwargs):
        """
        Create variable edition panel.

        Arguments:
            astergui (AsterGui): Parent *AsterGui* instance.
            parent (Optional[QWidget]): Parent widget. Defaults to
                *None*.
            kwargs: Keyword arguments.
        """
        super(VariablePanel,
              self).__init__(parent=parent,
                             name=translate("VariablePanel",
                                            "Create variable"),
                             astergui=astergui,
                             **kwargs)
        self._stage = None
        self._variable = None

        grid = Q.QGridLayout(self)
        grid.setContentsMargins(0, 0, 0, 0)

        grid.addWidget(Q.QLabel(translate("VariablePanel", "Name"), self), 0,
                       0)
        self._vname = Q.QLineEdit(self)
        self._vname.setObjectName("Name")
        validator = Q.QRegExpValidator(Q.QRegExp(VariablePanel.namePattern()),
                                       self._vname)
        self._vname.setValidator(validator)
        grid.addWidget(self._vname, 0, 1, 1, 2)

        grid.addWidget(
            Q.QLabel(translate("VariablePanel", "Expression"), self), 1, 0)
        self._vexpr = Q.QLineEdit(self)
        self._vexpr.setObjectName("Expression")
        grid.addWidget(self._vexpr, 1, 1)

        self._vcomp = VariablePanel.Completer(self._vexpr)

        self._vins = Q.QToolButton(self)
        self._vins.setArrowType(Q.Qt.DownArrow)
        self._vins.setPopupMode(Q.QToolButton.InstantPopup)
        self._vins.setMenu(Q.QMenu(self._vins))
        grid.addWidget(self._vins, 1, 2)

        label = Q.QLabel(translate("VariablePanel", "Value"), self)
        grid.addWidget(label, 2, 0)
        self._veval = Q.QLineEdit(self)
        self._veval.setReadOnly(True)
        self._veval.setFrame(False)
        self._veval.setObjectName("Value")

        fnt = self._veval.font()
        fnt.setBold(True)
        fnt.setItalic(True)
        self._veval.setFont(fnt)

        pal = self._veval.palette()
        pal.setColor(self._veval.backgroundRole(),
                     label.palette().color(label.backgroundRole()))
        self._veval.setPalette(pal)

        grid.addWidget(self._veval, 2, 1, 1, 2)

        grid.addWidget(Q.QLabel(translate("VariablePanel", "Comment"), self),
                       3, 0)
        self._vcomment = Q.QPlainTextEdit(self)
        self._vcomment.setObjectName("Comment")
        grid.addWidget(self._vcomment, 3, 1, 1, 2)
        grid.setRowStretch(4, 1)

        self.setFocusProxy(self._vname)

        connect(self._vname.textChanged, self._onNameChanged)
        connect(self._vexpr.textChanged, self._onExpressionChanged)
        connect(self._vcomment.textChanged, self.updateButtonStatus)
        connect(self._vins.menu().triggered, self._onMenuTriggered)

        self._reconnect()
        self._updateState()
        self._onExpressionChanged()
Exemplo n.º 15
0
    def tree_widget_custom_menu(self, pos):
        menu = Qt.QMenu(self)
        turn_off_action = Qt.QAction(Qt.QIcon(":/eye.png"), 'Turn All Off',
                                     self)
        turn_off_action.triggered.connect(self.turn_all_off)

        create_action = Qt.QAction(Qt.QIcon(':/add.png'), 'Create Layer', self)
        create_action.triggered.connect(self.create_layer)

        selected_layers = self.tree_widget.get_selected_layers()

        if selected_layers:
            clear_selection_action = Qt.QAction(Qt.QIcon(":/clear.png"),
                                                'Clear Selection', self)
            clear_selection_action.triggered.connect(
                self.tree_widget.clearSelection)

        layer_under_mouse = self.tree_widget.get_layer_under_mouse()
        suff = 's' if len(selected_layers) > 1 else ''
        if selected_layers:
            remove_action = Qt.QAction(Qt.QIcon(':/remove.png'),
                                       f'Delete selected layer{suff}', self)
            remove_action.triggered.connect(
                lambda: self.remove_layer(selected_layers))

            duplicate_action = Qt.QAction(Qt.QIcon(':/duplicate.png'),
                                          f'Duplicate selected layer{suff}',
                                          self)
            duplicate_action.triggered.connect(
                lambda: self.duplicate_layer(selected_layers))

        if len(selected_layers) > 1:
            merge_action = Qt.QAction(Qt.QIcon(":/merge.png"),
                                      "Merge selected layers", self)
            merge_action.triggered.connect(
                lambda: self.merge_layers(selected_layers))

        rename_icon = Qt.QIcon(':/rename.png')

        if layer_under_mouse:
            rename_action = Qt.QAction(rename_icon, 'Rename layer', self)
            rename_action.triggered.connect(
                lambda: self.rename_layer(layer_under_mouse))

        if len(selected_layers) > 1:
            bulk_rename = Qt.QAction(rename_icon, f'Rename selected layers',
                                     self)
            bulk_rename.triggered.connect(
                lambda: self.bulk_rename(selected_layers))

        menu.addAction(turn_off_action)

        if selected_layers:
            menu.addSeparator()
            menu.addAction(clear_selection_action)

        menu.addSeparator()
        menu.addAction(create_action)

        if selected_layers:
            menu.addAction(remove_action)
            menu.addAction(duplicate_action)

        if len(selected_layers) > 1:
            menu.addAction(merge_action)

        menu.addSeparator()

        if layer_under_mouse:
            menu.addAction(rename_action)
        if len(selected_layers) > 1:
            menu.addAction(bulk_rename)

        menu.popup(self.tree_widget.mapToGlobal(pos))