From 717c478863bbf1bc23734370f6510df56adcb2cd Mon Sep 17 00:00:00 2001 From: edi271 Date: Sun, 30 Jan 2022 13:32:23 +0100 Subject: [PATCH] New tool remove prefix characters --- src/Mod/TechDraw/Gui/CommandExtensionDims.cpp | 73 +++++++++++++- src/Mod/TechDraw/Gui/Resources/TechDraw.qrc | 1 + .../TechDraw_ExtensionRemovePrefixChar.svg | 95 +++++++++++++++++++ src/Mod/TechDraw/Gui/Workbench.cpp | 3 + 4 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 src/Mod/TechDraw/Gui/Resources/icons/TechDraw_ExtensionRemovePrefixChar.svg diff --git a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp index ee7fc3ceb1..841f622fee 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionDims.cpp @@ -155,7 +155,7 @@ CmdTechDrawExtensionInsertDiameter::CmdTechDrawExtensionInsertDiameter() void CmdTechDrawExtensionInsertDiameter::activated(int iMsg) { Q_UNUSED(iMsg); - execInsertPrefixChar(this, "⌀"); + execInsertPrefixChar(this, "⌀"); } bool CmdTechDrawExtensionInsertDiameter::isActive(void) @@ -198,6 +198,62 @@ bool CmdTechDrawExtensionInsertSquare::isActive(void) return (havePage && haveView); } +//=========================================================================== +// TechDraw_ExtensionRemovePrefixChar +//=========================================================================== + +void execRemovePrefixChar(Gui::Command* cmd) { + // remove a prefix character from the format specifier + std::vector selection; + if (_checkSelection(cmd, selection, "TechDraw Remove Prefix")) { + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Remove Prefix")); + for (auto selected : selection) + { + auto object = selected.getObject(); + if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { + auto dim = dynamic_cast(selected.getObject()); + std::string formatSpec = dim->FormatSpec.getStrValue(); + int pos = formatSpec.find("%."); + if (pos != 0) + { + formatSpec = formatSpec.substr(pos); + dim->FormatSpec.setValue(formatSpec); + } + } + } + Gui::Command::commitCommand(); + } +} + +DEF_STD_CMD_A(CmdTechDrawExtensionRemovePrefixChar) + +CmdTechDrawExtensionRemovePrefixChar::CmdTechDrawExtensionRemovePrefixChar() + : Command("TechDraw_ExtensionRemovePrefixChar") +{ + sAppModule = "TechDraw"; + sGroup = QT_TR_NOOP("TechDraw"); + sMenuText = QT_TR_NOOP("Remove Prefix"); + sToolTipText = QT_TR_NOOP("Remove prefix symbols at the beginning of the dimension text:
\ +- Select one or more dimensions
\ +- Click this tool"); + sWhatsThis = "TechDraw_ExtensionRemovePrefixChar"; + sStatusTip = sMenuText; + sPixmap = "TechDraw_ExtensionRemovePrefixChar"; +} + +void CmdTechDrawExtensionRemovePrefixChar::activated(int iMsg) +{ + Q_UNUSED(iMsg); + execRemovePrefixChar(this); +} + +bool CmdTechDrawExtensionRemovePrefixChar::isActive(void) +{ + bool havePage = DrawGuiUtil::needPage(this); + bool haveView = DrawGuiUtil::needView(this); + return (havePage && haveView); +} + //=========================================================================== // TechDraw_ExtensionInsertPrefixGroup //=========================================================================== @@ -236,6 +292,9 @@ void CmdTechDrawExtensionInsertPrefixGroup::activated(int iMsg) case 1: //insert "〼" as prefix execInsertPrefixChar(this, "〼"); break; + case 2: //remove prefix characters + execRemovePrefixChar(this); + break; default: Base::Console().Message("CMD::CVGrp - invalid iMsg: %d\n", iMsg); }; @@ -255,6 +314,10 @@ Gui::Action* CmdTechDrawExtensionInsertPrefixGroup::createAction(void) p2->setIcon(Gui::BitmapFactory().iconFromTheme("TechDraw_ExtensionInsertSquare")); p2->setObjectName(QString::fromLatin1("TechDraw_ExtensionInsertSquare")); p2->setWhatsThis(QString::fromLatin1("TechDraw_ExtensionInsertSquare")); + QAction* p3 = pcAction->addAction(QString()); + p3->setIcon(Gui::BitmapFactory().iconFromTheme("TechDraw_ExtensionRemovePrefixChar")); + p3->setObjectName(QString::fromLatin1("TechDraw_ExtensionRemovePrefixChar")); + p3->setWhatsThis(QString::fromLatin1("TechDraw_ExtensionRemovePrefixChar")); _pcAction = pcAction; languageChange(); @@ -289,6 +352,13 @@ void CmdTechDrawExtensionInsertPrefixGroup::languageChange() - Select one or more dimensions
\ - Click this tool")); arc2->setStatusTip(arc2->text()); + QAction* arc3 = a[2]; + arc3->setText(QApplication::translate("TechDraw_ExtensionremovePrefixChar", "Remove Prefix")); + arc3->setToolTip(QApplication::translate("TechDraw_ExtensionremovePrefixChar", +"Remove prefix symbols at the beginning of the dimension text:
\ +- Select one or more dimensions
\ +- Click this tool")); + arc3->setStatusTip(arc3->text()); } bool CmdTechDrawExtensionInsertPrefixGroup::isActive(void) @@ -2263,6 +2333,7 @@ void CreateTechDrawCommandsExtensionDims(void) rcCmdMgr.addCommand(new CmdTechDrawExtensionInsertPrefixGroup()); rcCmdMgr.addCommand(new CmdTechDrawExtensionInsertDiameter()); rcCmdMgr.addCommand(new CmdTechDrawExtensionInsertSquare()); + rcCmdMgr.addCommand(new CmdTechDrawExtensionRemovePrefixChar()); rcCmdMgr.addCommand(new CmdTechDrawExtensionIncreaseDecreaseGroup()); rcCmdMgr.addCommand(new CmdTechDrawExtensionIncreaseDecimal()); rcCmdMgr.addCommand(new CmdTechDrawExtensionDecreaseDecimal()); diff --git a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc index a8cb1849e4..a16a9faaa9 100644 --- a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc +++ b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc @@ -53,6 +53,7 @@ icons/TechDraw_ExtensionThreadBoltBottom.svg icons/TechDraw_ExtensionInsertDiameter.svg icons/TechDraw_ExtensionInsertSquare.svg + icons/TechDraw_ExtensionRemovePrefixChar.svg icons/TechDraw_ExtensionCreateHorizChainDimension.svg icons/TechDraw_ExtensionCreateVertChainDimension.svg icons/TechDraw_ExtensionCreateObliqueChainDimension.svg diff --git a/src/Mod/TechDraw/Gui/Resources/icons/TechDraw_ExtensionRemovePrefixChar.svg b/src/Mod/TechDraw/Gui/Resources/icons/TechDraw_ExtensionRemovePrefixChar.svg new file mode 100644 index 0000000000..b70c9d1b82 --- /dev/null +++ b/src/Mod/TechDraw/Gui/Resources/icons/TechDraw_ExtensionRemovePrefixChar.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Mod/TechDraw/Gui/Workbench.cpp b/src/Mod/TechDraw/Gui/Workbench.cpp index 4e8845d395..daf6d759eb 100644 --- a/src/Mod/TechDraw/Gui/Workbench.cpp +++ b/src/Mod/TechDraw/Gui/Workbench.cpp @@ -140,6 +140,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const *tooldimensions << "Separator"; *tooldimensions << "TechDraw_ExtensionInsertDiameter"; *tooldimensions << "TechDraw_ExtensionInsertSquare"; + *tooldimensions << "TechDraw_ExtensionRemovePrefixChar"; *tooldimensions << "Separator"; *tooldimensions << "TechDraw_ExtensionIncreaseDecimal"; *tooldimensions << "TechDraw_ExtensionDecreaseDecimal"; @@ -316,6 +317,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const *extdimensions << "TechDraw_ExtensionInsertPrefixGroup"; // *extdimensions << "TechDraw_ExtensionInsertDiameter"; // *extdimensions << "TechDraw_ExtensionInsertSquare"; +// *extdimensions << "TechDraw_ExtensionRemovePrefixChar"; *extdimensions << "TechDraw_ExtensionIncreaseDecreaseGroup"; // *extdimensions << "TechDraw_ExtensionIncreaseDecimal"; // *extdimensions << "TechDraw_ExtensionDecreaseDecimal"; @@ -453,6 +455,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const *extdimensions << "TechDraw_ExtensionInsertPrefixGroup"; // *extdimensions << "TechDraw_ExtensionInsertDiameter"; // *extdimensions << "TechDraw_ExtensionInsertSquare"; +// *extdimensions << "TechDraw_ExtensionRemovePrefixChar"; *extdimensions << "TechDraw_ExtensionIncreaseDecreaseGroup"; // *extdimensions << "TechDraw_ExtensionIncreaseDecimal"; // *extdimensions << "TechDraw_ExtensionDecreaseDecimal";