Thu, 03 Oct 2013 18:07:06 +0300
Added a new editing mode for drawing circles.
changelog.txt | file | annotate | diff | comparison | revisions | |
icons/mode-circle.png | file | annotate | diff | comparison | revisions | |
ldforge.qrc | file | annotate | diff | comparison | revisions | |
src/actions.h | file | annotate | diff | comparison | revisions | |
src/gldraw.cpp | file | annotate | diff | comparison | revisions | |
src/gldraw.h | file | annotate | diff | comparison | revisions | |
src/gui.cpp | file | annotate | diff | comparison | revisions | |
src/gui_actions.cpp | file | annotate | diff | comparison | revisions | |
ui/ldforge.ui | file | annotate | diff | comparison | revisions |
--- a/changelog.txt Sun Sep 22 23:27:07 2013 +0300 +++ b/changelog.txt Thu Oct 03 18:07:06 2013 +0300 @@ -9,6 +9,7 @@ - Converted the configuration code to use QSettings, in practice this means the configuration file moved to the registry under Windows and into ~/.config/LDForge under Linux. Unfortunately this means settings get lost during transition from version 0.2 and 0.3. +- Added a new editing mode for drawing circles. - Corrections to the primitive generator: - Fixed: "Hi-Res" was not prepended to the names of 48/ primitives. - Fixed: Checking the Hi-Res option would not allow segment values over 16.
--- a/ldforge.qrc Sun Sep 22 23:27:07 2013 +0300 +++ b/ldforge.qrc Thu Oct 03 18:07:06 2013 +0300 @@ -66,6 +66,7 @@ <file>./icons/line.png</file> <file>./icons/mail.png</file> <file>./icons/make-borders.png</file> + <file>./icons/mode-circle.png</file> <file>./icons/mode-draw.png</file> <file>./icons/mode-select.png</file> <file>./icons/move-x-neg.png</file>
--- a/src/actions.h Sun Sep 22 23:27:07 2013 +0300 +++ b/src/actions.h Thu Oct 03 18:07:06 2013 +0300 @@ -58,6 +58,7 @@ act (SelectByType) act (ModeDraw) act (ModeSelect) +act (ModeCircle) act (SetDrawDepth) act (SetColor) act (Autocolor)
--- a/src/gldraw.cpp Sun Sep 22 23:27:07 2013 +0300 +++ b/src/gldraw.cpp Thu Oct 03 18:07:06 2013 +0300 @@ -50,6 +50,12 @@ {{ 0, -1, 0 }, Z, Y, false, true }, }; +static const matrix g_circleDrawTransforms[3] = { + { 2, 0, 0, 0, 1, 0, 0, 0, 2 }, + { 2, 0, 0, 0, 0, 2, 0, 1, 0 }, + { 0, 1, 0, 2, 0, 0, 0, 0, 2 }, +}; + cfg (String, gl_bgcolor, "#CCCCD9"); cfg (String, gl_maincolor, "#707078"); cfg (Float, gl_maincolor_alpha, 1.0); @@ -532,7 +538,6 @@ // If we're drawing, draw the vertices onto the screen. if (editMode() == Draw) { - const short blipsize = 8; int numverts = 4; if (!m_rectdraw) @@ -579,21 +584,49 @@ paint.drawPolygon (poly, numverts); // Draw vertex blips - pen = m_thinBorderPen; - pen.setWidth (1); - paint.setPen (pen); - paint.setBrush (QColor (64, 192, 0)); - - for (ushort i = 0; i < numverts; ++i) { + for (int i = 0; i < numverts; ++i) { QPoint& blip = poly[i]; - paint.drawEllipse (blip.x() - blipsize / 2, blip.y() - blipsize / 2, - blipsize, blipsize); - + drawBlip (paint, blip); + // Draw their coordinates paint.drawText (blip.x(), blip.y() - 8, polyverts[i].stringRep (true)); } } } + elif (editMode() == CircleMode) + { // If we have not specified the center point of the circle yet, preview it on the screen. + if (m_drawedVerts.size() == 0) + drawBlip (paint, coordconv3_2 (m_hoverpos)); + else + { QVector<vertex> verts; + const double dist = circleDrawDist(); + const int segs = lores; + const double angleUnit = (2 * pi) / segs; + Axis relX, relY; + getRelativeAxes (relX, relY); + + for (int i = 0; i < segs; ++i) + { vertex v = g_origin; + v[relX] = m_drawedVerts[0][relX] + (cos (i * angleUnit) * dist); + v[relY] = m_drawedVerts[0][relY] + (sin (i * angleUnit) * dist); + verts << v; + } + + QVector<QPoint> points; + for (const vertex& v : verts) + { QPoint point = coordconv3_2 (v); + drawBlip (paint, point); + points << point; + } + + QPen pen = m_thinBorderPen; + pen.setWidth (2); + pen.setColor (luma (m_bgcolor) < 40 ? Qt::white : Qt::black); + paint.setPen (pen); + paint.setBrush (Qt::NoBrush); + paint.drawPolygon (QPolygon (points)); + } + } } // Camera icons @@ -668,6 +701,17 @@ // ============================================================================= // ----------------------------------------------------------------------------- +void GLRenderer::drawBlip (QPainter& paint, QPoint pos) const +{ QPen pen = m_thinBorderPen; + const int blipsize = 8; + pen.setWidth (1); + paint.setPen (pen); + paint.setBrush (QColor (64, 192, 0)); + paint.drawEllipse (pos.x() - blipsize / 2, pos.y() - blipsize / 2, blipsize, blipsize); +} + +// ============================================================================= +// ----------------------------------------------------------------------------- QColor GLRenderer::getTextPen () const { return m_darkbg ? Qt::white : Qt::black; } @@ -855,7 +899,16 @@ addDrawnVertex (m_hoverpos); break; - + + case CircleMode: + if (m_drawedVerts.size() == 2) + { endDraw (true); + return; + } + + addDrawnVertex (m_hoverpos); + break; + case Select: if (!drawOnly()) { if (m_totalmove < 10) @@ -898,7 +951,7 @@ closest = pos3d; valid = true; - /* If it's only 4 pixels away, I think we found our vertex now. */ + // If it's only 4 pixels away, I think we found our vertex now. if (distsq <= 16.0f) // 4.0f ** 2 break; } @@ -1175,6 +1228,7 @@ break; case Draw: + case CircleMode: // Cannot draw into the free camera - use top instead. if (m_camera == Free) setCamera (Top); @@ -1222,46 +1276,75 @@ // Clean the selection and create the object List<vertex>& verts = m_drawedVerts; LDObject* obj = null; - - if (m_rectdraw) { - LDQuad* quad = new LDQuad; - - // Copy the vertices from m_rectverts - updateRectVerts(); - - for (int i = 0; i < quad->vertices(); ++i) - quad->setVertex (i, m_rectverts[i]); - - quad->setColor (maincolor); - obj = quad; - } else { - switch (verts.size()) { - case 1: - // 1 vertex - add a vertex object - obj = new LDVertex; - static_cast<LDVertex*> (obj)->pos = verts[0]; - obj->setColor (maincolor); - break; - - case 2: - // 2 verts - make a line - obj = new LDLine (verts[0], verts[1]); - obj->setColor (edgecolor); - break; + + switch (editMode()) + { case Draw: + if (m_rectdraw) { + LDQuad* quad = new LDQuad; + + // Copy the vertices from m_rectverts + updateRectVerts(); + + for (int i = 0; i < quad->vertices(); ++i) + quad->setVertex (i, m_rectverts[i]); + + quad->setColor (maincolor); + obj = quad; + } else { + switch (verts.size()) { + case 1: + // 1 vertex - add a vertex object + obj = new LDVertex; + static_cast<LDVertex*> (obj)->pos = verts[0]; + obj->setColor (maincolor); + break; - case 3: - case 4: - obj = (verts.size() == 3) ? - static_cast<LDObject*> (new LDTriangle) : - static_cast<LDObject*> (new LDQuad); - - obj->setColor (maincolor); - for (ushort i = 0; i < obj->vertices(); ++i) - obj->setVertex (i, verts[i]); - break; + case 2: + // 2 verts - make a line + obj = new LDLine (verts[0], verts[1]); + obj->setColor (edgecolor); + break; + + case 3: + case 4: + obj = (verts.size() == 3) ? + static_cast<LDObject*> (new LDTriangle) : + static_cast<LDObject*> (new LDQuad); + + obj->setColor (maincolor); + for (ushort i = 0; i < obj->vertices(); ++i) + obj->setVertex (i, verts[i]); + break; + } } + break; + + case CircleMode: + { const staticCameraMeta* cam = &g_staticCameras[m_camera]; + const double dist = circleDrawDist(); + + matrix transform = g_circleDrawTransforms[camera() % 3]; + for (int i = 0; i < 9; ++i) + { if (transform[i] == 2) + transform[i] = dist; + elif (transform[i] == 1 && camera() >= 3) + transform[i] = -1; + } + + LDSubfile* ref = new LDSubfile; + ref->setFileInfo (findLoadedFile ("4-4edge.dat")); + ref->setTransform (transform); + ref->setPosition (m_drawedVerts[0]); + ref->setColor (maincolor); + obj = ref; + } + break; + + case Select: + assert (false); + return; } - + if (obj) { g_win->beginAction (null); file()->addObject (obj); @@ -1276,6 +1359,27 @@ // ============================================================================= // ----------------------------------------------------------------------------- +double GLRenderer::circleDrawDist() const +{ assert (m_drawedVerts.size() >= 1); + const vertex& v1 = (m_drawedVerts.size() == 2) ? m_drawedVerts[1] : m_hoverpos; + Axis relX, relY; + getRelativeAxes (relX, relY); + + const double dx = m_drawedVerts[0][relX] - v1[relX]; + const double dy = m_drawedVerts[0][relY] - v1[relY]; + return sqrt ((dx * dx) + (dy * dy)); +} + +// ============================================================================= +// ----------------------------------------------------------------------------- +void GLRenderer::getRelativeAxes (Axis& relX, Axis& relY) const +{ const staticCameraMeta* cam = &g_staticCameras[m_camera]; + relX = cam->axisX; + relY = cam->axisY; +} + +// ============================================================================= +// ----------------------------------------------------------------------------- static List<vertex> getVertices (LDObject* obj) { List<vertex> verts;
--- a/src/gldraw.h Sun Sep 22 23:27:07 2013 +0300 +++ b/src/gldraw.h Thu Oct 03 18:07:06 2013 +0300 @@ -34,7 +34,8 @@ enum EditMode { Select, - Draw + Draw, + CircleMode, }; // Meta for overlays @@ -150,12 +151,16 @@ void compileVertex (const vertex& vrt); // Compile a single vertex to a list vertex coordconv2_3 (const QPoint& pos2d, bool snap) const; // Convert a 2D point to a 3D point QPoint coordconv3_2 (const vertex& pos3d) const; // Convert a 3D point to a 2D point - LDOverlay* findOverlayObject (Camera cam); + LDOverlay* findOverlayObject (Camera cam); void updateRectVerts(); void pick (uint mouseX, uint mouseY); // Perform object selection void setObjectColor (LDObject* obj, const ListType list); // Set the color to an object list QColor getTextPen() const; // Determine which color to draw text with - + void getRelativeAxes (Axis& relX, Axis& relY) const; + + void drawBlip (QPainter& paint, QPoint pos) const; + double circleDrawDist() const; + private slots: void slot_toolTipTimer(); };
--- a/src/gui.cpp Sun Sep 22 23:27:07 2013 +0300 +++ b/src/gui.cpp Thu Oct 03 18:07:06 2013 +0300 @@ -64,11 +64,6 @@ #define act(N) extern_cfg (KeySequence, key_##N); #include "actions.h" -const char* g_modeActionNames[] = { - "modeSelect", - "modeDraw", -}; - // ============================================================================= // ----------------------------------------------------------------------------- ForgeWindow::ForgeWindow() { @@ -606,6 +601,7 @@ contextMenu->addAction (ACTION (ClearOverlay)); contextMenu->addAction (ACTION (ModeSelect)); contextMenu->addAction (ACTION (ModeDraw)); + contextMenu->addAction (ACTION (ModeCircle)); if (R()->camera() != GL::Free) { contextMenu->addSeparator(); @@ -644,6 +640,7 @@ const EditMode mode = R()->editMode(); ACTION (ModeSelect)->setChecked (mode == Select); ACTION (ModeDraw)->setChecked (mode == Draw); + ACTION (ModeCircle)->setChecked (mode == CircleMode); } // =============================================================================
--- a/src/gui_actions.cpp Sun Sep 22 23:27:07 2013 +0300 +++ b/src/gui_actions.cpp Thu Oct 03 18:07:06 2013 +0300 @@ -520,6 +520,12 @@ // ============================================================================= // ----------------------------------------------------------------------------- +DEFINE_ACTION (ModeCircle, CTRL (3)) +{ g_win->R()->setEditMode (CircleMode); +} + +// ============================================================================= +// ----------------------------------------------------------------------------- DEFINE_ACTION (SetDrawDepth, 0) { if (g_win->R()->camera() == GL::Free) return;
--- a/ui/ldforge.ui Sun Sep 22 23:27:07 2013 +0300 +++ b/ui/ldforge.ui Thu Oct 03 18:07:06 2013 +0300 @@ -14,7 +14,7 @@ <string/> </property> <property name="windowIcon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/ldforge.png</normaloff>:/icons/ldforge.png</iconset> </property> <widget class="QWidget" name="centralwidget"> @@ -70,7 +70,7 @@ <x>0</x> <y>0</y> <width>900</width> - <height>22</height> + <height>26</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -82,7 +82,7 @@ <string>Open Recent...</string> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/open-recent.png</normaloff>:/icons/open-recent.png</iconset> </property> </widget> @@ -395,6 +395,7 @@ </attribute> <addaction name="actionModeSelect"/> <addaction name="actionModeDraw"/> + <addaction name="actionModeCircle"/> </widget> <widget class="QToolBar" name="colorToolbar"> <property name="windowTitle"> @@ -409,7 +410,7 @@ </widget> <action name="actionNew"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/brick.png</normaloff>:/icons/brick.png</iconset> </property> <property name="text"> @@ -424,7 +425,7 @@ </action> <action name="actionOpen"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-open.png</normaloff>:/icons/file-open.png</iconset> </property> <property name="text"> @@ -439,7 +440,7 @@ </action> <action name="actionSave"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-save.png</normaloff>:/icons/file-save.png</iconset> </property> <property name="text"> @@ -454,7 +455,7 @@ </action> <action name="actionSaveAs"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-save-as.png</normaloff>:/icons/file-save-as.png</iconset> </property> <property name="text"> @@ -466,7 +467,7 @@ </action> <action name="actionInsertFrom"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-import.png</normaloff>:/icons/file-import.png</iconset> </property> <property name="text"> @@ -475,7 +476,7 @@ </action> <action name="actionExportTo"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-export.png</normaloff>:/icons/file-export.png</iconset> </property> <property name="text"> @@ -484,7 +485,7 @@ </action> <action name="actionSettings"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/settings.png</normaloff>:/icons/settings.png</iconset> </property> <property name="text"> @@ -499,7 +500,7 @@ </action> <action name="actionSetLDrawPath"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/settings.png</normaloff>:/icons/settings.png</iconset> </property> <property name="text"> @@ -511,7 +512,7 @@ </action> <action name="actionScanPrimitives"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/radial.png</normaloff>:/icons/radial.png</iconset> </property> <property name="text"> @@ -523,7 +524,7 @@ </action> <action name="actionExit"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/exit.png</normaloff>:/icons/exit.png</iconset> </property> <property name="text"> @@ -546,7 +547,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/axes.png</normaloff>:/icons/axes.png</iconset> </property> <property name="text"> @@ -558,7 +559,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/wireframe.png</normaloff>:/icons/wireframe.png</iconset> </property> <property name="text"> @@ -570,7 +571,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/bfc-view.png</normaloff>:/icons/bfc-view.png</iconset> </property> <property name="text"> @@ -579,7 +580,7 @@ </action> <action name="actionSetOverlay"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/overlay.png</normaloff>:/icons/overlay.png</iconset> </property> <property name="text"> @@ -588,7 +589,7 @@ </action> <action name="actionClearOverlay"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/overlay-clear.png</normaloff>:/icons/overlay-clear.png</iconset> </property> <property name="text"> @@ -597,7 +598,7 @@ </action> <action name="actionScreenshot"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/screencap.png</normaloff>:/icons/screencap.png</iconset> </property> <property name="text"> @@ -611,7 +612,7 @@ </action> <action name="actionNewLine"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-line.png</normaloff>:/icons/add-line.png</iconset> </property> <property name="text"> @@ -620,7 +621,7 @@ </action> <action name="actionNewSubfile"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-subfile.png</normaloff>:/icons/add-subfile.png</iconset> </property> <property name="text"> @@ -629,7 +630,7 @@ </action> <action name="actionNewTriangle"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-triangle.png</normaloff>:/icons/add-triangle.png</iconset> </property> <property name="text"> @@ -638,7 +639,7 @@ </action> <action name="actionNewQuad"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-quad.png</normaloff>:/icons/add-quad.png</iconset> </property> <property name="text"> @@ -647,7 +648,7 @@ </action> <action name="actionNewCLine"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-condline.png</normaloff>:/icons/add-condline.png</iconset> </property> <property name="text"> @@ -656,7 +657,7 @@ </action> <action name="actionNewComment"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-comment.png</normaloff>:/icons/add-comment.png</iconset> </property> <property name="text"> @@ -665,7 +666,7 @@ </action> <action name="actionNewBFC"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-bfc.png</normaloff>:/icons/add-bfc.png</iconset> </property> <property name="text"> @@ -674,7 +675,7 @@ </action> <action name="actionNewVertex"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/add-vertex.png</normaloff>:/icons/add-vertex.png</iconset> </property> <property name="text"> @@ -683,7 +684,7 @@ </action> <action name="actionUndo"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/undo.png</normaloff>:/icons/undo.png</iconset> </property> <property name="text"> @@ -695,7 +696,7 @@ </action> <action name="actionRedo"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/redo.png</normaloff>:/icons/redo.png</iconset> </property> <property name="text"> @@ -707,7 +708,7 @@ </action> <action name="actionCut"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/cut.png</normaloff>:/icons/cut.png</iconset> </property> <property name="text"> @@ -719,7 +720,7 @@ </action> <action name="actionCopy"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/copy.png</normaloff>:/icons/copy.png</iconset> </property> <property name="text"> @@ -734,7 +735,7 @@ </action> <action name="actionPaste"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/paste.png</normaloff>:/icons/paste.png</iconset> </property> <property name="text"> @@ -746,7 +747,7 @@ </action> <action name="actionDelete"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/delete.png</normaloff>:/icons/delete.png</iconset> </property> <property name="text"> @@ -758,7 +759,7 @@ </action> <action name="actionSelectAll"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/select-all.png</normaloff>:/icons/select-all.png</iconset> </property> <property name="text"> @@ -767,7 +768,7 @@ </action> <action name="actionSelectByColor"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/select-color.png</normaloff>:/icons/select-color.png</iconset> </property> <property name="text"> @@ -776,7 +777,7 @@ </action> <action name="actionSelectByType"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/select-type.png</normaloff>:/icons/select-type.png</iconset> </property> <property name="text"> @@ -791,7 +792,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/mode-select.png</normaloff>:/icons/mode-select.png</iconset> </property> <property name="text"> @@ -803,7 +804,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/mode-draw.png</normaloff>:/icons/mode-draw.png</iconset> </property> <property name="text"> @@ -817,7 +818,7 @@ </action> <action name="actionSetColor"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/palette.png</normaloff>:/icons/palette.png</iconset> </property> <property name="text"> @@ -829,7 +830,7 @@ </action> <action name="actionAutocolor"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/autocolor.png</normaloff>:/icons/autocolor.png</iconset> </property> <property name="text"> @@ -841,7 +842,7 @@ </action> <action name="actionUncolorize"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/uncolorize.png</normaloff>:/icons/uncolorize.png</iconset> </property> <property name="text"> @@ -853,7 +854,7 @@ </action> <action name="actionInline"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/inline.png</normaloff>:/icons/inline.png</iconset> </property> <property name="text"> @@ -865,7 +866,7 @@ </action> <action name="actionInlineDeep"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/inline-deep.png</normaloff>:/icons/inline-deep.png</iconset> </property> <property name="text"> @@ -877,7 +878,7 @@ </action> <action name="actionInvert"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/invert.png</normaloff>:/icons/invert.png</iconset> </property> <property name="text"> @@ -886,7 +887,7 @@ </action> <action name="actionMakePrimitive"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/radial.png</normaloff>:/icons/radial.png</iconset> </property> <property name="text"> @@ -895,7 +896,7 @@ </action> <action name="actionSplitQuads"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/quad-split.png</normaloff>:/icons/quad-split.png</iconset> </property> <property name="text"> @@ -907,7 +908,7 @@ </action> <action name="actionEditRaw"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/set-contents.png</normaloff>:/icons/set-contents.png</iconset> </property> <property name="text"> @@ -919,7 +920,7 @@ </action> <action name="actionBorders"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/make-borders.png</normaloff>:/icons/make-borders.png</iconset> </property> <property name="text"> @@ -931,7 +932,7 @@ </action> <action name="actionCornerVerts"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/corner-verts.png</normaloff>:/icons/corner-verts.png</iconset> </property> <property name="text"> @@ -943,7 +944,7 @@ </action> <action name="actionRoundCoordinates"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/round-coords.png</normaloff>:/icons/round-coords.png</iconset> </property> <property name="text"> @@ -955,7 +956,7 @@ </action> <action name="actionVisibility"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/visibility.png</normaloff>:/icons/visibility.png</iconset> </property> <property name="text"> @@ -967,7 +968,7 @@ </action> <action name="actionReplaceCoords"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/replace-coords.png</normaloff>:/icons/replace-coords.png</iconset> </property> <property name="text"> @@ -979,7 +980,7 @@ </action> <action name="actionFlip"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/flip.png</normaloff>:/icons/flip.png</iconset> </property> <property name="text"> @@ -999,7 +1000,7 @@ </action> <action name="actionYtruder"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/ytruder.png</normaloff>:/icons/ytruder.png</iconset> </property> <property name="text"> @@ -1011,7 +1012,7 @@ </action> <action name="actionRectifier"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/rectifier.png</normaloff>:/icons/rectifier.png</iconset> </property> <property name="text"> @@ -1023,7 +1024,7 @@ </action> <action name="actionIntersector"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/intersector.png</normaloff>:/icons/intersector.png</iconset> </property> <property name="text"> @@ -1035,7 +1036,7 @@ </action> <action name="actionIsecalc"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/isecalc.png</normaloff>:/icons/isecalc.png</iconset> </property> <property name="text"> @@ -1047,7 +1048,7 @@ </action> <action name="actionCoverer"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/coverer.png</normaloff>:/icons/coverer.png</iconset> </property> <property name="text"> @@ -1067,7 +1068,7 @@ <bool>false</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/help.png</normaloff>:/icons/help.png</iconset> </property> <property name="text"> @@ -1076,7 +1077,7 @@ </action> <action name="actionAbout"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/ldforge.png</normaloff>:/icons/ldforge.png</iconset> </property> <property name="text"> @@ -1093,7 +1094,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/grid-coarse.png</normaloff>:/icons/grid-coarse.png</iconset> </property> <property name="text"> @@ -1108,7 +1109,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/grid-medium.png</normaloff>:/icons/grid-medium.png</iconset> </property> <property name="text"> @@ -1120,7 +1121,7 @@ <bool>true</bool> </property> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/grid-fine.png</normaloff>:/icons/grid-fine.png</iconset> </property> <property name="text"> @@ -1134,7 +1135,7 @@ </action> <action name="actionMoveUp"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/arrow-up.png</normaloff>:/icons/arrow-up.png</iconset> </property> <property name="text"> @@ -1143,7 +1144,7 @@ </action> <action name="actionMoveDown"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/arrow-down.png</normaloff>:/icons/arrow-down.png</iconset> </property> <property name="text"> @@ -1152,7 +1153,7 @@ </action> <action name="actionMoveXNeg"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-x-neg.png</normaloff>:/icons/move-x-neg.png</iconset> </property> <property name="text"> @@ -1161,7 +1162,7 @@ </action> <action name="actionMoveXPos"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-x-pos.png</normaloff>:/icons/move-x-pos.png</iconset> </property> <property name="text"> @@ -1170,7 +1171,7 @@ </action> <action name="actionMoveYNeg"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-y-neg.png</normaloff>:/icons/move-y-neg.png</iconset> </property> <property name="text"> @@ -1179,7 +1180,7 @@ </action> <action name="actionMoveYPos"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-y-pos.png</normaloff>:/icons/move-y-pos.png</iconset> </property> <property name="text"> @@ -1188,7 +1189,7 @@ </action> <action name="actionMoveZNeg"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-z-neg.png</normaloff>:/icons/move-z-neg.png</iconset> </property> <property name="text"> @@ -1197,7 +1198,7 @@ </action> <action name="actionMoveZPos"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/move-z-pos.png</normaloff>:/icons/move-z-pos.png</iconset> </property> <property name="text"> @@ -1256,7 +1257,7 @@ </action> <action name="actionNewFile"> <property name="icon"> - <iconset resource="../../ldforge.qrc"> + <iconset resource="../ldforge.qrc"> <normaloff>:/icons/file-new.png</normaloff>:/icons/file-new.png</iconset> </property> <property name="text"> @@ -1278,9 +1279,21 @@ <string>Go to Line...</string> </property> </action> + <action name="actionModeCircle"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="icon"> + <iconset resource="../ldforge.qrc"> + <normaloff>:/icons/mode-circle.png</normaloff>:/icons/mode-circle.png</iconset> + </property> + <property name="text"> + <string>Circle Mode</string> + </property> + </action> </widget> <resources> - <include location="../../ldforge.qrc"/> + <include location="../ldforge.qrc"/> </resources> <connections/> </ui>