importaiplugin.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "commonstrings.h"
00008 #include "customfdialog.h"
00009 #include "importai.h"
00010 #include "importaiplugin.h"
00011 #include "menumanager.h"
00012 #include "page.h"
00013 #include "prefscontext.h"
00014 #include "prefsfile.h"
00015 #include "prefsmanager.h"
00016 #include "scraction.h"
00017 #include "scribuscore.h"
00018 #include "undomanager.h"
00019 #include "util_formats.h"
00020
00021
00022 int importai_getPluginAPIVersion()
00023 {
00024 return PLUGIN_API_VERSION;
00025 }
00026
00027 ScPlugin* importai_getPlugin()
00028 {
00029 ImportAIPlugin* plug = new ImportAIPlugin();
00030 Q_CHECK_PTR(plug);
00031 return plug;
00032 }
00033
00034 void importai_freePlugin(ScPlugin* plugin)
00035 {
00036 ImportAIPlugin* plug = dynamic_cast<ImportAIPlugin*>(plugin);
00037 Q_ASSERT(plug);
00038 delete plug;
00039 }
00040
00041 ImportAIPlugin::ImportAIPlugin() : LoadSavePlugin(),
00042 importAction(new ScrAction(ScrAction::DLL, QPixmap(), QPixmap(), "", QKeySequence(), this))
00043 {
00044
00045
00046 languageChange();
00047 }
00048
00049 void ImportAIPlugin::addToMainWindowMenu(ScribusMainWindow *mw)
00050 {
00051 importAction->setEnabled(true);
00052 connect( importAction, SIGNAL(triggered()), SLOT(import()) );
00053 mw->scrMenuMgr->addMenuItem(importAction, "FileImport");
00054 }
00055
00056 void ImportAIPlugin::languageChange()
00057 {
00058 importAction->setText( tr("Import AI..."));
00059
00060 unregisterAll();
00061 registerFormats();
00062 }
00063
00064 ImportAIPlugin::~ImportAIPlugin()
00065 {
00066 unregisterAll();
00067 };
00068
00069 const QString ImportAIPlugin::fullTrName() const
00070 {
00071 return QObject::tr("Adobe Illustrator Importer");
00072 }
00073
00074
00075 const ScActionPlugin::AboutData* ImportAIPlugin::getAboutData() const
00076 {
00077 AboutData* about = new AboutData;
00078 about->authors = "Franz Schmid <franz@scribus.info>";
00079 about->shortDescription = tr("Imports Illustrator Files");
00080 about->description = tr("Imports most Illustrator files into the current document,\nconverting their vector data into Scribus objects.");
00081 about->license = "GPL";
00082 Q_CHECK_PTR(about);
00083 return about;
00084 }
00085
00086 void ImportAIPlugin::deleteAboutData(const AboutData* about) const
00087 {
00088 Q_ASSERT(about);
00089 delete about;
00090 }
00091
00092 void ImportAIPlugin::registerFormats()
00093 {
00094 FileFormat fmt(this);
00095 fmt.trName = FormatsManager::instance()->nameOfFormat(FormatsManager::AI);
00096 fmt.formatId = FORMATID_AIIMPORT;
00097 fmt.filter = FormatsManager::instance()->extensionsForFormat(FormatsManager::AI);
00098 fmt.nameMatch = QRegExp("\\."+FormatsManager::instance()->extensionListForFormat(FormatsManager::AI, 1)+"$", Qt::CaseInsensitive);
00099 fmt.load = true;
00100 fmt.save = false;
00101 fmt.mimeTypes = FormatsManager::instance()->mimetypeOfFormat(FormatsManager::AI);
00102 fmt.priority = 64;
00103 registerFormat(fmt);
00104 }
00105
00106 bool ImportAIPlugin::fileSupported(QIODevice* , const QString & fileName) const
00107 {
00108
00109 return true;
00110 }
00111
00112 bool ImportAIPlugin::loadFile(const QString & fileName, const FileFormat &, int flags, int )
00113 {
00114
00115 return import(fileName, flags);
00116 }
00117
00118 bool ImportAIPlugin::import(QString fileName, int flags)
00119 {
00120 if (!checkFlags(flags))
00121 return false;
00122
00123 UndoManager::instance()->setUndoEnabled(false);
00124 if( fileName.isEmpty() )
00125 {
00126 flags |= lfInteractive;
00127 PrefsContext* prefs = PrefsManager::instance()->prefsFile->getPluginContext("importai");
00128 QString wdir = prefs->get("wdir", ".");
00129 CustomFDialog diaf(ScCore->primaryMainWindow(), wdir, QObject::tr("Open"), FormatsManager::instance()->fileDialogFormatList(FormatsManager::AI));
00130 if (diaf.exec())
00131 {
00132 fileName = diaf.selectedFile();
00133 prefs->set("wdir", fileName.left(fileName.lastIndexOf("/")));
00134 }
00135 else
00136 return true;
00137 }
00138 m_Doc=ScCore->primaryMainWindow()->doc;
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 AIPlug *dia = new AIPlug(m_Doc, flags);
00149 Q_CHECK_PTR(dia);
00150 dia->import(fileName, flags);
00151
00152
00153
00154 UndoManager::instance()->setUndoEnabled(true);
00155 delete dia;
00156 return true;
00157 }