def set_data(self, current, items):
        """Populates model.

        Args:
            current (str)
            items (Sequence(str))
        """
        item_list = [QStandardItem(current)]
        for item in items:
            qitem = QStandardItem(item)
            item_list.append(qitem)
            qitem.setFlags(~Qt.ItemIsEditable)
        self.model.invisibleRootItem().appendRows(item_list)
        self.first_index = self.proxy_model.mapFromSource(
            self.model.index(0, 0))
示例#2
0
 def reload(self):
     self.model.clear()
     self.item_selected.emit(None)
     icon = QIcon.fromTheme("audio-x-generic")
     for item in self.items:
         s_item = QStandardItem(icon, item.name)
         s_item.setDragEnabled(True)
         s_item.setDropEnabled(False)
         s_item.setData(item)
         self.model.appendRow([s_item])
     if self.items_incomplete:
         s_item = QStandardItem("…and more")
         s_item.setDragEnabled(False)
         s_item.setDropEnabled(False)
         self.model.appendRow([s_item])
示例#3
0
    def on_parseThread_finished(self, data):
        data = json.loads(data)
        rows = len(data.get('streams'))
        streams_keys = list(data.get('streams').keys())
        streams_values = list(data.get('streams').values())

        self.format_list += streams_keys
        self.format_list.sort()

        # 添加一个隐藏列,用于存储最初的行号
        self.model.setHorizontalHeaderItem(len(self.table_titles),
                                           QStandardItem('origin_row_id'))
        self.parsedTableView.setColumnHidden(len(self.table_titles), True)

        for row in range(rows):
            for col, title in enumerate(self.table_titles):
                if title == self.tr('标题'):
                    item = QStandardItem(data.get('title'))
                    item.setCheckState(Qt.Unchecked)
                    item.setCheckable(True)
                    item.setToolTip(data.get('title'))
                elif title == self.tr('站点'):
                    item = QStandardItem(data.get('site'))
                    item.setTextAlignment(Qt.AlignCenter)
                elif title == self.tr('清晰度'):
                    item = QStandardItem(streams_values[row].get('quality'))
                    item.setTextAlignment(Qt.AlignCenter)
                elif title == self.tr('媒体格式'):
                    item = QStandardItem(streams_keys[row])
                    item.setTextAlignment(Qt.AlignCenter)
                elif title == self.tr('格式'):
                    item = QStandardItem(streams_values[row].get('container'))
                    item.setTextAlignment(Qt.AlignCenter)
                    self.container_list.append(item.text())
                elif title == self.tr('大小'):
                    item = QStandardItem(str(streams_values[row].get('size')))
                    # 通过setData方法解决排序错误问题 (使用tableWidget时存在此问题)
                    # item.setData(Qt.EditRole, streams_values[row].get('size'))
                elif title == self.tr('列表标题'):
                    item = QStandardItem(streams_keys[row])
                self.model.setItem(row, col, item)

            # 行号赋值
            self.model.setItem(row, len(self.table_titles),
                               QStandardItem(str(row)))

        self.formatComboBox.addItems(set(self.format_list))
        self.containerComboBox.addItems(set(self.container_list))

        self.parsedTableView.horizontalHeader().setSortIndicatorShown(True)
        self.parsedTableView.sortByColumn(self.size_index, Qt.DescendingOrder)
        self.statusBar().showMessage(self.tr(f'解析完成'))
        logger.info(f'parse finished: {self.linkValueLabel.text()}')
示例#4
0
    def _setModelsFromProjectDict(self):
        """
        Create the model needed for GUI representation of structure.
        """

        cif_dict = self._calculator_interface.asCifDict()
        # Important - clear the model, so subsequent calls deal with empty
        self._model.clear()

        self._model.blockSignals(True)
        self._headers_model.blockSignals(True)

        phases_cif = cif_dict['phases']
        exp_cif = cif_dict['experiments']
        calc_cif = cif_dict['calculations']

        # Currently only one phase/experiment, so assigning
        # explicitly. With more components, we need a proper loop
        # as shown below
        item = QStandardItem()
        item.setData(phases_cif, self._phase_role)
        item.setData(exp_cif, self._experiment_role)
        item.setData(calc_cif, self._calculation_role)
        self._model.appendRow(item)

        #for data_str cif_dict.items():
        #    item = QStandardItem()
        #    item.setData(phases_cif, <self._some_role>)
        #    self._model.appendRow(item)

        self._model.blockSignals(False)
        self._headers_model.blockSignals(False)
        self._model.layoutChanged.emit()
        self._headers_model.layoutChanged.emit()
示例#5
0
    def add_init_data(self, data, data_length=3):
        '''添加数据到 table_view

        @参数说明: 
            data :要显示的数据
            data_length : 设置单元格的宽度

        @返回值: 
            无

        @注意: 
            无
        '''   
        self._data = data

        # 设计单元格宽度
        if (data_length == 2):
            self.table_view.horizontalHeader().setDefaultSectionSize(50)
        else:
            self.table_view.horizontalHeader().setDefaultSectionSize(120)

        for i in range(self.table_col):
            for j in range(self.table_row): 
                temp_date = QStandardItem(str(self._data[i, j]))
                # 设置单元格居中
                temp_date.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
                self.item_model.setItem(i, j, temp_date)    # 在单元格中添加数据
示例#6
0
    def update_task_list_view(self):
        self.model.clear()
        current_date_tasks = list(
            filter(
                lambda task: task.start_at.date() <= self.date_now and task.
                end_at.date() >= self.date_now, self.active_task_list))

        self.busy = len(current_date_tasks)

        for task in current_date_tasks:
            topic = task.topic
            item = QStandardItem(topic)
            item.setData(task)
            item.setCheckable(True)
            item.setData(task)
            item.setEditable(False)
            self.model.appendRow(item)

        if len(current_date_tasks) == 0:
            self.graphic.setText("")
            self.graphic.setPixmap(QtGui.QPixmap("../Assets/no_task.png"))
            self.graphic.setScaledContents(True)
            self.graphic.setGeometry(QtCore.QRect(260, 195, 252, 211))
            self.label_notask.setGeometry(QtCore.QRect(280, 395, 221, 51))
            font = QtGui.QFont()
            font.setFamily("Roboto Light")
            font.setPointSize(20)
            self.label_notask.setFont(font)
            self.label_notask.setText("You are free on this day !")

        else:
            self.graphic.clear()
            self.label_notask.clear()
    def testRefCount(self):
        model = QStandardItemModel(5, 5)
        items = []
        for r in range(5):
            row = []
            for c in range(5):
                row.append(QStandardItem("%d,%d" % (r, c)))
                self.assertEqual(sys.getrefcount(row[c]), 2)

            model.insertRow(r, row)

            for c in range(5):
                ref_after = sys.getrefcount(row[c])
                # check if the ref count was incremented after insertRow
                self.assertEqual(ref_after, 3)

            items.append(row)
            row = None

        for r in range(3):
            my_row = model.takeRow(0)
            my_row = None
            for c in range(5):
                # only rest 1 reference
                self.assertEqual(sys.getrefcount(items[r][c]), 2)

        my_i = model.item(0, 0)
        # ref(my_i) + parent_ref + items list ref
        self.assertEqual(sys.getrefcount(my_i), 4)

        model.clear()
        # ref(my_i)
        self.assertEqual(sys.getrefcount(my_i), 3)
 def populate_list(self, names):
     for name, can_update in names:
         item = QStandardItem(name)
         self._model.appendRow(item)
         widget = self._create_plugin_widget(name, can_update)
         index = self._model.indexFromItem(item)
         self._list_view.setIndexWidget(index, widget)
示例#9
0
文件: source.py 项目: rpanerai/Eddy
    def _CreateItemFromData(data):
        if isinstance(data, WebSource):
            item = QStandardItem(QIcon(data.icon), data.name)
            item.setFlags(SourceModel.WEB_SOURCE_FLAGS)
        elif isinstance(data, LocalSource):
            item = QStandardItem(QIcon(icons.DATABASE), data.name)
            item.setFlags(SourceModel.LOCAL_SOURCE_FLAGS)
        elif isinstance(data, Tag):
            item = QStandardItem(QIcon(icons.TAG), data.name)
            item.setFlags(SourceModel.TAG_FLAGS)
        elif isinstance(data, TagBuilder):
            item = QStandardItem(QIcon(icons.TAG), "")
            item.setFlags(SourceModel.TAG_BUILDER_FLAGS)

        item.setData(data)
        return item
示例#10
0
    def append_checkbox(self, item, model, checkdStatus):
        item = QStandardItem(item)
        item.setCheckState(checkdStatus)
        item.setCheckable(True)
        #model.appendRow(item)

        return item
示例#11
0
    def populateModel_recurseChildren(self, parentItem, widget):
        # Construct the item data and append the row
        classNameStr = str(widget.__class__).split("'")[1]
        classNameStr = classNameStr.replace('PySide2.', '').replace(
            'QtGui.', '').replace('QtCore.', '').replace('QtWidgets.', '')

        items = [
            QStandardItem(classNameStr),
            QStandardItem(widget.objectName()),
            QStandardItem(str(len(widget.children())))
        ]
        parentItem.appendRow(items)

        # Recurse children and perform the same action
        for childWidget in widget.children():
            self.populateModel_recurseChildren(items[0], childWidget)
示例#12
0
    def __init__(self):
        super(CollectionsHistoryTabs, self).__init__()
        self.setupUi(self)

        self.historyList.setContextMenuPolicy(Qt.CustomContextMenu)
        self.historyList.customContextMenuRequested.connect(self.historyMenu)

        self.historyModel = QStandardItemModel()
        self.historyList.setModel(self.historyModel)
        self.historyList.header().hide()
        self.historyList.expandToDepth(0)
        self.historyList.doubleClicked.connect(self.emitItem)

        self.collectionsModel = QStandardItemModel()
        default = QStandardItem("Default")
        default.setEditable(False)
        default.setIcon(self.folder_icon)
        self.collectionsModel.appendRow(default)
        self.collectionsTree.setModel(self.collectionsModel)
        self.collectionsTree.header().hide()
        self.collectionsTree.expandToDepth(0)
        self.collectionsTree.doubleClicked.connect(self.emitItem)
        self.collectionsTree.setContextMenuPolicy(Qt.CustomContextMenu)
        self.collectionsTree.customContextMenuRequested.connect(
            self.collectionsMenu)
示例#13
0
def _create_item(url, title, icon):
    result = QStandardItem(title)
    result.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
    result.setData(url, _url_role)
    if icon is not None:
        result.setIcon(icon)
    return result
 def add_single_include(self, path):
     """Add file path to Source files list."""
     dirname, file_pattern = os.path.split(path)
     # logging.debug("program path:{0}".format(self.program_path))
     # logging.debug("{0}, {1}".format(dirname, file_pattern))
     if not self.program_path:
         self.program_path = dirname
         self.ui.label_mainpath.setText(self.program_path)
         path_to_add = file_pattern
     else:
         # check if path is a descendant of main dir.
         common_prefix = os.path.commonprefix([os.path.abspath(self.program_path), os.path.abspath(path)])
         # logging.debug("common_prefix:{0}".format(common_prefix))
         if common_prefix != self.program_path:
             self.statusbar.showMessage(
                 "Source file {0}'s location is invalid " "(should be in main directory)".format(file_pattern), 5000
             )
             return False
         path_to_add = os.path.relpath(path, self.program_path)
     if self.sourcefiles_model.findItems(path_to_add):
         self.statusbar.showMessage("Source file {0} already included".format(path_to_add), 5000)
         return False
     qitem = QStandardItem(path_to_add)
     qitem.setFlags(~Qt.ItemIsEditable)
     qitem.setData(QFileIconProvider().icon(QFileInfo(path_to_add)), Qt.DecorationRole)
     self.sourcefiles_model.appendRow(qitem)
     return True
示例#15
0
    def __init__(self,  title, message, items, parent=None):
        """
        Constructor of ListerView which creates a new dialog with
        scrolled items which the user can mark
        
        Args:
            title (str): The dialog title that should appear
            message (str): The message that the user will see at the top of the dialog
            items ([str]): A list of strings that will be showns as options
        """

        super(ListerView, self).__init__(parent=parent)
        form = QFormLayout(self)
        form.addRow(QLabel(message))
        self.listView = QListView(self)
        self.listView.clicked.connect(self.mouse_click_event)
        form.addRow(self.listView)
        model = QStandardItemModel(self.listView)
        self.setWindowTitle(title)
        for item in items:
            standardItem = QStandardItem(item)
            standardItem.setCheckable(True)
            standardItem.setEditable(False)
            model.appendRow(standardItem)
        self.listView.setModel(model)
示例#16
0
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        self.setLayout(QVBoxLayout())

        tv1 = QTableView(self)
        tv2 = QTableView(self)
        model = QStandardItemModel(8, 4, self)
        proxy = SortFilterProxyModel(self)
        proxy.setSourceModel(model)
        tv1.setModel(model)
        tv2.setModel(proxy)
        self.layout().addWidget(tv1)
        self.layout().addWidget(tv2)

        for i in range(model.rowCount()):
            for j in range(model.columnCount()):
                item = QStandardItem()
                item.setData(random_word(), Qt.DisplayRole)
                model.setItem(i, j, item)

        flayout = QFormLayout()
        self.layout().addLayout(flayout)
        for i in range(model.columnCount()):
            le = QLineEdit(self)
            flayout.addRow("column: {}".format(i), le)
            le.textChanged.connect(lambda text, col=i: proxy.setFilterByColumn(
                QRegExp(text, Qt.CaseSensitive, QRegExp.FixedString), col))
示例#17
0
 def create_items(self, name, count):
     if name.startswith("/"):
         if name == "/":
             short_name = "all"
         else:
             short_name = name.rsplit("/", 1)[1]
         icon = QIcon.fromTheme("folder")
     else:
         short_name = name
         icon = QIcon.fromTheme("tag")
     item = QStandardItem(icon, short_name)
     item.setToolTip(name)
     item.setData(name)
     c_item = QStandardItem(str(count))
     c_item.setTextAlignment(Qt.AlignRight)
     return item, c_item
示例#18
0
    def __init__(self):
        super().__init__()
        self.folderModel = QStandardItemModel()
        self.setModel(self.folderModel)
        self.setFrameStyle(QFrame.NoFrame)
        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setItemDelegate(Folder())

        self.setStyleSheet(
            'FolderList { background-color: Transparent; color: rgb(190,190,190); }'
        )
        self.setAttribute(Qt.WA_TranslucentBackground)

        for idx, folder in enumerate(self.getImageFolders()):
            item = QStandardItem(folder)
            item.setData(folder.replace('imgur',
                                        '').replace('reddit_sub',
                                                    '').replace('_', ''),
                         role=Qt.DisplayRole)
            item.setData(os.path.join(ThemeManager.IMAGE_FOLDERS_PATH, folder),
                         role=Qt.UserRole)
            item.setData(folder, role=Qt.UserRole + 1)

            self.folderModel.appendRow(item)
示例#19
0
    def _setup_scan_dir_list_model(self):
        self._dirs_list_model = QStandardItemModel()
        self._dirs_list_selection_model = QItemSelectionModel(
            self._dirs_list_model)
        self._thumbs_view_model = QStandardItemModel()
        self._thumbs_selection_model = QItemSelectionModel(
            self._thumbs_view_model)

        self._dirs_list_model.setColumnCount(1)
        # self._dirs_list_model.setRowCount(len(scan_dirs))

        self._root_tree_item = self._dirs_list_model.invisibleRootItem()
        # FOLDERS item
        folder_item = QStandardItem("Folders")
        folder_item_font = QFont()
        folder_item_font.setBold(True)
        folder_item.setFont(folder_item_font)
        folder_item.setSizeHint(QSize(folder_item.sizeHint().width(), 24))
        self._root_tree_item.appendRow(folder_item)
        self._TV_FOLDERS_ITEM_MAP[0] = folder_item

        self.treeView_scandirs.setModel(self._dirs_list_model)
        self.treeView_scandirs.setSelectionModel(
            self._dirs_list_selection_model)
        # self.treeView_scandirs.setRootIsDecorated(False)

        self.listView_thumbs.setModel(self._thumbs_view_model)
        self.listView_thumbs.setSelectionModel(self._thumbs_selection_model)

        scan_dirs = self._meta_files_mgr.get_scan_dirs()
        self._populate_dirs_tree_view(0, scan_dirs)
示例#20
0
 def add_item2model(self, filename: str, model: QStandardItemModel):
     """sample listview code"""
     list_item = QStandardItem(filename)
     list_item.setCheckable(True)
     list_item.setEditable(False)
     list_item.setSelectable(False)
     model.appendRow(list_item)
示例#21
0
 def populate_reference_list(self, items):
     """List file references in QTreeView.
     If items is None or empty list, model is cleared.
     """
     self.reference_model.clear()
     self.reference_model.setHorizontalHeaderItem(
         0, QStandardItem("References"))  # Add header
     if items is not None:
         for item in items:
             qitem = QStandardItem(item)
             qitem.setFlags(~Qt.ItemIsEditable)
             qitem.setData(item, Qt.ToolTipRole)
             qitem.setData(
                 self._toolbox.style().standardIcon(QStyle.SP_FileLinkIcon),
                 Qt.DecorationRole)
             self.reference_model.appendRow(qitem)
示例#22
0
    def insertToHistory(self, response, reqObject):
        parents = self.historyModel.findItems(str(reqObject.date))
        if not parents:
            parent = QStandardItem(str(reqObject.date))
            parent.setEditable(False)
            self.historyModel.appendRow(parent)
        else:
            parent = parents.pop()

        historyItem = QStandardItem()
        historyItem.setText(reqObject.buildTextRepresentation())
        historyItem.setEditable(False)
        historyItem.setData(reqObject, Qt.UserRole)
        parent.insertRow(
            0, [historyItem
                ])  # seems like a hack inserting list here, possilby report
示例#23
0
    def change_image_grid(self, index):
        self.imageModel.clear()

        # Get dir path from the index data itself
        directory = self.dirModel.list_keys[index.row()]
        dir_path = os.path.join(self.in_directory, directory)

        previously_checked = self.dirModel.dict_studies[directory]['SELECTED']

        # Parse arrays within the directory
        image_list = [
            os.path.join(dir_path, i) for i in os.listdir(dir_path)
            if i.endswith('.bmeii')
        ]
        loaded_images = loader(image_list)

        for img_path in loaded_images:
            img_pixmap = QPixmap.fromImage(QImage(img_path))
            filename = os.path.basename(img_path).replace('.png', '')

            imageItem = QStandardItem()
            imageItem.setIcon(img_pixmap)
            imageItem.setText(filename)
            imageItem.setEditable(False)

            imageItem.setCheckable(True)
            if not pd.isnull(previously_checked):
                if filename in previously_checked:
                    imageItem.setCheckState(QtCore.Qt.CheckState.Checked)

            self.imageModel.appendRow(imageItem)
示例#24
0
 def __get_next(self, element_info, parent):
     for child in element_info.children():
         self.__generate_props_dict(child)
         child_item = QStandardItem(self.__node_name(child))
         child_item.setEditable(False)
         parent.appendRow(child_item)
         self.__get_next(child, child_item)
    def add_waypoint_row(self, row: int, flight: Flight,
                         waypoint: FlightWaypoint) -> None:
        self.model.insertRow(self.model.rowCount())

        self.model.setItem(row, 0, QWaypointItem(waypoint, row))

        altitude = meter_to_feet(waypoint.alt)
        altitude_type = "AGL" if waypoint.alt_type == "RADIO" else "MSL"
        altitude_item = QStandardItem(f"{altitude} ft {altitude_type}")
        altitude_item.setEditable(False)
        self.model.setItem(row, 1, altitude_item)

        tot = self.tot_text(flight, waypoint)
        tot_item = QStandardItem(tot)
        tot_item.setEditable(False)
        self.model.setItem(row, 2, tot_item)
示例#26
0
    def get_table_model(self, table_data: str):

        data = eval(table_data)

        n_machine = len(data)  # 机器数量
        error_number = ""  # 有问题机器编号
        table_model = QStandardItemModel()

        yellow = QColor(255, 255, 0)
        orange = QColor(255, 97, 0)
        #
        # 填充 table_model
        #
        for machine_number in range(1, n_machine + 1):
            i, j = self.get_row_col(machine_number)

            if data[machine_number][0] != 0:
                error_number += str(machine_number) + " "

            error_code_item = QStandardItem(str(data[machine_number][0]))
            error_code_item.setEditable(False)
            break_code = data[machine_number][0]
            if 0 < break_code <= 10:
                error_code_item.setBackground(QBrush(yellow))
            elif break_code == 255:
                error_code_item.setBackground(QBrush(orange))
            t0 = QStandardItem("%d号跟踪器故障代码" % (machine_number))
            t0.setEditable(False)

            table_model.setItem(i, j, t0)
            table_model.setItem(i, j + 1, error_code_item)

            t1 = QStandardItem("%d号跟踪器控制代码" % (machine_number))
            t1.setEditable(False)
            item1 = QStandardItem(str(data[machine_number][1]))
            item1.setEditable(False)

            table_model.setItem(i + 1, j, t1)
            table_model.setItem(i + 1, j + 1, item1)

            t2 = QStandardItem("%d号跟踪器锁状态" % (machine_number))
            t2.setEditable(False)
            item2 = QStandardItem(str(data[machine_number][2]))
            item2.setEditable(False)

            table_model.setItem(i + 2, j, t2)
            table_model.setItem(i + 2, j + 1, item2)

            t3 = QStandardItem("%d号跟踪器实时角度" % (machine_number))
            t3.setEditable(False)
            item3 = QStandardItem(str(data[machine_number][3]))
            item3.setEditable(False)

            table_model.setItem(i + 3, j, t3)
            table_model.setItem(i + 3, j + 1, item3)

        return table_model, error_number
示例#27
0
    def initUi(self):
        self.layout = QGridLayout()

        self.categoryList = QListView()
        self.right_layout = QStackedLayout()

        self.categoryList.setMaximumWidth(175)

        self.categoryModel = QStandardItemModel(self.categoryList)

        difficulty = QStandardItem("Difficulty")
        difficulty.setIcon(CONST.ICONS["Missile"])
        difficulty.setEditable(False)
        difficulty.setSelectable(True)

        generator = QStandardItem("Mission Generator")
        generator.setIcon(CONST.ICONS["Generator"])
        generator.setEditable(False)
        generator.setSelectable(True)

        cheat = QStandardItem("Cheat Menu")
        cheat.setIcon(CONST.ICONS["Cheat"])
        cheat.setEditable(False)
        cheat.setSelectable(True)

        self.categoryList.setIconSize(QSize(32, 32))
        self.categoryModel.appendRow(difficulty)
        self.categoryModel.appendRow(generator)
        self.categoryModel.appendRow(cheat)

        self.categoryList.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.categoryList.setModel(self.categoryModel)
        self.categoryList.selectionModel().setCurrentIndex(self.categoryList.indexAt(QPoint(1,1)), QItemSelectionModel.Select)
        self.categoryList.selectionModel().selectionChanged.connect(self.onSelectionChanged)

        self.initDifficultyLayout()
        self.initGeneratorLayout()
        self.initCheatLayout()

        self.right_layout.addWidget(self.difficultyPage)
        self.right_layout.addWidget(self.generatorPage)
        self.right_layout.addWidget(self.cheatPage)

        self.layout.addWidget(self.categoryList, 0, 0, 1, 1)
        self.layout.addLayout(self.right_layout, 0, 1, 5, 1)

        self.setLayout(self.layout)
    def LoadTable(self):
        '''
            Makes the list of tasks
            This function loads the tasks in _taskManager and lists them
        '''
        try:
            # clear the table model
            self.taskViewModel.clear()
            # get the list of tasks
            self.TaskList = self._taskManager.LoadTasks()
            # for each task
            for task in self.TaskList:
                # get the scheduled state of the task
                _str = Settings.Schedule_String if task.Scheduled else Settings.UnScheduled_String  # noqa
                # inserts new Table row
                self.taskViewModel.appendRow([
                    QStandardItem(task.Source),
                    QStandardItem(task.Target),
                    QStandardItem(_str),
                    QStandardItem(task.LastOperation)
                ])
            # names the each column label
            self.taskViewModel.setHorizontalHeaderLabels(
                Settings.Table_ColumnNames)  # noqa
            # if there is at least on task, selects the first task and
            # updates the selected task
            if len(self.TaskList) > 0:
                # set the current cell
                self.ui.tableView.setCurrentIndex(
                    self.ui.tableView.model().index(0, 1))
                # updates the UI components
                self.EnableControls(True)
                # updates the selected task
                self.SelectedTask = self.TaskList[0]

            # resize column width
            wth = [200, 200, 100, 200]
            for i in range(4):
                self.ui.tableView.setColumnWidth(i, wth[i])
            # make the last column hit the end
            self.ui.tableView.horizontalHeader().setSectionResizeMode(
                3, QHeaderView.Stretch)
            # set the text align to left
            self.ui.tableView.horizontalHeader().setDefaultAlignment(
                Qt.AlignLeft)
        except Exception as e:
            print(f"Load Table Error:{e}")
示例#29
0
    def __init__(self, model, tabWidget, parent=None):
        super(ChartWidget, self).__init__(parent)

        self.model = model
        self.tabWidget = tabWidget

        layout = QVBoxLayout(self)

        chartGroupBox = QGroupBox("General Settings")

        grid = QGridLayout(self)
        grid.addWidget(QLabel("Name"), 0, 0)
        self.nameLineEdit = QLineEdit()
        self.nameLineEdit.setText(model.text())
        self.nameLineEdit.textChanged.connect(self.updateText)

        grid.addWidget(self.nameLineEdit, 0, 1)

        self.typeComboBox = QComboBox()

        self.typeComboBox.currentIndexChanged.connect(self.changeType)

        grid.addWidget(self.typeComboBox, 1, 1)

        chartGroupBox.setLayout(grid)

        layout.addWidget(chartGroupBox)

        self.chartWidget = QWidget()
        layout.addWidget(self.chartWidget)

        # using to dynamically add and remove chart settings/preview widgets
        self.stackedWidget = QStackedWidget(self)
        layout.addWidget(self.stackedWidget)

        # layout.addStretch()
        self.setLayout(layout)

        # adding type values here is a violation of object-oriented design
        # a more polymorphic implementation is desirable
        chartTypesLst = [
            ('Bar Chart', "icons/chart-types/bar-chart.svg", BarChartModel),
            ('Box Plot', "icons/chart-types/box-plot.svg", None),
            ('Candlestick Chart', "icons/chart-types/candlestick-chart.svg",
             None),
            ('Line Chart', "icons/chart-types/line-chart.svg", LineChartModel),
            ('Pie Chart', "icons/chart-types/pie-chart.svg", None),
            ('Scatter Chart', "icons/chart-types/scatter-chart.svg", None),
            ('Spline Chart', "icons/chart-types/spline-chart.svg", None)
        ]

        s = QStandardItemModel()
        for ct in chartTypesLst:
            item = QStandardItem(ct[0])
            item.setIcon(QIcon(ct[1]))
            item.setData(ct[2])

            s.appendRow(item)
        self.typeComboBox.setModel(s)
示例#30
0
 def _updateModel(self) -> None:
     """
     Update the controller combobox model.
     """
     self.model.clear()
     for ctrlr in self._controllers['list']:
         item = QStandardItem(ctrlr.getName())
         self.model.appendRow(item)