code review: move transaction to outside from loop, fix several bugs, fix whitespaces

This commit is contained in:
wmayer 2014-08-05 00:33:51 +02:00
parent 1011dd4175
commit be3299a46d
4 changed files with 222 additions and 213 deletions

View File

@ -1633,10 +1633,10 @@ void SketchObject::getGeoVertexIndex(int VertexId, int &GeoId, PointPos &PosId)
int SketchObject::getVertexIndexGeoPos(int GeoId, PointPos PosId) const int SketchObject::getVertexIndexGeoPos(int GeoId, PointPos PosId) const
{ {
for(int i=0;i<VertexId2GeoId.size();i++) {
for(int i=0;i<VertexId2GeoId.size();i++)
if(VertexId2GeoId[i]==GeoId && VertexId2PosId[i]==PosId) if(VertexId2GeoId[i]==GeoId && VertexId2PosId[i]==PosId)
return i; return i;
}
return -1; return -1;
} }

View File

@ -552,6 +552,7 @@ void CmdSketcherConstrainCoincident::activated(int iMsg)
getIdsFromName(SubNames[0], Obj, GeoId1, PosId1); getIdsFromName(SubNames[0], Obj, GeoId1, PosId1);
// undo command open // undo command open
bool constraintsAdded = false;
openCommand("add coincident constraint"); openCommand("add coincident constraint");
for (std::size_t i=1; i<SubNames.size(); i++) { for (std::size_t i=1; i<SubNames.size(); i++) {
getIdsFromName(SubNames[i], Obj, GeoId2, PosId2); getIdsFromName(SubNames[i], Obj, GeoId2, PosId2);
@ -559,8 +560,7 @@ void CmdSketcherConstrainCoincident::activated(int iMsg)
// check if any of the coincident constraints exist // check if any of the coincident constraints exist
bool constraintExists=false; bool constraintExists=false;
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); it != vals.end(); ++it) {
it != vals.end(); ++it) {
if ((*it)->Type == Sketcher::Coincident && if ((*it)->Type == Sketcher::Coincident &&
( (*it)->First == GeoId1 && (*it)->FirstPos == PosId1 && ( (*it)->First == GeoId1 && (*it)->FirstPos == PosId1 &&
(*it)->Second == GeoId2 && (*it)->SecondPos == PosId2 ) || (*it)->Second == GeoId2 && (*it)->SecondPos == PosId2 ) ||
@ -571,14 +571,20 @@ void CmdSketcherConstrainCoincident::activated(int iMsg)
} }
} }
if (!constraintExists) if (!constraintExists) {
constraintsAdded = true;
Gui::Command::doCommand( Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,PosId1,GeoId2,PosId2); selection[0].getFeatName(),GeoId1,PosId1,GeoId2,PosId2);
} }
}
// finish the transaction and update // finish or abort the transaction and update
if (constraintsAdded)
commitCommand(); commitCommand();
else
abortCommand();
updateActive(); updateActive();
// clear the selection (convenience) // clear the selection (convenience)

View File

@ -47,17 +47,18 @@ using namespace Sketcher;
bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection ) bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection )
{ {
if (doc) if (doc) {
// checks if a Sketch Viewprovider is in Edit and is in no special mode // checks if a Sketch Viewprovider is in Edit and is in no special mode
if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) {
if (dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit()) if (dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit())
->getSketchMode() == ViewProviderSketch::STATUS_NONE) ->getSketchMode() == ViewProviderSketch::STATUS_NONE) {
if (!actsOnSelection) if (!actsOnSelection)
return true; return true;
else{ else if (Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0)
if(Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0)
return true; return true;
} }
}
}
return false; return false;
} }
@ -87,17 +88,24 @@ void CmdSketcherCloseShape::activated(int iMsg)
// only one sketch with its subelements are allowed to be selected // only one sketch with its subelements are allowed to be selected
if (selection.size() != 1) { if (selection.size() != 1) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Select an edge from the sketch.")); QObject::tr("Select at least two edges from the sketch."));
return; return;
} }
// get the needed lists and objects // get the needed lists and objects
const std::vector<std::string> &SubNames = selection[0].getSubNames(); const std::vector<std::string> &SubNames = selection[0].getSubNames();
if (SubNames.size() < 2) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Select at least two edges from the sketch."));
return;
}
Sketcher::SketchObject* Obj = dynamic_cast<Sketcher::SketchObject*>(selection[0].getObject()); Sketcher::SketchObject* Obj = dynamic_cast<Sketcher::SketchObject*>(selection[0].getObject());
int GeoIdFirst=-1; int GeoIdFirst=-1;
int GeoIdLast=-1; int GeoIdLast=-1;
// undo command open
openCommand("add coincident constraint");
// go through the selected subelements // go through the selected subelements
for (unsigned int i=0; i<(SubNames.size()-1); i++ ) { for (unsigned int i=0; i<(SubNames.size()-1); i++ ) {
// only handle edges // only handle edges
@ -120,25 +128,17 @@ void CmdSketcherCloseShape::activated(int iMsg)
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ) { geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"), QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable")); QObject::tr("One selected edge is not connectable"));
abortCommand();
return; return;
} }
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand( Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start); selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
// finish the transaction and update
commitCommand();
} }
} }
// Close Last Edge with First Edge // Close Last Edge with First Edge
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand( Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start); selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start);
@ -183,14 +183,22 @@ void CmdSketcherConnect::activated(int iMsg)
// only one sketch with its subelements are allowed to be selected // only one sketch with its subelements are allowed to be selected
if (selection.size() != 1) { if (selection.size() != 1) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Select an edge from the sketch.")); QObject::tr("Select at least two edges from the sketch."));
return; return;
} }
// get the needed lists and objects // get the needed lists and objects
const std::vector<std::string> &SubNames = selection[0].getSubNames(); const std::vector<std::string> &SubNames = selection[0].getSubNames();
if (SubNames.size() < 2) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Select at least two edges from the sketch."));
return;
}
Sketcher::SketchObject* Obj = dynamic_cast<Sketcher::SketchObject*>(selection[0].getObject()); Sketcher::SketchObject* Obj = dynamic_cast<Sketcher::SketchObject*>(selection[0].getObject());
// undo command open
openCommand("add coincident constraint");
// go through the selected subelements // go through the selected subelements
for (unsigned int i=0; i<(SubNames.size()-1); i++ ) { for (unsigned int i=0; i<(SubNames.size()-1); i++ ) {
// only handle edges // only handle edges
@ -208,22 +216,18 @@ void CmdSketcherConnect::activated(int iMsg)
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId())) { geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId())) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"), QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable")); QObject::tr("One selected edge is not connectable"));
abortCommand();
return; return;
} }
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand( Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start); selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
}
}
// finish the transaction and update // finish the transaction and update
commitCommand(); commitCommand();
}
}
updateActive(); updateActive();
// clear the selection (convenience) // clear the selection (convenience)
@ -293,7 +297,6 @@ void CmdSketcherSelectConstraints::activated(int iMsg)
} }
} }
} }
} }
bool CmdSketcherSelectConstraints::isActive(void) bool CmdSketcherSelectConstraints::isActive(void)

View File

@ -1,141 +1,141 @@
<RCC> <RCC>
<qresource> <qresource>
<file>icons/Constraint_TangentToStart.svg</file> <file>icons/small/Constraint_Concentric_sm.xpm</file>
<file>icons/Sketcher_CreateFillet.svg</file> <file>icons/small/Constraint_EqualLength_sm.xpm</file>
<file>icons/Sketcher_CreateLine.svg</file> <file>icons/small/Constraint_ExternalAngle_sm.xpm</file>
<file>icons/Sketcher_SelectConstraints.svg</file> <file>icons/small/Constraint_Horizontal_sm.xpm</file>
<file>icons/Sketcher_CreateArc.svg</file> <file>icons/small/Constraint_InternalAngle_sm.xpm</file>
<file>icons/Sketcher_CreateCircle.svg</file> <file>icons/small/Constraint_Length_sm.xpm</file>
<file>icons/Sketcher_CreateSlot.svg</file> <file>icons/small/Constraint_Lock_sm.xpm</file>
<file>icons/Sketcher_CloseShape.svg</file> <file>icons/small/Constraint_Parallel_sm.xpm</file>
<file>icons/Constraint_PointOnPoint.svg</file> <file>icons/small/Constraint_Perpendicular_sm.xpm</file>
<file>icons/Sketcher_Sketch.svg</file>
<file>icons/Sketcher_Element_Circle_Edge.svg</file>
<file>icons/Sketcher_Element_Line_EndPoint.svg</file>
<file>icons/Sketcher_DraftLine.svg</file>
<file>icons/Sketcher_External.svg</file>
<file>icons/Sketcher_Element_Line_StartingPoint.svg</file>
<file>icons/Sketcher_ConstrainDistance.svg</file>
<file>icons/Sketcher_LeaveSketch.svg</file>
<file>icons/Sketcher_AlterFillet.svg</file>
<file>icons/Sketcher_CreateHexagon.svg</file>
<file>icons/Sketcher_Create3PointArc.svg</file>
<file>icons/Sketcher_SelectHorizontalAxis.svg</file>
<file>icons/Sketcher_ConstrainParallel.svg</file>
<file>icons/Sketcher_ConnectLines.svg</file>
<file>icons/Sketcher_SelectVerticalAxis.svg</file>
<file>icons/Sketcher_Element_Arc_MidPoint.svg</file>
<file>icons/Constraint_Parallel.svg</file>
<file>icons/Constraint_Concentric.svg</file>
<file>icons/Sketcher_ProfilesHexagon1.svg</file>
<file>icons/Sketcher_ConstrainHorizontal.svg</file>
<file>icons/Constraint_InternalAngle.svg</file>
<file>icons/Constraint_PointOnStart.svg</file>
<file>icons/Sketcher_ConstrainCoincident.svg</file>
<file>icons/Constraint_PointOnEnd.svg</file>
<file>icons/Sketcher_CreateText.svg</file>
<file>icons/Sketcher_Element_Circle_MidPoint.svg</file>
<file>icons/Sketcher_MapSketch.svg</file>
<file>icons/Constraint_PointOnObject.svg</file>
<file>icons/Constraint_PointOnMidPoint.svg</file>
<file>icons/Sketcher_NewSketch.svg</file>
<file>icons/Sketcher_ConstrainLock.svg</file>
<file>icons/Constraint_Perpendicular.svg</file>
<file>icons/Constraint_Symmetric.svg</file>
<file>icons/Constraint_PointToObject.svg</file>
<file>icons/Sketcher_CreateHeptagon.svg</file>
<file>icons/Sketcher_Trimming.svg</file>
<file>icons/Sketcher_Element_Arc_Edge.svg</file>
<file>icons/Sketcher_CreateTriangle.svg</file>
<file>icons/Sketcher_Element_Arc_StartingPoint.svg</file>
<file>icons/Sketcher_Element_Line_Edge.svg</file>
<file>icons/Constraint_EqualLength.svg</file>
<file>icons/Sketcher_CreateRectangle.svg</file>
<file>icons/Constraint_ExternalAngle.svg</file>
<file>icons/Constraint_Length.svg</file>
<file>icons/Sketcher_EditSketch.svg</file>
<file>icons/Constraint_Vertical.svg</file>
<file>icons/Constraint_TangentToEnd.svg</file>
<file>icons/Constraint_VerticalDistance.svg</file>
<file>icons/Sketcher_CreateOctagon.svg</file>
<file>icons/Sketcher_CreatePoint.svg</file>
<file>icons/Constraint_Horizontal.svg</file>
<file>icons/Sketcher_CreatePentagon.svg</file>
<file>icons/Sketcher_ConstrainVertical.svg</file>
<file>icons/Sketcher_Element_Arc_EndPoint.svg</file>
<file>icons/Sketcher_AlterConstruction.svg</file>
<file>icons/Constraint_HorizontalDistance.svg</file>
<file>icons/Sketcher_CreateSquare.svg</file>
<file>icons/Constraint_Radius.svg</file>
<file>icons/Sketcher_ViewSketch.svg</file>
<file>icons/Sketcher_Element_Point_StartingPoint.svg</file>
<file>icons/Sketcher_Create3PointCircle.svg</file>
<file>icons/Sketcher_SelectOrigin.svg</file>
<file>icons/Sketcher_Element_SelectionTypeInvalid.svg</file>
<file>icons/Constraint_Tangent.svg</file>
<file>icons/Sketcher_CreatePolyline.svg</file>
<file>icons/small/Constraint_Radius_sm.xpm</file>
<file>icons/small/Constraint_HorizontalDistance_sm.xpm</file>
<file>icons/small/Constraint_PointOnEnd_sm.xpm</file> <file>icons/small/Constraint_PointOnEnd_sm.xpm</file>
<file>icons/small/Constraint_PointOnMidPoint_sm.xpm</file>
<file>icons/small/Constraint_PointOnObject_sm.xpm</file>
<file>icons/small/Constraint_PointOnPoint_sm.xpm</file>
<file>icons/small/Constraint_PointOnStart_sm.xpm</file>
<file>icons/small/Constraint_PointToObject_sm.xpm</file>
<file>icons/small/Constraint_Radius_sm.xpm</file>
<file>icons/small/Constraint_Tangent_sm.xpm</file>
<file>icons/small/Constraint_TangentToEnd_sm.xpm</file>
<file>icons/small/Constraint_TangentToStart_sm.xpm</file>
<file>icons/small/Constraint_Vertical_sm.xpm</file>
<file>icons/small/Constraint_HorizontalDistance_sm.xpm</file>
<file>icons/small/Constraint_VerticalDistance_sm.xpm</file>
<file>icons/small/Constraint_Symmetric_sm.xpm</file>
<file>icons/small/Sketcher_Element_Line_EndPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Line_EndPoint_sm.xpm</file>
<file>icons/small/Sketcher_ConnectLines.xpm</file> <file>icons/small/Sketcher_ConnectLines.xpm</file>
<file>icons/small/Constraint_PointToObject_sm.xpm</file>
<file>icons/small/Sketcher_Element_Arc_Edge_sm.xpm</file> <file>icons/small/Sketcher_Element_Arc_Edge_sm.xpm</file>
<file>icons/small/Sketcher_SelectHorizontalAxis.xpm</file> <file>icons/small/Sketcher_SelectHorizontalAxis.xpm</file>
<file>icons/small/Sketcher_Element_Line_Edge_sm.xpm</file> <file>icons/small/Sketcher_Element_Line_Edge_sm.xpm</file>
<file>icons/small/Constraint_Parallel_sm.xpm</file>
<file>icons/small/Constraint_InternalAngle_sm.xpm</file>
<file>icons/small/Sketcher_Element_Arc_EndPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Arc_EndPoint_sm.xpm</file>
<file>icons/small/Constraint_PointOnPoint_sm.xpm</file>
<file>icons/small/Sketcher_SelectVerticalAxis.xpm</file> <file>icons/small/Sketcher_SelectVerticalAxis.xpm</file>
<file>icons/small/Constraint_VerticalDistance_sm.xpm</file>
<file>icons/small/Constraint_Length_sm.xpm</file>
<file>icons/small/Constraint_PointOnStart_sm.xpm</file>
<file>icons/small/Constraint_PointOnObject_sm.xpm</file>
<file>icons/small/Sketcher_Element_SelectionTypeInvalid_sm.xpm</file> <file>icons/small/Sketcher_Element_SelectionTypeInvalid_sm.xpm</file>
<file>icons/small/Constraint_Concentric_sm.xpm</file>
<file>icons/small/Constraint_Perpendicular_sm.xpm</file>
<file>icons/small/Constraint_PointOnMidPoint_sm.xpm</file>
<file>icons/small/Constraint_Lock_sm.xpm</file>
<file>icons/small/Constraint_ExternalAngle_sm.xpm</file>
<file>icons/small/Sketcher_CloseShape.xpm</file> <file>icons/small/Sketcher_CloseShape.xpm</file>
<file>icons/small/Sketcher_Element_Point_StartingPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Point_StartingPoint_sm.xpm</file>
<file>icons/small/Constraint_Horizontal_sm.xpm</file>
<file>icons/small/Sketcher_Element_Circle_MidPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Circle_MidPoint_sm.xpm</file>
<file>icons/small/Constraint_TangentToStart_sm.xpm</file>
<file>icons/small/Sketcher_Element_Arc_StartingPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Arc_StartingPoint_sm.xpm</file>
<file>icons/small/Constraint_EqualLength_sm.xpm</file>
<file>icons/small/Sketcher_SelectOrigin.xpm</file> <file>icons/small/Sketcher_SelectOrigin.xpm</file>
<file>icons/small/Sketcher_Element_Circle_Edge_sm.xpm</file> <file>icons/small/Sketcher_Element_Circle_Edge_sm.xpm</file>
<file>icons/small/Constraint_TangentToEnd_sm.xpm</file>
<file>icons/small/Constraint_Symmetric_sm.xpm</file>
<file>icons/small/Sketcher_Element_Arc_MidPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Arc_MidPoint_sm.xpm</file>
<file>icons/small/Sketcher_SelectConstraints.xpm</file> <file>icons/small/Sketcher_SelectConstraints.xpm</file>
<file>icons/small/Sketcher_Element_Line_StartingPoint_sm.xpm</file> <file>icons/small/Sketcher_Element_Line_StartingPoint_sm.xpm</file>
<file>icons/small/Constraint_Vertical_sm.xpm</file> <file>icons/Constraint_Concentric.svg</file>
<file>icons/small/Constraint_Tangent_sm.xpm</file> <file>icons/Constraint_EqualLength.svg</file>
<file>translations/Sketcher_es-ES.qm</file> <file>icons/Constraint_ExternalAngle.svg</file>
<file>translations/Sketcher_nl.qm</file> <file>icons/Constraint_Horizontal.svg</file>
<file>translations/Sketcher_uk.qm</file> <file>icons/Constraint_InternalAngle.svg</file>
<file>translations/Sketcher_sv-SE.qm</file> <file>icons/Constraint_Length.svg</file>
<file>icons/Constraint_Parallel.svg</file>
<file>icons/Constraint_Perpendicular.svg</file>
<file>icons/Constraint_PointOnEnd.svg</file>
<file>icons/Constraint_PointOnMidPoint.svg</file>
<file>icons/Constraint_PointOnObject.svg</file>
<file>icons/Constraint_PointOnPoint.svg</file>
<file>icons/Constraint_PointOnStart.svg</file>
<file>icons/Constraint_PointToObject.svg</file>
<file>icons/Constraint_Radius.svg</file>
<file>icons/Constraint_Tangent.svg</file>
<file>icons/Constraint_TangentToEnd.svg</file>
<file>icons/Constraint_TangentToStart.svg</file>
<file>icons/Constraint_Vertical.svg</file>
<file>icons/Constraint_HorizontalDistance.svg</file>
<file>icons/Constraint_VerticalDistance.svg</file>
<file>icons/Constraint_Symmetric.svg</file>
<file>icons/Sketcher_ConstrainCoincident.svg</file>
<file>icons/Sketcher_ConstrainDistance.svg</file>
<file>icons/Sketcher_ConstrainHorizontal.svg</file>
<file>icons/Sketcher_ConstrainLock.svg</file>
<file>icons/Sketcher_ConstrainParallel.svg</file>
<file>icons/Sketcher_ConstrainVertical.svg</file>
<file>icons/Sketcher_CreateArc.svg</file>
<file>icons/Sketcher_Create3PointArc.svg</file>
<file>icons/Sketcher_CreateCircle.svg</file>
<file>icons/Sketcher_Create3PointCircle.svg</file>
<file>icons/Sketcher_CreateLine.svg</file>
<file>icons/Sketcher_CreatePoint.svg</file>
<file>icons/Sketcher_CreatePolyline.svg</file>
<file>icons/Sketcher_CreateRectangle.svg</file>
<file>icons/Sketcher_CreateSlot.svg</file>
<file>icons/Sketcher_CreateFillet.svg</file>
<file>icons/Sketcher_CreateTriangle.svg</file>
<file>icons/Sketcher_CreateSquare.svg</file>
<file>icons/Sketcher_CreatePentagon.svg</file>
<file>icons/Sketcher_CreateHexagon.svg</file>
<file>icons/Sketcher_CreateHeptagon.svg</file>
<file>icons/Sketcher_CreateOctagon.svg</file>
<file>icons/Sketcher_CreateText.svg</file>
<file>icons/Sketcher_DraftLine.svg</file>
<file>icons/Sketcher_Trimming.svg</file>
<file>icons/Sketcher_External.svg</file>
<file>icons/Sketcher_EditSketch.svg</file>
<file>icons/Sketcher_LeaveSketch.svg</file>
<file>icons/Sketcher_MapSketch.svg</file>
<file>icons/Sketcher_NewSketch.svg</file>
<file>icons/Sketcher_Sketch.svg</file>
<file>icons/Sketcher_ViewSketch.svg</file>
<file>icons/Sketcher_AlterConstruction.svg</file>
<file>icons/Sketcher_ProfilesHexagon1.svg</file>
<file>icons/Sketcher_AlterFillet.svg</file>
<file>icons/Sketcher_CloseShape.svg</file>
<file>icons/Sketcher_ConnectLines.svg</file>
<file>icons/Sketcher_Element_Circle_Edge.svg</file>
<file>icons/Sketcher_Element_Line_EndPoint.svg</file>
<file>icons/Sketcher_Element_Line_StartingPoint.svg</file>
<file>icons/Sketcher_Element_Arc_MidPoint.svg</file>
<file>icons/Sketcher_Element_Circle_MidPoint.svg</file>
<file>icons/Sketcher_Element_Arc_Edge.svg</file>
<file>icons/Sketcher_Element_Arc_StartingPoint.svg</file>
<file>icons/Sketcher_Element_Line_Edge.svg</file>
<file>icons/Sketcher_Element_Arc_EndPoint.svg</file>
<file>icons/Sketcher_Element_Point_StartingPoint.svg</file>
<file>icons/Sketcher_SelectOrigin.svg</file>
<file>icons/Sketcher_Element_SelectionTypeInvalid.svg</file>
<file>icons/Sketcher_SelectHorizontalAxis.svg</file>
<file>icons/Sketcher_SelectVerticalAxis.svg</file>
<file>icons/Sketcher_SelectConstraints.svg</file>
<file>translations/Sketcher_af.qm</file>
<file>translations/Sketcher_de.qm</file> <file>translations/Sketcher_de.qm</file>
<file>translations/Sketcher_it.qm</file>
<file>translations/Sketcher_pl.qm</file>
<file>translations/Sketcher_fi.qm</file> <file>translations/Sketcher_fi.qm</file>
<file>translations/Sketcher_tr.qm</file>
<file>translations/Sketcher_ru.qm</file>
<file>translations/Sketcher_fr.qm</file> <file>translations/Sketcher_fr.qm</file>
<file>translations/Sketcher_hr.qm</file> <file>translations/Sketcher_hr.qm</file>
<file>translations/Sketcher_af.qm</file> <file>translations/Sketcher_it.qm</file>
<file>translations/Sketcher_nl.qm</file>
<file>translations/Sketcher_no.qm</file> <file>translations/Sketcher_no.qm</file>
<file>translations/Sketcher_pl.qm</file>
<file>translations/Sketcher_ru.qm</file>
<file>translations/Sketcher_uk.qm</file>
<file>translations/Sketcher_tr.qm</file>
<file>translations/Sketcher_sv-SE.qm</file>
<file>translations/Sketcher_zh-TW.qm</file> <file>translations/Sketcher_zh-TW.qm</file>
<file>translations/Sketcher_zh-CN.qm</file>
<file>translations/Sketcher_ro.qm</file>
<file>translations/Sketcher_ja.qm</file>
<file>translations/Sketcher_pt-BR.qm</file> <file>translations/Sketcher_pt-BR.qm</file>
<file>translations/Sketcher_sk.qm</file>
<file>translations/Sketcher_hu.qm</file>
<file>translations/Sketcher_cs.qm</file> <file>translations/Sketcher_cs.qm</file>
<file>translations/Sketcher_sk.qm</file>
<file>translations/Sketcher_es-ES.qm</file>
<file>translations/Sketcher_zh-CN.qm</file>
<file>translations/Sketcher_ja.qm</file>
<file>translations/Sketcher_ro.qm</file>
<file>translations/Sketcher_hu.qm</file>
<file>translations/Sketcher_pt-PT.qm</file> <file>translations/Sketcher_pt-PT.qm</file>
</qresource> </qresource>
</RCC> </RCC>