MeasureGui: Insert measure command into menu & toolbar

This commit is contained in:
hlorus
2024-07-05 10:47:07 +02:00
parent ab1d86235d
commit eb05effb9a
4 changed files with 96 additions and 2 deletions

View File

@@ -37,6 +37,7 @@
#include "ViewProviderMeasureAngle.h"
#include "ViewProviderMeasureDistance.h"
#include "ViewProviderMeasureBase.h"
#include "WorkbenchManipulator.h"
// use a different name to CreateCommand()
@@ -86,6 +87,9 @@ PyMOD_INIT_FUNC(MeasureGui)
PyObject* mod = MeasureGui::initModule();
Base::Console().Log("Loading GUI of Measure module... done\n");
auto manip = std::make_shared<MeasureGui::WorkbenchManipulator>();
Gui::WorkbenchManipulator::installManipulator(manip);
// instantiating the commands
CreateMeasureCommands();

View File

@@ -59,8 +59,8 @@ SET(MeasureGui_SRCS
ViewProviderMeasureAngle.h
ViewProviderMeasureDistance.cpp
ViewProviderMeasureDistance.h
# Workbench.cpp
# Workbench.h
WorkbenchManipulator.cpp
WorkbenchManipulator.h
DlgPrefsMeasureAppearanceImp.ui
DlgPrefsMeasureAppearanceImp.cpp
DlgPrefsMeasureAppearanceImp.h

View File

@@ -0,0 +1,50 @@
/***************************************************************************
* Copyright (c) 2024 David Friedli <david[at]friedli-be.ch> *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
**************************************************************************/
#include "PreCompiled.h"
#include "WorkbenchManipulator.h"
#include <Gui/MenuManager.h>
#include <Gui/ToolBarManager.h>
using namespace MeasureGui;
void WorkbenchManipulator::modifyMenuBar([[maybe_unused]] Gui::MenuItem* menuBar)
{
auto menuTools = menuBar->findItem("&Tools");
if (!menuTools) {
return;
}
auto itemMeasure = new Gui::MenuItem();
itemMeasure->setCommand("Std_Measure");
menuTools->appendItem(itemMeasure);
}
void WorkbenchManipulator::modifyToolBars(Gui::ToolBarItem* toolBar) {
auto tbView = toolBar->findItem("View");
if (!tbView) {
return;
}
auto itemMeasure = new Gui::ToolBarItem();
itemMeasure->setCommand("Std_Measure");
tbView->appendItem(itemMeasure);
}

View File

@@ -0,0 +1,40 @@
/***************************************************************************
* Copyright (c) 2024 David Friedli <david[at]friedli-be.ch> *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
**************************************************************************/
#ifndef MEASUREGUI_WORKBENCHMANIPULATOR_H
#define MEASUREGUI_WORKBENCHMANIPULATOR_H
#include <Gui/WorkbenchManipulator.h>
namespace MeasureGui {
class WorkbenchManipulator: public Gui::WorkbenchManipulator
{
protected:
void modifyMenuBar(Gui::MenuItem* menuBar) override;
void modifyToolBars(Gui::ToolBarItem* toolBar) override;
};
} // namespace MeasureGui
#endif // MEASUREGUI_WORKBENCHMANIPULATOR_H