diff -r c595cfb4791c -r 31540c1f22ea src/gui.h
--- a/src/gui.h Wed Oct 23 13:14:17 2013 +0300
+++ b/src/gui.h Mon Jan 20 15:04:26 2014 +0200
@@ -1,6 +1,6 @@
/*
* LDForge: LDraw parts authoring CAD
- * Copyright (C) 2013 Santeri Piippo
+ * 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
@@ -16,8 +16,8 @@
* along with this program. If not, see .
*/
-#ifndef GUI_H
-#define GUI_H
+#ifndef LDFORGE_GUI_H
+#define LDFORGE_GUI_H
#include
#include
@@ -25,6 +25,7 @@
#include
#include "config.h"
#include "ldtypes.h"
+#include "ui_ldforge.h"
class MessageManager;
class ForgeWindow;
@@ -41,15 +42,13 @@
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_##NAME, DEFSHORTCUT); \
- void actiondef_##NAME()
-
-#define ACTION(N) g_win->action##N()
+ cfg (KeySequence, key_action##NAME, DEFSHORTCUT); \
+ void ForgeWindow::slot_action##NAME()
// Convenience macros for key sequences.
#define KEY(N) (Qt::Key_##N)
@@ -59,8 +58,9 @@
// =============================================================================
class LDQuickColor
-{ PROPERTY (LDColor*, color, setColor)
- PROPERTY (QToolButton*, toolButton, setToolButton)
+{
+ PROPERTY (public, LDColor*, Color, NO_OPS, STOCK_WRITE)
+ PROPERTY (public, QToolButton*, ToolButton, NO_OPS, STOCK_WRITE)
public:
LDQuickColor (LDColor* color, QToolButton* toolButton);
@@ -75,7 +75,8 @@
// Object list class for ForgeWindow
// =============================================================================
class ObjectList : public QListWidget
-{ Q_OBJECT
+{
+ Q_OBJECT
protected:
void contextMenuEvent (QContextMenuEvent* ev);
@@ -89,13 +90,14 @@
// Large and in charge.
// =============================================================================
class ForgeWindow : public QMainWindow
-{ Q_OBJECT
+{
+ Q_OBJECT
public:
ForgeWindow();
void buildObjList();
void updateTitle();
- void fullRefresh();
+ void doFullRefresh();
void refresh();
int getInsertionPoint();
void updateToolBars();
@@ -103,59 +105,144 @@
void updateSelection();
void updateGridToolBar();
void updateEditModeActions();
- void updateFileList();
- void updateFileListItem (LDFile* f);
- short getSelectedColor();
- LDObject::Type uniformSelectedType();
+ void updateDocumentList();
+ void updateDocumentListItem (LDDocument* f);
+ int getSelectedColor();
+ LDObject::Type getUniformSelectedType();
void scrollToSelection();
void spawnContextMenu (const QPoint pos);
- void deleteObjVector (QList< LDObject* > objs);
+ void deleteObjects (LDObjectList objs);
int deleteSelection();
- void deleteByColor (const short int colnum);
- void save (LDFile* f, bool saveAs);
+ void deleteByColor (const int colnum);
+ bool save (LDDocument* f, bool saveAs);
+ void updateActions();
inline GLRenderer* R()
- { return m_renderer;
+ {
+ return m_renderer;
}
inline void setQuickColors (QList& colors)
- { m_quickColors = colors;
+ {
+ m_quickColors = colors;
}
- void setStatusBarText (str text);
- void addMessage (str msg);
- Ui_LDForgeUI* interface() const;
+ void addMessage (QString msg);
void refreshObjectList();
- void beginAction (QAction* act);
+ void updateActionShortcuts();
+ KeySequenceConfig* shortcutForAction (QAction* act);
void endAction();
-#define act(N) QAction* action##N();
-#include "actions.h"
-
public slots:
- void primitiveLoaderStart (int max);
- void primitiveLoaderUpdate (int prog);
- void primitiveLoaderEnd();
+ void changeCurrentFile();
void slot_action();
- void changeCurrentFile();
+ 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;
- QProgressBar* m_primLoaderBar;
- QWidget* m_primLoaderWidget;
- QList m_sel;
+ LDObjectList m_sel;
QList m_quickColors;
QList m_colorButtons;
QList m_recentFiles;
MessageManager* m_msglog;
Ui_LDForgeUI* ui;
- void invokeAction (QAction* act, void (*func)());
-
-
private slots:
void slot_selectionChanged();
void slot_recentFile();
@@ -164,23 +251,19 @@
void slot_editObject (QListWidgetItem* listitem);
};
-#define INVOKE_ACTION(N) actiondef_##N();
-#define act(N) void actiondef_##N();
-#include "actions.h"
-
// -----------------------------------------------------------------------------
// Pointer to the instance of ForgeWindow.
extern ForgeWindow* g_win;
// -----------------------------------------------------------------------------
// Other GUI-related stuff not directly part of ForgeWindow:
-QPixmap getIcon (str iconName); // Get an icon from the resource dir
+QPixmap getIcon (QString iconName); // Get an icon from the resource dir
QList quickColorsFromConfig(); // Make a list of quick colors based on config
-bool confirm (str title, str msg); // Generic confirm prompt
-bool confirm (str msg); // Generic confirm prompt
-void critical (str msg); // Generic error prompt
+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 makeColorSelector (QComboBox* box); // Fills the given combo-box with color information
+void makeColorComboBox (QComboBox* box); // Fills the given combo-box with color information
QImage imageFromScreencap (uchar* data, int w, int h);
// =============================================================================
@@ -188,8 +271,10 @@
// Takes in pairs of radio buttons and respective values and returns the value of
// the first found radio button that was checked.
// =============================================================================
-template T radioSwitch (const T& defval, QList> haystack)
-{ for (pair i : haystack)
+template
+T radioSwitch (const T& defval, QList> haystack)
+{
+ for (pair i : haystack)
if (i.first->isChecked())
return i.second;
@@ -201,13 +286,17 @@
// Takes in pairs of radio buttons and respective values and checks the first
// found radio button to have the given value.
// =============================================================================
-template void radioDefault (const T& expr, QList> haystack)
-{ for (pair i : haystack)
- { if (i.second == expr)
- { i.first->setChecked (true);
+template
+void radioDefault (const T& expr, QList> haystack)
+{
+ for (pair i : haystack)
+ {
+ if (i.second == expr)
+ {
+ i.first->setChecked (true);
return;
}
}
}
-#endif // GUI_H
+#endif // LDFORGE_GUI_H