bool MapDocument::save(const QString &fileName, QString *error) { PluginManager *pm = PluginManager::instance(); MapWriterInterface *chosenWriter = 0; if (const Plugin *plugin = pm->pluginByFileName(mWriterPluginFileName)) chosenWriter = qobject_cast<MapWriterInterface*>(plugin->instance); TmxMapWriter mapWriter; if (!chosenWriter) chosenWriter = &mapWriter; if (!chosenWriter->write(map(), fileName)) { if (error) *error = chosenWriter->errorString(); return false; } undoStack()->setClean(); setFileName(fileName); mLastSaved = QFileInfo(fileName).lastModified(); emit saved(); return true; }