Sketcher: Use generic tool hints table for DrawSketchHandlerSlot

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

View File

@@ -83,7 +83,27 @@ public:
private:
std::list<Gui::InputHint> getToolHints() const override
{
return lookupSlotHints(state());
using enum Gui::InputHint::UserInput;
return Gui::lookupHints<SelectMode>(
state(),
{
{.state = SelectMode::SeekFirst,
.hints =
{
{QObject::tr("%1 pick slot start point"), {MouseLeft}},
}},
{.state = SelectMode::SeekSecond,
.hints =
{
{QObject::tr("%1 pick slot end point"), {MouseLeft}},
}},
{.state = SelectMode::SeekThird,
.hints =
{
{QObject::tr("%1 pick slot width"), {MouseLeft}},
}},
});
}
void updateDataAndDrawToPosition(Base::Vector2d onSketchPos) override
@@ -349,17 +369,6 @@ private:
double radius, length, angle;
bool isHorizontal, isVertical;
int firstCurve;
struct HintEntry
{
SelectMode state;
std::list<Gui::InputHint> hints;
};
using HintTable = std::vector<HintEntry>;
static HintTable getSlotHintTable();
static std::list<Gui::InputHint> lookupSlotHints(SelectMode state);
};
template<>
@@ -706,29 +715,6 @@ void DSHSlotController::addConstraints()
}
}
DrawSketchHandlerSlot::HintTable DrawSketchHandlerSlot::getSlotHintTable()
{
return {// Structure: {SelectMode, {hints...}}
{SelectMode::SeekFirst,
{{QObject::tr("%1 pick slot start point"), {Gui::InputHint::UserInput::MouseLeft}}}},
{SelectMode::SeekSecond,
{{QObject::tr("%1 pick slot end point"), {Gui::InputHint::UserInput::MouseLeft}}}},
{SelectMode::SeekThird,
{{QObject::tr("%1 set slot radius"), {Gui::InputHint::UserInput::MouseMove}}}}};
}
std::list<Gui::InputHint> DrawSketchHandlerSlot::lookupSlotHints(SelectMode state)
{
const auto slotHintTable = getSlotHintTable();
auto it =
std::find_if(slotHintTable.begin(), slotHintTable.end(), [state](const HintEntry& entry) {
return entry.state == state;
});
return (it != slotHintTable.end()) ? it->hints : std::list<Gui::InputHint> {};
}
} // namespace SketcherGui