class MeasuredDataModel(QObject):
    def __init__(self, calculator, parent=None):
        super().__init__(parent)
        self._project_dict = calculator.asDict()
        self._headers_model = QStandardItemModel()
        self._data_model = QStandardItemModel()
        self._setModelsFromProjectDict()

    def _setModelsFromProjectDict(self):
        """Create the model needed for GUI calculated data table and chart."""
        self._data_model.setColumnCount(0)  # faster than clear()
        self._headers_model.setRowCount(0)  # faster than clear()
        for experiment_id, experiment_dict in self._project_dict[
                'experiments'].items():
            headers = []
            for data_id, data_list in experiment_dict['measured'].items(
            ):  # or measured_pattern as calculated_pattern in another class?
                item = QStandardItem()
                item.setData(data_id, Qt.DisplayRole)
                headers.append(item)
                column = []
                for value in data_list:
                    item = QStandardItem()
                    item.setData(value, Qt.DisplayRole)
                    column.append(item)
                self._data_model.appendColumn(column)
            self._headers_model.appendRow(headers)

    def asHeadersModel(self):
        """Return headers model."""
        return self._headers_model

    def asDataModel(self):
        """Return data model."""
        return self._data_model
예제 #2
0
class QCampaignList(QListView):
    def __init__(self):
        super(QCampaignList, self).__init__()
        self.model = QStandardItemModel(self)
        self.setModel(self.model)
        self.setMinimumWidth(250)
        self.setMinimumHeight(350)
        self.campaigns = []
        self.setSelectionBehavior(QAbstractItemView.SelectItems)
        self.setup_content()

    def setup_content(self):
        for i, campaign in enumerate(CAMPAIGNS):
            self.campaigns.append(campaign)
            item = QCampaignItem(*campaign)
            self.model.appendRow(item)
        self.setSelectedCampaign(0)
        self.repaint()

    def setSelectedCampaign(self, row):
        self.selectionModel().clearSelection()
        index = self.model.index(row, 0)
        if not index.isValid():
            index = self.model.index(0, 0)
        self.selectionModel().setCurrentIndex(index,
                                              QItemSelectionModel.Select)
        self.repaint()

    def clear_layout(self):
        self.model.removeRows(0, self.model.rowCount())
예제 #3
0
class QCampaignList(QListView):
    CampaignRole = Qt.UserRole

    def __init__(self, campaigns: list[Campaign],
                 show_incompatible: bool) -> None:
        super(QCampaignList, self).__init__()
        self.campaign_model = QStandardItemModel(self)
        self.setModel(self.campaign_model)
        self.setMinimumWidth(250)
        self.setMinimumHeight(350)
        self.campaigns = campaigns
        self.setSelectionBehavior(QAbstractItemView.SelectItems)
        self.setup_content(show_incompatible)

    @property
    def selected_campaign(self) -> Campaign:
        return self.currentIndex().data(QCampaignList.CampaignRole)

    def setup_content(self, show_incompatible: bool) -> None:
        self.selectionModel().blockSignals(True)
        try:
            self.campaign_model.clear()
            for campaign in self.campaigns:
                if show_incompatible or campaign.is_compatible:
                    item = QCampaignItem(campaign)
                    self.campaign_model.appendRow(item)
        finally:
            self.selectionModel().blockSignals(False)

        self.selectionModel().setCurrentIndex(
            self.campaign_model.index(0, 0, QModelIndex()),
            QItemSelectionModel.Select)
예제 #4
0
class QInfoList(QListView):
    def __init__(self, game: Game):
        super(QInfoList, self).__init__()
        self.model = QStandardItemModel(self)
        self.setModel(self.model)
        self.game = game
        self.update_list()

        self.selectionModel().setCurrentIndex(self.indexAt(QPoint(1, 1)),
                                              QItemSelectionModel.Select)
        self.selectionModel().selectionChanged.connect(
            self.on_selected_info_changed)

    def on_selected_info_changed(self):
        index = self.selectionModel().currentIndex().row()

    def update_list(self):
        self.model.clear()
        if self.game is not None:
            for i, info in enumerate(reversed(self.game.informations)):
                self.model.appendRow(QInfoItem(info))
            self.selectionModel().setCurrentIndex(self.indexAt(QPoint(1, 1)),
                                                  QItemSelectionModel.Select)

    def setGame(self, game):
        self.game = game
        self.update_list()
예제 #5
0
class FileListWidget(QWidget):
    def __init__(self) -> None:
        QWidget.__init__(self)

        # self.index stores the index of the latest item which is clicked
        self.index = None

        self.model = QStandardItemModel()

        file_view = QListView()
        file_view.setModel(self.model)
        file_view.setEditTriggers(QAbstractItemView.NoEditTriggers)
        file_view.clicked.connect(self.onClicked)
        file_view.doubleClicked.connect(self.onDoubleClicked)

        open_file_button = QPushButton('Open')
        open_file_button.clicked.connect(self.onOpenFile)

        preview_file_button = QPushButton('Preview')
        preview_file_button.clicked.connect(self.onPreviewFile)

        layout = QGridLayout()
        layout.addWidget(file_view, 0, 0, 1, 2)
        layout.addWidget(open_file_button, 1, 0, 1, 1)
        layout.addWidget(preview_file_button, 1, 1, 1, 1)
        layout.setMargin(0)
        self.setLayout(layout)

    def clear(self):
        self.model.clear()

    def appendRow(self, item: QStandardItem):
        self.model.appendRow(item)

    def onDoubleClicked(self, index: QModelIndex):
        # Update self.index and open the file in browser
        self.index = index
        item = self.model.itemFromIndex(self.index)
        url = item.data(-1)
        QDesktopServices.openUrl(url)

    def onClicked(self, index: QModelIndex):
        # Update self.index
        self.index = index

    def onOpenFile(self):
        # Open file in browser
        if self.index is not None:
            item = self.model.itemFromIndex(self.index)
            url = item.data(-1)
            QDesktopServices.openUrl(url)

    def onPreviewFile(self):
        # User Office 365 Api to preview word/powerpoint/excel documents in browser
        if self.index is not None:
            item = self.model.itemFromIndex(self.index)
            url = 'http://view.officeapps.live.com/op/view.aspx?src=' + item.data(
                -1)
            print(url)
            QDesktopServices.openUrl(url)
    def setTarget(self, target):

        self.setTitle(target.name)
        self.strike_target_infos = target
        model = QStandardItemModel()
        self.listView.setSelectionMode(QAbstractItemView.NoSelection)

        if len(self.strike_target_infos.units) > 0:
            dic = {}
            for u in self.strike_target_infos.units:
                if u.type in dic.keys():
                    dic[u.type] = dic[u.type] + 1
                else:
                    dic[u.type] = 1
            for k, v in dic.items():
                model.appendRow(QStandardItem(k + " x " + str(v)))
                print(k + " x " + str(v))
        else:
            dic = {}
            for b in self.strike_target_infos.buildings:
                id = b.dcs_identifier
                if b.is_dead:
                    id = id + "[Destroyed]"
                if id in dic.keys():
                    dic[id] = dic[id] + 1
                else:
                    dic[id] = 1
            for k, v in dic.items():
                model.appendRow(QStandardItem(k + " x " + str(v)))
                print(k + " x " + str(v))

        self.listView.setModel(model)
예제 #7
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)
예제 #8
0
class MainWindow(QMainWindow, Ui_MainWindow):
    """Main application window for Qud Blueprint Explorer."""
    def __init__(self, app: QApplication, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.app = app
        self.setupUi(self)
        icon = QIcon("spray_bottle.png")
        self.setWindowIcon(icon)
        self.qud_object_model = QStandardItemModel()
        # We only need to add Object to the model, since all other Objects are loaded as children:
        self.qud_object_model.appendRow(
            self.init_qud_object(self.qud_object_model, qud_object_root))
        self.treeView.setModel(self.qud_object_model)
        self.treeView.clicked[QModelIndex].connect(self.tree_item_clicked)

    def init_qud_object(self, model: QStandardItemModel,
                        qud_object: QudObject):
        item = QStandardItem(qud_object.name)
        if not qud_object.is_leaf:
            for child in qud_object.children:
                item.appendRow(self.init_qud_object(model, child))
        if qud_object.is_specified('tag_BaseObject'):
            item.setSelectable(False)
        item.setData(qud_object)
        return item

    def tree_item_clicked(self, index):
        item = self.qud_object_model.itemFromIndex(index)
        qud_object = item.data()
        text = pprint.pformat(qud_object.attributes)
        self.plainTextEdit.setPlainText(text)
예제 #9
0
 def set_data(self, object_icons, object_class_names, object_names,
              object_names_dict):
     for i, object_class_name in enumerate(object_class_names):
         combo = QComboBox(self)
         model = QStandardItemModel()
         icon = object_icons[i]
         qitem = QStandardItem(icon, object_class_name)
         qitem.setFlags(~Qt.ItemIsSelectable)
         model.appendRow(qitem)
         all_object_names = object_names_dict[object_class_name]
         for object_name in all_object_names:
             qitem = QStandardItem(object_name)
             model.appendRow(qitem)
         combo.setModel(model)
         combo.insertSeparator(1)
         combo.activated.connect(
             lambda index, i=i: self.remove_missing_dimension(i))
         self.layout().addWidget(combo)
         self.combos.append(combo)
         try:
             object_name = object_names[i]
         except IndexError:
             self.missing_dimensions.add(i)
             continue
         if object_name:
             combo.setCurrentText(object_name)
         else:
             self.missing_dimensions.add(i)
예제 #10
0
    def model(self) -> QStandardItemModel:
        items: List[QTreeWidgetItem] = \
            self.findItems('*', Qt.MatchWrap | Qt.MatchWildcard | Qt.MatchRecursive)
        model = QStandardItemModel()

        def standardItem(w: QTreeWidgetItem) -> QStandardItem:
            s = QStandardItem()
            s.setData(w.data(0, Qt.DisplayRole), Qt.DisplayRole)
            s.setData(w.data(1, Qt.UserRole), Qt.UserRole)
            s.setData(w.data(0, Qt.ToolTipRole), Qt.ToolTipRole)
            return s

        def filterItems(item: QTreeWidgetItem) -> bool:
            op_class: type = item.data(1, Qt.UserRole)
            keep: bool = bool(item.parent())
            if keep and issubclass(op_class, GraphOperation):
                keep &= op_class.minInputNumber() == op_class.maxInputNumber() == 1 \
                        and op_class.minOutputNumber() == 1
            else:
                keep &= item.isHidden()
            return keep

        items = list(map(standardItem, filter(filterItems, items)))
        for i in items:
            model.appendRow(i)
        return model
예제 #11
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)
예제 #12
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)
예제 #13
0
 def setTarget(self, target: SEADTargetInfo):
     self.setTitle(target.name)
     self.sead_target_infos = target
     radar_list_model = QStandardItemModel()
     self.radar_list.setSelectionMode(QAbstractItemView.NoSelection)
     for r in self.sead_target_infos.radars:
         radar_list_model.appendRow(QStandardItem(r.type))
     self.radar_list.setModel(radar_list_model)
예제 #14
0
    def read(self, index):
        putanja = self.dock.model.filePath(index)
        if os.path.isdir(putanja):
            return

        ista_putanja = False
        for i in range(len(self.lista_putanja)):
            if putanja == self.lista_putanja[i]:
                ista_putanja = True
                return
        if not ista_putanja:
            self.lista_putanja.append(putanja)
            if putanja.find(".sql") != -1:
                self.connection = mysql.connector.connect(user="******", password="******", host="127.0.0.1", database="projekat")
                self.csor = self.connection.cursor()
                putanja = "podaci\metaPodaci\projekat_meta_podaci.csv"
                meta_podaci = citanje_meta_podataka(putanja, True)
                self.imena_tabela = meta_podaci[4].split(",")

                self.treeView = QTreeView()
                self.treeView.setContextMenuPolicy(Qt.CustomContextMenu)
                self.treeView.customContextMenuRequested.connect(self.dugme_baza)
                
                model = QStandardItemModel(parent=self.dock.tree.sub_layout)
                item = QStandardItem("zatvori")
                item.setEditable(False)
                model.appendRow(item)
                for text in self.imena_tabela:
                    item = QStandardItem(text)
                    item.setEditable(False)
                    model.appendRow(item)
                
                self.treeView.setModel(model)
                self.treeView.clicked.connect(self.dugme_baza)
                self.treeView.PositionAtBottom

                si = self.dock.tree.sub_layout.sizeHint()
                si.setWidth(self.dock.width())
                si.setHeight(200)
                self.treeView.setFixedSize(si.width(), si.height())

                self.treeView.setHeaderHidden(True)
                self.dock.tree.sub_layout.addWidget(self.treeView)
                self.dock.tree.sub_layout.setAlignment(self.treeView, QtCore.Qt.AlignBottom)
                return

            tab = Tab(putanja, parent=self.central_widget)
            tab.pocetna_strana = self

            if putanja != "":
                tab.read()
            else:
                tab.read(putanja)
            tab.btn_down.clicked.connect(self.otvori_tabelu_dete)
            tab.btn_up.clicked.connect(self.otvori_tabelu_roditelj)
            tab.naziv = tab.meta_podaci[0]
            self.central_widget.addTab(tab, tab.naziv)
            self.central_widget.setCurrentIndex(self.central_widget.currentIndex()+1)
예제 #15
0
class TableViewAllStock(QTableView):
    def __init__(self, parent=None):
        super(TableViewAllStock, self).__init__(parent)
        # self.mouseDoubleClickEvent()
        self.doubleClicked.connect(self.slotDoubleClicked)
        self.creatUI()
        self.initData()

    def creatUI(self):
        self.model = QStandardItemModel()
        self.setModel(self.model)
        self.verticalHeader().setSectionResizeMode(QHeaderView.Fixed)
        self.verticalHeader().setDefaultSectionSize(8)
        self.verticalHeader().hide()
        self.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.setEditTriggers(QTableView.NoEditTriggers)
        self.setShowGrid(True)

        arr = ["代码", "名称", "日期", "最新价", "涨跌幅", "涨跌额", "成交量(手)", "成交额", "振幅", "最高", "最低", "今开", "换手率"]
        self.model.setColumnCount(len(arr))
        for i in range(len(arr)):
            self.model.setHeaderData(i, Qt.Horizontal, arr[i])

    def Item(self, var):
        item = QStandardItem(str(var))
        item.setTextAlignment(Qt.AlignVCenter|Qt.AlignHCenter);
        return item

    def initData(self):
        kline = Kline()
        #kline.setYear(2021)
        res = kline.getLatestKlineData()
        for row in res:
            items = []
            items.append(self.Item(row['code']))
            items.append(self.Item(row['SEC_NAME']))
            items.append(self.Item(row['date']))
            items.append(self.Item(row['close']))
            items.append(self.Item(str(row['p_change'])+'%'))
            items.append(self.Item(row['price_change']))
            items.append(self.Item(row['amount']))
            items.append(self.Item(row['turnover']))

            items.append(self.Item(str(row['amplitude'])+'%'))
            items.append(self.Item(row['high']))
            items.append(self.Item(row['low']))
            items.append(self.Item(row['open']))
            items.append(self.Item(str(row['exchange'])+'%'))

            self.model.appendRow(items)

    # QModelIndex index
    def slotDoubleClicked(self, index):
        code = self.model.index(index.row(), 0).data();
        name = self.model.index(index.row(), 1).data();
        d = KlineWidget(self)
        d.setWindowTitle("%s(%s)"%(code, name))
        d.exec()
예제 #16
0
파일: gui.py 프로젝트: rokserak/contractDB
    def fill_list_view(self):
        values = c.get_all()
        model = QStandardItemModel()
        self.ui.listView.setModel(model)

        for i, number, text in values:
            line = "{}: {}, {}".format(i, number, text)
            item = QStandardItem(line)
            model.appendRow(item)
예제 #17
0
class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        #self.setStyleSheet(GREEN)
        self.layout = QVBoxLayout(self)
        self.settings_dict = get_settings()
        self.options_list = get_options()

        self.init_ui()

    def init_ui(self):
        self.button = PButton("Generate...")
        #settings = get_conan_config() # should be a tree?
        self.recipeBox = RecipeBox("HPS")
        self.settings = SettingsBox("Settings")
        self.layout.addWidget(self.recipeBox)
        self.options = OptionsBox("Options")
        self.deps = DepsBox("Dependencies")
        self.recipeBox.layout.addWidget(self.settings)
        self.recipeBox.layout.addWidget(self.deps)
        self.recipeBox.layout.addWidget(self.options)

        for k, v in self.settings_dict.items():
            self.settings.layout.addWidget(QLabel("%s : %s" % (k, v)))

        option_list_view = QListView()
        self.options_model = QStandardItemModel(option_list_view)
        for item in self.options_list:
            #TODO: Clean this up and get it out of ui init before it gets out of hand
            opt = item.split(":")
            v = opt.pop().strip()
            k = ":".join(opt)
            self.individual_option = QStandardItem(k)
            self.individual_option.setCheckable(True)
            self.individual_option.setEditable(False)
            if v == "True":
                self.individual_option.setCheckState(Qt.Checked)
            self.options_model.appendRow(self.individual_option)
        option_list_view.setModel(self.options_model)
        option_list_view.setAlternatingRowColors(True)
        self.options.layout.addWidget(option_list_view)

        self.layout.addWidget(self.button)
        self.setWindowTitle("PynCon")
        self.button.clicked.connect(self.button_click)
        self.show()

    def button_click(self):
        self.options.layout.addWidget(QLabel("poop"))
        for index in range(self.options_model.rowCount()):
            item = self.options_model.item(index)
            if item.isCheckable() and item.checkState() == Qt.Checked:
                USER_OPTIONS.update({item.text(): "True"})
            else:
                USER_OPTIONS.update({item.text(): "False"})

        conan_command(USER_OPTIONS)
예제 #18
0
def add_prototype(window, parent_item: QtGui.QStandardItemModel, prot_name,
                  prot_class, parent_name):
    prototype_name = QtGui.QStandardItem(QtGui.QIcon(window.gearIconLight),
                                         prot_name)
    prototype_name.setEditable(False)
    prototype_class = QtGui.QStandardItem(prot_class)
    prototype_class.setEditable(False)
    prototype_parent = QtGui.QStandardItem(parent_name)
    prototype_parent.setEditable(False)
    parent_item.appendRow([prototype_name, prototype_class, prototype_parent])
예제 #19
0
class UrlCompleter(QCompleter):
    def __init__(self, parent=None):
        super(UrlCompleter, self).__init__(parent)
        self.model = QStandardItemModel()
        self.setModel(self.model)
        self.setCompletionRole(Qt.EditRole)
        self.setCaseSensitivity(Qt.CaseInsensitive)

    def addItem(self, reqObject):
        self.model.appendRow(QStandardItem(reqObject.url))
        self.model.appendRow(QStandardItem(reqObject.buildUrl()))
예제 #20
0
    def fillListView(self, listView, category):
        items = self.graphManager.graphCategoryToNamesMap.get(category)
        if items == None:
            return

        model = QStandardItemModel()
        listView.setModel(model)

        for item in items:
            sItem = QStandardItem(item)
            model.appendRow(sItem)
예제 #21
0
class ListDialogView(QDialog):
    """Property Dialog View"""
    hover_index_changed = Signal(QModelIndex)

    def __init__(self, dialog_model, dialog_controller):
        settings = Qt.Window | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
        super(ListDialogView, self).__init__(None, settings)
        self.setAttribute(Qt.WA_TranslucentBackground)

        self._model = dialog_model
        self._dialog_ctrl = dialog_controller
        self._ui = Ui_ListDialog()
        self._ui.setupUi(self)

        delete_button_delegate = DeleteButtonDelegate(self)
        self._commodity_model = QStandardItemModel(0, 2, self._ui.commodity_list)
        for commodity in self._model:
            self._commodity_model.appendRow([QStandardItem(str(commodity)), QStandardItem()])

        """connect widgets to controller"""
        self._ui.button_add.clicked.connect(self.add_list_item)
        self._ui.commodity_list.clicked.connect(self.remove_list_item)
        self._ui.commodity_list.hover_index_changed.connect(delete_button_delegate.on_hover_index_changed)
        self.accepted.connect(self.on_dialog_accepted)
        self._ui.cancel_button.clicked.connect(self.reject)
        self._ui.apply_button.clicked.connect(self.accept)

        """initialize view"""
        self._ui.commodity_name.set_model(PropertyLineEdit(""))
        self._ui.commodity_list.setModel(self._commodity_model)
        self._ui.commodity_list.setItemDelegateForColumn(1, delete_button_delegate)
        self._ui.commodity_list.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
        self._ui.commodity_list.horizontalHeader().setSectionResizeMode(1, QHeaderView.Fixed)
        self._ui.commodity_list.setColumnWidth(1, 22)

    def add_list_item(self):
        if self._ui.commodity_name.text() != "":
            self._commodity_model.appendRow([QStandardItem(self._ui.commodity_name.text()), QStandardItem()])
            self._ui.commodity_name.set_model(PropertyLineEdit(""))

    def remove_list_item(self, index):
        if index.column() == 1:
            self._commodity_model.removeRow(index.row())

    def on_dialog_accepted(self):
        """transfer edited data to model"""
        self._dialog_ctrl.transfer_data(self._commodity_model)

    def keyPressEvent(self, event):
        """prevent dialog closing with enter or return key"""
        if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
            return
        super().keyPressEvent(event)
 def testIntDelegate(self):
     """PYSIDE-1250: When creating a QVariant, use int instead of long long
        for anything that fits into a int. Verify by checking that a spin
        box is created as item view editor for int."""
     item = QStandardItem()
     item.setData(123123, Qt.EditRole)  # <-- QVariant conversion here
     model = QStandardItemModel()
     model.appendRow(item)
     style_option = QStyleOptionViewItem()
     delegate = QStyledItemDelegate()
     editor = delegate.createEditor(None, style_option, model.index(0, 0))
     self.assertEqual(type(editor), QSpinBox)
예제 #23
0
    def run(self):
        model = QStandardItemModel()

        for image in self.getImageFolderContents(
                self.folder.data(role=Qt.UserRole)):
            url = os.path.join(ThemeManager.IMAGE_FOLDERS_PATH,
                               self.folder.data(role=Qt.UserRole), image)
            item = QStandardItem(image)
            item.setData(url, role=Qt.UserRole)
            model.appendRow(item)

        self.modelFinished.emit(model)
예제 #24
0
def _create_model(parent, serialized_bookmarks):
    result = QStandardItemModel(0, 1, parent)
    last_folder_item = None
    for entry in serialized_bookmarks:
        if len(entry) == 1:
            last_folder_item = _create_folder_item(entry[0])
            result.appendRow(last_folder_item)
        else:
            url = QUrl.fromUserInput(entry[0])
            title = entry[1]
            icon = QIcon(entry[2]) if len(entry) > 2 and entry[2] else None
            last_folder_item.appendRow(_create_item(url, title, icon))
    return result
class AircraftTypeList(QListView):
    page_index_changed = Signal(int)

    def __init__(self, air_wing: AirWing) -> None:
        super().__init__()
        self.setIconSize(QSize(91, 24))
        self.setMinimumWidth(300)

        self.item_model = QStandardItemModel(self)
        self.setModel(self.item_model)

        self.selectionModel().setCurrentIndex(self.item_model.index(0, 0),
                                              QItemSelectionModel.Select)
        self.selectionModel().selectionChanged.connect(
            self.on_selection_changed)
        for aircraft in air_wing.squadrons:
            self.add_aircraft_type(aircraft)

    def remove_aircraft_type(self, aircraft: AircraftType):
        for item in self.item_model.findItems(aircraft.name):
            self.item_model.removeRow(item.row())
        self.page_index_changed.emit(
            self.selectionModel().currentIndex().row())

    def add_aircraft_type(self, aircraft: AircraftType):
        aircraft_item = QStandardItem(aircraft.name)
        icon = self.icon_for(aircraft)
        if icon is not None:
            aircraft_item.setIcon(icon)
        aircraft_item.setEditable(False)
        aircraft_item.setSelectable(True)
        self.item_model.appendRow(aircraft_item)

    def on_selection_changed(self, selected: QItemSelection,
                             _deselected: QItemSelection) -> None:
        indexes = selected.indexes()
        if len(indexes) > 1:
            raise RuntimeError(
                "Aircraft list should not allow multi-selection")
        if not indexes:
            return
        self.page_index_changed.emit(indexes[0].row())

    @staticmethod
    def icon_for(aircraft: AircraftType) -> Optional[QIcon]:
        name = aircraft.dcs_id
        if name in AIRCRAFT_ICONS:
            return QIcon(AIRCRAFT_ICONS[name])
        return None
예제 #26
0
    def __set_tableview(self, data: dict):
        model = QStandardItemModel()
        model.setColumnCount(2)
        model.setHorizontalHeaderLabels(["Name", "Type"])

        for single_name_data in data:
            item_name = QStandardItem(single_name_data)
            item_name.setEditable(False)

            item_value = QStandardItem(str(data[single_name_data]))
            item_value.setEditable(False)

            model.appendRow([item_name, item_value])

        self.ui.tableView_result_type_and_size.setModel(model)
예제 #27
0
    def init_ui(self):
        vbox = QVBoxLayout()
        self.setLayout(vbox)

        lv = QListView()
        lv.clicked.connect(self.on_clicked)
        vbox.addWidget(lv)

        model = QStandardItemModel(lv)
        lv.setModel(model)

        for food in self.foods:
            item = QStandardItem(food)
            item.setCheckable(True)
            model.appendRow(item)
예제 #28
0
class FolderList(QListView):
    def __init__(self):
        super().__init__()
        # Objects
        self.brush          = QBrush()
        self.folderModel    = QStandardItemModel()

        # Styling
        self.setModel(self.folderModel)
        self.setFrameStyle(QFrame.NoFrame)
        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setItemDelegate(ListDelegate.ListDelegate())
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.brush.setColor(ThemeManager.BG_QC)
        self.brush.setStyle(Qt.SolidPattern)

        self.populate()

    def populate(self):
        for idx, folder in enumerate(self.getImageFolders()):
            item = QStandardItem(folder)
            item.setData(folder.replace('imgur', '').replace('reddit_sub', '').replace('_', ''), role=Qt.DisplayRole)
            item.setData(folder, 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)

    def getImageFolders(self):
        contents = map(lambda f: f.name, os.scandir(ThemeManager.IMAGE_FOLDERS_PATH))
        yield from filter(lambda f: os.path.isdir(os.path.join(ThemeManager.IMAGE_FOLDERS_PATH, f)), contents)

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            index = self.indexAt(event.pos())
            if index.isValid():
                self.selectedFolderChanged.emit(index)

    def paintEvent(self, event):
        painter = QPainter(self.viewport())
        painter.setBrush(self.brush)
        painter.setPen(Qt.NoPen)
        painter.drawRect(event.rect())
        super().paintEvent(event)

    selectedFolderChanged = Signal(object)
예제 #29
0
class QFlightWaypointList(QTableView):
    def __init__(self, flight: Flight):
        super(QFlightWaypointList, self).__init__()
        self.model = QStandardItemModel(self)
        self.setModel(self.model)
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.model.setHorizontalHeaderLabels(["Name", "Alt"])

        header = self.horizontalHeader()
        header.setSectionResizeMode(0, QHeaderView.ResizeToContents)

        self.flight = flight

        if len(self.flight.points) > 0:
            self.selectedPoint = self.flight.points[0]
        self.update_list()

        self.selectionModel().setCurrentIndex(self.indexAt(QPoint(1, 1)),
                                              QItemSelectionModel.Select)
        self.selectionModel().selectionChanged.connect(
            self.on_waypoint_selected_changed)

    def on_waypoint_selected_changed(self):
        index = self.selectionModel().currentIndex().row()

    def update_list(self):
        self.model.clear()
        self.model.setHorizontalHeaderLabels(["Name", "Alt"])
        takeoff = FlightWaypoint(self.flight.from_cp.position.x,
                                 self.flight.from_cp.position.y, 0)
        takeoff.description = "Take Off"
        takeoff.name = takeoff.pretty_name = "Take Off from " + self.flight.from_cp.name
        self.model.appendRow(QWaypointItem(takeoff, 0))
        item = QStandardItem("0 feet AGL")
        item.setEditable(False)
        self.model.setItem(0, 1, item)
        for i, point in enumerate(self.flight.points):
            self.model.insertRow(self.model.rowCount())
            self.model.setItem(self.model.rowCount() - 1, 0,
                               QWaypointItem(point, i + 1))
            item = QStandardItem(
                str(meter_to_feet(point.alt)) + " ft " +
                str(["AGL" if point.alt_type == "RADIO" else "MSL"][0]))
            item.setEditable(False)
            self.model.setItem(self.model.rowCount() - 1, 1, item)
        self.selectionModel().setCurrentIndex(self.indexAt(QPoint(1, 1)),
                                              QItemSelectionModel.Select)
예제 #30
0
class QPlannedFlightsView(QListView):
    def __init__(self, game_model: GameModel, cp: ControlPoint) -> None:
        super(QPlannedFlightsView, self).__init__()
        self.game_model = game_model
        self.cp = cp
        self.model = QStandardItemModel(self)
        self.setModel(self.model)
        self.flight_items = []
        self.setIconSize(QSize(91, 24))
        self.setSelectionBehavior(QAbstractItemView.SelectItems)
        self.set_flight_planner()

    def setup_content(self):
        self.flight_items = []
        for package in self.game_model.ato_model.packages:
            for flight in package.flights:
                if flight.from_cp == self.cp:
                    item = QFlightItem(package.package, flight)
                    self.flight_items.append(item)

        self.flight_items.sort(key=self.mission_start_for_flight)
        for item in self.flight_items:
            self.model.appendRow(item)
        self.set_selected_flight(0)

    def set_selected_flight(self, row):
        self.selectionModel().clearSelection()
        index = self.model.index(row, 0)
        if not index.isValid():
            index = self.model.index(0, 0)
        self.selectionModel().setCurrentIndex(index,
                                              QItemSelectionModel.Select)
        self.repaint()

    def clear_layout(self):
        self.model.removeRows(0, self.model.rowCount())

    def set_flight_planner(self) -> None:
        self.clear_layout()
        self.setup_content()

    @staticmethod
    def mission_start_for_flight(flight_item: QFlightItem) -> timedelta:
        return TotEstimator(flight_item.package).mission_start_time(
            flight_item.flight)
예제 #31
0
파일: bug_785.py 프로젝트: linzhun/pyside2
    def testOperators(self):
        model = QStandardItemModel()
        for i in range(100):
            model.appendRow(QStandardItem("Item: %d"%i))

        first = model.index(0, 0)
        second = model.index(10, 0)
        third = model.index(20, 0)
        fourth = model.index(30, 0)

        sel = QItemSelection(first, second)
        sel2 = QItemSelection()
        sel2.select(third, fourth)

        sel3 = sel + sel2 #check operator +
        self.assertEqual(len(sel3), 2)
        sel4 = sel
        sel4 += sel2 #check operator +=
        self.assertEqual(len(sel4), 2)
        self.assertEqual(sel4, sel3)