Skip to content

Commit

Permalink
MeasureGui: Insert measure command into menu & toolbar
Browse files Browse the repository at this point in the history
  • Loading branch information
hlorus committed Jul 5, 2024
1 parent 8ab5378 commit 33802f4
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/Mod/Measure/Gui/AppMeasureGui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include "ViewProviderMeasureAngle.h"
#include "ViewProviderMeasureDistance.h"
#include "ViewProviderMeasureBase.h"
#include "WorkbenchManipulator.h"


// use a different name to CreateCommand()
Expand Down Expand Up @@ -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();

Expand Down
4 changes: 2 additions & 2 deletions src/Mod/Measure/Gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
50 changes: 50 additions & 0 deletions src/Mod/Measure/Gui/WorkbenchManipulator.cpp
Original file line number Diff line number Diff line change
@@ -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);
}
40 changes: 40 additions & 0 deletions src/Mod/Measure/Gui/WorkbenchManipulator.h
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 33802f4

Please sign in to comment.