Skip to content

Commit

Permalink
Qt: allow creating multiple sprite viewer windows.
Browse files Browse the repository at this point in the history
  • Loading branch information
fleroviux committed Nov 2, 2023
1 parent 2334a70 commit e57758e
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 12 deletions.
2 changes: 2 additions & 0 deletions src/platform/qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ set(SOURCES
src/widget/palette_box.cpp
src/widget/palette_viewer_window.cpp
src/widget/sprite_viewer.cpp
src/widget/sprite_viewer_window.cpp
src/config.cpp
src/main.cpp
)
Expand All @@ -29,6 +30,7 @@ set(HEADERS
src/widget/palette_viewer_window.hpp
src/widget/screen.hpp
src/widget/sprite_viewer.hpp
src/widget/sprite_viewer_window.hpp
src/config.hpp
version.in.hpp
)
Expand Down
7 changes: 2 additions & 5 deletions src/platform/qt/src/widget/main_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -400,11 +400,8 @@ void MainWindow::CreateToolsMenu() {
});

connect(tools_menu->addAction(tr("Sprite Viewer")), &QAction::triggered, [this]() {
if(!sprite_viewer_window) {
sprite_viewer_window = new SpriteViewer{core.get()};
connect(screen.get(), &Screen::RequestDraw, sprite_viewer_window, &SpriteViewer::Update);
}

const auto sprite_viewer_window = new SpriteViewerWindow{core.get(), this};
connect(screen.get(), &Screen::RequestDraw, sprite_viewer_window, &SpriteViewerWindow::Update);
sprite_viewer_window->show();
});
}
Expand Down
3 changes: 1 addition & 2 deletions src/platform/qt/src/widget/main_window.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include "widget/input_window.hpp"
#include "widget/palette_viewer_window.hpp"
#include "widget/screen.hpp"
#include "widget/sprite_viewer.hpp"
#include "widget/sprite_viewer_window.hpp"
#include "config.hpp"

struct MainWindow : QMainWindow {
Expand Down Expand Up @@ -153,7 +153,6 @@ private slots:

PaletteViewerWindow* palette_viewer_window;
BackgroundViewerWindow* background_viewer_window;
SpriteViewer* sprite_viewer_window;

QString base_window_title;

Expand Down
4 changes: 0 additions & 4 deletions src/platform/qt/src/widget/sprite_viewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,6 @@ SpriteViewer::SpriteViewer(nba::CoreBase* core, QWidget* parent) : QWidget{paren
atlas_canvas->installEventFilter(this);

setLayout(layout);

// @todo: move this out of here
setWindowTitle("Sprite Viewer");
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
}

void SpriteViewer::Update() {
Expand Down
1 change: 0 additions & 1 deletion src/platform/qt/src/widget/sprite_viewer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ struct SpriteViewer : QWidget {

bool eventFilter(QObject* object, QEvent* event) override;

public slots:
void Update();

private:
Expand Down
24 changes: 24 additions & 0 deletions src/platform/qt/src/widget/sprite_viewer_window.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright (C) 2023 fleroviux
*
* Licensed under GPLv3 or any later version.
* Refer to the included LICENSE file.
*/

#include <QVBoxLayout>

#include "sprite_viewer_window.hpp"

SpriteViewerWindow::SpriteViewerWindow(nba::CoreBase* core, QWidget* parent) : QDialog(parent) {
sprite_viewer = new SpriteViewer{core, this};

setWindowTitle(tr("Sprite Viewer"));
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
}

void SpriteViewerWindow::Update() {
if(!isVisible()) {
return;
}
sprite_viewer->Update();
}
26 changes: 26 additions & 0 deletions src/platform/qt/src/widget/sprite_viewer_window.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright (C) 2023 fleroviux
*
* Licensed under GPLv3 or any later version.
* Refer to the included LICENSE file.
*/

#pragma once

#include <nba/core.hpp>
#include <QDialog>
#include <QLabel>

#include "widget/sprite_viewer.hpp"

struct SpriteViewerWindow : QDialog {
SpriteViewerWindow(nba::CoreBase* core, QWidget* parent = nullptr);

public slots:
void Update();

private:
SpriteViewer* sprite_viewer;

Q_OBJECT
};

0 comments on commit e57758e

Please sign in to comment.