mirror of https://github.com/bsnes-emu/bsnes.git
87 lines
2.9 KiB
C++
87 lines
2.9 KiB
C++
|
#include "paths.moc"
|
||
|
PathSettingsWindow *pathSettingsWindow;
|
||
|
|
||
|
PathSettingWidget::PathSettingWidget(string &pathValue_, const char *labelText, const char *pathDefaultLabel_, const char *pathBrowseLabel_) : pathValue(pathValue_) {
|
||
|
pathDefaultLabel = pathDefaultLabel_;
|
||
|
pathBrowseLabel = pathBrowseLabel_;
|
||
|
|
||
|
layout = new QVBoxLayout;
|
||
|
layout->setMargin(0);
|
||
|
layout->setSpacing(0);
|
||
|
setLayout(layout);
|
||
|
|
||
|
label = new QLabel(labelText);
|
||
|
layout->addWidget(label);
|
||
|
|
||
|
controlLayout = new QHBoxLayout;
|
||
|
controlLayout->setSpacing(Style::WidgetSpacing);
|
||
|
layout->addLayout(controlLayout);
|
||
|
|
||
|
path = new QLineEdit;
|
||
|
path->setReadOnly(true);
|
||
|
controlLayout->addWidget(path);
|
||
|
|
||
|
pathSelect = new QPushButton("Select ...");
|
||
|
controlLayout->addWidget(pathSelect);
|
||
|
|
||
|
pathDefault = new QPushButton("Default");
|
||
|
controlLayout->addWidget(pathDefault);
|
||
|
|
||
|
connect(pathSelect, SIGNAL(released()), this, SLOT(selectPath()));
|
||
|
connect(pathDefault, SIGNAL(released()), this, SLOT(defaultPath()));
|
||
|
updatePath();
|
||
|
}
|
||
|
|
||
|
void PathSettingWidget::acceptPath(const string &newPath) {
|
||
|
fileBrowser->close();
|
||
|
pathValue = string() << newPath << "/";
|
||
|
config().path.current.folder = dir(pathValue);
|
||
|
updatePath();
|
||
|
}
|
||
|
|
||
|
void PathSettingWidget::updatePath() {
|
||
|
if(pathValue == "") {
|
||
|
path->setStyleSheet("color: #808080");
|
||
|
path->setText(pathDefaultLabel);
|
||
|
} else {
|
||
|
path->setStyleSheet("color: #000000");
|
||
|
path->setText(pathValue);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void PathSettingWidget::selectPath() {
|
||
|
fileBrowser->onChange.reset();
|
||
|
fileBrowser->onActivate.reset();
|
||
|
fileBrowser->onAccept = { &PathSettingWidget::acceptPath, this };
|
||
|
fileBrowser->setWindowTitle(pathBrowseLabel);
|
||
|
fileBrowser->setPath(config().path.current.folder);
|
||
|
fileBrowser->chooseFolder();
|
||
|
}
|
||
|
|
||
|
void PathSettingWidget::defaultPath() {
|
||
|
pathValue = "";
|
||
|
updatePath();
|
||
|
}
|
||
|
|
||
|
PathSettingsWindow::PathSettingsWindow() {
|
||
|
layout = new QVBoxLayout;
|
||
|
layout->setMargin(Style::WindowMargin);
|
||
|
layout->setSpacing(Style::WidgetSpacing);
|
||
|
layout->setAlignment(Qt::AlignTop);
|
||
|
setLayout(layout);
|
||
|
|
||
|
gamePath = new PathSettingWidget(config().path.rom, "Games:", "Remember last path", "Default Game Path");
|
||
|
savePath = new PathSettingWidget(config().path.save, "Save RAM:", "Same as loaded game", "Default Save RAM Path");
|
||
|
statePath = new PathSettingWidget(config().path.state, "Save states:", "Same as loaded game", "Default Save State Path");
|
||
|
patchPath = new PathSettingWidget(config().path.patch, "UPS patches:", "Same as loaded game", "Default UPS Patch Path");
|
||
|
cheatPath = new PathSettingWidget(config().path.cheat, "Cheat codes:", "Same as loaded game", "Default Cheat Code Path");
|
||
|
dataPath = new PathSettingWidget(config().path.data, "Exported data:", "Same as loaded game", "Default Exported Data Path");
|
||
|
|
||
|
layout->addWidget(gamePath);
|
||
|
layout->addWidget(savePath);
|
||
|
layout->addWidget(statePath);
|
||
|
layout->addWidget(patchPath);
|
||
|
layout->addWidget(cheatPath);
|
||
|
layout->addWidget(dataPath);
|
||
|
}
|