diff --git a/pglab/CatalogInspector.cpp b/pglab/CatalogInspector.cpp index 7f63070..3435d08 100644 --- a/pglab/CatalogInspector.cpp +++ b/pglab/CatalogInspector.cpp @@ -1,7 +1,6 @@ #include "CatalogInspector.h" #include "OpenDatabase.h" #include "UserConfiguration.h" -#include "plugin_support/IPluginContentWidgetContext.h" #include "widgets/CatalogFunctionsPage.h" #include "widgets/CatalogSequencesPage.h" #include "widgets/CatalogTablesPage.h" @@ -12,8 +11,8 @@ #include #include -CatalogInspector::CatalogInspector(IPluginContentWidgetContext *context_, PluginModule *module, QWidget *parent) - : PluginContentWidget(context_, module, parent) +CatalogInspector::CatalogInspector(std::shared_ptr open_database, QWidget *parent) + : QWidget(parent) { m_tabWidget = new QTabWidget(this); m_tablesPage = new CatalogTablesPage(this); @@ -27,8 +26,7 @@ CatalogInspector::CatalogInspector(IPluginContentWidgetContext *context_, Plugin m_tabWidget->addTab(m_functionsPage, ""); m_tabWidget->addTab(m_sequencesPage, ""); - auto db = context_->getObject(); - setCatalog(db->catalog()); + setCatalog(open_database->catalog()); retranslateUi(false); } @@ -75,32 +73,5 @@ void CatalogInspector::setNamespaceFilter(NamespaceFilter filter) default: break; } - context()->setCaption(this, caption, hint); +// context()->setCaption(this, caption, hint); } - -void CatalogInspectorModule::init() -{ - registerModuleAction("open", - [this] (IPluginContentWidgetContext* context, - const ModuleActionParameters ¶ms) - { - moduleAction_open(context, params); - }); -} - -void CatalogInspectorModule::moduleAction_open( - IPluginContentWidgetContext* context, - const ModuleActionParameters ¶ms - ) -{ - auto ct = new CatalogInspector(context, this); - context->addContentWidget(ct); - auto nsf = params.at("namespace-filter").toString(); - NamespaceFilter filter = NamespaceFilter::User; - if (nsf == "pg_catalog") filter = NamespaceFilter::PgCatalog; - else if (nsf == "information_schema") filter = NamespaceFilter::InformationSchema; - ct->setNamespaceFilter(filter); -} - -REGISTER_PLUGIN_MODULE_CAT(CatalogInspectorModule, "Catalog inspector tool", - "pglab.catalog-inspector", "database") diff --git a/pglab/CatalogInspector.h b/pglab/CatalogInspector.h index cfa141a..d0ca4dc 100644 --- a/pglab/CatalogInspector.h +++ b/pglab/CatalogInspector.h @@ -4,20 +4,18 @@ #include #include #include "NamespaceFilter.h" -#include "plugin_support/PluginContentWidget.h" -#include "plugin_support/PluginModule.h" class CatalogFunctionsPage; class CatalogSequencesPage; class CatalogTablesPage; +class OpenDatabase; class PgDatabaseCatalog; class QTabWidget; -class CatalogInspector : public PluginContentWidget { +class CatalogInspector : public QWidget { Q_OBJECT public: - explicit CatalogInspector(IPluginContentWidgetContext *context, PluginModule *module, - QWidget *parent = nullptr); + explicit CatalogInspector(std::shared_ptr open_database, QWidget *parent = nullptr); ~CatalogInspector(); void setCatalog(std::shared_ptr cat); @@ -34,17 +32,4 @@ private: private slots: }; -class CatalogInspectorModule: public PluginModule { - Q_OBJECT -public: - using PluginModule::PluginModule; - - void init(); -private slots: - -private: - void moduleAction_open(IPluginContentWidgetContext* context, const ModuleActionParameters ¶ms); -}; - - #endif // TABLESPAGE_H diff --git a/pglab/DatabaseWindow.cpp b/pglab/DatabaseWindow.cpp index 5860711..4f06d4e 100644 --- a/pglab/DatabaseWindow.cpp +++ b/pglab/DatabaseWindow.cpp @@ -13,6 +13,7 @@ #include #include "EditTableWidget.h" +#include "CatalogInspector.h" #include "CodeGenerator.h" #include "QueryTool.h" @@ -98,24 +99,46 @@ void DatabaseWindow::createActions() { QIcon icon; icon.addFile(QString::fromUtf8(":/icons/about.png"), QSize(), QIcon::Normal, QIcon::On); - actionAbout = new QAction(icon, tr("About"), this); + auto action = actionAbout = new QAction(icon, tr("About"), this); + action->setObjectName("actionAbout"); } { QIcon icon; icon.addFile(QString::fromUtf8(":/icons/page_white_delete.png"), QSize(), QIcon::Normal, QIcon::On); auto action = actionClose = new QAction(icon, tr("Close"), this); + action->setObjectName("actionClose"); action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W)); } + { + QIcon icon; + icon.addFile(QString::fromUtf8(":/icons/page_white_add.png"), QSize(), QIcon::Normal, QIcon::On); + auto action = actionInspectInformationSchema = new QAction(icon, tr("Inspect information_schema"), this); + action->setObjectName("actionInspectInformationSchema"); + } + { + QIcon icon; + icon.addFile(QString::fromUtf8(":/icons/page_white_add.png"), QSize(), QIcon::Normal, QIcon::On); + auto action = actionInspectPgCatalog = new QAction(icon, tr("Inspect pg_catalog"), this); + action->setObjectName("actionInspectPgCatalog"); + } + { + QIcon icon; + icon.addFile(QString::fromUtf8(":/icons/page_white_add.png"), QSize(), QIcon::Normal, QIcon::On); + auto action = actionInspectUserSchemas = new QAction(icon, tr("Inspect user schemas"), this); + action->setObjectName("actionInspectUserSchemas"); + } { QIcon icon; icon.addFile(QString::fromUtf8(":/icons/new_query_tab.png"), QSize(), QIcon::Normal, QIcon::On); auto action = actionNewSql = new QAction(icon, tr("New Query"), this); + action->setObjectName("actionNewSql"); action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N)); } { QIcon icon; icon.addFile(QString::fromUtf8(":/icons/folder.png"), QSize(), QIcon::Normal, QIcon::On); auto action = actionOpenSql = new QAction(icon, tr("Open Query"), this); + action->setObjectName("actionOpenSql"); action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O)); } @@ -146,7 +169,6 @@ void DatabaseWindow::createActions() void DatabaseWindow::initMenus() { - // TODO construct menubar auto seperator = new QAction(this); seperator->setSeparator(true); @@ -156,6 +178,9 @@ void DatabaseWindow::initMenus() actionNewSql, actionOpenSql, seperator, + actionInspectUserSchemas, + actionInspectPgCatalog, + actionInspectInformationSchema, seperator, actionClose }); @@ -166,9 +191,6 @@ void DatabaseWindow::initMenus() actionAbout }); - - - setMenuBar(mb); } @@ -181,10 +203,31 @@ void DatabaseWindow::on_actionClose_triggered() void DatabaseWindow::on_actionNewSql_triggered() { auto *ct = new QueryTool(m_database, this); - addPage(ct, ""); + addPage(ct, "query"); ct->newdoc(); } +void DatabaseWindow::on_actionInspectInformationSchema_triggered() +{ + auto ct = new CatalogInspector(m_database, this); + addPage(ct, "information_schema"); + ct->setNamespaceFilter(NamespaceFilter::InformationSchema); +} + +void DatabaseWindow::on_actionInspectPgCatalog_triggered() +{ + auto ct = new CatalogInspector(m_database, this); + addPage(ct, "pg_catalog"); + ct->setNamespaceFilter(NamespaceFilter::PgCatalog); +} + +void DatabaseWindow::on_actionInspectUserSchemas_triggered() +{ + auto ct = new CatalogInspector(m_database, this); + addPage(ct, "Schema"); + ct->setNamespaceFilter(NamespaceFilter::User); +} + void DatabaseWindow::on_actionOpenSql_triggered() { QString home_dir = QStandardPaths::locate(QStandardPaths::HomeLocation, "", QStandardPaths::LocateDirectory); diff --git a/pglab/DatabaseWindow.h b/pglab/DatabaseWindow.h index c01165a..71ee989 100644 --- a/pglab/DatabaseWindow.h +++ b/pglab/DatabaseWindow.h @@ -59,6 +59,9 @@ private: // Standard actions QAction *actionAbout = nullptr; QAction *actionClose = nullptr; + QAction *actionInspectInformationSchema = nullptr; ///< Create or switch to pgcatalog tab + QAction *actionInspectPgCatalog = nullptr; ///< Create or switch to pgcatalog tab + QAction *actionInspectUserSchemas = nullptr; ///< Create or switch to pgcatalog tab QAction *actionNewSql = nullptr; QAction *actionOpenSql = nullptr; @@ -96,6 +99,9 @@ private slots: void on_actionClose_triggered(); void on_actionNewSql_triggered(); + void on_actionInspectInformationSchema_triggered(); + void on_actionInspectPgCatalog_triggered(); + void on_actionInspectUserSchemas_triggered(); void on_actionOpenSql_triggered(); void on_actionAbout_triggered(); void on_actionShow_connection_manager_triggered();