mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-11 05:07:00 -04:00
improved handling of aliasses and warnings
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@51 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
+19
-6
@@ -52,7 +52,14 @@ void Reader::handleAppVersion() {
|
||||
}
|
||||
|
||||
void Reader::warning(const String& msg) {
|
||||
wxMessageBox((msg + _("\nOn line: ")) << line_number << _("\nIn file: ") << filename, _("Warning"), wxOK | wxICON_EXCLAMATION);
|
||||
warnings += String(_("\nOn line ")) << line_number << _(": \t") << msg;
|
||||
}
|
||||
|
||||
void Reader::showWarnings() {
|
||||
if (!warnings.empty()) {
|
||||
wxMessageBox(_("Warnings while reading file:\n") + filename + _("\n") + warnings, _("Warning"), wxOK | wxICON_EXCLAMATION);
|
||||
warnings.clear();
|
||||
}
|
||||
}
|
||||
|
||||
bool Reader::enterBlock(const Char* name) {
|
||||
@@ -118,14 +125,20 @@ void Reader::readLine() {
|
||||
}
|
||||
key = cannocial_name_form(trim(line.substr(indent, pos - indent)));
|
||||
value = pos == String::npos ? _("") : trim_left(line.substr(pos+1));
|
||||
// aliasses?
|
||||
map<String,String>::const_iterator it = aliasses.find(key);
|
||||
if (it != aliasses.end()) {
|
||||
key = it->second;
|
||||
}
|
||||
}
|
||||
|
||||
void Reader::unknownKey() {
|
||||
// aliasses?
|
||||
map<String,String>::const_iterator it = aliasses.find(key);
|
||||
if (it != aliasses.end()) {
|
||||
if (aliasses.find(it->second) != aliasses.end()) {
|
||||
// alias points to another alias, don't follow it, there is the risk of infinite loops
|
||||
} else {
|
||||
// try this key instead
|
||||
key = it->second;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (indent == expected_indent) {
|
||||
warning(_("Unexpected key: '") + key + _("'"));
|
||||
do {
|
||||
|
||||
@@ -42,6 +42,8 @@ class Reader {
|
||||
/** Used for "include file" keys. */
|
||||
Reader(const String& filename);
|
||||
|
||||
~Reader() { showWarnings(); }
|
||||
|
||||
/// Tell the reflection code we are reading
|
||||
inline bool reading() const { return true; }
|
||||
/// Is the thing currently being read 'complex', i.e. does it have children
|
||||
@@ -52,8 +54,10 @@ class Reader {
|
||||
/// Read and check the application version
|
||||
void handleAppVersion();
|
||||
|
||||
/// Show a warning message, but continue reading
|
||||
/// Add a warning message, but continue reading
|
||||
void warning(const String& msg);
|
||||
/// Show all warning messages, but continue reading
|
||||
void showWarnings();
|
||||
|
||||
// --------------------------------------------------- : Handling objects
|
||||
/// Handle an object: read it if it's name matches
|
||||
@@ -111,6 +115,8 @@ class Reader {
|
||||
InputStreamP input;
|
||||
/// Text stream wrapping the input stream
|
||||
wxTextInputStream stream;
|
||||
/// Accumulated warning messages
|
||||
String warnings;
|
||||
|
||||
// --------------------------------------------------- : Reading the stream
|
||||
|
||||
|
||||
Reference in New Issue
Block a user