Tab with list of sequences and create sql for selected sequence.
This commit is contained in:
parent
769307c821
commit
437736a023
19 changed files with 507 additions and 63 deletions
81
pglab/SequencesPage.cpp
Normal file
81
pglab/SequencesPage.cpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#include "SequencesPage.h"
|
||||
#include "ResultTableModelUtil.h"
|
||||
#include "CustomFilterSortModel.h"
|
||||
#include "CustomDataRole.h"
|
||||
#include "PgLabItemDelegate.h"
|
||||
#include "SequenceModel.h"
|
||||
#include "SqlCodePreview.h"
|
||||
#include <QTableView>
|
||||
|
||||
SequencesPage::SequencesPage(QWidget *parent)
|
||||
{
|
||||
m_sequenceTable = new QTableView(this);
|
||||
m_definitionView = new SqlCodePreview(this);
|
||||
|
||||
// build widget tree
|
||||
// add top level widgets to splitter
|
||||
addWidget(m_sequenceTable);
|
||||
addWidget(m_definitionView);
|
||||
|
||||
SetTableViewDefault(m_sequenceTable);
|
||||
|
||||
m_model = new SequenceModel(this);
|
||||
m_sortFilterProxy = new CustomFilterSortModel(this);
|
||||
m_sortFilterProxy->setSourceModel(m_model);
|
||||
m_sequenceTable->setModel(m_sortFilterProxy);
|
||||
m_sequenceTable->setSortingEnabled(true);
|
||||
m_sequenceTable->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
|
||||
auto item_delegate = new PgLabItemDelegate(this);
|
||||
m_sequenceTable->setItemDelegate(item_delegate);
|
||||
|
||||
connect(m_sequenceTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
|
||||
&SequencesPage::sequenceTable_currentRowChanged);
|
||||
|
||||
retranslateUi();
|
||||
}
|
||||
|
||||
void SequencesPage::retranslateUi()
|
||||
{
|
||||
// auto set_tabtext = [this] (QWidget *widget, QString translation) {
|
||||
// m_detailTabs->setTabText(m_detailTabs->indexOf(widget), translation);
|
||||
// };
|
||||
|
||||
// set_tabtext(m_definitionView, QApplication::translate("FunctionsPage", "SQL", nullptr));
|
||||
}
|
||||
|
||||
void SequencesPage::setCatalog(std::shared_ptr<const PgDatabaseCatalog> cat)
|
||||
{
|
||||
m_catalog = cat;
|
||||
m_model->setCatalog(cat);
|
||||
}
|
||||
|
||||
void SequencesPage::sequenceTable_currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
|
||||
{
|
||||
if (current.row() != previous.row()) {
|
||||
if (current.isValid()) {
|
||||
auto source_index = m_sortFilterProxy->mapToSource(current);
|
||||
auto proc = m_model->sequence(source_index.row());
|
||||
|
||||
selectedSequenceChanged(proc);
|
||||
}
|
||||
else
|
||||
selectedSequenceChanged({});
|
||||
}
|
||||
}
|
||||
|
||||
void SequencesPage::selectedSequenceChanged(const std::optional<PgSequence> &seq)
|
||||
{
|
||||
updateSqlTab(seq);
|
||||
}
|
||||
|
||||
void SequencesPage::updateSqlTab(const std::optional<PgSequence> &seq)
|
||||
{
|
||||
if (!seq.has_value()) {
|
||||
m_definitionView->clear();
|
||||
return;
|
||||
}
|
||||
QString create_sql = seq->createSql();
|
||||
|
||||
m_definitionView->setPlainText(create_sql);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue