bsnes/qt/settings/paths.cpp

87 lines
2.9 KiB
C++
Executable File

#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);
}