diff --git a/src/Gui/BitmapFactory.cpp b/src/Gui/BitmapFactory.cpp
index 2739e276bc..ddbb8fa240 100644
--- a/src/Gui/BitmapFactory.cpp
+++ b/src/Gui/BitmapFactory.cpp
@@ -48,36 +48,6 @@
using namespace Gui;
-/* XPM */
-static const char *not_found[]={
-"24 24 2 1",
-"# c #000000",
-". c #ffffff",
-"........................",
-"........................",
-"...##..............##...",
-"..####............####..",
-"..#####..........#####..",
-"..######........#####...",
-"...######......######...",
-"....######....######....",
-".....######..######.....",
-"......############......",
-".......##########.......",
-"........########........",
-".........######.........",
-"........########........",
-".......##########.......",
-"......############......",
-".....######..######.....",
-"....######....######....",
-"..#######......######...",
-".#######........######..",
-".######..........#####..",
-"..####.............##...",
-"........................",
-"........................"};
-
namespace Gui {
class BitmapFactoryInstP
{
@@ -281,7 +251,7 @@ QPixmap BitmapFactoryInst::pixmap(const char* name) const
}
Base::Console().Warning("Cannot find icon: %s\n", name);
- return QPixmap(not_found);
+ return QPixmap(Gui::BitmapFactory().pixmapFromSvg("help-browser", QSize(16, 16)));
}
QPixmap BitmapFactoryInst::pixmapFromSvg(const char* name, const QSizeF& size,
diff --git a/src/Gui/CallTips.cpp b/src/Gui/CallTips.cpp
index 35f5b9f33f..f39d564106 100644
--- a/src/Gui/CallTips.cpp
+++ b/src/Gui/CallTips.cpp
@@ -472,20 +472,7 @@ void CallTipsList::showTips(const QString& line)
static QPixmap property_icon = BitmapFactory().pixmap("ClassBrowser/property.svg");
// object is in error state
- static const char * const forbidden_xpm[]={
- "8 8 3 1",
- ". c None",
- "# c #ff0000",
- "a c #ffffff",
- "..####..",
- ".######.",
- "########",
- "#aaaaaa#",
- "#aaaaaa#",
- "########",
- ".######.",
- "..####.."};
- static QPixmap forbidden_icon(forbidden_xpm);
+ static QPixmap forbidden_icon(Gui::BitmapFactory().pixmapFromSvg("forbidden", QSize(8, 8)));
static QPixmap forbidden_type_module_icon = BitmapFactory().merge(type_module_icon,forbidden_icon,BitmapFactoryInst::BottomLeft);
static QPixmap forbidden_type_class_icon = BitmapFactory().merge(type_class_icon,forbidden_icon,BitmapFactoryInst::BottomLeft);
static QPixmap forbidden_method_icon = BitmapFactory().merge(method_icon,forbidden_icon,BitmapFactoryInst::BottomLeft);
diff --git a/src/Gui/Icons/Std_MarkToRecompute.svg b/src/Gui/Icons/Std_MarkToRecompute.svg
index 4889340075..65f144e9c9 100644
--- a/src/Gui/Icons/Std_MarkToRecompute.svg
+++ b/src/Gui/Icons/Std_MarkToRecompute.svg
@@ -1,15 +1,15 @@
diff --git a/src/Gui/Icons/edge-selection.svg b/src/Gui/Icons/edge-selection.svg
index f72354f54b..be17f9b01b 100644
--- a/src/Gui/Icons/edge-selection.svg
+++ b/src/Gui/Icons/edge-selection.svg
@@ -1,5 +1,4 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -163,67 +201,26 @@
id="path2995-1-0" />
+ d="m 5,17 36,6 V 59 L 5,53 Z"
+ style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:url(#linearGradient4033);fill-opacity:1;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
+ id="path1">
-
-
+ style="color:#000000;fill:#cc0000;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none"
+ d="M 41,23 V 59"
+ id="path2" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ style="color:#000000;fill:#ef2929;stroke:#cc0000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
+ d="m 41,20.996909 c -1.656854,0 -3,1.343146 -3,3 v 34 c 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 v -34 c 0,-1.656854 -1.343146,-3 -3,-3 z"
+ id="path3" />
+
diff --git a/src/Gui/Icons/face-selection.svg b/src/Gui/Icons/face-selection.svg
index ecefd15f5a..d5a8c8d04b 100644
--- a/src/Gui/Icons/face-selection.svg
+++ b/src/Gui/Icons/face-selection.svg
@@ -17,11 +17,11 @@
@@ -111,11 +111,50 @@
+
+
+
+
+
+
+
+
+
+
@@ -171,4 +210,8 @@
d="M 5,17 25,5 59,9 41,23 z"
id="path3970" />
+
diff --git a/src/Gui/Icons/feature_suppressed.svg b/src/Gui/Icons/feature_suppressed.svg
new file mode 100644
index 0000000000..7fa73f4bfa
--- /dev/null
+++ b/src/Gui/Icons/feature_suppressed.svg
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Path-FaceProfile
+ 2016-01-19
+ http://www.freecadweb.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Path/Gui/Resources/icons/Path-
+
+
+ FreeCAD LGPL2+
+
+
+ https://www.gnu.org/copyleft/lesser.html
+
+
+ [agryson] Alexander Gryson
+
+
+
+
+
+
+
+
+
diff --git a/src/Gui/Icons/forbidden.svg b/src/Gui/Icons/forbidden.svg
new file mode 100644
index 0000000000..6d10fe075d
--- /dev/null
+++ b/src/Gui/Icons/forbidden.svg
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
diff --git a/src/Gui/Icons/overlay_error.svg b/src/Gui/Icons/overlay_error.svg
new file mode 100644
index 0000000000..2b7aef4868
--- /dev/null
+++ b/src/Gui/Icons/overlay_error.svg
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
diff --git a/src/Gui/Icons/overlay_recompute.svg b/src/Gui/Icons/overlay_recompute.svg
new file mode 100644
index 0000000000..dae6815d04
--- /dev/null
+++ b/src/Gui/Icons/overlay_recompute.svg
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
diff --git a/src/Gui/Icons/resource.qrc b/src/Gui/Icons/resource.qrc
index fbcbaa9833..3ee5c1eca3 100644
--- a/src/Gui/Icons/resource.qrc
+++ b/src/Gui/Icons/resource.qrc
@@ -275,6 +275,10 @@
image-scaling.svg
VarSet.svg
Std_ToggleFreeze.svg
+ overlay_recompute.svg
+ overlay_error.svg
+ feature_suppressed.svg
+ forbidden.svg
index.theme
diff --git a/src/Gui/Icons/selection-filter.svg b/src/Gui/Icons/selection-filter.svg
index 238c852f48..eb24b50bca 100644
--- a/src/Gui/Icons/selection-filter.svg
+++ b/src/Gui/Icons/selection-filter.svg
@@ -1,5 +1,4 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -490,6 +528,14 @@
+
+
@@ -535,11 +581,7 @@
id="path3970" />
-
+ style="fill:url(#linearGradient4221);fill-opacity:1;stroke:#042a2a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 39.199488,57.060024 -12,-12 -4,6 -7,-21 21,7 -6,4 12,12 z"
+ id="rect3871" />
diff --git a/src/Gui/Icons/vertex-selection.svg b/src/Gui/Icons/vertex-selection.svg
index 319fc1f328..ba63bebdb7 100644
--- a/src/Gui/Icons/vertex-selection.svg
+++ b/src/Gui/Icons/vertex-selection.svg
@@ -1,5 +1,4 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -170,11 +208,15 @@
d="M 5,17 25,5 59,9 41,23 z"
id="path3970" />
+
diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp
index e4b5ba6b34..c6fba06b3e 100644
--- a/src/Gui/Tree.cpp
+++ b/src/Gui/Tree.cpp
@@ -5214,21 +5214,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2
static QPixmap pxError;
if (pxError.isNull()) {
// object is in error state
- const char* const feature_error_xpm[] = {
- "9 9 3 1",
- ". c None",
- "# c #ff0000",
- "a c #ffffff",
- "...###...",
- ".##aaa##.",
- ".##aaa##.",
- "###aaa###",
- "###aaa###",
- "#########",
- ".##aaa##.",
- ".##aaa##.",
- "...###..." };
- pxError = QPixmap(feature_error_xpm);
+ pxError = Gui::BitmapFactory().pixmapFromSvg("overlay_error", QSize(10, 10));
}
px = pxError;
}
@@ -5236,21 +5222,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2
static QPixmap pxRecompute;
if (pxRecompute.isNull()) {
// object must be recomputed
- const char* const feature_recompute_xpm[] = {
- "9 9 3 1",
- ". c None",
- "# c #0000ff",
- "a c #ffffff",
- "...###...",
- ".######aa",
- ".#####aa.",
- "#####aa##",
- "#aa#aa###",
- "#aaaa####",
- ".#aa####.",
- ".#######.",
- "...###..." };
- pxRecompute = QPixmap(feature_recompute_xpm);
+ pxRecompute = Gui::BitmapFactory().pixmapFromSvg("overlay_recompute", QSize(10, 10));
}
px = pxRecompute;
}
@@ -5283,19 +5255,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2
if (currentStatus & 8) {// hidden item
static QPixmap pxHidden;
if (pxHidden.isNull()) {
- const char* const feature_hidden_xpm[] = {
- "9 7 3 1",
- ". c None",
- "# c #000000",
- "a c #ffffff",
- "...###...",
- "..#aaa#..",
- ".#a###a#.",
- "#aa###aa#",
- ".#a###a#.",
- "..#aaa#..",
- "...###..." };
- pxHidden = QPixmap(feature_hidden_xpm);
+ pxHidden = Gui::BitmapFactory().pixmapFromSvg("TreeItemVisible", QSize(10, 10));
}
pxOff = BitmapFactory().merge(pxOff, pxHidden, BitmapFactoryInst::TopLeft);
pxOn = BitmapFactory().merge(pxOn, pxHidden, BitmapFactoryInst::TopLeft);
@@ -5304,19 +5264,8 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2
if (external) {// external item
static QPixmap pxExternal;
if (pxExternal.isNull()) {
- const char* const feature_external_xpm[] = {
- "7 7 3 1",
- ". c None",
- "# c #000000",
- "a c #ffffff",
- "..###..",
- ".#aa##.",
- "..#aa##",
- "..##aa#",
- "..#aa##",
- ".#aa##.",
- "..###.." };
- pxExternal = QPixmap(feature_external_xpm);
+ pxExternal = Gui::BitmapFactory().pixmapFromSvg("LinkOverlay",
+ QSize(24, 24));
}
pxOff = BitmapFactory().merge(pxOff, pxExternal, BitmapFactoryInst::BottomRight);
pxOn = BitmapFactory().merge(pxOn, pxExternal, BitmapFactoryInst::BottomRight);
@@ -5326,27 +5275,7 @@ void DocumentObjectItem::testStatus(bool resetStatus, QIcon& icon1, QIcon& icon2
static QPixmap pxFreeze;
if (pxFreeze.isNull()) {
// object is in freezed state
- const char* const feature_freezed_xpm[] = {
- "16 16 2 1",
- " c None",
- ". c #00EEFF",
- " . . . ",
- " . ... . ",
- " .. . .. ",
- " .... . .... ",
- " .. . .. ",
- " . . . . .",
- " . ... . ",
- " ...............",
- " . ... . ",
- " . . . . .",
- " .. . .. ",
- " .... . .... ",
- " .. . .. ",
- " . ... . ",
- " . . . ",
- " "};
- pxFreeze = QPixmap(feature_freezed_xpm);
+ pxFreeze = Gui::BitmapFactory().pixmapFromSvg("Std_ToggleFreeze", QSize(16, 16));
}
pxOff = BitmapFactory().merge(pxOff, pxFreeze, BitmapFactoryInst::TopLeft);
pxOn = BitmapFactory().merge(pxOn, pxFreeze, BitmapFactoryInst::TopLeft);
diff --git a/src/Gui/ViewProviderSuppressibleExtension.cpp b/src/Gui/ViewProviderSuppressibleExtension.cpp
index eefa2fee73..c2191e96f1 100644
--- a/src/Gui/ViewProviderSuppressibleExtension.cpp
+++ b/src/Gui/ViewProviderSuppressibleExtension.cpp
@@ -72,29 +72,7 @@ QIcon ViewProviderSuppressibleExtension::extensionMergeColorfullOverlayIcons (co
QIcon mergedicon = orig;
if(isSetSuppressedIcon) {
- QPixmap px;
- static const char * feature_suppressed_xpm[] = {
- "16 16 2 1",
- " c None",
- ". c #FF0000",
- ". ",
- " .. ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " ... ",
- " .. ",
- " ."};
-
- px = QPixmap(feature_suppressed_xpm);
+ static QPixmap px(Gui::BitmapFactory().pixmapFromSvg("feature_suppressed", QSize(16, 16)));
mergedicon = Gui::BitmapFactoryInst::mergePixmap(mergedicon, px, Gui::BitmapFactoryInst::TopLeft);
}
diff --git a/src/Mod/Mesh/Gui/AppMeshGui.cpp b/src/Mod/Mesh/Gui/AppMeshGui.cpp
index 1f338f8ae0..efdc2467a8 100644
--- a/src/Mod/Mesh/Gui/AppMeshGui.cpp
+++ b/src/Mod/Mesh/Gui/AppMeshGui.cpp
@@ -54,7 +54,6 @@
#include "ViewProviderTransform.h"
#include "ViewProviderTransformDemolding.h"
#include "Workbench.h"
-#include "images.h"
// use a different name to CreateCommand()
@@ -138,9 +137,6 @@ PyMOD_INIT_FUNC(MeshGui)
PyObject* mod = MeshGui::initModule();
Base::Console().Log("Loading GUI of Mesh module... done\n");
- // Register icons
- Gui::BitmapFactory().addXPM("mesh_fillhole", mesh_fillhole);
-
// instantiating the commands
CreateMeshCommands();
if (qApp) {
diff --git a/src/Mod/Mesh/Gui/Command.cpp b/src/Mod/Mesh/Gui/Command.cpp
index b5a4dc3b96..c086afbf9b 100644
--- a/src/Mod/Mesh/Gui/Command.cpp
+++ b/src/Mod/Mesh/Gui/Command.cpp
@@ -1585,7 +1585,10 @@ void CmdMeshFillInteractiveHole::activated(int)
if (view) {
Gui::View3DInventorViewer* viewer = view->getViewer();
viewer->setEditing(true);
- viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmap("mesh_fillhole"), 5, 5));
+ viewer->setEditingCursor(
+ QCursor(Gui::BitmapFactory().pixmapFromSvg("Mesh_CursorFillInteractive", QSize(32, 32)),
+ 6,
+ 6));
viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(),
MeshGui::ViewProviderMeshFaceSet::fillHoleCallback);
viewer->setSelectionEnabled(false);
diff --git a/src/Mod/Mesh/Gui/Resources/Mesh.qrc b/src/Mod/Mesh/Gui/Resources/Mesh.qrc
index 01e11f9428..4acf865964 100644
--- a/src/Mod/Mesh/Gui/Resources/Mesh.qrc
+++ b/src/Mod/Mesh/Gui/Resources/Mesh.qrc
@@ -4,6 +4,7 @@
icons/Mesh_BoundingBox.svg
icons/Mesh_BuildRegularSolid.svg
icons/Mesh_CrossSections.svg
+ icons/Mesh_CursorFillInteractive.svg
icons/Mesh_CurvatureInfo.svg
icons/Mesh_Decimating.svg
icons/Mesh_Difference.svg
diff --git a/src/Mod/Mesh/Gui/Resources/icons/Mesh_CursorFillInteractive.svg b/src/Mod/Mesh/Gui/Resources/icons/Mesh_CursorFillInteractive.svg
new file mode 100644
index 0000000000..3810fc8507
--- /dev/null
+++ b/src/Mod/Mesh/Gui/Resources/icons/Mesh_CursorFillInteractive.svg
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mod/Mesh/Gui/images.h b/src/Mod/Mesh/Gui/images.h
deleted file mode 100644
index 5ba0bd5c6b..0000000000
--- a/src/Mod/Mesh/Gui/images.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// clang-format off
-/* XPM */
-static const char *mesh_fillhole[]={
-"32 32 3 1",
-"# c #000000",
-"+ c #ffffff",
-". c None",
-"....+...........................",
-"....+....................##.....",
-"....+...................###.....",
-".......................####.....",
-"+++.+.+++............###++#.....",
-"....................###+++##....",
-"....+.............###+++++##....",
-"....+............###++++++##....",
-"....+..........###++++++++##....",
-"..............###++++++++++#....",
-"............###++++++++++++#....",
-"...........###+++#######+++##...",
-"..........###+++#......##++##...",
-"........###++++#........#++##...",
-".......###+++++#........##+##...",
-".....###+++++++#........##.##...",
-"....###++++++++##.......#+++#...",
-"....####++++++++##....##++++##..",
-"......####++++++++#####+++++##..",
-"........#####+++++++++++++++##..",
-"...........####+++++++++++++##..",
-".............#####++++++++++##..",
-"................####+++++++++#..",
-"..................#####++++++#..",
-".....................####++++##.",
-".......................#####+##.",
-"..........................#####.",
-"............................##..",
-"................................",
-"................................",
-"................................",
-"................................"};
-// clang-format on
diff --git a/src/Mod/Part/Gui/Resources/Part.qrc b/src/Mod/Part/Gui/Resources/Part.qrc
index 8ac1e588c5..ffde8218b6 100644
--- a/src/Mod/Part/Gui/Resources/Part.qrc
+++ b/src/Mod/Part/Gui/Resources/Part.qrc
@@ -96,5 +96,6 @@
icons/Part_SectionCut.svg
icons/PartWorkbench.svg
icons/preferences-part_design.svg
+ icons/Part_Detached.svg
diff --git a/src/Mod/Part/Gui/Resources/icons/Part_Detached.svg b/src/Mod/Part/Gui/Resources/icons/Part_Detached.svg
new file mode 100644
index 0000000000..cf23b1f54e
--- /dev/null
+++ b/src/Mod/Part/Gui/Resources/icons/Part_Detached.svg
@@ -0,0 +1,389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
+
diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp
index 8607253ba7..550c6936e1 100644
--- a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp
+++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp
@@ -61,27 +61,13 @@ QIcon ViewProviderAttachExtension::extensionMergeColorfullOverlayIcons (const QI
if (attach) {
if(!attach->isAttacherActive()) {
- QPixmap px;
+ static QPixmap px(
+ Gui::BitmapFactory().pixmapFromSvg("Part_Detached", QSize(10, 10)));
- static const char * const feature_detached_xpm[]={
- "9 10 3 1",
- ". c None",
- "# c #cc00cc",
- "a c #ffffff",
- "...###...",
- ".##aaa##.",
- "##aaaaa##",
- "##aaaaa##",
- "#########",
- "#########",
- "#########",
- ".##aaa##.",
- ".##aaa##.",
- "...###..."};
-
- px = QPixmap(feature_detached_xpm);
-
- mergedicon = Gui::BitmapFactoryInst::mergePixmap(mergedicon, px, Gui::BitmapFactoryInst::BottomLeft);
+ mergedicon =
+ Gui::BitmapFactoryInst::mergePixmap(mergedicon,
+ px,
+ Gui::BitmapFactoryInst::BottomLeft);
}
}
}
diff --git a/src/Mod/PartDesign/Gui/Resources/PartDesign.qrc b/src/Mod/PartDesign/Gui/Resources/PartDesign.qrc
index 43382ffcef..fcfb16c4f9 100644
--- a/src/Mod/PartDesign/Gui/Resources/PartDesign.qrc
+++ b/src/Mod/PartDesign/Gui/Resources/PartDesign.qrc
@@ -35,6 +35,7 @@
icons/PartDesign_MoveFeatureInTree.svg
icons/PartDesign_MoveTip.svg
icons/PartDesign_MultiTransform.svg
+ icons/PartDesign_Overlay_Tip.svg
icons/PartDesign_Pad.svg
icons/PartDesign_Plane.svg
icons/PartDesign_Pocket.svg
diff --git a/src/Mod/PartDesign/Gui/Resources/icons/PartDesign_Overlay_Tip.svg b/src/Mod/PartDesign/Gui/Resources/icons/PartDesign_Overlay_Tip.svg
new file mode 100644
index 0000000000..45099462ef
--- /dev/null
+++ b/src/Mod/PartDesign/Gui/Resources/icons/PartDesign_Overlay_Tip.svg
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mod/PartDesign/Gui/ViewProvider.cpp b/src/Mod/PartDesign/Gui/ViewProvider.cpp
index efdcb7ad30..f96fa45cd1 100644
--- a/src/Mod/PartDesign/Gui/ViewProvider.cpp
+++ b/src/Mod/PartDesign/Gui/ViewProvider.cpp
@@ -205,26 +205,8 @@ QIcon ViewProvider::mergeColorfulOverlayIcons (const QIcon & orig) const
QIcon mergedicon = orig;
if(isSetTipIcon) {
- QPixmap px;
-
- static const char * const feature_tip_xpm[]={
- "9 9 3 1",
- ". c None",
- "# c #00cc00",
- "a c #ffffff",
- "...###...",
- ".##aaa##.",
- ".##aaa##.",
- "###aaa###",
- "##aaaaa##",
- "##aaaaa##",
- ".##aaa##.",
- ".##aaa##.",
- "...###..."};
- px = QPixmap(feature_tip_xpm);
-
+ static QPixmap px(Gui::BitmapFactory().pixmapFromSvg("PartDesign_Overlay_Tip", QSize(10, 10)));
mergedicon = Gui::BitmapFactoryInst::mergePixmap(mergedicon, px, Gui::BitmapFactoryInst::BottomRight);
-
}
return Gui::ViewProvider::mergeColorfulOverlayIcons (mergedicon);
diff --git a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc
index 621488dec2..f0a0b2ca56 100644
--- a/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc
+++ b/src/Mod/Sketcher/Gui/Resources/Sketcher.qrc
@@ -2,6 +2,7 @@
icons/Sketcher_Sketch.svg
icons/SketcherWorkbench.svg
+ icons/Sketcher_NotFullyConstrained.svg
icons/SketcherWorkbench.svg
diff --git a/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_NotFullyConstrained.svg b/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_NotFullyConstrained.svg
new file mode 100644
index 0000000000..f23ee93f2c
--- /dev/null
+++ b/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_NotFullyConstrained.svg
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+ [maxwxyz]
+
+
+ https://www.freecad.org/wiki/index.php?title=Artwork
+
+
+ FreeCAD
+
+
+ FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateArc.svg
+
+
+ FreeCAD LGPL2+
+
+
+ 2023-12-19
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
index 95ae557362..6bc527eef4 100644
--- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
+++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
@@ -3618,23 +3618,7 @@ QIcon ViewProviderSketch::mergeColorfulOverlayIcons(const QIcon& orig) const
QIcon mergedicon = orig;
if (!getSketchObject()->FullyConstrained.getValue()) {
- QPixmap px;
-
- static const char* const sketcher_notfullyconstrained_xpm[] = {"9 9 3 1",
- ". c None",
- "# c #dbaf00",
- "a c #ffcc00",
- "##.....##",
- "#a#...#a#",
- "#aa#.#aa#",
- ".#a#.#a#.",
- ".#a#.#a#.",
- ".#a#.#a#.",
- "#aa#.#aa#",
- "#a#...#a#",
- "##.....##"};
- px = QPixmap(sketcher_notfullyconstrained_xpm);
-
+ static QPixmap px(Gui::BitmapFactory().pixmapFromSvg("Sketcher_NotFullyConstrained", QSize(10, 10)));
mergedicon = Gui::BitmapFactoryInst::mergePixmap(
mergedicon, px, Gui::BitmapFactoryInst::BottomRight);
}