25 #include <QHeaderView>
27 #include <QListWidget>
30 #include <QTreeWidget>
31 #include <QVBoxLayout>
45 setWindowTitle(
_(
"Tileset debugger"));
48 auto tabs =
new QTabWidget;
50 auto layout =
new QVBoxLayout;
51 layout->addWidget(tabs);
52 layout->setContentsMargins(0, 0, 0, 0);
60 m_messages->setEditTriggers(QAbstractItemView::NoEditTriggers);
61 m_messages->setSelectionMode(QAbstractItemView::ContiguousSelection);
65 QAbstractItemView::AdjustToContentsOnFirstShow);
71 auto tab =
new QWidget;
72 tabs->addTab(tab,
_(
"Inspector"));
73 auto layout =
new QVBoxLayout;
74 tab->setLayout(layout);
76 auto toolbar =
new QToolBar;
77 toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
78 layout->addWidget(toolbar);
81 toolbar->addAction(QIcon::fromTheme(
"pointer"),
_(
"Pick tile"));
92 m_content->setSelectionMode(QAbstractItemView::NoSelection);
114 m_label->setText(
_(
"Select a tile to start debugging."));
118 m_label->setText(QString(
_(
"Tile at %1, %2"))
125 auto maxSize = QSize();
140 if (sprites.empty()) {
146 auto rectangle = QRect();
147 for (
const auto &ds : sprites) {
148 rectangle |= QRect(ds.offset, ds.sprite->size());
152 auto this_layer = QPixmap(rectangle.size() + QSize(2, 2));
153 this_layer.fill(Qt::transparent);
155 p.begin(&this_layer);
157 p.setPen(palette().color(QPalette::WindowText));
158 p.drawRect(0, 0, this_layer.width() - 1, this_layer.height() - 1);
161 p.translate(-rectangle.topLeft() + QPoint(1, 1));
162 for (
const auto &ds : sprites) {
163 p.drawPixmap(ds.offset, *ds.sprite);
166 item->setIcon(0, QIcon(this_layer));
169 for (
const auto &ds : sprites) {
170 auto child =
new QTreeWidgetItem(
item);
171 auto this_sprite = QPixmap(rectangle.size() + QSize(2, 2));
172 this_sprite.fill(Qt::transparent);
173 p.begin(&this_sprite);
176 p.setPen(palette().color(QPalette::WindowText));
177 p.drawRect(0, 0, this_layer.width() - 1, this_layer.height() - 1);
179 p.translate(-rectangle.topLeft() + QPoint(1, 1));
180 p.drawPixmap(ds.offset, *ds.sprite);
182 child->setIcon(0, QIcon(this_sprite));
183 child->setText(0, QString(
_(
"Offset: %1, %2"))
185 .arg(ds.offset.y()));
186 maxSize = maxSize.expandedTo(rectangle.size());
224 for (std::size_t i = 0; i < log.size(); ++i) {
225 auto item =
new QListWidgetItem;
226 switch (log[i].
level) {
229 item->setIcon(QIcon::fromTheme(QStringLiteral(
"data-error")));
232 item->setIcon(QIcon::fromTheme(QStringLiteral(
"data-warning")));
236 item->setIcon(QIcon::fromTheme(QStringLiteral(
"data-information")));
A layer when drawing the map.
mapview_layer type() const
virtual std::vector< drawn_sprite > fill_sprite_array(const tile *ptile, const tile_edge *pedge, const tile_corner *pcorner, const unit *punit) const
Returns the list of sprites drawn by this layer somewhere on the map.
void tile_picking_requested(bool active)
void set_tile(const ::tile *t)
Sets the tile being debugged.
void refresh_messages(const struct tileset *t)
Refresh the messages list.
virtual ~tileset_debugger()
Destructor.
tileset_debugger(QWidget *parent=nullptr)
Constructor.
void refresh(const struct tileset *t)
Enters or exits tile picking mode.
void pick_tile(bool active)
Enters or exits tile picking mode.
enum known_type client_tile_get_known(const struct tile *ptile)
A tile's "known" field is used by the server to store whether each player knows the tile.
bool editor_tile_is_selected(const struct tile *ptile)
Returns TRUE if the given tile is selected.
bool editor_is_active()
Returns TRUE if the client is in edit mode.
#define fc_assert_ret(condition)
static int index_to_map_pos_y(int mindex)
static int index_to_map_pos_x(int mindex)
struct setting_list * level[OLEVELS_NUM]
const std::vector< std::unique_ptr< freeciv::layer > > & tileset_get_layers(const struct tileset *t)
struct unit * get_drawable_unit(const struct tileset *t, const ::tile *ptile)
Find unit that we can display from given tile.
std::vector< tileset_log_entry > tileset_log(const struct tileset *t)
Get tileset log (warnings, errors, etc.)