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

View File

@ -529,7 +529,7 @@ void CmdSketcherConstrainCoincident::activated(int iMsg)
const std::vector<std::string> &SubNames = selection[0].getSubNames();
Sketcher::SketchObject* Obj = dynamic_cast<Sketcher::SketchObject*>(selection[0].getObject());
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
if (SubNames.size() < 2) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
QObject::tr("Select two or more vertexes from the sketch."));
@ -552,33 +552,39 @@ void CmdSketcherConstrainCoincident::activated(int iMsg)
getIdsFromName(SubNames[0], Obj, GeoId1, PosId1);
// undo command open
bool constraintsAdded = false;
openCommand("add coincident constraint");
for (std::size_t i=1; i<SubNames.size(); i++) {
getIdsFromName(SubNames[i], Obj, GeoId2, PosId2);
// check if any of the coincident constraints exist
bool constraintExists=false;
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();
it != vals.end(); ++it) {
if ( (*it)->Type == Sketcher::Coincident &&
( (*it)->First == GeoId1 && (*it)->FirstPos == PosId1 &&
(*it)->Second == GeoId2 && (*it)->SecondPos == PosId2 ) ||
( (*it)->First == GeoId2 && (*it)->FirstPos == PosId2 &&
(*it)->Second == GeoId1 && (*it)->SecondPos == PosId1 ) ) {
constraintExists=true;
break;
}
}
if (!constraintExists)
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,PosId1,GeoId2,PosId2);
// check if any of the coincident constraints exist
bool constraintExists=false;
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); it != vals.end(); ++it) {
if ((*it)->Type == Sketcher::Coincident &&
( (*it)->First == GeoId1 && (*it)->FirstPos == PosId1 &&
(*it)->Second == GeoId2 && (*it)->SecondPos == PosId2 ) ||
( (*it)->First == GeoId2 && (*it)->FirstPos == PosId2 &&
(*it)->Second == GeoId1 && (*it)->SecondPos == PosId1 ) ) {
constraintExists=true;
break;
}
}
if (!constraintExists) {
constraintsAdded = true;
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,PosId1,GeoId2,PosId2);
}
}
// finish the transaction and update
commitCommand();
// finish or abort the transaction and update
if (constraintsAdded)
commitCommand();
else
abortCommand();
updateActive();
// clear the selection (convenience)

View File

@ -47,18 +47,19 @@ using namespace Sketcher;
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
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())
->getSketchMode() == ViewProviderSketch::STATUS_NONE)
->getSketchMode() == ViewProviderSketch::STATUS_NONE) {
if (!actsOnSelection)
return true;
else{
if(Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0)
return true;
}
return true;
else if (Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0)
return true;
}
}
}
return false;
}
@ -87,62 +88,61 @@ void CmdSketcherCloseShape::activated(int iMsg)
// only one sketch with its subelements are allowed to be selected
if (selection.size() != 1) {
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;
}
// get the needed lists and objects
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());
int GeoIdFirst=-1;
int GeoIdLast=-1;
// undo command open
openCommand("add coincident constraint");
// go through the selected subelements
for (unsigned int i=0; i<(SubNames.size()-1); i++ ) {
// only handle edges
if (SubNames[i].size() > 4 && SubNames[i].substr(0,4) == "Edge" &&
SubNames[i+1].size() > 4 && SubNames[i+1].substr(0,4) == "Edge" ) {
SubNames[i+1].size() > 4 && SubNames[i+1].substr(0,4) == "Edge" ) {
int GeoId1 = std::atoi(SubNames[i].substr(4,4000).c_str()) - 1;
int GeoId2 = std::atoi(SubNames[i+1].substr(4,4000).c_str()) - 1;
if(GeoIdFirst==-1)
GeoIdFirst=GeoId1;
GeoIdLast=GeoId2;
int GeoId1 = std::atoi(SubNames[i].substr(4,4000).c_str()) - 1;
int GeoId2 = std::atoi(SubNames[i+1].substr(4,4000).c_str()) - 1;
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
if ( (geo1->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo1->getTypeId() != Part::GeomArcOfCircle::getClassTypeId() ) ||
(geo2->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable"));
return;
}
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
if(GeoIdFirst==-1)
GeoIdFirst=GeoId1;
// finish the transaction and update
commitCommand();
GeoIdLast=GeoId2;
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
if ((geo1->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo1->getTypeId() != Part::GeomArcOfCircle::getClassTypeId() ) ||
(geo2->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable"));
abortCommand();
return;
}
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
}
}
// Close Last Edge with First Edge
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start);
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start);
// finish the transaction and update
commitCommand();
@ -183,47 +183,51 @@ void CmdSketcherConnect::activated(int iMsg)
// only one sketch with its subelements are allowed to be selected
if (selection.size() != 1) {
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;
}
// get the needed lists and objects
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());
// undo command open
openCommand("add coincident constraint");
// go through the selected subelements
for (unsigned int i=0; i<(SubNames.size()-1); i++ ) {
// only handle edges
if (SubNames[i].size() > 4 && SubNames[i].substr(0,4) == "Edge" &&
SubNames[i+1].size() > 4 && SubNames[i+1].substr(0,4) == "Edge" ) {
SubNames[i+1].size() > 4 && SubNames[i+1].substr(0,4) == "Edge" ) {
int GeoId1 = std::atoi(SubNames[i].substr(4,4000).c_str()) - 1;
int GeoId2 = std::atoi(SubNames[i+1].substr(4,4000).c_str()) - 1;
int GeoId1 = std::atoi(SubNames[i].substr(4,4000).c_str()) - 1;
int GeoId2 = std::atoi(SubNames[i+1].substr(4,4000).c_str()) - 1;
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
if ( (geo1->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo1->getTypeId() != Part::GeomArcOfCircle::getClassTypeId() ) ||
(geo2->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable"));
return;
}
// undo command open
openCommand("add coincident constraint");
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
// finish the transaction and update
commitCommand();
const Part::Geometry *geo1 = Obj->getGeometry(GeoId1);
const Part::Geometry *geo2 = Obj->getGeometry(GeoId2);
if ((geo1->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo1->getTypeId() != Part::GeomArcOfCircle::getClassTypeId()) ||
(geo2->getTypeId() != Part::GeomLineSegment::getClassTypeId() &&
geo2->getTypeId() != Part::GeomArcOfCircle::getClassTypeId())) {
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Impossible constraint"),
QObject::tr("One selected edge is not connectable"));
abortCommand();
return;
}
Gui::Command::doCommand(
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
selection[0].getFeatName(),GeoId1,Sketcher::end,GeoId2,Sketcher::start);
}
}
// finish the transaction and update
commitCommand();
updateActive();
// clear the selection (convenience)
@ -282,18 +286,17 @@ void CmdSketcherSelectConstraints::activated(int iMsg)
int GeoId = std::atoi(it->substr(4,4000).c_str()) - 1;
// push all the constraints
int i=1;
int i=1;
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();
it != vals.end(); ++it,++i) {
if ( (*it)->First == GeoId || (*it)->Second == GeoId || (*it)->Third == GeoId){
ss.str(std::string());
ss << "Constraint" << i;
Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
}
ss.str(std::string());
ss << "Constraint" << i;
Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
}
}
}
}
}
bool CmdSketcherSelectConstraints::isActive(void)

View File

@ -1,141 +1,141 @@
<RCC>
<qresource>
<file>icons/Constraint_TangentToStart.svg</file>
<file>icons/Sketcher_CreateFillet.svg</file>
<file>icons/Sketcher_CreateLine.svg</file>
<file>icons/Sketcher_SelectConstraints.svg</file>
<file>icons/Sketcher_CreateArc.svg</file>
<file>icons/Sketcher_CreateCircle.svg</file>
<file>icons/Sketcher_CreateSlot.svg</file>
<file>icons/Sketcher_CloseShape.svg</file>
<file>icons/Constraint_PointOnPoint.svg</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>
<qresource>
<file>icons/small/Constraint_Concentric_sm.xpm</file>
<file>icons/small/Constraint_EqualLength_sm.xpm</file>
<file>icons/small/Constraint_ExternalAngle_sm.xpm</file>
<file>icons/small/Constraint_Horizontal_sm.xpm</file>
<file>icons/small/Constraint_InternalAngle_sm.xpm</file>
<file>icons/small/Constraint_Length_sm.xpm</file>
<file>icons/small/Constraint_Lock_sm.xpm</file>
<file>icons/small/Constraint_Parallel_sm.xpm</file>
<file>icons/small/Constraint_Perpendicular_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_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_SelectHorizontalAxis.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/Constraint_PointOnPoint_sm.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/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_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/Constraint_TangentToStart_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_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_SelectConstraints.xpm</file>
<file>icons/small/Sketcher_Element_Line_StartingPoint_sm.xpm</file>
<file>icons/small/Constraint_Vertical_sm.xpm</file>
<file>icons/small/Constraint_Tangent_sm.xpm</file>
<file>translations/Sketcher_es-ES.qm</file>
<file>translations/Sketcher_nl.qm</file>
<file>translations/Sketcher_uk.qm</file>
<file>translations/Sketcher_sv-SE.qm</file>
<file>icons/Constraint_Concentric.svg</file>
<file>icons/Constraint_EqualLength.svg</file>
<file>icons/Constraint_ExternalAngle.svg</file>
<file>icons/Constraint_Horizontal.svg</file>
<file>icons/Constraint_InternalAngle.svg</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_it.qm</file>
<file>translations/Sketcher_pl.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_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_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-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_sk.qm</file>
<file>translations/Sketcher_hu.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>
</qresource>
</RCC>