Repo created

This commit is contained in:
Fr4nz D13trich 2025-11-22 13:58:55 +01:00
parent 4af19165ec
commit 68073add76
12458 changed files with 12350765 additions and 2 deletions

57
qt/popup_menu_holder.cpp Normal file
View file

@ -0,0 +1,57 @@
#include "popup_menu_holder.hpp"
#include "base/assert.hpp"
#include <QtWidgets/QMenu>
namespace qt
{
PopupMenuHolder::PopupMenuHolder(QObject * parent) : QObject(parent) {}
QAction * PopupMenuHolder::addActionImpl(QIcon const & icon, QString const & text, bool checkable)
{
QAction * p = new QAction(icon, text, this);
p->setCheckable(checkable);
m_actions.push_back(p);
return p;
}
QToolButton * PopupMenuHolder::create()
{
QMenu * menu = new QMenu();
for (auto * p : m_actions)
menu->addAction(p);
m_toolButton = new QToolButton();
m_toolButton->setPopupMode(QToolButton::MenuButtonPopup);
m_toolButton->setMenu(menu);
return m_toolButton;
}
void PopupMenuHolder::setMainIcon(QIcon const & icon)
{
m_toolButton->setIcon(icon);
}
void PopupMenuHolder::setCurrent(size_t idx)
{
CHECK_LESS(idx, m_actions.size(), ());
m_toolButton->setIcon(m_actions[idx]->icon());
}
void PopupMenuHolder::setChecked(size_t idx, bool checked)
{
CHECK_LESS(idx, m_actions.size(), ());
ASSERT(m_actions[idx]->isCheckable(), ());
m_actions[idx]->setChecked(checked);
}
bool PopupMenuHolder::isChecked(size_t idx)
{
CHECK_LESS(idx, m_actions.size(), ());
ASSERT(m_actions[idx]->isCheckable(), ());
return m_actions[idx]->isChecked();
}
} // namespace qt