| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "tool_panel.h"
- #include <QFont>
- #include <QVBoxLayout>
- namespace MapEditor {
- ToolPanel::ToolPanel(QWidget *parent) : QWidget(parent) { setupUI(); }
- void ToolPanel::setupUI() {
- auto *layout = new QVBoxLayout(this);
- layout->setContentsMargins(4, 4, 4, 4);
- m_toolList = new QListWidget(this);
- m_toolList->setIconSize(QSize(32, 32));
- m_toolList->setSpacing(4);
- m_toolList->setDragEnabled(true);
- m_toolList->setDragDropMode(QAbstractItemView::DragOnly);
- QFont font = m_toolList->font();
- font.setPointSize(16);
- m_toolList->setFont(font);
- addToolItem("Select", "⬚", ToolType::Select);
- addToolItem("Hill", "⛰", ToolType::Hill);
- addToolItem("Mountain", "🏔", ToolType::Mountain);
- addToolItem("River", "〰", ToolType::River);
- addToolItem("Road", "═", ToolType::Road);
- addToolItem("Bridge", "🌉", ToolType::Bridge);
- addToolItem("Firecamp", "🔥", ToolType::Firecamp);
- addToolItem("Barracks", "🏛", ToolType::Barracks);
- addToolItem("Village", "🏘", ToolType::Village);
- addToolItem("Eraser", "🗑", ToolType::Eraser);
- connect(m_toolList, &QListWidget::itemClicked, this,
- &ToolPanel::onItemClicked);
- layout->addWidget(m_toolList);
- setMinimumWidth(120);
- setMaximumWidth(180);
- }
- void ToolPanel::addToolItem(const QString &name, const QString &iconChar,
- ToolType tool) {
- auto *item = new QListWidgetItem(iconChar + " " + name);
- item->setData(Qt::UserRole, static_cast<int>(tool));
- item->setToolTip(name);
- m_toolList->addItem(item);
- }
- void ToolPanel::onItemClicked(QListWidgetItem *item) {
- m_currentTool = static_cast<ToolType>(item->data(Qt::UserRole).toInt());
- emit toolSelected(m_currentTool);
- }
- void ToolPanel::clearSelection() {
- m_currentTool = ToolType::Select;
- m_toolList->setCurrentRow(0);
- emit toolSelected(m_currentTool);
- }
- } // namespace MapEditor
|