Exemplo n.º 1
0
    def _slot_context_menu(self, point):
        context_menu = MMenu(parent=self)
        logical_column = self.logicalIndexAt(point)
        model = utils.real_model(self.model())
        if logical_column >= 0 and model.header_list[logical_column].get('checkable', False):
            action_select_all = context_menu.addAction(self.tr('Select All'))
            action_select_none = context_menu.addAction(self.tr('Select None'))
            action_select_invert = context_menu.addAction(self.tr('Select Invert'))
            self.connect(action_select_all, SIGNAL('triggered()'),
                         functools.partial(self._slot_set_select, logical_column, Qt.Checked))
            self.connect(action_select_none, SIGNAL('triggered()'),
                         functools.partial(self._slot_set_select, logical_column, Qt.Unchecked))
            self.connect(action_select_invert, SIGNAL('triggered()'),
                         functools.partial(self._slot_set_select, logical_column, None))
            context_menu.addSeparator()

        fit_action = context_menu.addAction(self.tr('Fit Size'))
        fit_action.triggered.connect(functools.partial(self._slot_set_resize_mode, True))
        context_menu.addSeparator()
        for column in range(self.count()):
            action = context_menu.addAction(model.headerData(column, Qt.Horizontal, Qt.DisplayRole))
            action.setCheckable(True)
            action.setChecked(not self.isSectionHidden(column))
            action.toggled.connect(functools.partial(self._slot_set_section_visible, column))
        context_menu.exec_(QCursor.pos() + QPoint(10, 10))
Exemplo n.º 2
0
 def paintEvent(self, event):
     """Override paintEvent when there is no data to show, draw the preset picture and text."""
     model = utils.real_model(self.model())
     if model is None:
         draw_empty_content(self.viewport(), self._no_data_text, self._no_date_image)
     elif isinstance(model, MTableModel):
         if not model.get_data_list():
             draw_empty_content(self.viewport(), self._no_data_text, self._no_date_image)
     return super(MListView, self).paintEvent(event)
Exemplo n.º 3
0
def mouse_move_event(self, event):
    index = self.indexAt(event.pos())
    real_index = utils.real_index(index)
    if self.header_list[real_index.column()].get('is_link', False):
        key_name = self.header_list[real_index.column()]['attr']
        data_obj = utils.real_model(self.model()).data_list[real_index.row()]
        value = utils.get_obj_value(data_obj, key_name)
        if value:
            self.setCursor(Qt.PointingHandCursor)
            return
    self.setCursor(Qt.ArrowCursor)
Exemplo n.º 4
0
    def createEditor(self, parent, option, index):
        self.parent_widget = parent
        self.editor = MMenu(exclusive=self.exclusive, parent=parent)
        self.editor.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)
        model = utils.real_model(index)
        real_index = utils.real_index(index)
        data_obj = real_index.internalPointer()
        attr = '{}_list'.format(model.header_list[real_index.column()].get('key'))

        self.editor.set_data(utils.get_obj_value(data_obj, attr, []))
        self.editor.sig_value_changed.connect(self._slot_finish_edit)
        return self.editor
Exemplo n.º 5
0
 def _slot_set_select(self, column, state):
     current_model = self.model()
     source_model = utils.real_model(current_model)
     source_model.beginResetModel()
     attr = '{}_checked'.format(source_model.header_list[column].get('key'))
     for row in range(current_model.rowCount()):
         real_index = utils.real_index(current_model.index(row, column))
         data_obj = real_index.internalPointer()
         if state is None:
             old_state = utils.get_obj_value(data_obj, attr)
             utils.set_obj_value(data_obj, attr, Qt.Unchecked if old_state == Qt.Checked else Qt.Checked)
         else:
             utils.set_obj_value(data_obj, attr, state)
     source_model.endResetModel()
     source_model.emit(SIGNAL('dataChanged(QModelIndex, QModelIndex)'), None, None)
Exemplo n.º 6
0
def test_with_standard_item_model():
    """Test when source model is QStandardItemModel"""
    source_model = QtGui.QStandardItemModel(2, 2)
    sort_filter_model_1 = QtCore.QSortFilterProxyModel()
    sort_filter_model_1.setSourceModel(source_model)
    sort_filter_model_2 = QtCore.QSortFilterProxyModel()
    sort_filter_model_2.setSourceModel(source_model)
    index_1 = source_model.index(0, 0)
    index_2 = source_model.index(1, 1)
    index_3 = sort_filter_model_1.index(0, 1)
    index_4 = sort_filter_model_1.index(1, 1)
    index_5 = sort_filter_model_2.index(1, 0)
    index_6 = sort_filter_model_2.index(1, 1)
    assert utils.real_model(source_model) is source_model
    assert utils.real_model(sort_filter_model_1) is source_model
    assert utils.real_model(sort_filter_model_2) is source_model
    assert utils.real_model(index_1) is source_model
    assert utils.real_model(index_2) is source_model
    assert utils.real_model(index_3) is source_model
    assert utils.real_model(index_4) is source_model
    assert utils.real_model(index_5) is source_model
    assert utils.real_model(index_6) is source_model
Exemplo n.º 7
0
def test_with_string_list_model():
    """Test when source model is QStringListModel"""
    source_model = QtCore.QStringListModel(["apple", "pear", "orange"])
    sort_filter_model_1 = QtCore.QSortFilterProxyModel()
    sort_filter_model_1.setSourceModel(source_model)
    sort_filter_model_2 = QtCore.QSortFilterProxyModel()
    sort_filter_model_2.setSourceModel(source_model)
    index_1 = source_model.index(0, 0)
    index_2 = source_model.index(1, 0)
    index_3 = sort_filter_model_1.index(0, 0)
    index_4 = sort_filter_model_1.index(1, 0)
    index_5 = sort_filter_model_2.index(1, 0)
    index_6 = sort_filter_model_2.index(1, 0)
    assert utils.real_model(source_model) is source_model
    assert utils.real_model(sort_filter_model_1) is source_model
    assert utils.real_model(sort_filter_model_2) is source_model
    assert utils.real_model(index_1) is source_model
    assert utils.real_model(index_2) is source_model
    assert utils.real_model(index_3) is source_model
    assert utils.real_model(index_4) is source_model
    assert utils.real_model(index_5) is source_model
    assert utils.real_model(index_6) is source_model
Exemplo n.º 8
0
def mouse_release_event(self, event):
    if event.button() != Qt.LeftButton:
        QTableView.mouseReleaseEvent(self, event)
        return
    index = self.indexAt(event.pos())
    real_index = utils.real_index(index)
    if self.headerList[real_index.column()].get('is_link', False):
        key_name = self.header_list[real_index.column()]['attr']
        data_obj = utils.real_model(self.model()).data_list[real_index.row()]
        value = utils.get_obj_value(data_obj, key_name)
        if value:
            if isinstance(value, dict):
                self.sig_link_clicked.emit(value)
            elif isinstance(value, six.string_types):
                self.sig_link_clicked.emit(data_obj)
            elif isinstance(value, list):
                for i in value:
                    self.sig_link_clicked.emit(i)