Skip to content

Commit

Permalink
Qt: Switch to the C++11 connect() syntax.
Browse files Browse the repository at this point in the history
A few connect()s have not been migrated because the best way to migrate them requires somewhat invasive changes. Other than that, everything has been moved over.
  • Loading branch information
waddlesplash authored and endrift committed May 16, 2017
1 parent 78e4083 commit 2f23829
Show file tree
Hide file tree
Showing 30 changed files with 227 additions and 220 deletions.
2 changes: 1 addition & 1 deletion src/platform/qt/AssetTile.cpp
Expand Up @@ -32,7 +32,7 @@ AssetTile::AssetTile(QWidget* parent)
m_ui.color->setDimensions(QSize(1, 1));
m_ui.color->setSize(50);

connect(m_ui.preview, SIGNAL(indexPressed(int)), this, SLOT(selectColor(int)));
connect(m_ui.preview, &Swatch::indexPressed, this, &AssetTile::selectColor);

const QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont);

Expand Down
7 changes: 4 additions & 3 deletions src/platform/qt/AssetView.cpp
Expand Up @@ -20,9 +20,10 @@ AssetView::AssetView(GameController* controller, QWidget* parent)
m_updateTimer.setInterval(1);
connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateTiles()));

connect(m_controller, SIGNAL(frameAvailable(const uint32_t*)), &m_updateTimer, SLOT(start()));
connect(m_controller, SIGNAL(gameStopped(mCoreThread*)), this, SLOT(close()));
connect(m_controller, SIGNAL(gameStopped(mCoreThread*)), &m_updateTimer, SLOT(stop()));
connect(m_controller, &GameController::frameAvailable, &m_updateTimer,
static_cast<void(QTimer::*)()>(&QTimer::start));
connect(m_controller, &GameController::gameStopped, this, &AssetView::close);
connect(m_controller, &GameController::gameStopped, &m_updateTimer, &QTimer::stop);
}

void AssetView::updateTiles(bool force) {
Expand Down
12 changes: 6 additions & 6 deletions src/platform/qt/CheatsView.cpp
Expand Up @@ -31,12 +31,12 @@ CheatsView::CheatsView(GameController* controller, QWidget* parent)
m_ui.cheatList->installEventFilter(this);
m_ui.cheatList->setModel(&m_model);

connect(m_ui.load, SIGNAL(clicked()), this, SLOT(load()));
connect(m_ui.save, SIGNAL(clicked()), this, SLOT(save()));
connect(m_ui.addSet, SIGNAL(clicked()), this, SLOT(addSet()));
connect(m_ui.remove, SIGNAL(clicked()), this, SLOT(removeSet()));
connect(controller, SIGNAL(gameStopped(mCoreThread*)), this, SLOT(close()));
connect(controller, SIGNAL(stateLoaded(mCoreThread*)), &m_model, SLOT(invalidated()));
connect(m_ui.load, &QPushButton::clicked, this, &CheatsView::load);
connect(m_ui.save, &QPushButton::clicked, this, &CheatsView::save);
connect(m_ui.addSet, &QPushButton::clicked, this, &CheatsView::addSet);
connect(m_ui.remove, &QPushButton::clicked, this, &CheatsView::removeSet);
connect(controller, &GameController::gameStopped, this, &CheatsView::close);
connect(controller, &GameController::stateLoaded, &m_model, &CheatsModel::invalidated);

QPushButton* add;
switch (controller->platform()) {
Expand Down
6 changes: 2 additions & 4 deletions src/platform/qt/ConfigController.cpp
Expand Up @@ -76,14 +76,12 @@ void ConfigOption::setValue(const char* value) {
}

void ConfigOption::setValue(const QVariant& value) {
QPair<QAction*, QVariant> action;
foreach (action, m_actions) {
for (QPair<QAction*, QVariant>& action : m_actions) {
bool signalsEnabled = action.first->blockSignals(true);
action.first->setChecked(value == action.second);
action.first->blockSignals(signalsEnabled);
}
std::function<void(const QVariant&)> slot;
foreach(slot, m_slots.values()) {
for (std::function<void(const QVariant&)>& slot : m_slots.values()) {
slot(value);
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/platform/qt/DebuggerConsole.cpp
Expand Up @@ -17,10 +17,10 @@ DebuggerConsole::DebuggerConsole(DebuggerConsoleController* controller, QWidget*
{
m_ui.setupUi(this);

connect(m_ui.prompt, SIGNAL(returnPressed()), this, SLOT(postLine()));
connect(controller, SIGNAL(log(const QString&)), this, SLOT(log(const QString&)));
connect(m_ui.breakpoint, SIGNAL(clicked()), controller, SLOT(attach()));
connect(m_ui.breakpoint, SIGNAL(clicked()), controller, SLOT(breakInto()));
connect(m_ui.prompt, &QLineEdit::returnPressed, this, &DebuggerConsole::postLine);
connect(controller, &DebuggerConsoleController::log, this, &DebuggerConsole::log);
connect(m_ui.breakpoint, &QAbstractButton::clicked, controller, &DebuggerController::attach);
connect(m_ui.breakpoint, &QAbstractButton::clicked, controller, &DebuggerController::breakInto);
}

void DebuggerConsole::log(const QString& line) {
Expand Down
2 changes: 1 addition & 1 deletion src/platform/qt/DebuggerController.cpp
Expand Up @@ -30,7 +30,7 @@ void DebuggerController::attach() {
mDebuggerEnter(m_debugger, DEBUGGER_ENTER_ATTACHED, 0);
} else {
QObject::disconnect(m_autoattach);
m_autoattach = connect(m_gameController, SIGNAL(gameStarted(mCoreThread*, const QString&)), this, SLOT(attach()));
m_autoattach = connect(m_gameController, &GameController::gameStarted, this, &DebuggerController::attach);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/platform/qt/Display.cpp
Expand Up @@ -63,7 +63,7 @@ Display::Display(QWidget* parent)
#elif defined(M_CORE_GBA)
setMinimumSize(VIDEO_HORIZONTAL_PIXELS, VIDEO_VERTICAL_PIXELS);
#endif
connect(&m_mouseTimer, SIGNAL(timeout()), this, SIGNAL(hideCursor()));
connect(&m_mouseTimer, &QTimer::timeout, this, &Display::hideCursor);
m_mouseTimer.setSingleShot(true);
m_mouseTimer.setInterval(MOUSE_DISAPPEAR_TIMER);
setMouseTracking(true);
Expand Down
2 changes: 1 addition & 1 deletion src/platform/qt/DisplayGL.cpp
Expand Up @@ -68,7 +68,7 @@ void DisplayGL::startDrawing(mCoreThread* thread) {
m_gl->context()->doneCurrent();
m_gl->context()->moveToThread(m_drawThread);
m_painter->moveToThread(m_drawThread);
connect(m_drawThread, SIGNAL(started()), m_painter, SLOT(start()));
connect(m_drawThread, &QThread::started, m_painter, &PainterGL::start);
m_drawThread->start();
mCoreSyncSetVideoSync(&m_context->sync, false);

Expand Down
13 changes: 7 additions & 6 deletions src/platform/qt/GBAKeyEditor.cpp
Expand Up @@ -56,7 +56,8 @@ GBAKeyEditor::GBAKeyEditor(InputController* controller, int type, const QString&
#ifdef BUILD_SDL
if (type == SDL_BINDING_BUTTON) {
m_profileSelect = new QComboBox(this);
connect(m_profileSelect, SIGNAL(currentIndexChanged(int)), this, SLOT(selectGamepad(int)));
connect(m_profileSelect, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &GBAKeyEditor::selectGamepad);

updateJoysticks();

Expand Down Expand Up @@ -90,7 +91,7 @@ GBAKeyEditor::GBAKeyEditor(InputController* controller, int type, const QString&

QPushButton* updateJoysticksButton = new QPushButton(tr("Refresh"));
layout->addWidget(updateJoysticksButton);
connect(updateJoysticksButton, SIGNAL(pressed()), this, SLOT(updateJoysticks()));
connect(updateJoysticksButton, &QAbstractButton::pressed, this, &GBAKeyEditor::updateJoysticks);
}
#endif

Expand All @@ -99,7 +100,7 @@ GBAKeyEditor::GBAKeyEditor(InputController* controller, int type, const QString&
m_buttons->setLayout(layout);

QPushButton* setAll = new QPushButton(tr("Set all"));
connect(setAll, SIGNAL(pressed()), this, SLOT(setAll()));
connect(setAll, &QAbstractButton::pressed, this, &GBAKeyEditor::setAll);
layout->addWidget(setAll);

layout->setSpacing(6);
Expand All @@ -118,9 +119,9 @@ GBAKeyEditor::GBAKeyEditor(InputController* controller, int type, const QString&
};

for (auto& key : m_keyOrder) {
connect(key, SIGNAL(valueChanged(int)), this, SLOT(setNext()));
connect(key, SIGNAL(axisChanged(int, int)), this, SLOT(setNext()));
connect(key, SIGNAL(hatChanged(int, int)), this, SLOT(setNext()));
connect(key, &KeyEditor::valueChanged, this, &GBAKeyEditor::setNext);
connect(key, &KeyEditor::axisChanged, this, &GBAKeyEditor::setNext);
connect(key, &KeyEditor::hatChanged, this, &GBAKeyEditor::setNext);
key->installEventFilter(this);
}

Expand Down
22 changes: 11 additions & 11 deletions src/platform/qt/GDBWindow.cpp
Expand Up @@ -38,12 +38,12 @@ GDBWindow::GDBWindow(GDBController* controller, QWidget* parent)

m_portEdit = new QLineEdit("2345");
m_portEdit->setMaxLength(5);
connect(m_portEdit, SIGNAL(textChanged(const QString&)), this, SLOT(portChanged(const QString&)));
connect(m_portEdit, &QLineEdit::textChanged, this, &GDBWindow::portChanged);
settingsGrid->addWidget(m_portEdit, 0, 1, Qt::AlignLeft);

m_bindAddressEdit = new QLineEdit("0.0.0.0");
m_bindAddressEdit->setMaxLength(15);
connect(m_bindAddressEdit, SIGNAL(textChanged(const QString&)), this, SLOT(bindAddressChanged(const QString&)));
connect(m_bindAddressEdit, &QLineEdit::textChanged, this, &GDBWindow::bindAddressChanged);
settingsGrid->addWidget(m_bindAddressEdit, 1, 1, Qt::AlignLeft);

QHBoxLayout* buttons = new QHBoxLayout;
Expand All @@ -57,9 +57,9 @@ GDBWindow::GDBWindow(GDBController* controller, QWidget* parent)

mainSegment->addLayout(buttons);

connect(m_gdbController, SIGNAL(listening()), this, SLOT(started()));
connect(m_gdbController, SIGNAL(listenFailed()), this, SLOT(failed()));
connect(m_breakButton, SIGNAL(clicked()), controller, SLOT(breakInto()));
connect(m_gdbController, &GDBController::listening, this, &GDBWindow::started);
connect(m_gdbController, &GDBController::listenFailed, this, &GDBWindow::failed);
connect(m_breakButton, &QAbstractButton::clicked, controller, &DebuggerController::breakInto);

if (m_gdbController->isAttached()) {
started();
Expand Down Expand Up @@ -103,19 +103,19 @@ void GDBWindow::started() {
m_bindAddressEdit->setEnabled(false);
m_startStopButton->setText(tr("Stop"));
m_breakButton->setEnabled(true);
disconnect(m_startStopButton, SIGNAL(clicked()), m_gdbController, SLOT(listen()));
connect(m_startStopButton, SIGNAL(clicked()), m_gdbController, SLOT(detach()));
connect(m_startStopButton, SIGNAL(clicked()), this, SLOT(stopped()));
disconnect(m_startStopButton, &QAbstractButton::clicked, m_gdbController, &GDBController::listen);
connect(m_startStopButton, &QAbstractButton::clicked, m_gdbController, &DebuggerController::detach);
connect(m_startStopButton, &QAbstractButton::clicked, this, &GDBWindow::stopped);
}

void GDBWindow::stopped() {
m_portEdit->setEnabled(true);
m_bindAddressEdit->setEnabled(true);
m_startStopButton->setText(tr("Start"));
m_breakButton->setEnabled(false);
disconnect(m_startStopButton, SIGNAL(clicked()), m_gdbController, SLOT(detach()));
disconnect(m_startStopButton, SIGNAL(clicked()), this, SLOT(stopped()));
connect(m_startStopButton, SIGNAL(clicked()), m_gdbController, SLOT(listen()));
disconnect(m_startStopButton, &QAbstractButton::clicked, m_gdbController, &DebuggerController::detach);
disconnect(m_startStopButton, &QAbstractButton::clicked, this, &GDBWindow::stopped);
connect(m_startStopButton, &QAbstractButton::clicked, m_gdbController, &GDBController::listen);
}

void GDBWindow::failed() {
Expand Down
13 changes: 7 additions & 6 deletions src/platform/qt/GIFView.cpp
Expand Up @@ -22,14 +22,15 @@ GIFView::GIFView(QWidget* parent)
{
m_ui.setupUi(this);

connect(m_ui.start, SIGNAL(clicked()), this, SLOT(startRecording()));
connect(m_ui.stop, SIGNAL(clicked()), this, SLOT(stopRecording()));
connect(m_ui.start, &QAbstractButton::clicked, this, &GIFView::startRecording);
connect(m_ui.stop, &QAbstractButton::clicked, this, &GIFView::stopRecording);

connect(m_ui.selectFile, SIGNAL(clicked()), this, SLOT(selectFile()));
connect(m_ui.filename, SIGNAL(textChanged(const QString&)), this, SLOT(setFilename(const QString&)));
connect(m_ui.selectFile, &QAbstractButton::clicked, this, &GIFView::selectFile);
connect(m_ui.filename, &QLineEdit::textChanged, this, &GIFView::setFilename);

connect(m_ui.frameskip, SIGNAL(valueChanged(int)), this, SLOT(updateDelay()));
connect(m_ui.delayAuto, SIGNAL(clicked(bool)), this, SLOT(updateDelay()));
connect(m_ui.frameskip, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
this, &GIFView::updateDelay);
connect(m_ui.delayAuto, &QAbstractButton::clicked, this, &GIFView::updateDelay);

ImageMagickGIFEncoderInit(&m_encoder);
}
Expand Down
16 changes: 8 additions & 8 deletions src/platform/qt/GameController.cpp
Expand Up @@ -277,10 +277,10 @@ GameController::GameController(QObject* parent)

m_threadContext.userData = this;

connect(this, SIGNAL(gamePaused(mCoreThread*)), m_audioProcessor, SLOT(pause()));
connect(this, SIGNAL(gameStarted(mCoreThread*, const QString&)), m_audioProcessor, SLOT(setInput(mCoreThread*)));
connect(this, SIGNAL(frameAvailable(const uint32_t*)), this, SLOT(pollEvents()));
connect(this, SIGNAL(frameAvailable(const uint32_t*)), this, SLOT(updateAutofire()));
connect(this, &GameController::gamePaused, m_audioProcessor, &AudioProcessor::pause);
connect(this, &GameController::gameStarted, m_audioProcessor, &AudioProcessor::setInput);
connect(this, &GameController::frameAvailable, this, &GameController::pollEvents);
connect(this, &GameController::frameAvailable, this, &GameController::updateAutofire);
}

GameController::~GameController() {
Expand Down Expand Up @@ -939,8 +939,8 @@ void GameController::loadState(int slot) {
}
mCoreLoadStateNamed(context->core, controller->m_backupLoadState, controller->m_saveStateFlags);
if (mCoreLoadState(context->core, controller->m_stateSlot, controller->m_loadStateFlags)) {
controller->frameAvailable(controller->m_drawContext);
controller->stateLoaded(context);
emit controller->frameAvailable(controller->m_drawContext);
emit controller->stateLoaded(context);
}
});
}
Expand Down Expand Up @@ -1108,8 +1108,8 @@ void GameController::reloadAudioDriver() {
if (sampleRate) {
m_audioProcessor->requestSampleRate(sampleRate);
}
connect(this, SIGNAL(gamePaused(mCoreThread*)), m_audioProcessor, SLOT(pause()));
connect(this, SIGNAL(gameStarted(mCoreThread*, const QString&)), m_audioProcessor, SLOT(setInput(mCoreThread*)));
connect(this, &GameController::gamePaused, m_audioProcessor, &AudioProcessor::pause);
connect(this, &GameController::gameStarted, m_audioProcessor, &AudioProcessor::setInput);
if (isLoaded()) {
m_audioProcessor->setInput(&m_threadContext);
startAudio();
Expand Down
13 changes: 7 additions & 6 deletions src/platform/qt/IOViewer.cpp
Expand Up @@ -1040,9 +1040,10 @@ IOViewer::IOViewer(GameController* controller, QWidget* parent)
const QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont);
m_ui.regValue->setFont(font);

connect(m_ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonPressed(QAbstractButton*)));
connect(m_ui.buttonBox, SIGNAL(rejected()), this, SLOT(close()));
connect(m_ui.regSelect, SIGNAL(currentIndexChanged(int)), this, SLOT(selectRegister()));
connect(m_ui.buttonBox, &QDialogButtonBox::clicked, this, &IOViewer::buttonPressed);
connect(m_ui.buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close);
connect(m_ui.regSelect, &QComboBox::currentTextChanged,
this, static_cast<void (IOViewer::*)()>(&IOViewer::selectRegister));

m_b[0] = m_ui.b0;
m_b[1] = m_ui.b1;
Expand All @@ -1062,7 +1063,7 @@ IOViewer::IOViewer(GameController* controller, QWidget* parent)
m_b[15] = m_ui.bF;

for (int i = 0; i < 16; ++i) {
connect(m_b[i], SIGNAL(toggled(bool)), this, SLOT(bitFlipped()));
connect(m_b[i], &QAbstractButton::toggled, this, &IOViewer::bitFlipped);
}

selectRegister(0);
Expand Down Expand Up @@ -1128,8 +1129,8 @@ void IOViewer::selectRegister(unsigned address) {
QCheckBox* check = new QCheckBox;
check->setEnabled(!ri.readonly);
box->addWidget(check, i, 1, Qt::AlignRight);
connect(check, SIGNAL(toggled(bool)), m_b[ri.start], SLOT(setChecked(bool)));
connect(m_b[ri.start], SIGNAL(toggled(bool)), check, SLOT(setChecked(bool)));
connect(check, &QAbstractButton::toggled, m_b[ri.start], &QAbstractButton::setChecked);
connect(m_b[ri.start], &QAbstractButton::toggled, check, &QAbstractButton::setChecked);
} else if (ri.items.empty()) {
QSpinBox* sbox = new QSpinBox;
sbox->setEnabled(!ri.readonly);
Expand Down
2 changes: 1 addition & 1 deletion src/platform/qt/LoadSaveState.cpp
Expand Up @@ -57,7 +57,7 @@ LoadSaveState::LoadSaveState(GameController* controller, QWidget* parent)
}

QAction* escape = new QAction(this);
escape->connect(escape, SIGNAL(triggered()), this, SLOT(close()));
connect(escape, &QAction::triggered, this, &QWidget::close);
escape->setShortcut(QKeySequence("Esc"));
escape->setShortcutContext(Qt::WidgetWithChildrenShortcut);
addAction(escape);
Expand Down
8 changes: 4 additions & 4 deletions src/platform/qt/LogController.cpp
Expand Up @@ -14,10 +14,10 @@ LogController::LogController(int levels, QObject* parent)
, m_logLevel(levels)
{
if (this != &s_global) {
connect(&s_global, SIGNAL(logPosted(int, int, const QString&)), this, SLOT(postLog(int, int, const QString&)));
connect(this, SIGNAL(levelsSet(int)), &s_global, SLOT(setLevels(int)));
connect(this, SIGNAL(levelsEnabled(int)), &s_global, SLOT(enableLevels(int)));
connect(this, SIGNAL(levelsDisabled(int)), &s_global, SLOT(disableLevels(int)));
connect(&s_global, &LogController::logPosted, this, &LogController::postLog);
connect(this, &LogController::levelsSet, &s_global, &LogController::setLevels);
connect(this, &LogController::levelsEnabled, &s_global, &LogController::enableLevels);
connect(this, &LogController::levelsDisabled, &s_global, &LogController::disableLevels);
}
}

Expand Down
13 changes: 7 additions & 6 deletions src/platform/qt/LogView.cpp
Expand Up @@ -39,12 +39,13 @@ LogView::LogView(LogController* log, QWidget* parent)
connect(m_ui.levelGameError, &QAbstractButton::toggled, [this](bool set) {
setLevel(mLOG_GAME_ERROR, set);
});
connect(m_ui.clear, SIGNAL(clicked()), this, SLOT(clear()));
connect(m_ui.maxLines, SIGNAL(valueChanged(int)), this, SLOT(setMaxLines(int)));
connect(m_ui.clear, &QAbstractButton::clicked, this, &LogView::clear);
connect(m_ui.maxLines, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
this, &LogView::setMaxLines);
m_ui.maxLines->setValue(DEFAULT_LINE_LIMIT);

connect(log, SIGNAL(logPosted(int, int, const QString&)), this, SLOT(postLog(int, int, const QString&)));
connect(log, SIGNAL(levelsSet(int)), this, SLOT(setLevels(int)));
connect(log, &LogController::logPosted, this, &LogView::postLog);
connect(log, &LogController::levelsSet, this, &LogView::setLevels);
connect(log, &LogController::levelsEnabled, [this](int level) {
bool s = blockSignals(true);
setLevel(level, true);
Expand All @@ -55,8 +56,8 @@ LogView::LogView(LogController* log, QWidget* parent)
setLevel(level, false);
blockSignals(s);
});
connect(this, SIGNAL(levelsEnabled(int)), log, SLOT(enableLevels(int)));
connect(this, SIGNAL(levelsDisabled(int)), log, SLOT(disableLevels(int)));
connect(this, &LogView::levelsEnabled, log, &LogController::enableLevels);
connect(this, &LogView::levelsDisabled, log, &LogController::disableLevels);
}

void LogView::postLog(int level, int category, const QString& log) {
Expand Down
12 changes: 6 additions & 6 deletions src/platform/qt/MemoryModel.cpp
Expand Up @@ -49,22 +49,22 @@ MemoryModel::MemoryModel(QWidget* parent)

QAction* copy = new QAction(tr("Copy selection"), this);
copy->setShortcut(QKeySequence::Copy);
connect(copy, SIGNAL(triggered()), this, SLOT(copy()));
connect(copy, &QAction::triggered, this, &MemoryModel::copy);
addAction(copy);

QAction* save = new QAction(tr("Save selection"), this);
save->setShortcut(QKeySequence::Save);
connect(save, SIGNAL(triggered()), this, SLOT(save()));
connect(save, &QAction::triggered, this, &MemoryModel::save);
addAction(save);

QAction* paste = new QAction(tr("Paste"), this);
paste->setShortcut(QKeySequence::Paste);
connect(paste, SIGNAL(triggered()), this, SLOT(paste()));
connect(paste, &QAction::triggered, this, &MemoryModel::paste);
addAction(paste);

QAction* load = new QAction(tr("Load"), this);
load->setShortcut(QKeySequence::Open);
connect(load, SIGNAL(triggered()), this, SLOT(load()));
connect(load, &QAction::triggered, this, &MemoryModel::load);
addAction(load);

static QString arg("%0");
Expand Down Expand Up @@ -128,7 +128,7 @@ void MemoryModel::setAlignment(int width) {
viewport()->update();
}

void MemoryModel::loadTBL(const QString& path) {
void MemoryModel::loadTBLFromPath(const QString& path) {
VFile* vf = VFileDevice::open(path, O_RDONLY);
if (!vf) {
return;
Expand All @@ -143,7 +143,7 @@ void MemoryModel::loadTBL() {
if (filename.isNull()) {
return;
}
loadTBL(filename);
loadTBLFromPath(filename);
}

void MemoryModel::jumpToAddress(const QString& hex) {
Expand Down
2 changes: 1 addition & 1 deletion src/platform/qt/MemoryModel.h
Expand Up @@ -43,7 +43,7 @@ public slots:
void jumpToAddress(const QString& hex);
void jumpToAddress(uint32_t);

void loadTBL(const QString& path);
void loadTBLFromPath(const QString& path);
void loadTBL();

void copy();
Expand Down

0 comments on commit 2f23829

Please sign in to comment.