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