DatabaseWindow has no knowledge more of the existence of QueryTab but user can still create and use them within that window.

This commit is contained in:
eelke 2019-01-05 11:12:47 +01:00
parent fd603a7434
commit d0c4dabe8b
8 changed files with 327 additions and 451 deletions

View file

@ -4,8 +4,7 @@
#include "ASyncDBConnection.h"
#include "ConnectionConfig.h"
#include "OpenDatabase.h"
#include <QLabel>
#include <QLabel>
#include "plugin_support/LMainWindow.h"
#include <QRunnable>
#include <QSocketNotifier>
#include <memory>
@ -18,68 +17,20 @@
#include <QMutex>
#include <QWaitCondition>
#include <QMainWindow>
#include <QFuture>
#include <QFutureWatcher>
//namespace Ui {
// class DatabaseWindow;
//}
namespace Pgsql {
class Connection;
}
class MenuAction;
class QueryTab;
class MasterController;
class QCloseEvent;
class OpenDatabase;
class PgClass;
class PluginContentWidget;
class QTabWidget;
namespace DatabaseWindow_details {
class DatabaseWindowContentContext;
}
class LMainWindow : public QMainWindow {
Q_OBJECT
public:
LMainWindow(QWidget *parent = nullptr);
void initModuleMenus();
void setTabCaptionForWidget(QWidget *widget, const QString &caption, const QString &hint);
void setTabIcon(QWidget *widget, const QString &iconname);
/// Called when a newly created page is added to the QTabWidget
void addPage(PluginContentWidget* page, QString caption);
protected:
QTabWidget *m_tabWidget = nullptr;
QToolBar *m_mainToolBar = nullptr;
// Standard menu's
QMenu *m_fileMenu = nullptr;
// Standard actions
QAction *m_closeAction = nullptr;
DatabaseWindow_details::DatabaseWindowContentContext *m_context;
void addModuleMenuActions();
private:
void createActions();
void addMenuAction(const MenuAction &ma);
private slots:
void actionClose_triggered();
};
/** This is the class for windows that handle tasks for a specific database/catalog
*
@ -102,34 +53,6 @@ private:
std::shared_ptr<OpenDatabase> m_database;
MasterController *m_masterController;
PluginContentWidget *m_previousPage = nullptr; ///< tracks which pages buttons were previously being displayed
// class QLoad : public QueuedBackgroundTask {
// public:
// explicit QLoad(ConnectionConfig config, CompletionFunction on_completion)
// : QueuedBackgroundTask(on_completion)
// , m_config(config)
// {}
// OpenDatabase::OpenDatabaseSPtr GetResult()
// {
// if (hasException()) rethrow();
// return result;
// }
// protected:
// OpenDatabase::OpenDatabaseSPtr result;
// virtual void doRun()
// {
// auto res = OpenDatabase::createOpenDatabase(m_config);
// result = res.get();
// }
// private:
// ConnectionConfig m_config;
// };
// std::shared_ptr<QLoad> loader;
class LoadCatalog: public ControllableTask<OpenDatabase::OpenDatabaseSPtr> {
public:
@ -149,38 +72,17 @@ private:
QFutureWatcher<LoadCatalog::Result> loadWatcher;
QueryTab *GetActiveQueryTab();
void closeEvent(QCloseEvent *event);
void showEvent(QShowEvent *event);
QueryTab *newSqlPage();
void newCreateTablePage();
/// Called when a page is completely removed from the QTabWidget
void removePage(PluginContentWidget *page);
void addToolBarButtonsForPage(PluginContentWidget *page);
void removeToolBarButtonsForPage(PluginContentWidget *page);
//class PageData
private slots:
void catalogLoaded();
void on_actionLoad_SQL_triggered();
void on_actionSave_SQL_triggered();
void on_actionExport_data_triggered();
void on_actionAbout_triggered();
void on_actionSave_SQL_as_triggered();
void on_actionSave_copy_of_SQL_as_triggered();
void on_actionNew_SQL_triggered();
void on_tabWidget_tabCloseRequested(int index);
void on_actionShow_connection_manager_triggered();
void on_actionCopy_triggered();
void on_actionCopy_as_C_string_triggered();
void on_actionCopy_as_raw_Cpp_string_triggered();
void on_tabWidget_currentChanged(int index);
void on_actionGenerate_code_triggered();
};
#endif // MAINWINDOW_H