Ejemplo n.º 1
0
 def __init__(self, table, parent_view):
     AbstractReferenceListModel.__init__(self, table, parent_view)
     self._columns = [
         ("id", ''), ("type_id", ''),
         ("name", g_tr('ReferenceDataDialog', "Name")),
         ("currency_id", g_tr('ReferenceDataDialog', "Currency")),
         ("active", g_tr('ReferenceDataDialog', "Act.")),
         ("number", g_tr('ReferenceDataDialog', "Account #")),
         ("reconciled_on", g_tr('ReferenceDataDialog', "Reconciled @")),
         ("organization_id", g_tr('ReferenceDataDialog', "Bank/Broker")),
         ("country_id", g_tr('ReferenceDataDialog', "CC"))
     ]
     self._sort_by = "name"
     self._group_by = "type_id"
     self._hidden = ["id", "type_id"]
     self._stretch = "name"
     self._lookup_delegate = None
     self._peer_delegate = None
     self._timestamp_delegate = None
     self._bool_delegate = None
     self.setRelation(self.fieldIndex("type_id"),
                      QSqlRelation("account_types", "id", "name"))
     self.setRelation(self.fieldIndex("currency_id"),
                      QSqlRelation("currencies", "id", "name"))
     self.setRelation(self.fieldIndex("country_id"),
                      QSqlRelation("countries", "id", "code"))
Ejemplo n.º 2
0
    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)

        #Initialize db
        createdb.init_db()

        model = QSqlRelationalTableModel(self.bookTable)
        model.setEditStrategy(QSqlTableModel.OnManualSubmit)
        model.setTable("books")

        # Remember the indexes of the columns:
        author_idx = model.fieldIndex("author")
        genre_idx = model.fieldIndex("genre")

        # Set the relations to the other database tables:
        model.setRelation(author_idx, QSqlRelation("authors", "id", "name"))
        model.setRelation(genre_idx, QSqlRelation("genres", "id", "name"))

        # Set the localized header captions:
        model.setHeaderData(author_idx, Qt.Horizontal, self.tr("Author Name"))
        model.setHeaderData(genre_idx, Qt.Horizontal, self.tr("Genre"))
        model.setHeaderData(model.fieldIndex("title"), Qt.Horizontal, self.tr("Title"))
        model.setHeaderData(model.fieldIndex("year"), Qt.Horizontal, self.tr("Year"))
        model.setHeaderData(model.fieldIndex("rating"), Qt.Horizontal, self.tr("Rating"))

        if not model.select():
            print(model.lastError())

        # Set the model and hide the ID column:
        self.bookTable.setModel(model)
        self.bookTable.setItemDelegate(BookDelegate(self.bookTable))
        self.bookTable.setColumnHidden(model.fieldIndex("id"), True)
        self.bookTable.setSelectionMode(QAbstractItemView.SingleSelection)

        # Initialize the Author combo box:
        self.authorEdit.setModel(model.relationModel(author_idx))
        self.authorEdit.setModelColumn(model.relationModel(author_idx).fieldIndex("name"))

        self.genreEdit.setModel(model.relationModel(genre_idx))
        self.genreEdit.setModelColumn(model.relationModel(genre_idx).fieldIndex("name"))

        # Lock and prohibit resizing of the width of the rating column:
        self.bookTable.horizontalHeader().setSectionResizeMode(model.fieldIndex("rating"),
            QHeaderView.ResizeToContents)

        mapper = QDataWidgetMapper(self)
        mapper.setModel(model)
        mapper.setItemDelegate(BookDelegate(self))
        mapper.addMapping(self.titleEdit, model.fieldIndex("title"))
        mapper.addMapping(self.yearEdit, model.fieldIndex("year"))
        mapper.addMapping(self.authorEdit, author_idx)
        mapper.addMapping(self.genreEdit, genre_idx)
        mapper.addMapping(self.ratingEdit, model.fieldIndex("rating"))

        selection_model = self.bookTable.selectionModel()
        selection_model.currentRowChanged.connect(mapper.setCurrentModelIndex)

        self.bookTable.setCurrentIndex(model.index(0, 0))
        self.create_menubar()
Ejemplo n.º 3
0
 def __init__(self, parent=None):
     # dirpath = os.path.dirname(os.path.abspath(__file__))
     # self.db = QSqlDatabase.addDatabase('QSQLITE')
     # self.db.setDatabaseName(os.path.join(dirpath, 'grad.db'))
     # self.db.open()
     self.model = QSqlRelationalTableModel(parent)
     self.model.setTable('Template')
     self.model.setRelation(3, QSqlRelation('Teacher', 'tid', 'name'))
     self.model.setHeaderData(3, Qt.Horizontal, 'teacher')
     self.model.setRelation(
         4, QSqlRelation('TypeInfo', 'type_id', 'type_name'))
     self.model.setHeaderData(4, Qt.Horizontal, 'type')
     self.model.select()
Ejemplo n.º 4
0
def UseSqlTable(db, table_name, columns, relations):
    if relations:
        model = QSqlRelationalTableModel(db=db)
    else:
        model = QSqlTableModel(db=db)
    model.setTable(table_name)
    model.setEditStrategy(QSqlTableModel.OnManualSubmit)
    if relations:
        model.setJoinMode(QSqlRelationalTableModel.LeftJoin
                          )  # to work correctly with NULL values in fields
        for relation in relations:
            model.setRelation(
                model.fieldIndex(relation[rel_idx.KEY_FIELD]),
                QSqlRelation(relation[rel_idx.LOOKUP_TABLE],
                             relation[rel_idx.FOREIGN_KEY],
                             relation[rel_idx.LOOKUP_FIELD]))
    for column in columns:
        if column[hcol_idx.DISPLAY_NAME]:
            model.setHeaderData(
                model.fieldIndex(column[hcol_idx.DB_NAME]), Qt.Horizontal,
                g_tr('TableViewConfig', column[hcol_idx.DISPLAY_NAME]))
        if column[hcol_idx.SORT_ORDER] is not None:
            model.setSort(model.fieldIndex(column[hcol_idx.DB_NAME]),
                          column[hcol_idx.SORT_ORDER])
    return model
    def __init__(self):
        super().__init__()

        self.table = QTableView()

        self.model = QSqlRelationalTableModel(db=db)

        self.table.setModel(self.model)

        # tag::setRelation[]
        self.model.setTable("Track")
        self.model.setRelation(2, QSqlRelation("Album", "AlbumId", "Title"))
        self.model.setRelation(3, QSqlRelation("MediaType", "MediaTypeId", "Name"))
        self.model.setRelation(4, QSqlRelation("Genre", "GenreId", "Name"))
        self.model.select()
        # end::setRelation[]

        self.setMinimumSize(QSize(1024, 600))
        self.setCentralWidget(self.table)
Ejemplo n.º 6
0
 def __init__(self, fil: str = None, parent=None):
     self.model = QSqlRelationalTableModel(parent)
     self.model.setTable('Score')
     self.model.setRelation(
         9, QSqlRelation('TypeInfo', 'type_id', 'type_name'))
     self.model.setHeaderData(9, Qt.Horizontal, 'type')
     if fil is not None:
         self.model.setFilter(fil)
     self.model.select()
     print(self.model)
Ejemplo n.º 7
0
 def __init__(self, table, parent_view):
     AbstractReferenceListModel.__init__(self, table, parent_view)
     self._columns = [("id", ''),
                      ("timestamp", g_tr('ReferenceDataDialog', "Date")),
                      ("asset_id", g_tr('ReferenceDataDialog', "Asset")),
                      ("quote", g_tr('ReferenceDataDialog', "Quote"))]
     self._hidden = ["id"]
     self._default_name = "quote"
     self._lookup_delegate = None
     self._timestamp_delegate = None
     self.setRelation(self.fieldIndex("asset_id"),
                      QSqlRelation("assets", "id", "name"))
Ejemplo n.º 8
0
 def __init__(self, table, parent_view):
     AbstractReferenceListModel.__init__(self, table, parent_view)
     self._columns = [("id", ''),
                      ("name", g_tr('ReferenceDataDialog', "Symbol")),
                      ("type_id", ''),
                      ("full_name", g_tr('ReferenceDataDialog', "Name")),
                      ("isin", g_tr('ReferenceDataDialog', "ISIN")),
                      ("country_id", g_tr('ReferenceDataDialog',
                                          "Country")),
                      ("src_id", g_tr('ReferenceDataDialog',
                                      "Data source"))]
     self._sort_by = "name"
     self._group_by = "type_id"
     self._hidden = ["id", "type_id"]
     self._stretch = "full_name"
     self._lookup_delegate = None
     self.setRelation(self.fieldIndex("type_id"),
                      QSqlRelation("asset_types", "id", "name"))
     self.setRelation(self.fieldIndex("country_id"),
                      QSqlRelation("countries", "id", "name"))
     self.setRelation(self.fieldIndex("src_id"),
                      QSqlRelation("data_sources", "id", "name"))