示例#1
0
 def editcell(self,item:QtWidgets.QTableWidgetItem):
     col = self.db.getcolumns()[item.column()]
     row = item.row() + 1
     val = item.text()
     print('bpvtytyj ',row,col,val)
     self.db.edit(value=val,idvalue=row,column=col,idcolumn='rowid')
     self.ui.tableWidget.resizeColumnsToContents()
示例#2
0
    def __onTradeRouteTableWidgetItemClicked(self, item: QTableWidgetItem) -> None:
        '''If a trade route table widget item is clicked, check it and call the presenter to display it'''
        checked: bool = False
        if item.checkState() == QtCore.Qt.Checked:
            checked = True

        self.__presenter.onTradeRouteChecked(item.row(), checked)
示例#3
0
    def _edit_input_cell_done(self, item: QTableWidgetItem, checkable_widget: QLineEdit, table: QTableWidget):
        old_value = item.text()
        new_value = checkable_widget.text()
        table.removeCellWidget(item.row(), item.column())

        if item.column() == BinningColumns.SBinName():
            if not self._bin_container.does_bin_exist(new_value):
                self.parent._update_feedback('bin is already defined')
                return

            self._bin_container.update_bin_name(old_value, new_value)
            item.setText(new_value)
            self.parent._update_binning_tree_items()
            return

        elif item.column() == BinningColumns.SBin():
            if self._bin_container.does_bin_num_exist(new_value):
                self.parent._update_feedback('bin number is already occupied')
                return

            try:
                sbin = int(new_value)

                if sbin in range(ALARM_BIN_MIN, ALARM_BIN_MAX):
                    self.parent._update_feedback(f'range {(ALARM_BIN_MIN, ALARM_BIN_MAX)} is reserved for internal use')
                    item.setText(old_value)

                group_item = self.binning_table.item(item.row(), BinningColumns.SBinGroup())
                if sbin in range(1, 10):
                    group_item.setText(BINGROUPS[0])
                else:
                    group_item.setText(BINGROUPS[1])

                self.parent._verify()

            except Exception:
                self._update_feedback('soft bin must be of type integral')
                item.setText(old_value)
                return

        elif item.column() == BinningColumns.SBinGroup():
            BINGROUPS.append(new_value)

        item.setText(new_value)
        self._update_row_content_binning_table(item)
        self.parent._verify()
示例#4
0
 def _double_clicked(self, item: QtWidgets.QTableWidgetItem):
     row = item.row()
     start = self.tableWidget.item(row, 0).text()
     end = self.tableWidget.item(row, 1).text()
     d = IntervalTrainDialog(self.graph, self)
     d.comboStart.setCurrentText(start)
     d.comboEnd.setCurrentText(end)
     d.exec_()
示例#5
0
    def _create_input_cell(self, table: QTableWidget, item: QTableWidgetItem):
        column = item.column()
        row = item.row()
        checkable_widget = QLineEdit()
        checkable_widget.setText(item.text())

        table.setCellWidget(row, column, checkable_widget)
        checkable_widget.editingFinished.connect(lambda: self._edit_input_cell_done(item, checkable_widget, table))
    def _show_detail(self, item: QtWidgets.QTableWidgetItem = None):
        """
        显示各个车次与计算标尺的比较.
        暂不考虑排序。
        """
        if not isinstance(item, QtWidgets.QTableWidgetItem):
            item = self.previewTable.currentItem()
        i = item.row()
        fz, dz = self.previewTable.item(i, 0).data(Qt.UserRole)

        tw = QtWidgets.QTableWidget()
        tw.setWindowTitle(f'计算细节*{fz}{self.blocker()}{dz}')

        tw.setEditTriggers(tw.NoEditTriggers)
        tw.setColumnCount(7)
        tw.setHorizontalHeaderLabels(
            ['车次', '附加', '标准', '实际', '差时', '绝对值', '标记'])
        header: QtWidgets.QHeaderView = tw.horizontalHeader()
        header.setSectionsClickable(True)
        header.sectionClicked.connect(tw.sortByColumn)
        header.setSortIndicatorShown(True)

        for i, s in enumerate((120, 60, 80, 80, 80, 80, 90)):
            tw.setColumnWidth(i, s)

        TWI = QtWidgets.QTableWidgetItem
        tw.setRowCount(len(self.resultData[(fz, dz)]))
        node = self.resultDict[(fz, dz)]
        for row, (train, (sec,
                          tp)) in enumerate(self.resultData[(fz, dz)].items()):
            std = self.__stdInterval(tp, *node)
            tw.setRowHeight(row, self.graph.UIConfigData()['table_row_height'])
            tw.setItem(row, 0, TWI(train.fullCheci()))
            tw.setItem(row, 1, TWI(self.__type2str(tp)))
            tw.setItem(row, 2, TWI(Train.sec2strmin(std)))
            tw.setItem(row, 3, TWI(Train.sec2strmin(sec)))
            it = TWI()
            it.setData(Qt.DisplayRole, sec - std)
            tw.setItem(row, 4, it)
            it = TWI()
            it.setData(Qt.DisplayRole, abs(sec - std))
            tw.setItem(row, 5, it)
            it = TWI()
            if self.radioMean.isChecked():
                # 均值模式,标记截断数据
                if self.resultFt[(fz, dz)][tp].get(sec, None) is None:
                    it.setText('截断')
            else:
                # 众数模式,标记采信数据和类型弃用数据
                if not self.resultUsed[(fz, dz)][tp][2]:
                    it.setText('类型弃用')
                elif sec == self.resultUsed[(fz, dz)][tp][0]:
                    it.setText('采信')
            tw.setItem(row, 6, it)
        dialog = DialogAdapter(tw, self)
        dialog.resize(700, 600)
        dialog.show()
示例#7
0
 def _get_item(self, item: QtWidgets.QTableWidgetItem):
     row = item.row()
     index = len(self.pix_set) - 1 - row
     filename = self.pix_set[index][0]
     opt = self.pix_set[index][1]
     pix = self.pix_set[index][2]
     self.Signal_scene.emit(filename, pix)
     return item.text()
     pass
示例#8
0
 def check_number_value(self, item: QTableWidgetItem):
     """A method that makes sure that the entered value
     can be turned to float. If not, change the current
     value to 0."""
     if item is None:
         self.log('Item (%s, %s) is None' %(item.row(), item.column()))
     elif item.column() < 2:
         try:
             float(item.text())
         except ValueError as e:
             self.log('Invalid value "%s" entered, value changed to 0.' %item.text())
             item.setText('0')
         finally:
             if None not in (self.dlg.tableWidget.item(item.row(), 0), self.dlg.tableWidget.item(item.row(), 1), self.dlg.tableWidget.item(item.row(), 2)) and ' - ' in self.dlg.tableWidget.item(item.row(), 2).text():
                 legend = self.dlg.tableWidget.item(item.row(), 2).text()
                 legend_split = legend.split(' - ')
                 legend_split[item.column()] = item.text()
                 legend = ' - '.join(legend_split)
                 self.dlg.tableWidget.item(item.row(), 2).setText(legend)
示例#9
0
    def item_changed(self, item: QTableWidgetItem):
        """Update the planner to mark whether or not the assignment
        is completed
        """
        assignment_id = int(self.tablewidget_assignments.cellWidget(item.row(), 1).get_data())

        # If the checkbox is checked / Unchecked
        if item.column() == 0:
            self.app.planner.update_assignment(assignment_id, "completed", int(item.checkState() == 2))
            self.app.refresh()
示例#10
0
 def table_click(self, item: QTableWidgetItem):
     if self.flag_open:
         item = self.tableWidget.item(item.row(), 0)
         txt = item.text()
         try:
             func_filter = getattr(__import__(txt, fromlist=[txt]), txt)
         except ModuleNotFoundError:
             QErrorMessage(self).showMessage("Module is crushed!")
             return
         self.use_filter(func_filter)
示例#11
0
 def _double_clicked(self,item:QtWidgets.QTableWidgetItem):
     r = item.row()
     dct = self.train.timetable[r//2]
     if self.train.stationStoppedOrStartEnd(dct):
         dct['business']=not self.train.stationBusiness(dct)
         row=r-(r%2)
         brush = self.itemBrush(dct,self.train)
         self.tableWidget.item(row,0).setForeground(brush)
         self.tableWidget.item(row,2).setForeground(brush)
         self.tableWidget.item(row+1,2).setForeground(brush)
示例#12
0
 def _table_item_changed(self,item:QtWidgets.QTableWidgetItem):
     if item.column() == 0:
         circuit:Circuit = self.tableWidget.item(item.row(),1).data(Qt.UserRole)
         if item.checkState() == Qt.Checked:
             for node in circuit.nodes():
                 if node.train() is not None:
                     node.train().highlightItems(containLink=True)
         else:
             for node in circuit.nodes():
                 if node.train() is not None:
                     node.train().unHighlightItems(containLink=True)
示例#13
0
 def _item_changed(self, item: QtWidgets.QTableWidgetItem):
     """
     2019.10.21添加
     """
     if item is None or item.column() != 4:
         return
     train = self.trainTable.item(item.row(), 0).data(-1)
     if train is None:
         return
     on = bool(item.checkState())
     train.setIsShow(on)
     self.trainShowChanged.emit(train, on)
示例#14
0
    def show_debt_info(self, item: QTableWidgetItem):
        if item is not None:
            row = item.row()
            id = self.monitor_table.item(row, 0).text()
            debt = self.dbm.get_debts(int(id))
            old_amount = debt.amount
            di = DebtInfo(self.dbm, debt)
            di.exec_()

            if di.amount != old_amount:
                self.update_statistic()
                self.monitor_table.item(row, 3).setText(str(di.amount))
示例#15
0
    def _handle_item_edit(self, item: QtWidgets.QTableWidgetItem):
        if not item.column() == 1:
            return

        current_specifications = copy.copy(
            self._lobby_view.lobby.game_options['pool_specification'])
        current_specifications[item.row()]['amount'] = int(item.data(0))

        self._lobby_view.lobby_model.set_options(
            self._lobby_view.lobby.name,
            {'pool_specification': current_specifications},
        )
示例#16
0
    def insertItems(self):
        added = []
        for path in self.pathList:
            if path.objPath in added:
                continue

            curRow = len(added)

            if len(path.objPath) > 92:
                text = path.objPath[0:92] + '...'
            else:
                text = path.objPath

            pItem = QTableWidgetItem(text)

            pItem.setData(Qt.UserRole, path.objPath)
            pItem.setToolTip(path.objPath)
            pItem.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

            checkBoxN = QCheckBox(self)
            checkBoxS = QCheckBox(self)
            checkBoxR = QCheckBox(self)

            self.ui.tableWidget.setItem(curRow, self.COL_PATH, pItem)
            self.ui.tableWidget.setCellWidget(curRow, self.COL_NOPIN,
                                              checkBoxN)
            self.ui.tableWidget.setCellWidget(curRow, self.COL_SPIN, checkBoxS)
            self.ui.tableWidget.setCellWidget(curRow, self.COL_RPIN, checkBoxR)

            checkBoxN.stateChanged.connect(
                functools.partial(self.noPinChecked, pItem.row()))
            checkBoxS.stateChanged.connect(
                functools.partial(self.pinSingleChecked, pItem.row()))
            checkBoxR.stateChanged.connect(
                functools.partial(self.pinRecursiveChecked, pItem.row()))
            checkBoxS.setCheckState(Qt.Checked)
            added.append(path.objPath)

        self.ui.tableWidget.setRowCount(len(added))
示例#17
0
 def write_variable(self, a_item: QtWidgets.QTableWidgetItem):
     try:
         if self.netvars.connected():
             variable_number = int(
                 self.ui.variables_table.item(a_item.row(),
                                              self.Column.NUMBER).text())
             try:
                 variable_value = utils.parse_input(a_item.text())
                 self.netvars.write_variable(variable_number,
                                             variable_value)
             except ValueError:
                 pass
     except Exception as err:
         logging.debug(utils.exception_handler(err))
示例#18
0
 def _table_item_changed(self, item: QtWidgets.QTableWidgetItem):
     if self.updating:
         return
     # print("currentWidget::table_item_changed",item.text(),item.row(),item.column())
     row = item.row()
     if item.column() == 3:
         # 营业列变化
         itemStation = self.timeTable.item(row, 0)
         if item.checkState() == Qt.Checked:
             itemStation.setForeground(QtGui.QBrush(Qt.red))
         elif self.timeTable.cellWidget(
                 row, 1).time() != self.timeTable.cellWidget(row, 2).time():
             itemStation.setForeground(QtGui.QBrush(Qt.blue))
         else:
             itemStation.setForeground(QtGui.QBrush(Qt.black))
示例#19
0
    def set_value_to_user(self, a_item: QtWidgets.QTableWidgetItem):
        self.ui.limits_table.blockSignals(True)
        try:
            if a_item.column() == ScaleLimitsDialog.Column.LIMIT:
                value_f = utils.parse_input(a_item.text())
                signal_type = clb.SignalType(
                    self.ui.limits_table.cellWidget(
                        a_item.row(),
                        ScaleLimitsDialog.Column.SIGNAL_TYPE).currentIndex())
                units = clb.signal_type_to_units[signal_type]
                value_f = clb.bound_amplitude(value_f, signal_type)
                value_str = utils.value_to_user_with_units(units)(value_f)

                a_item.setText(value_str)
                a_item.setData(QtCore.Qt.UserRole, value_str)

        except ValueError:
            a_item.setText(a_item.data(QtCore.Qt.UserRole))
        self.ui.limits_table.blockSignals(False)
示例#20
0
 def launch_app(self, item: QTableWidgetItem):
     path_item = self.fileTable.item(item.row(), FILE_LOCATION_INDEX)
     file_url = QUrl(path_item.text().replace("\\", "/"))
     print(file_url)
     QDesktopServices.openUrl(file_url)
示例#21
0
 def _item_double_clicked(self, item: QtWidgets.QTableWidgetItem):
     row = item.row()
     note = self.functions[row]['note']
     text = f"{self.functions[row]['name']}的说明:\n"
     text += note
     QtWidgets.QMessageBox.information(self, '详细信息', text)