init
This commit is contained in:
454
main/qc_applicationwindow.h
Normal file
454
main/qc_applicationwindow.h
Normal file
@@ -0,0 +1,454 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** This file is part of the LibreCAD project, a 2D CAD program
|
||||
**
|
||||
** Copyright (C) 2010 R. van Twisk (librecad@rvt.dds.nl)
|
||||
** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
|
||||
**
|
||||
**
|
||||
** This file may be distributed and/or modified under the terms of the
|
||||
** GNU General Public License version 2 as published by the Free Software
|
||||
** Foundation and appearing in the file gpl-2.0.txt included in the
|
||||
** packaging of this file.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program; if not, write to the Free Software
|
||||
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
**
|
||||
** This copyright notice MUST APPEAR in all copies of the script!
|
||||
**
|
||||
**********************************************************************/
|
||||
|
||||
// Changes: https://github.com/LibreCAD/LibreCAD/commits/master/librecad/src/main/qc_applicationwindow.h
|
||||
|
||||
#ifndef QC_APPLICATIONWINDOW_H
|
||||
#define QC_APPLICATIONWINDOW_H
|
||||
|
||||
#include "mainwindowx.h"
|
||||
#include "rs_pen.h"
|
||||
#include "rs_snapper.h"
|
||||
#include <QMap>
|
||||
#include "dd_motor_test_dc.h"
|
||||
#include "devicecontrolpaneldcwidget.h"
|
||||
#include "devicectluserdcwidget.h"
|
||||
#include "devicestateuserdcwidget.h"
|
||||
#include "devicesysteminfodcwidget.h"
|
||||
#include "dmplot.h"
|
||||
#include "cameradcwidget.h"
|
||||
#include "devicestateinfodcwidget.h"
|
||||
#include "devicesetdcwidget.h"
|
||||
#include "devicealarmdcwidget.h"
|
||||
#include "devicesysteminfodcwidget.h"
|
||||
|
||||
class QMdiArea;
|
||||
class QMdiSubWindow;
|
||||
class QC_MDIWindow;
|
||||
class QG_LibraryWidget;
|
||||
class QG_CadToolBar;
|
||||
class QG_SnapToolBar;
|
||||
class QC_DialogFactory;
|
||||
class QG_LayerWidget;
|
||||
class QG_BlockWidget;
|
||||
class QG_CommandWidget;
|
||||
class QG_CoordinateWidget;
|
||||
class QG_MouseWidget;
|
||||
class QG_SelectionWidget;
|
||||
class QG_RecentFiles;
|
||||
class QG_PenToolBar;
|
||||
class QC_PluginInterface;
|
||||
class QG_ActiveLayerName;
|
||||
class LC_SimpleTests;
|
||||
class LC_CustomToolbar;
|
||||
class QG_ActionHandler;
|
||||
class RS_GraphicView;
|
||||
class RS_Document;
|
||||
class TwoStackedLabels;
|
||||
class LC_ActionGroupManager;
|
||||
class LC_PenWizard;
|
||||
|
||||
|
||||
struct DockAreas
|
||||
{
|
||||
QAction* left {nullptr};
|
||||
QAction* right {nullptr};
|
||||
QAction* top {nullptr};
|
||||
QAction* bottom {nullptr};
|
||||
QAction* floating {nullptr};
|
||||
};
|
||||
|
||||
/**
|
||||
* Main application window. Hold together document, view and controls.
|
||||
*
|
||||
* @author Andrew Mustun
|
||||
*/
|
||||
class QC_ApplicationWindow: public MainWindowX
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QC_ApplicationWindow();
|
||||
~QC_ApplicationWindow();
|
||||
|
||||
void initSettings();
|
||||
void storeSettings();
|
||||
|
||||
bool queryExit(bool force);
|
||||
|
||||
/** Catch hotkey for giving focus to command line. */
|
||||
virtual void keyPressEvent(QKeyEvent* e) override;
|
||||
void setRedoEnable(bool enable);
|
||||
void setUndoEnable(bool enable);
|
||||
bool loadStyleSheet(QString path);
|
||||
|
||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||
|
||||
QMap<QString, QAction*> a_map;
|
||||
LC_ActionGroupManager* ag_manager {nullptr};
|
||||
|
||||
|
||||
DeviceStateInfoDCWidget* deviceStateInfoDCWidget{nullptr};
|
||||
//dd_motor_test_dc_widget* pDd_motor_test_dc_widget{nullptr};
|
||||
DeviceControlPanelDCWidget* deviceControlPanelDCWidget{nullptr};
|
||||
//DeviceCtlUserDCWidget * devicectluserDCWidget{nullptr};
|
||||
//DeviceStateUserDCWidget * devicestateuserDCWidget{nullptr};
|
||||
DeviceAlarmDCWidget* deviceAlarmDCWidget{nullptr};
|
||||
DMPlot* dmPlot{nullptr};
|
||||
CameraDCWidget* cameraDCWidget{nullptr};
|
||||
DeviceSetDCWidget* deviceSetDCWidget{nullptr};
|
||||
DeviceSystemInfoDCWidget* deviceSystemInfoDCWidget{nullptr};
|
||||
|
||||
public slots:
|
||||
void relayAction(QAction* q_action);
|
||||
void slotFocus();
|
||||
void slotBack();
|
||||
void slotKillAllActions();
|
||||
void slotEnter();
|
||||
void slotFocusCommandLine();
|
||||
void slotError(const QString& msg);
|
||||
|
||||
void slotWindowActivated(int);
|
||||
void slotWindowActivated(QMdiSubWindow* w);
|
||||
void slotWindowsMenuAboutToShow();
|
||||
void slotWindowsMenuActivated(bool);
|
||||
void slotCascade();
|
||||
void slotTile();
|
||||
void slotTileHorizontal();
|
||||
void slotTileVertical();
|
||||
void slotSetMaximized();
|
||||
|
||||
void slotTabShapeRounded();
|
||||
void slotTabShapeTriangular();
|
||||
void slotTabPositionNorth();
|
||||
void slotTabPositionSouth();
|
||||
void slotTabPositionEast();
|
||||
void slotTabPositionWest();
|
||||
|
||||
void slotToggleTab();
|
||||
void slotZoomAuto();
|
||||
|
||||
void slotPenChanged(RS_Pen p);
|
||||
void slotSnapsChanged(RS_SnapMode s);
|
||||
void slotEnableActions(bool enable);
|
||||
|
||||
/** generates a new document for a graphic. */
|
||||
QC_MDIWindow* slotFileNew(RS_Document* doc=nullptr);
|
||||
/** generates a new document based in predefined template */
|
||||
void slotFileNewNew();
|
||||
/** generates a new document based in selected template */
|
||||
void slotFileNewTemplate();
|
||||
/** opens a document */
|
||||
void slotFileOpen();
|
||||
|
||||
/**
|
||||
* opens the given file.
|
||||
*/
|
||||
void slotFileOpen(const QString& fileName, RS2::FormatType type);
|
||||
void slotFileOpen(const QString& fileName); // Assume Unknown type
|
||||
void slotFileOpenRecent(QAction* action);
|
||||
/** saves a document */
|
||||
void slotFileSave();
|
||||
/** saves a document under a different filename*/
|
||||
void slotFileSaveAs();
|
||||
/** saves all open documents; return false == operation cancelled **/
|
||||
bool slotFileSaveAll();
|
||||
/** auto-save document */
|
||||
void slotFileAutoSave();
|
||||
/** exports the document as bitmap */
|
||||
void slotFileExport();
|
||||
bool slotFileExport(const QString& name,
|
||||
const QString& format,
|
||||
QSize size,
|
||||
QSize borders,
|
||||
bool black,
|
||||
bool bw=true);
|
||||
/** closing the current file */
|
||||
void slotFileClosing(QC_MDIWindow*);
|
||||
/** close all files; return false == operation cancelled */
|
||||
bool slotFileCloseAll();
|
||||
/** prints the current file */
|
||||
void slotFilePrint(bool printPDF=false);
|
||||
void slotFilePrintPDF();
|
||||
/** shows print preview of the current file */
|
||||
void slotFilePrintPreview(bool on);
|
||||
/** exits the application */
|
||||
void slotFileQuit();
|
||||
|
||||
/** toggle the grid */
|
||||
void slotViewGrid(bool toggle);
|
||||
/** toggle the draft mode */
|
||||
void slotViewDraft(bool toggle);
|
||||
/** toggle the statusbar */
|
||||
void slotViewStatusBar(bool toggle);
|
||||
|
||||
void slotOptionsGeneral();
|
||||
|
||||
void slotImportBlock();
|
||||
|
||||
/** shows an about dlg*/
|
||||
void showAboutWindow();
|
||||
|
||||
/**
|
||||
* @brief slotUpdateActiveLayer
|
||||
* update layer name when active layer changed
|
||||
*/
|
||||
void slotUpdateActiveLayer();
|
||||
void execPlug();
|
||||
|
||||
void invokeLinkList();
|
||||
|
||||
void toggleFullscreen(bool checked);
|
||||
|
||||
void setPreviousZoomEnable(bool enable);
|
||||
|
||||
void hideOptions(QC_MDIWindow*);
|
||||
|
||||
void widgetOptionsDialog();
|
||||
|
||||
void modifyCommandTitleBar(Qt::DockWidgetArea area);
|
||||
void reloadStyleSheet();
|
||||
|
||||
void updateGridStatus(const QString&);
|
||||
|
||||
void showDeviceOptions();
|
||||
|
||||
void updateDevice(QString);
|
||||
|
||||
void invokeMenuCreator();
|
||||
void invokeToolbarCreator();
|
||||
void createToolbar(const QString& toolbar_name);
|
||||
void destroyToolbar(const QString& toolbar_name);
|
||||
void destroyMenu(const QString& activator);
|
||||
void unassignMenu(const QString& activator, const QString& menu_name);
|
||||
void assignMenu(const QString& activator, const QString& menu_name);
|
||||
void invokeMenuAssigner(const QString& menu_name);
|
||||
void updateMenu(const QString& menu_name);
|
||||
|
||||
void invokeLicenseWindow();
|
||||
|
||||
|
||||
signals:
|
||||
void gridChanged(bool on);
|
||||
void draftChanged(bool on);
|
||||
void printPreviewChanged(bool on);
|
||||
void windowsChanged(bool windowsLeft);
|
||||
|
||||
public:
|
||||
/**
|
||||
* @return Pointer to application window.
|
||||
*/
|
||||
static QC_ApplicationWindow* getAppWindow() {
|
||||
return appWindow;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Pointer to MdiArea.
|
||||
*/
|
||||
QMdiArea const* getMdiArea() const;
|
||||
QMdiArea* getMdiArea();
|
||||
|
||||
/**
|
||||
* @return Pointer to the currently active MDI Window or nullptr if no
|
||||
* MDI Window is active.
|
||||
*/
|
||||
const QC_MDIWindow* getMDIWindow() const;
|
||||
QC_MDIWindow* getMDIWindow();
|
||||
|
||||
/**
|
||||
* Implementation from RS_MainWindowInterface (and QS_ScripterHostInterface).
|
||||
*
|
||||
* @return Pointer to the graphic view of the currently active document
|
||||
* window or nullptr if no window is available.
|
||||
*/
|
||||
const RS_GraphicView* getGraphicView() const;
|
||||
RS_GraphicView* getGraphicView();
|
||||
|
||||
/**
|
||||
* Implementation from RS_MainWindowInterface (and QS_ScripterHostInterface).
|
||||
*
|
||||
* @return Pointer to the graphic document of the currently active document
|
||||
* window or nullptr if no window is available.
|
||||
*/
|
||||
const RS_Document* getDocument() const;
|
||||
RS_Document* getDocument();
|
||||
|
||||
/**
|
||||
* Creates a new document. Implementation from RS_MainWindowInterface.
|
||||
*/
|
||||
void createNewDocument(const QString& fileName = QString(), RS_Document* doc=nullptr);
|
||||
|
||||
void redrawAll();
|
||||
void updateGrids();
|
||||
|
||||
QG_BlockWidget* getBlockWidget(void)
|
||||
{
|
||||
return blockWidget;
|
||||
}
|
||||
|
||||
QG_SnapToolBar* getSnapToolBar(void)
|
||||
{
|
||||
return snapToolBar;
|
||||
}
|
||||
|
||||
QG_SnapToolBar const* getSnapToolBar(void) const
|
||||
{
|
||||
return snapToolBar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find opened window for specified document.
|
||||
*/
|
||||
QC_MDIWindow* getWindowWithDoc(const RS_Document* doc);
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent*) override;
|
||||
//! \{ accept drop files to open
|
||||
virtual void dropEvent(QDropEvent* e) override;
|
||||
virtual void dragEnterEvent(QDragEnterEvent * event) override;
|
||||
void changeEvent(QEvent* event) override;
|
||||
//! \}
|
||||
|
||||
private:
|
||||
|
||||
QMenu* createPopupMenu() override;
|
||||
QString format_filename_caption(const QString &qstring_in);
|
||||
/** Helper function for Menu file -> New & New.... */
|
||||
bool slotFileNewHelper(QString fileName, QC_MDIWindow* w = nullptr);
|
||||
// more helpers
|
||||
void doArrangeWindows(RS2::SubWindowMode mode, bool actuallyDont = false);
|
||||
void setTabLayout(RS2::TabShape s, RS2::TabPosition p);
|
||||
bool doSave(QC_MDIWindow* w, bool forceSaveAs = false);
|
||||
void doClose(QC_MDIWindow* w, bool activateNext = true);
|
||||
void doActivate(QMdiSubWindow* w);
|
||||
int showCloseDialog(QC_MDIWindow* w, bool showSaveAll = false);
|
||||
void enableFileActions(QC_MDIWindow* w);
|
||||
|
||||
/**
|
||||
* @brief updateWindowTitle, for draft mode, add "Draft Mode" to window title
|
||||
* @param w, pointer to window widget
|
||||
*/
|
||||
void updateWindowTitle(QWidget* w);
|
||||
|
||||
//Plugin support
|
||||
void loadPlugins();
|
||||
QMenu *findMenu(const QString &searchMenu, const QObjectList thisMenuList, const QString& currentEntry);
|
||||
|
||||
#ifdef LC_DEBUGGING
|
||||
LC_SimpleTests* m_pSimpleTest {nullptr};
|
||||
#endif
|
||||
|
||||
/** Pointer to the application window (this). */
|
||||
static QC_ApplicationWindow* appWindow;
|
||||
QTimer *autosaveTimer {nullptr};
|
||||
|
||||
QG_ActionHandler* actionHandler {nullptr};
|
||||
|
||||
/** MdiArea for MDI */
|
||||
QMdiArea* mdiAreaCAD {nullptr};
|
||||
QMdiSubWindow* activedMdiSubWindow {nullptr};
|
||||
QMdiSubWindow* current_subwindow {nullptr};
|
||||
|
||||
|
||||
/** Dialog factory */
|
||||
QC_DialogFactory* dialogFactory {nullptr};
|
||||
|
||||
/** Recent files list */
|
||||
QG_RecentFiles* recentFiles {nullptr};
|
||||
|
||||
// --- Dockwidgets ---
|
||||
//! toggle actions for the dock areas
|
||||
DockAreas dock_areas;
|
||||
|
||||
/** Layer list widget */
|
||||
QG_LayerWidget* layerWidget {nullptr};
|
||||
/** Block list widget */
|
||||
QG_BlockWidget* blockWidget {nullptr};
|
||||
/** Library browser widget */
|
||||
QG_LibraryWidget* libraryWidget {nullptr};
|
||||
/** Command line */
|
||||
QG_CommandWidget* commandWidget {nullptr};
|
||||
|
||||
LC_PenWizard* pen_wiz {nullptr};
|
||||
|
||||
|
||||
// --- Statusbar ---
|
||||
/** Coordinate widget */
|
||||
QG_CoordinateWidget* coordinateWidget {nullptr};
|
||||
/** Mouse widget */
|
||||
QG_MouseWidget* mouseWidget {nullptr};
|
||||
/** Selection Status */
|
||||
QG_SelectionWidget* selectionWidget {nullptr};
|
||||
QG_ActiveLayerName* m_pActiveLayerName {nullptr};
|
||||
TwoStackedLabels* grid_status {nullptr};
|
||||
|
||||
|
||||
// --- Menus ---
|
||||
QMenu* windowsMenu {nullptr};
|
||||
QMenu* scriptMenu {nullptr};
|
||||
QMenu* helpMenu {nullptr};
|
||||
QMenu* testMenu {nullptr};
|
||||
QMenu* file_menu {nullptr};
|
||||
|
||||
// --- Toolbars ---
|
||||
QG_SnapToolBar* snapToolBar {nullptr};
|
||||
QG_PenToolBar* penToolBar {nullptr}; //!< for selecting the current pen
|
||||
QToolBar* optionWidget {nullptr}; //!< for individual tool options
|
||||
|
||||
// --- Actions ---
|
||||
QAction* previousZoom {nullptr};
|
||||
QAction* undoButton {nullptr};
|
||||
QAction* redoButton {nullptr};
|
||||
|
||||
QAction* scriptOpenIDE {nullptr};
|
||||
QAction* scriptRun {nullptr};
|
||||
QAction* helpAboutApp {nullptr};
|
||||
|
||||
// --- Flags ---
|
||||
bool previousZoomEnable{false};
|
||||
bool undoEnable{false};
|
||||
bool redoEnable{false};
|
||||
|
||||
// --- Lists ---
|
||||
QList<QC_PluginInterface*> loadedPlugins;
|
||||
QList<QAction*> toolbar_view_actions;
|
||||
QList<QAction*> dockwidget_view_actions;
|
||||
QList<QC_MDIWindow*> window_list;
|
||||
QList<QAction*> recentFilesAction;
|
||||
|
||||
QStringList openedFiles;
|
||||
|
||||
// --- Strings ---
|
||||
QString style_sheet_path;
|
||||
|
||||
};
|
||||
|
||||
#ifdef _WINDOWS
|
||||
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user