Fix confusing error logging during region map setup
This commit is contained in:
parent
236ad9b73c
commit
0954fe26ff
3 changed files with 24 additions and 26 deletions
|
@ -27,6 +27,7 @@ public:
|
||||||
~RegionMapEditor();
|
~RegionMapEditor();
|
||||||
|
|
||||||
bool load(bool silent = false);
|
bool load(bool silent = false);
|
||||||
|
bool setupErrored() const { return setupError; }
|
||||||
|
|
||||||
void onRegionMapTileSelectorSelectedTileChanged(unsigned id);
|
void onRegionMapTileSelectorSelectedTileChanged(unsigned id);
|
||||||
void onRegionMapTileSelectorHoveredTileChanged(unsigned id);
|
void onRegionMapTileSelectorHoveredTileChanged(unsigned id);
|
||||||
|
@ -53,9 +54,13 @@ private:
|
||||||
RegionMap *region_map = nullptr;
|
RegionMap *region_map = nullptr;
|
||||||
tsl::ordered_map<QString, RegionMap *> region_maps;
|
tsl::ordered_map<QString, RegionMap *> region_maps;
|
||||||
|
|
||||||
|
QString configFilepath;
|
||||||
|
QString mapSectionFilepath;
|
||||||
|
|
||||||
poryjson::Json rmConfigJson;
|
poryjson::Json rmConfigJson;
|
||||||
|
|
||||||
bool configSaved = false;
|
bool configSaved = false;
|
||||||
|
bool setupError = false;
|
||||||
|
|
||||||
QUndoGroup history;
|
QUndoGroup history;
|
||||||
|
|
||||||
|
|
|
@ -2960,15 +2960,14 @@ bool MainWindow::initRegionMapEditor(bool silent) {
|
||||||
this->regionMapEditor = new RegionMapEditor(this, this->editor->project);
|
this->regionMapEditor = new RegionMapEditor(this, this->editor->project);
|
||||||
bool success = this->regionMapEditor->load(silent);
|
bool success = this->regionMapEditor->load(silent);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
delete this->regionMapEditor;
|
if (!silent && this->regionMapEditor->setupErrored()) {
|
||||||
this->regionMapEditor = nullptr;
|
|
||||||
if (!silent) {
|
|
||||||
QMessageBox msgBox(this);
|
QMessageBox msgBox(this);
|
||||||
QString errorMsg = QString("There was an error opening the region map data. Please see %1 for full error details.\n\n%3")
|
QString errorMsg = QString("There was an error opening the region map data. Please see %1 for full error details.\n\n%2")
|
||||||
.arg(getLogPath())
|
.arg(getLogPath())
|
||||||
.arg(getMostRecentError());
|
.arg(getMostRecentError());
|
||||||
msgBox.critical(nullptr, "Error Opening Region Map Editor", errorMsg);
|
msgBox.critical(nullptr, "Error Opening Region Map Editor", errorMsg);
|
||||||
}
|
}
|
||||||
|
delete this->regionMapEditor;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ RegionMapEditor::RegionMapEditor(QWidget *parent, Project *project) :
|
||||||
{
|
{
|
||||||
this->ui->setupUi(this);
|
this->ui->setupUi(this);
|
||||||
this->project = project;
|
this->project = project;
|
||||||
|
this->configFilepath = QString("%1/%2").arg(this->project->root).arg(projectConfig.getFilePath(ProjectFilePath::json_region_porymap_cfg));
|
||||||
|
this->mapSectionFilepath = QString("%1/%2").arg(this->project->root).arg(projectConfig.getFilePath(ProjectFilePath::json_region_map_entries));
|
||||||
this->initShortcuts();
|
this->initShortcuts();
|
||||||
this->restoreWindowState();
|
this->restoreWindowState();
|
||||||
}
|
}
|
||||||
|
@ -110,12 +112,10 @@ void RegionMapEditor::applyUserShortcuts() {
|
||||||
bool RegionMapEditor::loadRegionMapEntries() {
|
bool RegionMapEditor::loadRegionMapEntries() {
|
||||||
this->region_map_entries.clear();
|
this->region_map_entries.clear();
|
||||||
|
|
||||||
QString regionMapSectionFilepath = QString("%1/%2").arg(this->project->root).arg(projectConfig.getFilePath(ProjectFilePath::json_region_map_entries));
|
|
||||||
|
|
||||||
ParseUtil parser;
|
ParseUtil parser;
|
||||||
QJsonDocument sectionsDoc;
|
QJsonDocument sectionsDoc;
|
||||||
if (!parser.tryParseJsonFile(§ionsDoc, regionMapSectionFilepath)) {
|
if (!parser.tryParseJsonFile(§ionsDoc, this->mapSectionFilepath)) {
|
||||||
logError(QString("Failed to read map data from %1").arg(regionMapSectionFilepath));
|
logError(QString("Failed to read map data from %1").arg(this->mapSectionFilepath));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,11 +140,9 @@ bool RegionMapEditor::loadRegionMapEntries() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RegionMapEditor::saveRegionMapEntries() {
|
bool RegionMapEditor::saveRegionMapEntries() {
|
||||||
QString regionMapSectionFilepath = QString("%1/%2").arg(this->project->root).arg(projectConfig.getFilePath(ProjectFilePath::json_region_map_entries));
|
QFile sectionsFile(this->mapSectionFilepath);
|
||||||
|
|
||||||
QFile sectionsFile(regionMapSectionFilepath);
|
|
||||||
if (!sectionsFile.open(QIODevice::WriteOnly)) {
|
if (!sectionsFile.open(QIODevice::WriteOnly)) {
|
||||||
logError(QString("Error: Could not open %1 for writing").arg(regionMapSectionFilepath));
|
logError(QString("Could not open %1 for writing").arg(this->mapSectionFilepath));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,6 +475,7 @@ bool RegionMapEditor::setup() {
|
||||||
if (!newMap->loadMapData(o)) {
|
if (!newMap->loadMapData(o)) {
|
||||||
delete newMap;
|
delete newMap;
|
||||||
// TODO: consider continue, just reporting error loading single map?
|
// TODO: consider continue, just reporting error loading single map?
|
||||||
|
this->setupError = true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,26 +498,21 @@ bool RegionMapEditor::setup() {
|
||||||
if (!region_maps.empty()) {
|
if (!region_maps.empty()) {
|
||||||
setRegionMap(region_maps.begin()->second);
|
setRegionMap(region_maps.begin()->second);
|
||||||
}
|
}
|
||||||
|
this->setupError = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RegionMapEditor::load(bool silent) {
|
bool RegionMapEditor::load(bool silent) {
|
||||||
// check for config json file
|
// check for config json file
|
||||||
QString jsonConfigFilepath = this->project->root + "/" + projectConfig.getFilePath(ProjectFilePath::json_region_porymap_cfg);
|
|
||||||
|
|
||||||
bool badConfig = true;
|
bool badConfig = true;
|
||||||
|
if (QFile::exists(this->configFilepath)) {
|
||||||
if (QFile::exists(jsonConfigFilepath)) {
|
|
||||||
logInfo("Region map configuration file found.");
|
|
||||||
ParseUtil parser;
|
ParseUtil parser;
|
||||||
OrderedJson::object obj;
|
OrderedJson::object obj;
|
||||||
if (parser.tryParseOrderedJsonFile(&obj, jsonConfigFilepath)) {
|
if (parser.tryParseOrderedJsonFile(&obj, this->configFilepath)) {
|
||||||
this->rmConfigJson = OrderedJson(obj);
|
this->rmConfigJson = OrderedJson(obj);
|
||||||
this->configSaved = true;
|
this->configSaved = true;
|
||||||
}
|
}
|
||||||
badConfig = !verifyConfig(this->rmConfigJson);
|
badConfig = !verifyConfig(this->rmConfigJson);
|
||||||
} else {
|
|
||||||
logWarn("Region Map config file not found.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (badConfig) {
|
if (badConfig) {
|
||||||
|
@ -534,14 +528,15 @@ bool RegionMapEditor::load(bool silent) {
|
||||||
if (warning.exec() == QMessageBox::Ok) {
|
if (warning.exec() == QMessageBox::Ok) {
|
||||||
// there is a separate window that allows to load multiple region maps,
|
// there is a separate window that allows to load multiple region maps,
|
||||||
if (!buildConfigDialog()) {
|
if (!buildConfigDialog()) {
|
||||||
logError("Region map loading interrupted [user]");
|
// User canceled config set up
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// do not open editor
|
// User declined config set up
|
||||||
logError("Region map loading interrupted [user]");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
logInfo("Successfully loaded region map configuration file.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return setup();
|
return setup();
|
||||||
|
@ -583,10 +578,9 @@ void RegionMapEditor::saveConfig() {
|
||||||
mapsObject["region_maps"] = mapArray;
|
mapsObject["region_maps"] = mapArray;
|
||||||
|
|
||||||
OrderedJson newConfigJson(mapsObject);
|
OrderedJson newConfigJson(mapsObject);
|
||||||
QString filepath = QString("%1/%2").arg(this->project->root).arg(projectConfig.getFilePath(ProjectFilePath::json_region_porymap_cfg));
|
QFile file(this->configFilepath);
|
||||||
QFile file(filepath);
|
|
||||||
if (!file.open(QIODevice::WriteOnly)) {
|
if (!file.open(QIODevice::WriteOnly)) {
|
||||||
logError(QString("Error: Could not open %1 for writing").arg(filepath));
|
logError(QString("Could not open %1 for writing").arg(this->configFilepath));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
OrderedJsonDoc jsonDoc(&newConfigJson);
|
OrderedJsonDoc jsonDoc(&newConfigJson);
|
||||||
|
|
Loading…
Reference in a new issue