def init_ui(self): model = QStandardItemModel() model.insertColumns(0, 4) model.setHeaderData(0, 1, 'ID', 0) model.setHeaderData(1, 1, 'Sigle', 0) model.setHeaderData(2, 1, 'Parameter', 0) model.setHeaderData(3, 1, 'Value', 0) sql = "SELECT id, sigle, text, value FROM {0}.tracer_physic WHERE type = '{1}' ORDER BY id".format( self.mdb.SCHEMA, self.cur_wq_mod) rows = self.mdb.run_query(sql, fetch=True) model.insertRows(0, len(rows)) for r, row in enumerate(rows): for c, val in enumerate(row): itm = QStandardItem() itm.setData(val, 0) if c == 3: itm.setData(data_to_float(val), 0) itm.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable) itm.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter) else: itm.setData(val, 0) itm.setFlags(Qt.ItemIsEnabled) model.setItem(r, c, itm) self.ui.tab_param.setModel(model) self.ui.tab_param.hide() self.ui.tab_param.resizeColumnsToContents() self.ui.tab_param.resizeRowsToContents() self.ui.tab_param.setColumnHidden(0, True) self.ui.ui.tab_param.show()
def fill_lst_stations(self, id=None): """ Fill stations table in function of :param id: id of station :return: """ model = QStandardItemModel() model.setColumnCount(3) model.setHorizontalHeaderLabels(['Station', 'H', 'Q']) self.ui.tab_stations.setModel(model) self.ui.tab_stations.setColumnWidth(0, 140) self.ui.tab_stations.setColumnWidth(1, 10) self.ui.tab_stations.setColumnWidth(2, 10) self.ui.tab_stations.selectionModel().selectionChanged.connect( self.station_changed) sql = "SELECT DISTINCT sta.code, not cnt_h isNull as h, not cnt_q isNull as q " \ "FROM ({0}.observations as sta LEFT JOIN (SELECT code, count(*) as cnt_h FROM {0}.observations " \ "WHERE type = 'H' GROUP BY code) as sta_h ON sta.code = sta_h.code) " \ "LEFT JOIN (SELECT code, count(*) as cnt_q FROM {0}.observations " \ "WHERE type = 'Q' GROUP BY code) as sta_q ON sta.code = sta_q.code " \ "ORDER BY sta.code".format(self.mdb.SCHEMA) rows = self.mdb.run_query(sql, fetch=True) for i, row in enumerate(rows): for j, field in enumerate(row): new_itm = QStandardItem() if j == 0: new_itm.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter) txt = str(row[j]).strip() else: new_itm.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) if row[j] is True: txt = "X" else: txt = "" new_itm.setText(txt) new_itm.setEditable(False) self.ui.tab_stations.model().setItem(i, j, new_itm) if id: for r in range(self.ui.tab_stations.model().rowCount()): if str(self.ui.tab_stations.model().item(r, 0).text()) == str( id): self.ui.tab_stations.setCurrentIndex( self.ui.tab_stations.model().item(r, 0).index()) break else: self.station_changed()
def load(self, label: str, meta_type: str, meta: dict, show: bool = False): # re-initialize our model self.model.clear() self.meta = meta root_item = self.model.invisibleRootItem() self.model.setColumnCount(2) self.model.setHorizontalHeaderLabels(['Meta Name', 'Meta Value']) if meta_type == MetaType.PROJECT: self.treeView.setHeaderHidden(False) self.setWindowTitle('Project MetaData: {}'.format(label)) self.treeView.setEnabled(True) if meta is not None and len(meta.keys()) > 0: if 'project' in meta and len(meta['project'].keys()) > 0: proj_meta = QStandardItem('Project Meta') proj_meta_font = proj_meta.font() proj_meta_font.setBold(True) proj_meta.setFont(proj_meta_font) for k, v in meta['project'].items(): proj_meta.appendRow( [QStandardItem(k), QStandardItem(v)]) root_item.appendRow(proj_meta) if 'warehouse' in meta and len(meta['warehouse'].keys()) > 0: wh_meta = QStandardItem('Warehouse Meta') wh_meta_font = proj_meta.font() wh_meta_font.setBold(True) wh_meta.setFont(wh_meta_font) for k, v in meta['warehouse'].items(): wh_meta.appendRow([QStandardItem(k), QStandardItem(v)]) root_item.appendRow(wh_meta) elif meta_type == MetaType.FOLDER: self.setWindowTitle('Folder: {}'.format(label)) self.treeView.setHeaderHidden(True) self.treeView.setEnabled(False) self.model.setColumnCount(1) self.model.setHorizontalHeaderLabels(['Meta Name']) no_item = QStandardItem('Folders have no MetaData') no_item.setTextAlignment(Qt.AlignCenter) no_f = no_item.font() no_f.setItalic(True) no_item.setFont(no_f) root_item.appendRow(no_item) elif meta_type == MetaType.LAYER: self.setWindowTitle('Layer MetaData: {}'.format(label)) self.treeView.setEnabled(True) self.treeView.setHeaderHidden(False) if meta is not None and len(meta.keys()) > 0: for k, v in meta.items(): root_item.appendRow([QStandardItem(k), QStandardItem(v)]) else: self.treeView.setHeaderHidden(True) self.treeView.setEnabled(False) self.model.setColumnCount(1) self.model.setHorizontalHeaderLabels(['Meta Name']) no_item = QStandardItem('This layer has no MetaData') no_item.setTextAlignment(Qt.AlignCenter) no_f = no_item.font() no_f.setItalic(True) no_item.setFont(no_f) root_item.appendRow(no_item) elif meta_type == MetaType.NONE: self.treeView.setHeaderHidden(True) self.treeView.setEnabled(False) self.model.setColumnCount(1) self.setWindowTitle('Riverscapes MetaData: {}'.format(label)) no_item = QStandardItem('This item cannot have metadata') no_item.setTextAlignment(Qt.AlignCenter) no_f = no_item.font() no_f.setItalic(True) no_item.setFont(no_f) root_item.appendRow(no_item) return # self.tree.header().setDefaultSectionSize(180) # self._populateTree(self.tree, ) # Finally expand all levels self.treeView.expandAll() if show is True: self.show()