src/gui.h

changeset 629
b75c6cce02e2
parent 628
6b13e4c2e97b
child 630
42ec68fcad9e
child 675
450827da2376
--- a/src/gui.h	Mon Jan 20 23:44:22 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +0,0 @@
-/*
- *  LDForge: LDraw parts authoring CAD
- *  Copyright (C) 2013, 2014 Santeri Piippo
- *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  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, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef LDFORGE_GUI_H
-#define LDFORGE_GUI_H
-
-#include <QMainWindow>
-#include <QAction>
-#include <QListWidget>
-#include <QRadioButton>
-#include "config.h"
-#include "ldtypes.h"
-#include "ui_ldforge.h"
-
-class MessageManager;
-class ForgeWindow;
-class LDColor;
-class QToolButton;
-class QDialogButtonBox;
-class GLRenderer;
-class QComboBox;
-class QProgressBar;
-class Ui_LDForgeUI;
-
-// Stuff for dialogs
-#define IMPLEMENT_DIALOG_BUTTONS \
-	bbx_buttons = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel); \
-	connect (bbx_buttons, SIGNAL (accepted()), this, SLOT (accept())); \
-	connect (bbx_buttons, SIGNAL (rejected()), this, SLOT (reject())); \
-
-// =============================================================================
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-// =============================================================================
-#define DEFINE_ACTION(NAME, DEFSHORTCUT) \
-	cfg (KeySequence, key_action##NAME, DEFSHORTCUT); \
-	void ForgeWindow::slot_action##NAME()
-
-// Convenience macros for key sequences.
-#define KEY(N) (Qt::Key_##N)
-#define CTRL(N) (Qt::CTRL | Qt::Key_##N)
-#define SHIFT(N) (Qt::SHIFT | Qt::Key_##N)
-#define CTRL_SHIFT(N) (Qt::CTRL | Qt::SHIFT | Qt::Key_##N)
-
-// =============================================================================
-class LDQuickColor
-{
-	PROPERTY (public,	LDColor*,		Color,		NO_OPS,	STOCK_WRITE)
-	PROPERTY (public,	QToolButton*,	ToolButton,	NO_OPS,	STOCK_WRITE)
-
-	public:
-		LDQuickColor (LDColor* color, QToolButton* toolButton);
-		bool isSeparator() const;
-
-		static LDQuickColor getSeparator();
-};
-
-// =============================================================================
-// ObjectList
-//
-// Object list class for ForgeWindow
-// =============================================================================
-class ObjectList : public QListWidget
-{
-	Q_OBJECT
-
-	protected:
-		void contextMenuEvent (QContextMenuEvent* ev);
-};
-
-// =============================================================================
-// ForgeWindow
-//
-// The one main GUI class. Hosts the renderer, object list, message log. Contains
-// slot_action, which is what all actions connect to. Manages menus and toolbars.
-// Large and in charge.
-// =============================================================================
-class ForgeWindow : public QMainWindow
-{
-	Q_OBJECT
-
-	public:
-		ForgeWindow();
-		void buildObjList();
-		void updateTitle();
-		void doFullRefresh();
-		void refresh();
-		int getInsertionPoint();
-		void updateToolBars();
-		void updateRecentFilesMenu();
-		void updateSelection();
-		void updateGridToolBar();
-		void updateEditModeActions();
-		void updateDocumentList();
-		void updateDocumentListItem (LDDocument* f);
-		int getSelectedColor();
-		LDObject::Type getUniformSelectedType();
-		void scrollToSelection();
-		void spawnContextMenu (const QPoint pos);
-		void deleteObjects (LDObjectList objs);
-		int deleteSelection();
-		void deleteByColor (const int colnum);
-		bool save (LDDocument* f, bool saveAs);
-		void updateActions();
-
-		inline GLRenderer* R()
-		{
-			return m_renderer;
-		}
-
-		inline void setQuickColors (QList<LDQuickColor>& colors)
-		{
-			m_quickColors = colors;
-		}
-
-		void addMessage (QString msg);
-		void refreshObjectList();
-		void updateActionShortcuts();
-		KeySequenceConfig* shortcutForAction (QAction* act);
-		void endAction();
-
-	public slots:
-		void changeCurrentFile();
-		void slot_action();
-		void slot_actionNew();
-		void slot_actionNewFile();
-		void slot_actionOpen();
-		void slot_actionDownloadFrom();
-		void slot_actionSave();
-		void slot_actionSaveAs();
-		void slot_actionSaveAll();
-		void slot_actionClose();
-		void slot_actionCloseAll();
-		void slot_actionInsertFrom();
-		void slot_actionExportTo();
-		void slot_actionSettings();
-		void slot_actionSetLDrawPath();
-		void slot_actionScanPrimitives();
-		void slot_actionExit();
-		void slot_actionResetView();
-		void slot_actionAxes();
-		void slot_actionWireframe();
-		void slot_actionBFCView();
-		void slot_actionSetOverlay();
-		void slot_actionClearOverlay();
-		void slot_actionScreenshot();
-		void slot_actionInsertRaw();
-		void slot_actionNewSubfile();
-		void slot_actionNewLine();
-		void slot_actionNewTriangle();
-		void slot_actionNewQuad();
-		void slot_actionNewCLine();
-		void slot_actionNewComment();
-		void slot_actionNewBFC();
-		void slot_actionNewVertex();
-		void slot_actionUndo();
-		void slot_actionRedo();
-		void slot_actionCut();
-		void slot_actionCopy();
-		void slot_actionPaste();
-		void slot_actionDelete();
-		void slot_actionSelectAll();
-		void slot_actionSelectByColor();
-		void slot_actionSelectByType();
-		void slot_actionModeDraw();
-		void slot_actionModeSelect();
-		void slot_actionModeCircle();
-		void slot_actionSetDrawDepth();
-		void slot_actionSetColor();
-		void slot_actionAutocolor();
-		void slot_actionUncolorize();
-		void slot_actionInline();
-		void slot_actionInlineDeep();
-		void slot_actionInvert();
-		void slot_actionMakePrimitive();
-		void slot_actionSplitQuads();
-		void slot_actionEditRaw();
-		void slot_actionBorders();
-		void slot_actionCornerVerts();
-		void slot_actionRoundCoordinates();
-		void slot_actionVisibilityHide();
-		void slot_actionVisibilityReveal();
-		void slot_actionVisibilityToggle();
-		void slot_actionReplaceCoords();
-		void slot_actionFlip();
-		void slot_actionDemote();
-		void slot_actionYtruder();
-		void slot_actionRectifier();
-		void slot_actionIntersector();
-		void slot_actionIsecalc();
-		void slot_actionCoverer();
-		void slot_actionEdger2();
-		void slot_actionHelp();
-		void slot_actionAbout();
-		void slot_actionAboutQt();
-		void slot_actionGridCoarse();
-		void slot_actionGridMedium();
-		void slot_actionGridFine();
-		void slot_actionEdit();
-		void slot_actionMoveUp();
-		void slot_actionMoveDown();
-		void slot_actionMoveXNeg();
-		void slot_actionMoveXPos();
-		void slot_actionMoveYNeg();
-		void slot_actionMoveYPos();
-		void slot_actionMoveZNeg();
-		void slot_actionMoveZPos();
-		void slot_actionRotateXNeg();
-		void slot_actionRotateXPos();
-		void slot_actionRotateYNeg();
-		void slot_actionRotateYPos();
-		void slot_actionRotateZNeg();
-		void slot_actionRotateZPos();
-		void slot_actionRotationPoint();
-		void slot_actionAddHistoryLine();
-		void slot_actionJumpTo();
-		void slot_actionSubfileSelection();
-		void slot_actionDrawAngles();
-
-	protected:
-		void closeEvent (QCloseEvent* ev);
-
-	private:
-		GLRenderer* m_renderer;
-		LDObjectList m_sel;
-		QList<LDQuickColor> m_quickColors;
-		QList<QToolButton*> m_colorButtons;
-		QList<QAction*> m_recentFiles;
-		MessageManager* m_msglog;
-		Ui_LDForgeUI* ui;
-
-	private slots:
-		void slot_selectionChanged();
-		void slot_recentFile();
-		void slot_quickColor();
-		void slot_lastSecondCleanup();
-		void slot_editObject (QListWidgetItem* listitem);
-};
-
-// -----------------------------------------------------------------------------
-// Pointer to the instance of ForgeWindow.
-extern ForgeWindow* g_win;
-
-// -----------------------------------------------------------------------------
-// Other GUI-related stuff not directly part of ForgeWindow:
-QPixmap getIcon (QString iconName); // Get an icon from the resource dir
-QList<LDQuickColor> quickColorsFromConfig(); // Make a list of quick colors based on config
-bool confirm (QString title, QString msg); // Generic confirm prompt
-bool confirm (QString msg); // Generic confirm prompt
-void critical (QString msg); // Generic error prompt
-QIcon makeColorIcon (LDColor* colinfo, const int size); // Makes an icon for the given color
-void makeColorComboBox (QComboBox* box); // Fills the given combo-box with color information
-QImage imageFromScreencap (uchar* data, int w, int h);
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-// Takes in pairs of radio buttons and respective values and returns the value of
-// the first found radio button that was checked.
-// =============================================================================
-template<class T>
-T radioSwitch (const T& defval, QList<pair<QRadioButton*, T>> haystack)
-{
-	for (pair<QRadioButton*, const T&> i : haystack)
-		if (i.first->isChecked())
-			return i.second;
-
-	return defval;
-}
-
-// =============================================================================
-// -----------------------------------------------------------------------------
-// Takes in pairs of radio buttons and respective values and checks the first
-// found radio button to have the given value.
-// =============================================================================
-template<class T>
-void radioDefault (const T& expr, QList<pair<QRadioButton*, T>> haystack)
-{
-	for (pair<QRadioButton*, const T&> i : haystack)
-	{
-		if (i.second == expr)
-		{
-			i.first->setChecked (true);
-			return;
-		}
-	}
-}
-
-#endif // LDFORGE_GUI_H

mercurial