Added better handling of writeNode operations that arn't successful.

This commit is contained in:
Robert Osfield
2006-11-07 17:00:56 +00:00
parent ac9a28051f
commit 530e9e08d4
4 changed files with 65 additions and 3 deletions

View File

@@ -1519,6 +1519,16 @@ ReaderWriter::WriteResult Registry::writeObjectImplementation(const Object& obj,
return ReaderWriter::WriteResult("Warning: Could not find plugin to write objects to file \""+fileName+"\".");
}
if (results.front().message().empty())
{
switch(results.front().status())
{
case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): results.front().message() = "Warning: Write to \""+fileName+"\" not supported."; break;
case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): results.front().message() = "Warning: Error in writing to \""+fileName+"\"."; break;
default: break;
}
}
return results.front();
}
@@ -1545,6 +1555,8 @@ ReaderWriter::WriteResult Registry::writeImageImplementation(const Image& image,
else results.push_back(rr);
}
results.clear();
// now look for a plug-in to save the file.
std::string libraryName = createLibraryNameForFile(fileName);
if (loadLibrary(libraryName))
@@ -1562,6 +1574,16 @@ ReaderWriter::WriteResult Registry::writeImageImplementation(const Image& image,
return ReaderWriter::WriteResult("Warning: Could not find plugin to write image to file \""+fileName+"\".");
}
if (results.front().message().empty())
{
switch(results.front().status())
{
case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): results.front().message() = "Warning: Write to \""+fileName+"\" not supported."; break;
case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): results.front().message() = "Warning: Error in writing to \""+fileName+"\"."; break;
default: break;
}
}
return results.front();
}
@@ -1587,6 +1609,8 @@ ReaderWriter::WriteResult Registry::writeHeightFieldImplementation(const HeightF
else results.push_back(rr);
}
results.clear();
// now look for a plug-in to save the file.
std::string libraryName = createLibraryNameForFile(fileName);
if (loadLibrary(libraryName))
@@ -1603,6 +1627,16 @@ ReaderWriter::WriteResult Registry::writeHeightFieldImplementation(const HeightF
{
return ReaderWriter::WriteResult("Warning: Could not find plugin to write HeightField to file \""+fileName+"\".");
}
if (results.front().message().empty())
{
switch(results.front().status())
{
case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): results.front().message() = "Warning: Write to \""+fileName+"\" not supported."; break;
case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): results.front().message() = "Warning: Error in writing to \""+fileName+"\"."; break;
default: break;
}
}
return results.front();
}
@@ -1629,13 +1663,18 @@ ReaderWriter::WriteResult Registry::writeNodeImplementation(const Node& node,con
else results.push_back(rr);
}
results.clear();
// now look for a plug-in to save the file.
std::string libraryName = createLibraryNameForFile(fileName);
if (loadLibrary(libraryName))
{
for(;itr.valid();++itr)
{
ReaderWriter::WriteResult rr = itr->writeNode(node,fileName,_options.get());
if (rr.success()) return rr;
else results.push_back(rr);
}
@@ -1646,6 +1685,16 @@ ReaderWriter::WriteResult Registry::writeNodeImplementation(const Node& node,con
return ReaderWriter::WriteResult("Warning: Could not find plugin to write nodes to file \""+fileName+"\".");
}
if (results.front().message().empty())
{
switch(results.front().status())
{
case(ReaderWriter::WriteResult::FILE_NOT_HANDLED): results.front().message() = "Warning: Write to \""+fileName+"\" not supported."; break;
case(ReaderWriter::WriteResult::ERROR_IN_WRITING_FILE): results.front().message() = "Warning: Error in writing to \""+fileName+"\"."; break;
default: break;
}
}
return results.front();
}