wmfimportplugin.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "scconfig.h"
00008 #include "wmfimportplugin.h"
00009
00010 #include <QFile>
00011 #include <QRegExp>
00012 #include <QCursor>
00013
00014 #include "customfdialog.h"
00015 #include "scribus.h"
00016 #include "scribusXml.h"
00017 #include "prefsfile.h"
00018
00019 #include <cmath>
00020 #include "commonstrings.h"
00021 #include "fpointarray.h"
00022 #include "menumanager.h"
00023 #include "prefsmanager.h"
00024 #include "pageitem.h"
00025 #include "scraction.h"
00026 #include "scribuscore.h"
00027 #include "scribusdoc.h"
00028 #include "selection.h"
00029 #include "undomanager.h"
00030 #include "loadsaveplugin.h"
00031 #include "util.h"
00032 #include "util_formats.h"
00033 #include "fonts/scfontmetrics.h"
00034
00035 #include "wmfimport.h"
00036
00037 using namespace std;
00038
00039 int wmfimplugin_getPluginAPIVersion()
00040 {
00041 return PLUGIN_API_VERSION;
00042 }
00043
00044 ScPlugin* wmfimplugin_getPlugin()
00045 {
00046 WMFImportPlugin* plug = new WMFImportPlugin();
00047 Q_CHECK_PTR(plug);
00048 return plug;
00049 }
00050
00051 void wmfimplugin_freePlugin(ScPlugin* plugin)
00052 {
00053 WMFImportPlugin* plug = dynamic_cast<WMFImportPlugin*>(plugin);
00054 Q_ASSERT(plug);
00055 delete plug;
00056 }
00057
00058 WMFImportPlugin::WMFImportPlugin() : LoadSavePlugin(),
00059 importAction(new ScrAction(ScrAction::DLL, QPixmap(), QPixmap(), "", QKeySequence(), this))
00060 {
00061
00062
00063
00064 languageChange();
00065 }
00066
00067 void WMFImportPlugin::addToMainWindowMenu(ScribusMainWindow *mw)
00068 {
00069 importAction->setEnabled(true);
00070 connect( importAction, SIGNAL(triggered()), SLOT(import()) );
00071 mw->scrMenuMgr->addMenuItem(importAction, "FileImport");
00072 }
00073
00074 WMFImportPlugin::~WMFImportPlugin()
00075 {
00076 unregisterAll();
00077 };
00078
00079 void WMFImportPlugin::languageChange()
00080 {
00081 importAction->setText( tr("Import &WMF..."));
00082
00083 unregisterAll();
00084 registerFormats();
00085 }
00086
00087 const QString WMFImportPlugin::fullTrName() const
00088 {
00089 return QObject::tr("WMF Import");
00090 }
00091
00092 const ScActionPlugin::AboutData* WMFImportPlugin::getAboutData() const
00093 {
00094 AboutData* about = new AboutData;
00095 about->authors = "Jean Ghali <jghali@scribus.info>";
00096 about->shortDescription = tr("Imports WMF Files");
00097 about->description = tr("Imports most WMF files into the current document,\nconverting their vector data into Scribus objects.");
00098 about->license = "GPL";
00099 Q_CHECK_PTR(about);
00100 return about;
00101 }
00102
00103 void WMFImportPlugin::deleteAboutData(const AboutData* about) const
00104 {
00105 Q_ASSERT(about);
00106 delete about;
00107 }
00108
00109 void WMFImportPlugin::registerFormats()
00110 {
00111 FileFormat fmt(this);
00112 fmt.trName = FormatsManager::instance()->nameOfFormat(FormatsManager::WMF);
00113 fmt.formatId = FORMATID_WMFIMPORT;
00114 fmt.filter = FormatsManager::instance()->extensionsForFormat(FormatsManager::WMF);
00115 fmt.nameMatch = QRegExp("\\."+FormatsManager::instance()->extensionListForFormat(FormatsManager::WMF, 1)+"$", Qt::CaseInsensitive);
00116 fmt.load = true;
00117 fmt.save = false;
00118 fmt.mimeTypes = FormatsManager::instance()->mimetypeOfFormat(FormatsManager::WMF);
00119 fmt.priority = 64;
00120 registerFormat(fmt);
00121 }
00122
00123 bool WMFImportPlugin::fileSupported(QIODevice* , const QString & fileName) const
00124 {
00125
00126 return true;
00127 }
00128
00129 bool WMFImportPlugin::loadFile(const QString & fileName, const FileFormat & , int flags, int )
00130 {
00131
00132 return import(fileName, flags);
00133 }
00134
00135 bool WMFImportPlugin::import(QString filename, int flags)
00136 {
00137 if (!checkFlags(flags))
00138 return false;
00139 m_Doc=ScCore->primaryMainWindow()->doc;
00140 ScribusMainWindow* mw=(m_Doc==0) ? ScCore->primaryMainWindow() : m_Doc->scMW();
00141 if (filename.isEmpty())
00142 {
00143 flags |= lfInteractive;
00144 PrefsContext* prefs = PrefsManager::instance()->prefsFile->getPluginContext("WMFPlugin");
00145 QString wdir = prefs->get("wdir", ".");
00146 CustomFDialog diaf(mw, wdir, QObject::tr("Open"), FormatsManager::instance()->fileDialogFormatList(FormatsManager::WMF));
00147 if (diaf.exec())
00148 {
00149 filename = diaf.selectedFile();
00150 prefs->set("wdir", filename.left(filename.lastIndexOf("/")));
00151 }
00152 else
00153 return true;
00154 }
00155
00156
00157
00158
00159
00160
00161
00162 WMFImport *dia = new WMFImport(mw, flags);
00163 dia->import(filename, flags);
00164 Q_CHECK_PTR(dia);
00165
00166
00167
00168
00169 if (dia->importCanceled)
00170 {
00171 if (dia->importFailed)
00172 QMessageBox::warning(mw, CommonStrings::trWarning, tr("The file could not be imported"), 1, 0, 0);
00173 else if (dia->unsupported)
00174 QMessageBox::warning(mw, CommonStrings::trWarning, tr("WMF file contains some unsupported features"), 1, 0, 0);
00175 }
00176
00177 bool success = !dia->importFailed;
00178 delete dia;
00179 return success;
00180 }