#include "tool_panel.h" #include #include 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(tool)); item->setToolTip(name); m_toolList->addItem(item); } void ToolPanel::onItemClicked(QListWidgetItem *item) { m_currentTool = static_cast(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