14 CGuiActionBindHandler::CGuiActionBindHandler(QAction *action) : QObject(action), m_action(action)
16 this->connectDestroy(action);
17 connect(
sApp, &CApplication::aboutToShutdown,
this, &CGuiActionBindHandler::unbind);
20 CGuiActionBindHandler::CGuiActionBindHandler(QAbstractButton *button) : QObject(button), m_button(button)
22 this->connectDestroy(button);
23 connect(
sApp, &CApplication::aboutToShutdown,
this, &CGuiActionBindHandler::unbind);
26 CGuiActionBindHandler::~CGuiActionBindHandler() {}
32 if (!menu || menu->isEmpty()) {
return boundActions; }
33 for (QAction *action : menu->actions())
35 if (action->text().isEmpty()) {
continue; }
36 if (action->isSeparator()) {
continue; }
38 const QString pathNew =
39 CGuiActionBindHandler::appendPath(path, action->text()).remove(
'&');
40 if (action->menu()) { CGuiActionBindHandler::bindMenu(action->menu(), pathNew); }
42 const bool hasIcon = !action->icon().isNull();
50 pathNew, CIcons::StandardIconEmpty16, bindHandler, &CGuiActionBindHandler::boundFunction,
51 [bindHandler]() { CGuiActionBindHandler::actionBindWasDestroyed(bindHandler); }));
53 bindHandler->m_index = actionBinding->getIndex();
54 boundActions.append(actionBinding);
59 CActionBinding CGuiActionBindHandler::bindButton(QAbstractButton *button,
const QString &path,
bool absoluteName)
62 const QString pathNew =
65 CGuiActionBindHandler::appendPath(path, button->text()).remove(
'&');
67 const bool hasIcon = !button->icon().isNull();
74 pathNew, CIcons::StandardIconEmpty16, bindHandler, &CGuiActionBindHandler::boundFunction,
75 [bindHandler]() { CGuiActionBindHandler::actionBindWasDestroyed(bindHandler); }));
77 bindHandler->m_index = actionBinding->getIndex();
83 if (!bindHandler) {
return; }
88 void CGuiActionBindHandler::connectDestroy(QObject *
object)
91 QObject::connect(
object, &QObject::destroyed, [=] { this->unbind(); });
94 void CGuiActionBindHandler::unbind()
96 if (this->hasTarget())
104 void CGuiActionBindHandler::reset()
111 bool CGuiActionBindHandler::hasTarget()
const {
return (m_button || m_action) && m_index >= 0; }
113 void CGuiActionBindHandler::boundFunction(
bool enabled)
115 if (!enabled || !this->hasTarget()) {
return; }
116 if (m_action) { m_action->trigger(); }
117 else if (m_button) { m_button->click(); }
120 QString CGuiActionBindHandler::appendPath(
const QString &path,
const QString &name)
122 return CFileUtils::appendFilePaths(path, name);
125 const QString &CGuiActionBindHandler::pathSwiftPilotClient()
127 static const QString s(
"Pilot client UI/");
131 const QString &CGuiActionBindHandler::pathSwiftCore()
133 static const QString s(
"Core UI/");
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
CInputManager * getInputManager() const
The input manager, if available.
QObject derived handler to be registered with swift::core::CActionBind.
Backend services of the swift project, like dealing with the network or the simulators.
QSharedPointer< CActionBind > CActionBinding
Single binding.
QList< CActionBinding > CActionBindings
List of bindings.
Free functions in swift::misc.