Barebone main window implementation.

This commit is contained in:
King_DuckZ 2020-03-25 22:15:57 +01:00
parent 5450c42bce
commit 35d566fd2d
5 changed files with 105 additions and 0 deletions

View file

@ -1,2 +1,3 @@
#subdir('gui')
subdir('cli')
subdir('qt')

11
src/qt/main.cpp Normal file
View file

@ -0,0 +1,11 @@
#include "memoserv_win.hpp"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
duck::MemoservWin w(&app);
w.show();
return app.exec();
}

39
src/qt/memoserv_win.cpp Normal file
View file

@ -0,0 +1,39 @@
#include "memoserv_win.hpp"
#include "app_config.h"
#include <QMenu>
#include <QMenuBar>
#include <QApplication>
#include <iostream>
class QApplication;
namespace duck {
MemoservWin::MemoservWin(QApplication* app, QWidget *parent) :
QMainWindow(parent)
{
create_menu(app);
}
MemoservWin::~MemoservWin() noexcept = default;
void MemoservWin::create_menu(QApplication* app) {
QMenu* const file_menu = menuBar()->addMenu(tr("&File"));
{
const QIcon open_icon = QIcon::fromTheme("document-open", QIcon(":/images/open.png"));
const auto open_act = new QAction(open_icon, tr("&Open..."), this);
connect(open_act, &QAction::triggered, this, &MemoservWin::open);
file_menu->addAction(open_act);
}
QMenu* const help_menu = menuBar()->addMenu(tr("&Help"));
{
help_menu->addAction(tr("About &Qt..."), app, &QApplication::aboutQt);
}
}
void MemoservWin::open() {
std::cout << "MemoservWin::open()\n";
}
} //namespace duck

23
src/qt/memoserv_win.hpp Normal file
View file

@ -0,0 +1,23 @@
#pragma once
#include <QMainWindow>
class QApplication;
namespace duck {
class MemoservWin : public QMainWindow
{
Q_OBJECT
public:
explicit MemoservWin(QApplication*, QWidget *parent = nullptr);
~MemoservWin() noexcept;
private:
void create_menu(QApplication*);
void open();
};
} //namespace duck

31
src/qt/meson.build Normal file
View file

@ -0,0 +1,31 @@
cpp = meson.get_compiler('cpp')
fslib_dep = cpp.find_library('stdc++fs', required: false)
qt5 = import('qt5')
qt5_dep = dependency('qt5', modules: ['Core', 'Gui', 'Widgets'])
inc = include_directories('includes')
moc_files = qt5.preprocess(
moc_headers: 'memoserv_win.hpp',
#ui_files: 'main_window.ui',
moc_extra_arguments: ['-DMAKES_MY_MOC_HEADER_COMPILE'],
include_directories: inc,
dependencies: qt5_dep
)
app_name = meson.project_name() + '-qt'
conf = configuration_data()
conf.set('APP_NAME', app_name)
conf.set('APP_SHORT_DESC', 'PSX memory card inspector')
config_file = configure_file(
input: app_config_model,
output: 'app_config.h',
configuration: conf
)
executable(app_name,
'main.cpp',
'memoserv_win.cpp',
moc_files,
include_directories: inc,
dependencies: [qt5_dep, fslib_dep],
)