Sketcher: Use generic tool hints table for DrawSketchHandlerRotate

This commit is contained in:
Kacper Donat
2025-06-28 19:59:30 +02:00
parent f1eb315f20
commit ee3261482c

View File

@@ -83,6 +83,33 @@ public:
~DrawSketchHandlerRotate() override = default;
std::list<Gui::InputHint> getToolHints() const override
{
using enum Gui::InputHint::UserInput;
return Gui::lookupHints<SelectMode>(
state(),
{
{.state = SelectMode::SeekFirst,
.hints =
{
{QObject::tr("%1 pick center point", "Sketcher Rotate: hint"),
{MouseLeft}},
}},
{.state = SelectMode::SeekSecond,
.hints =
{
{QObject::tr("%1 set start angle", "Sketcher Rotate: hint"), {MouseLeft}},
}},
{.state = SelectMode::SeekThird,
.hints =
{
{QObject::tr("%1 set rotation angle", "Sketcher Rotate: hint"),
{MouseLeft}},
}},
});
}
private:
void updateDataAndDrawToPosition(Base::Vector2d onSketchPos) override
{
@@ -455,49 +482,8 @@ private:
return pointToRotate;
}
struct HintEntry
{
SelectMode state;
std::list<Gui::InputHint> hints;
};
using HintTable = std::vector<HintEntry>;
static HintTable getRotateHintTable();
static std::list<Gui::InputHint> lookupRotateHints(SelectMode state);
public:
std::list<Gui::InputHint> getToolHints() const override
{
return lookupRotateHints(state());
}
};
DrawSketchHandlerRotate::HintTable DrawSketchHandlerRotate::getRotateHintTable()
{
using enum Gui::InputHint::UserInput;
return {
{.state = SelectMode::SeekFirst,
.hints = {{QObject::tr("%1 pick center point", "Sketcher Rotate: hint"), {MouseLeft}}}},
{.state = SelectMode::SeekSecond,
.hints = {{QObject::tr("%1 set start angle", "Sketcher Rotate: hint"), {MouseLeft}}}},
{.state = SelectMode::SeekThird,
.hints = {{QObject::tr("%1 set rotation angle", "Sketcher Rotate: hint"), {MouseLeft}}}}};
}
std::list<Gui::InputHint> DrawSketchHandlerRotate::lookupRotateHints(SelectMode state)
{
const auto rotateHintTable = getRotateHintTable();
auto it = std::ranges::find_if(rotateHintTable, [state](const HintEntry& entry) {
return entry.state == state;
});
return (it != rotateHintTable.end()) ? it->hints : std::list<Gui::InputHint> {};
}
template<>
auto DSHRotateControllerBase::getState(int labelindex) const
{