Remove designer DatabaseForm generating widgets from code.

Large part of toolbar and menu missing these will be recreated through plugin system.
This commit is contained in:
eelke 2019-01-01 14:34:14 +01:00
parent dc8a052544
commit d86d278350
4 changed files with 77 additions and 292 deletions

View file

@ -1,27 +1,31 @@
#include "DatabaseWindow.h"
#include "ui_DatabaseWindow.h"
//#include "ui_DatabaseWindow.h"
#include "TablesPage.h"
#include "FunctionsPage.h"
#include "SequencesPage.h"
#include <QStandardPaths>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextTable>
#include <QElapsedTimer>
#include <algorithm>
#include <QCloseEvent>
#include <QMetaObject>
#include <QMetaMethod>
#include "QueryTab.h"
#include "util.h"
#include "plugin_support/PluginContentWidget.h"
#include "plugin_support/PluginContentWidgetContextBase.h"
#include "CodeGenerator.h"
#include "MasterController.h"
#include "ScopeGuard.h"
#include "EditTableWidget.h"
#include "plugin_support/PluginContentWidgetContextBase.h"
#include "TaskExecutor.h"
#include <QApplication>
#include <QCloseEvent>
#include <QElapsedTimer>
#include <QFileDialog>
#include <QMenuBar>
#include <QMessageBox>
#include <QMetaMethod>
#include <QMetaObject>
#include <QStandardPaths>
#include <QStatusBar>
#include <QTextTable>
#include <QToolBar>
#include <QVBoxLayout>
#include <algorithm>
namespace pg = Pgsql;
@ -111,11 +115,32 @@ void LMainWindow::addMenuAction(const MenuAction &ma)
DatabaseWindow::DatabaseWindow(MasterController *master, QWidget *parent)
: LMainWindow(parent)
, ui(new Ui::DatabaseWindow)
// , ui(new Ui::DatabaseWindow)
, m_masterController(master)
{
ui->setupUi(this);
ui->tabWidget->setDocumentMode(true);
// ui->setupUi(this);
// ui->tabWidget->setDocumentMode(true);
// auto centralWidget = new QWidget(this);
// auto verticalLayout_3 = new QVBoxLayout(centralWidget);
// verticalLayout_3->setSpacing(4);
// verticalLayout_3->setContentsMargins(4, 4, 4, 4);
m_tabWidget = new QTabWidget(this);
m_tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
m_tabWidget->setDocumentMode(true);
// verticalLayout_3->addWidget(m_tabWidget);
setCentralWidget(m_tabWidget);
auto menuBar = new QMenuBar(this);
setMenuBar(menuBar);
m_mainToolBar = new QToolBar(this);
addToolBar(Qt::TopToolBarArea, m_mainToolBar);
auto statusBar = new QStatusBar(this);
setStatusBar(statusBar);
m_context = new DatabaseWindowContentContext(this);
@ -123,12 +148,14 @@ DatabaseWindow::DatabaseWindow(MasterController *master, QWidget *parent)
this, &DatabaseWindow::catalogLoaded);
initModuleMenus();
QMetaObject::connectSlotsByName(this);
}
DatabaseWindow::~DatabaseWindow()
{
delete m_context;
delete ui;
// delete ui;
}
QueryTab* DatabaseWindow::newSqlPage()
@ -143,7 +170,7 @@ QueryTab* DatabaseWindow::newSqlPage()
void DatabaseWindow::newCreateTablePage()
{
auto w = new EditTableWidget(m_database, this);
ui->tabWidget->addTab(w, "Create table");
m_tabWidget->addTab(w, "Create table");
}
void DatabaseWindow::newCodeGenPage(QString query, std::shared_ptr<const Pgsql::Result> dbres)
@ -155,7 +182,7 @@ void DatabaseWindow::newCodeGenPage(QString query, std::shared_ptr<const Pgsql::
QueryTab *DatabaseWindow::GetActiveQueryTab()
{
QWidget *widget = ui->tabWidget->currentWidget();
QWidget *widget = m_tabWidget->currentWidget();
QueryTab *qt = dynamic_cast<QueryTab*>(widget);
return qt;
}
@ -187,25 +214,25 @@ void DatabaseWindow::catalogLoaded()
auto tt = new TablesPage(m_context, this);
tt->setCatalog(m_database->catalog());
ui->tabWidget->addTab(tt, "Tables");
m_tabWidget->addTab(tt, "Tables");
auto pg_cat_tables = new TablesPage(m_context, this);
pg_cat_tables->setNamespaceFilter(TablesTableModel::PgCatalog);
pg_cat_tables->setCatalog(m_database->catalog());
ui->tabWidget->addTab(pg_cat_tables, "pg_catalog");
m_tabWidget->addTab(pg_cat_tables, "pg_catalog");
auto info_schema_tables = new TablesPage(m_context, this);
info_schema_tables->setNamespaceFilter(TablesTableModel::InformationSchema);
info_schema_tables->setCatalog(m_database->catalog());
ui->tabWidget->addTab(info_schema_tables, "information_schema");
m_tabWidget->addTab(info_schema_tables, "information_schema");
auto functions_page = new FunctionsPage(this);
functions_page->setCatalog(m_database->catalog());
ui->tabWidget->addTab(functions_page, "Functions");
m_tabWidget->addTab(functions_page, "Functions");
auto sequences_page = new SequencesPage(this);
sequences_page->setCatalog(m_database->catalog());
ui->tabWidget->addTab(sequences_page, "Sequences");
m_tabWidget->addTab(sequences_page, "Sequences");
newSqlPage();
newCreateTablePage();
@ -269,7 +296,7 @@ void DatabaseWindow::on_actionExport_data_triggered()
void DatabaseWindow::on_actionClose_triggered()
{
//close();
on_tabWidget_tabCloseRequested(ui->tabWidget->currentIndex());
on_tabWidget_tabCloseRequested(m_tabWidget->currentIndex());
}
void DatabaseWindow::on_actionAbout_triggered()
@ -338,12 +365,13 @@ void DatabaseWindow::on_actionNew_SQL_triggered()
void DatabaseWindow::on_tabWidget_tabCloseRequested(int index)
{
QWidget *widget = ui->tabWidget->widget(index);
QWidget *widget = m_tabWidget->widget(index);
PluginContentWidget *plg_page = dynamic_cast<PluginContentWidget*>(widget);
if (plg_page) {
if (plg_page->canClose()) {
removePage(plg_page);
ui->tabWidget->removeTab(index);
m_tabWidget->removeTab(index);
delete plg_page;
}
}
else {
@ -351,11 +379,14 @@ void DatabaseWindow::on_tabWidget_tabCloseRequested(int index)
// to PlgPage
QueryTab *qt = dynamic_cast<QueryTab*>(widget);
if (qt && qt->canClose()) {
ui->tabWidget->removeTab(index);
m_tabWidget->removeTab(index);
delete qt;
}
else if (index > 0) {
ui->tabWidget->removeTab(index);
m_tabWidget->removeTab(index);
delete widget;
}
}
}
@ -412,22 +443,22 @@ void DatabaseWindow::addToolBarButtonsForPage(PluginContentWidget *page)
for (auto act : actions) {
list.append(act);
}
ui->mainToolBar->addActions(list);
m_mainToolBar->addActions(list);
}
void DatabaseWindow::removeToolBarButtonsForPage(PluginContentWidget *page)
{
std::vector<QAction*> actions = page->getToolbarActions();
for (auto act : actions) {
ui->mainToolBar->removeAction(act);
m_mainToolBar->removeAction(act);
}
}
void DatabaseWindow::addPage(PluginContentWidget* page, QString caption)
{
ui->tabWidget->addTab(page, caption);
ui->tabWidget->setCurrentWidget(page);
m_tabWidget->addTab(page, caption);
m_tabWidget->setCurrentWidget(page);
//addToolBarButtonsForPage(page);
}
@ -447,7 +478,7 @@ void DatabaseWindow::on_tabWidget_currentChanged(int index)
// add buttons of new page
PluginContentWidget * page = nullptr;
if (index >= 0) {
QWidget *widget = ui->tabWidget->widget(index);
QWidget *widget = m_tabWidget->widget(index);
page = dynamic_cast<PluginContentWidget*>(widget);
if (page) {
addToolBarButtonsForPage(page);
@ -467,14 +498,14 @@ void DatabaseWindow::on_actionGenerate_code_triggered()
void DatabaseWindow::setTabCaptionForWidget(QWidget *widget, const QString &caption, const QString &hint)
{
auto index = ui->tabWidget->indexOf(widget);
ui->tabWidget->setTabText(index, caption);
ui->tabWidget->setTabToolTip(index, hint);
auto index = m_tabWidget->indexOf(widget);
m_tabWidget->setTabText(index, caption);
m_tabWidget->setTabToolTip(index, hint);
}
void DatabaseWindow::setTabIcon(QWidget *widget, const QString &iconname)
{
auto index = ui->tabWidget->indexOf(widget);
auto index = m_tabWidget->indexOf(widget);
auto n = ":/icons/16x16/" + iconname;
ui->tabWidget->setTabIcon(index, QIcon(n));
m_tabWidget->setTabIcon(index, QIcon(n));
}