Measure: Implement quick measure as command and make it toggable
The quick measure can considerably slow down the system when selecting part elements. With this change the user is able to turn off this bottleneck.
This commit is contained in:
@@ -723,6 +723,7 @@ MenuItem* StdWorkbench::setupMenuBar() const
|
||||
<< "Separator";
|
||||
#endif
|
||||
*tool << "Std_Measure"
|
||||
<< "Std_QuickMeasure"
|
||||
<< "Std_UnitsCalculator"
|
||||
<< "Separator"
|
||||
<< "Std_ViewLoadImage"
|
||||
@@ -812,7 +813,7 @@ ToolBarItem* StdWorkbench::setupToolBars() const
|
||||
auto view = new ToolBarItem( root );
|
||||
view->setCommand("View");
|
||||
*view << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewGroup" << "Std_AlignToSelection"
|
||||
<< "Separator" << "Std_DrawStyle" << "Std_TreeViewActions" << "Std_Measure";
|
||||
<< "Separator" << "Std_DrawStyle" << "Std_TreeViewActions" << "Std_Measure" << "Std_QuickMeasure";
|
||||
|
||||
// Individual views
|
||||
auto individualViews = new ToolBarItem(root, ToolBarItem::DefaultVisibility::Hidden);
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include <Gui/WidgetFactory.h>
|
||||
|
||||
#include "DlgPrefsMeasureAppearanceImp.h"
|
||||
#include "QuickMeasure.h"
|
||||
#include "QuickMeasurePy.h"
|
||||
#include "ViewProviderMeasureAngle.h"
|
||||
#include "ViewProviderMeasureDistance.h"
|
||||
@@ -112,9 +111,5 @@ PyMOD_INIT_FUNC(MeasureGui)
|
||||
|
||||
Base::Interpreter().addType(&MeasureGui::QuickMeasurePy::Type, mod, "QuickMeasure");
|
||||
|
||||
// Create a QuickMeasure instance
|
||||
auto measure = new MeasureGui::QuickMeasure(QApplication::instance());
|
||||
Q_UNUSED(measure)
|
||||
|
||||
PyMOD_Return(mod);
|
||||
}
|
||||
|
||||
@@ -20,8 +20,13 @@
|
||||
**************************************************************************/
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
#include <QApplication>
|
||||
#endif
|
||||
|
||||
#include <App/Application.h>
|
||||
#include <App/Document.h>
|
||||
#include <Gui/Action.h>
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/Control.h>
|
||||
@@ -30,6 +35,7 @@
|
||||
#include <Gui/View3DInventor.h>
|
||||
#include <Gui/View3DInventorViewer.h>
|
||||
|
||||
#include "QuickMeasure.h"
|
||||
#include "TaskMeasure.h"
|
||||
|
||||
|
||||
@@ -76,6 +82,65 @@ bool StdCmdMeasure::isActive()
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
class StdCmdQuickMeasure: public Gui::Command
|
||||
{
|
||||
public:
|
||||
StdCmdQuickMeasure()
|
||||
: Command("Std_QuickMeasure")
|
||||
{
|
||||
sGroup = "Measure";
|
||||
sMenuText = QT_TR_NOOP("&Quick measure");
|
||||
sToolTipText = QT_TR_NOOP("Toggle quick measure");
|
||||
sWhatsThis = "Std_QuickMeasure";
|
||||
sStatusTip = QT_TR_NOOP("Toggle quick measure");
|
||||
accessParameter();
|
||||
}
|
||||
~StdCmdQuickMeasure() override = default;
|
||||
StdCmdQuickMeasure(const StdCmdQuickMeasure&) = delete;
|
||||
StdCmdQuickMeasure(StdCmdQuickMeasure&&) = delete;
|
||||
StdCmdQuickMeasure& operator=(const StdCmdQuickMeasure&) = delete;
|
||||
StdCmdQuickMeasure& operator=(StdCmdQuickMeasure&&) = delete;
|
||||
|
||||
const char* className() const override
|
||||
{
|
||||
return "StdCmdQuickMeasure";
|
||||
}
|
||||
|
||||
protected:
|
||||
void activated(int iMsg) override
|
||||
{
|
||||
if (parameter.isValid()) {
|
||||
parameter->SetBool("EnableQuickMeasure", iMsg > 0);
|
||||
}
|
||||
|
||||
if (iMsg == 0) {
|
||||
quickMeasure.reset();
|
||||
}
|
||||
else {
|
||||
quickMeasure = std::make_unique<MeasureGui::QuickMeasure>(QApplication::instance());
|
||||
}
|
||||
}
|
||||
Gui::Action* createAction() override
|
||||
{
|
||||
Gui::Action* action = Gui::Command::createAction();
|
||||
action->setCheckable(true);
|
||||
action->setChecked(parameter->GetBool("EnableQuickMeasure", false));
|
||||
return action;
|
||||
}
|
||||
void accessParameter()
|
||||
{
|
||||
// clang-format off
|
||||
parameter = App::GetApplication().GetUserParameter().
|
||||
GetGroup("BaseApp/Preferences/Mod/Measure");
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<MeasureGui::QuickMeasure> quickMeasure;
|
||||
ParameterGrp::handle parameter;
|
||||
};
|
||||
|
||||
void CreateMeasureCommands()
|
||||
{
|
||||
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
@@ -83,4 +148,5 @@ void CreateMeasureCommands()
|
||||
auto cmd = new StdCmdMeasure();
|
||||
cmd->initAction();
|
||||
rcCmdMgr.addCommand(cmd);
|
||||
rcCmdMgr.addCommand(new StdCmdQuickMeasure);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user