r13960 by herm - Added missing files for Uniconvertor and GraphicsMagick.
scribus-commit
scribus-commit at lists.scribus.net
Sat Sep 5 13:05:17 CEST 2009
Revision: 13960
Author: herm
Date: 2009-09-05T11:03:40.035402Z
Commit message: Added missing files for Uniconvertor and GraphicsMagick.
Changeset:
A /trunk/Scribus/scribus/plugins/uniconvertorplugin/.cvsignore
A /trunk/Scribus/scribus/plugins/uniconvertorplugin/CMakeLists.txt
A /trunk/Scribus/scribus/scimgdataloader_gmagick.h
A /trunk/Scribus/scribus/plugins/uniconvertorplugin
A /trunk/Scribus/scribus/plugins/uniconvertorplugin/uniconvplugin.cpp
A /trunk/Scribus/scribus/plugins/uniconvertorplugin/uniconvplugin.h
A /trunk/Scribus/cmake/modules/GMAGICKConfig.cmake
A /trunk/Scribus/scribus/scimgdataloader_gmagick.cpp
Diffs:
Index: cmake/modules/GMAGICKConfig.cmake
===================================================================
--- cmake/modules/GMAGICKConfig.cmake (revision 0)
+++ cmake/modules/GMAGICKConfig.cmake (revision 13960)
@@ -0,0 +1,55 @@
+#
+# Find the native GraphicksMagick++ includes and library
+#
+
+# This module defines
+# GMAGICK_INCLUDE_DIR, where to find Magick++.h
+# GMAGICK_LIBRARY, the libraries to link against to use GraphicksMagick++.
+# GMAGICK_FOUND, If false, do not try to use GraphicksMagick++.
+# GMAGICK_LIBS, link information
+# GMAGICK_CFLAGS, cflags for include information
+
+
+find_program(GMAGICK_CONFIG_EXECUTABLE NAMES GraphicsMagick++-config PATH ${PREFIX_GMAGICK} DOC "GraphicsMagick++-config executable")
+mark_as_advanced(GMAGICK_CONFIG_EXECUTABLE)
+
+MESSAGE(STATUS "Gmconf ${GMAGICK_CONFIG_EXECUTABLE}")
+
+macro(_gmagickconfig_invoke _type _varname _regexp)
+ set(_gmagickconfig_invoke_result)
+
+ execute_process(
+ COMMAND ${GMAGICK_CONFIG_EXECUTABLE} ${_type}
+ OUTPUT_VARIABLE _gmagickconfig_invoke_result
+ RESULT_VARIABLE _gmagickconfig_failed)
+
+ if (NOT _gmagickconfig_failed)
+ set(GMAGICK_FOUND "YES")
+ string(REGEX REPLACE "[\r\n]" " " _gmagickconfig_invoke_result "${_gmagickconfig_invoke_result}")
+ string(REGEX REPLACE " +$" "" _gmagickconfig_invoke_result "${_gmagickconfig_invoke_result}")
+
+ if (NOT ${_regexp} STREQUAL "")
+ string(REGEX REPLACE "${_regexp}" " " _gmagickconfig_invoke_result "${_gmagickconfig_invoke_result}")
+ endif(NOT ${_regexp} STREQUAL "")
+
+ separate_arguments(_gmagickconfig_invoke_result)
+
+ MESSAGE(STATUS "GMAGICK result for ${_type}: ${_gmagickconfig_invoke_result}")
+
+ #message(STATUS " ${_varname} ... ${_pkgconfig_invoke_result}")
+ set(${_varname} ${_gmagickconfig_invoke_result})
+# _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}")
+ endif(NOT _gmagickconfig_failed)
+endmacro(_gmagickconfig_invoke)
+
+_gmagickconfig_invoke("--cppflags" GMAGICK_INCLUDES "(^| )-I")
+_gmagickconfig_invoke("--ldflags" GMAGICK_LDFLAGS "(^| )-L")
+_gmagickconfig_invoke("--libs" GMAGICK_LIBRARIES "(^| )-l")
+
+if(${GMAGICK_INCLUDES})
+ SET(${GMAGICK_FOUND "YES")
+else(${GMAGICK_INCLUDES})
+ SET(${GMAGICK_INCLUDES})
+ SET(${GMAGICK_LIBRARIES})
+ SET(${GMAGICK_LDFLAGS})
+endif(${GMAGICK_INCLUDES})
\ No newline at end of file
Index: scribus/scimgdataloader_gmagick.h
===================================================================
--- scribus/scimgdataloader_gmagick.h (revision 0)
+++ scribus/scimgdataloader_gmagick.h (revision 13960)
@@ -0,0 +1,28 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+#ifndef SCIMGDATALOADER_GMAGICK_H
+#define SCIMGDATALOADER_GMAGICK_H
+
+#include "scimgdataloader.h"
+
+
+class ScImgDataLoader_GMagick : public ScImgDataLoader
+{
+protected:
+ void initSupportedFormatList();
+ bool m_useRawImage;
+
+public:
+ ScImgDataLoader_GMagick(void);
+
+ virtual bool preloadAlphaChannel(const QString& fn, int page, int res, bool& hasAlpha);
+ virtual void loadEmbeddedProfile(const QString& fn, int page = 0);
+ virtual bool loadPicture(const QString& fn, int page, int res, bool thumbnail);
+ virtual bool useRawImage() { return m_useRawImage; }
+};
+
+#endif
\ No newline at end of file
Index: scribus/scimgdataloader_gmagick.cpp
===================================================================
--- scribus/scimgdataloader_gmagick.cpp (revision 0)
+++ scribus/scimgdataloader_gmagick.cpp (revision 13960)
@@ -0,0 +1,216 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+#include <QFile>
+#include <QFileInfo>
+#include <QObject>
+#include <QDebug>
+#include <setjmp.h>
+#include "scconfig.h"
+#include "scimgdataloader_gmagick.h"
+#include <Magick++.h>
+using namespace Magick;
+
+static bool read_cmyk(Image *input, RawImage *output, int width, int height)
+{
+ /* Mapping:
+ red: cyan
+ green: magenta
+ blue: yellow
+ opacity: black
+ index: alpha
+ */
+ //Copied from GraphicsMagick header and modified
+ #define GetCyanSample(p) (p.red)
+ #define GetMagentaSample(p) (p.green)
+ #define GetYellowSample(p) (p.blue)
+ #define GetCMYKBlackSample(p) (p.opacity)
+ #define GetAlphaSample(p) (p)
+
+ bool hasAlpha = input->matte();
+ if (!output->create(width, height, hasAlpha ? 5 : 4)) return false;
+ const PixelPacket *pixels = input->getConstPixels(0, 0, width, height);
+ const IndexPacket *alpha = input->getConstIndexes();
+ unsigned char *buffer = output->bits();
+
+ int i;
+ for (i = 0; i < width*height; i++) {
+ *buffer++ = ScaleQuantumToChar(GetCyanSample(pixels[i]));
+ *buffer++ = ScaleQuantumToChar(GetMagentaSample(pixels[i]));
+ *buffer++ = ScaleQuantumToChar(GetYellowSample(pixels[i]));
+ *buffer++ = ScaleQuantumToChar(GetCMYKBlackSample(pixels[i]));
+ if (hasAlpha) {
+ *buffer++ = 255 - ScaleQuantumToChar(GetAlphaSample(alpha[i]));
+ }
+ }
+ return true;
+}
+
+
+static bool read_rgb(Image *input, QImage *output, int width, int height)
+{
+ //Copied from GraphicsMagick header and modified
+ #define GetRedSample(p) (p.red)
+ #define GetGreenSample(p) (p.green)
+ #define GetBlueSample(p) (p.blue)
+ #define GetRGBAlphaSample(p) (p.opacity)
+
+ bool hasAlpha = input->matte();
+ const PixelPacket *pixels = input->getConstPixels(0, 0, width, height);
+ unsigned char *buffer = output->bits();
+
+ int i;
+ for (i = 0; i < width*height; i++) {
+ *buffer++ = ScaleQuantumToChar(GetBlueSample(pixels[i]));
+ *buffer++ = ScaleQuantumToChar(GetGreenSample(pixels[i]));
+ *buffer++ = ScaleQuantumToChar(GetRedSample(pixels[i]));
+ if (hasAlpha) {
+ *buffer++ = 255 - ScaleQuantumToChar(GetRGBAlphaSample(pixels[i]));
+ } else {
+ *buffer++ = 255;
+ }
+ }
+ return true;
+}
+
+ScImgDataLoader_GMagick::ScImgDataLoader_GMagick(void)
+{
+ initSupportedFormatList();
+ m_useRawImage = true;
+}
+
+void ScImgDataLoader_GMagick::initSupportedFormatList(void)
+{
+ //This is unused! See util_formats.{h,cpp}
+ m_supportedFormats.clear();
+ m_supportedFormats.append("bmp"); //TODO
+}
+
+void ScImgDataLoader_GMagick::loadEmbeddedProfile(const QString& fn, int /*page*/)
+{
+ if (!QFile::exists(fn)) {
+ m_embeddedProfile.resize(0);
+ m_profileComponents = 0;
+ return;
+ }
+
+ try {
+ Image image(std::string(fn.toUtf8()));
+ Blob icc = image.iccColorProfile();
+
+ if (image.colorSpace() == CMYKColorspace) {
+ m_profileComponents = 4;
+ } else if (image.colorSpace() == RGBColorspace) {
+ m_profileComponents = 3;
+ } else {
+ m_profileComponents = 0;
+ m_embeddedProfile.resize(0);
+ }
+
+ m_embeddedProfile.resize(icc.length());
+
+ char *dest = m_embeddedProfile.data();
+ const char *src = (const char *)icc.data();
+
+ unsigned int i;
+ for (i=0; i<icc.length(); i++) {
+ dest[i] = src[i];
+ }
+
+ } catch (std::exception &error_) {
+ m_profileComponents = 0;
+ m_embeddedProfile.resize(0);
+
+ qDebug() << "GraphicsMagic Exception in ScImgDataLoader_GMagick::loadEmbeddedProfile("
+ << fn << "):" << error_.what();
+
+ return;
+ }
+}
+
+bool ScImgDataLoader_GMagick::preloadAlphaChannel(const QString& fn, int /*page*/, int res, bool& hasAlpha)
+{
+ qDebug() << "GMAGICK: preloadAlpha" << fn;
+
+ initialize();
+ hasAlpha = false;
+
+ if (!QFile::exists(fn))
+ return false;
+
+ try {
+ Image image(std::string(fn.toUtf8()));
+
+ hasAlpha = image.matte();
+
+ if (!hasAlpha) {
+ return true; //No need to load any image data
+ } else {
+ return loadPicture(fn, 0, 0, false);
+ }
+
+ } catch (std::exception &error_) {
+ qDebug() << "GraphicsMagic Exception in ScImgDataLoader_GMagick::preloadAlphaChannel("
+ << fn << "):" << error_.what();
+ return false;
+ }
+ return true;
+}
+
+bool ScImgDataLoader_GMagick::loadPicture(const QString& fn, int /*page*/, int res, bool thumbnail)
+{
+ qDebug() << "Loading image" << fn << "Tumbnail:" << thumbnail;
+
+ if (!QFile::exists(fn))
+ return false;
+
+ initialize();
+
+ try {
+ Image image(std::string(fn.toUtf8()));
+
+ qDebug() << "Detected format:" << QString(image.format().c_str())
+ << ", has matte(alpha):" << image.matte();
+
+ int width = image.baseColumns();
+ int height = image.baseRows();
+
+ image.resolutionUnits(PixelsPerInchResolution);
+ double xres = image.xResolution();
+ double yres = image.yResolution();
+ int resInf = m_imageInfoRecord.lowResType;
+
+ /*NOTE:
+ - The BGRO bit ordering was found by try'n'error
+ - Always use "O" for the alpha channel! "A" is inverted!
+ - image.write() is broken for cmyk images!
+ */
+ if (image.colorSpace() == CMYKColorspace) {
+ qDebug() << "CMYK image";
+ m_useRawImage = true;
+ if (!read_cmyk(&image, &r_image, width, height)) return false;
+ m_imageInfoRecord.colorspace = ColorSpaceCMYK;
+ } else {
+ m_useRawImage = false;
+ m_image = QImage(width, height, QImage::Format_ARGB32);
+ if (!read_rgb(&image, &m_image, width, height)) return false;
+ m_imageInfoRecord.colorspace = ColorSpaceRGB;
+ }
+ m_imageInfoRecord.type = ImageTypeOther;
+ m_imageInfoRecord.exifDataValid = false;
+ m_imageInfoRecord.xres = qMax(72, qRound(xres));
+ m_imageInfoRecord.yres = qMax(72, qRound(yres));
+ m_imageInfoRecord.lowResType = resInf;
+ m_imageInfoRecord.BBoxX = 0;
+ m_imageInfoRecord.BBoxH = m_image.height();
+ m_imageInfoRecord.valid = true;
+ } catch (std::exception &error_) {
+ qDebug() << "GraphicsMagic Exception in ScImgDataLoader_GMagick::loadImage("
+ << fn << "):" << error_.what();
+ return false;
+ }
+ return true;
+}
\ No newline at end of file
Index: scribus/plugins/uniconvertorplugin/uniconvplugin.cpp
===================================================================
--- scribus/plugins/uniconvertorplugin/uniconvplugin.cpp (revision 0)
+++ scribus/plugins/uniconvertorplugin/uniconvplugin.cpp (revision 13960)
@@ -0,0 +1,191 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+
+#include "uniconvplugin.h"
+#include "scraction.h"
+#include "util_formats.h"
+#include "prefsmanager.h"
+
+#include <QDebug>
+#include <QMessageBox>
+#include <QString>
+#include <QProcess>
+#include <QTemporaryFile>
+
+
+#include <QCursor>
+#include <QDrag>
+#include <QFile>
+#include <QList>
+#include <QMimeData>
+#include <QPainterPath>
+#include <QRegExp>
+#include <cmath>
+
+#include "commonstrings.h"
+#include "scribuscore.h"
+#include "undomanager.h"
+
+int uniconvertorplugin_getPluginAPIVersion()
+{
+ return PLUGIN_API_VERSION;
+}
+
+ScPlugin* uniconvertorplugin_getPlugin()
+{
+ UniconvImportPlugin* plug = new UniconvImportPlugin();
+ Q_CHECK_PTR(plug);
+ return plug;
+ return 0;
+}
+
+void uniconvertorplugin_freePlugin(ScPlugin* plugin)
+{
+ UniconvImportPlugin* plug = dynamic_cast<UniconvImportPlugin*>(plugin);
+ Q_ASSERT(plug);
+ delete plug;
+}
+
+UniconvImportPlugin::UniconvImportPlugin() : LoadSavePlugin()
+{
+ // Set action info in languageChange, so we only have to do
+ // it in one place. This includes registering file format
+ // support.
+ languageChange();
+}
+
+UniconvImportPlugin::~UniconvImportPlugin()
+{
+ unregisterAll();
+};
+
+void UniconvImportPlugin::languageChange()
+{
+ // (Re)register file format support.
+ unregisterAll();
+ registerFormats();
+}
+
+const QString UniconvImportPlugin::fullTrName() const
+{
+ return QObject::tr("Uniconvertor Import");
+}
+
+const ScActionPlugin::AboutData* UniconvImportPlugin::getAboutData() const
+{
+ AboutData* about = new AboutData;
+ about->authors = "Hermann Kraus <herm at scribus.info>";
+ about->shortDescription = tr("Imports Vector Files with UniConvertor");
+ about->description = tr("Converts many vector formats to SVG and then "
+ "loads the resulting SVG.");
+ about->license = "GPL";
+ Q_CHECK_PTR(about);
+ return about;
+}
+
+void UniconvImportPlugin::deleteAboutData(const AboutData* about) const
+{
+ Q_ASSERT(about);
+ delete about;
+}
+
+void UniconvImportPlugin::registerFormats()
+{
+ QString name = tr("Uniconvertor Import");
+ FileFormat fmt(this);
+ fmt.trName = name;
+ fmt.formatId = FORMATID_UNICONVIMPORT;
+ fmt.filter = name + " (" +
+ FormatsManager::instance()->extensionListForFormat(
+ FormatsManager::UNICONV, 0)+")"; // QFileDialog filter
+ fmt.nameMatch = QRegExp("\\.("+
+ FormatsManager::instance()->extensionListForFormat(
+ FormatsManager::UNICONV, 1)+")$", Qt::CaseInsensitive);
+ fmt.load = true;
+ fmt.save = false;
+ //TODO: fmt.mimeTypes = QStringList(""); // MIME types
+ fmt.priority = 64; // Lowest priority
+ registerFormat(fmt);
+}
+
+bool UniconvImportPlugin::fileSupported(QIODevice* /* file */,
+ const QString & fileName) const
+{
+ // TODO: It's hard to tell if a file is supported without first loading it
+ return true;
+}
+
+bool UniconvImportPlugin::loadFile(const QString & fileName,
+ const FileFormat & /* fmt */, int flags, int /*index*/)
+{
+ // For now, "load file" and import are the same thing for this plugin
+ return import(fileName, flags);
+}
+
+bool UniconvImportPlugin::import(QString fileName, int flags)
+{
+ if (!checkFlags(flags))
+ return false;
+
+ m_Doc = ScCore->primaryMainWindow()->doc;
+ ScribusMainWindow *mw =
+ (m_Doc==0) ? ScCore->primaryMainWindow() : m_Doc->scMW();
+
+ //Get a temporary filename ending in .svg (sadly
+ //uniconvertor has no other way of specifying the output format
+ QTemporaryFile *tempFile =
+ new QTemporaryFile(QDir::tempPath() + "/scribus_uniconv_XXXXXX");
+ tempFile->open();
+ QString tempFileName = tempFile->fileName() + ".svg";
+ tempFile->close();
+ delete tempFile;
+
+ //prepare arguments for uniconvertor call
+ QStringList arguments;
+ arguments << fileName << tempFileName;
+
+ //execute uniconvertor
+ QProcess uniconv;
+ uniconv.setProcessChannelMode(QProcess::MergedChannels);
+ uniconv.start(PrefsManager::instance()->uniconvExecutable(), arguments);
+
+ //handle errors
+ if (!uniconv.waitForStarted(10000)) {
+ qWarning() << "Uniconvertor failed:" <<
+ PrefsManager::instance()->uniconvExecutable() << arguments;
+ QMessageBox::warning(mw, CommonStrings::trWarning,
+ tr("Starting Uniconvertor failed! The executable name in "
+ "File->Preferences->External Tools may be incorrect or the "
+ "software has been uninstalled since preferences "
+ "were set. (%1)").arg(uniconv.errorString()));
+ return false;
+ }
+ if (!uniconv.waitForFinished(10000)) {
+ qDebug() << "Uniconv exit code:" << uniconv.exitCode();
+ QMessageBox::warning(mw, CommonStrings::trWarning,
+ tr("Uniconvertor did not exit correctly: %1").arg(
+ uniconv.errorString()).arg(QString(uniconv.readAll())));
+ return false;
+ }
+ if (uniconv.exitCode()) {
+ qDebug() << "Uniconv exit code:" << uniconv.exitCode();
+ QMessageBox::warning(mw, CommonStrings::trWarning,
+ tr("Uniconvertor failed to convert the file: %1").arg(
+ QString(uniconv.readAll())));
+ return false;
+ }
+
+ //Import SVG
+ const FileFormat *fmt = LoadSavePlugin::getFormatById(FORMATID_SVGIMPORT);
+ if (!fmt) {
+ QMessageBox::warning(mw, CommonStrings::trWarning, tr("The SVG Import plugin could not be found"), 1, 0, 0);
+ return false;
+ }
+ qDebug() << "Loading file!";
+ fmt->loadFile(tempFileName, flags);
+ return true;
+}
\ No newline at end of file
Index: scribus/plugins/uniconvertorplugin/uniconvplugin.h
===================================================================
--- scribus/plugins/uniconvertorplugin/uniconvplugin.h (revision 0)
+++ scribus/plugins/uniconvertorplugin/uniconvplugin.h (revision 13960)
@@ -0,0 +1,54 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+#ifndef UNICONVPLUGIN_H
+#define UNICONVPLUGIN_H
+
+#include "pluginapi.h"
+#include "loadsaveplugin.h"
+#include "../formatidlist.h"
+#include <QObject>
+
+class ScrAction;
+class ScribusMainWindow;
+
+/**
+* \brief A class providing the plugin interface implementation for the uniconvertor plugin
+*/
+class PLUGIN_API UniconvImportPlugin : public LoadSavePlugin
+{
+ Q_OBJECT
+
+ public:
+ // Standard plugin implementation
+ UniconvImportPlugin();
+ virtual ~UniconvImportPlugin();
+ virtual const QString fullTrName() const;
+ virtual const AboutData* getAboutData() const;
+ virtual void deleteAboutData(const AboutData* about) const;
+ virtual void languageChange();
+ virtual bool fileSupported(QIODevice* file, const QString & fileName=QString::null) const;
+ virtual bool loadFile(const QString & fileName, const FileFormat & fmt, int flags, int index = 0);
+ virtual void addToMainWindowMenu(ScribusMainWindow *) {};
+
+ public slots:
+ /*!
+ \brief Run UniConvertor and import results
+ \param filename a file name to import
+ \retval true for success
+ */
+ virtual bool import(QString fileName = QString::null, int flags = lfUseCurrentPage|lfInteractive);
+
+ private:
+ void registerFormats();
+
+};
+
+extern "C" PLUGIN_API int uniconvertorplugin_getPluginAPIVersion();
+extern "C" PLUGIN_API ScPlugin* uniconvertorplugin_getPlugin();
+extern "C" PLUGIN_API void uniconvertorplugin_freePlugin(ScPlugin* plugin);
+
+#endif
\ No newline at end of file
Index: scribus/plugins/uniconvertorplugin/.cvsignore
===================================================================
--- scribus/plugins/uniconvertorplugin/.cvsignore (revision 0)
+++ scribus/plugins/uniconvertorplugin/.cvsignore (revision 13960)
@@ -0,0 +1,26 @@
+Makefile
+Makefile.in
+*.la
+*.lo
+*.moc.cpp
+*.moc
+*.o
+.deps
+.libs
+CVS
+scribus
+CMakeFiles
+cmake_install.cmake
+Makefile
+Makefile.in
+*.la
+*.lo
+*.moc.cpp
+*.moc
+*.o
+.deps
+.libs
+CVS
+scribus
+CMakeFiles
+cmake_install.cmake
Index: scribus/plugins/uniconvertorplugin/CMakeLists.txt
===================================================================
--- scribus/plugins/uniconvertorplugin/CMakeLists.txt (revision 0)
+++ scribus/plugins/uniconvertorplugin/CMakeLists.txt (revision 13960)
@@ -0,0 +1,30 @@
+INCLUDE_DIRECTORIES(
+${CMAKE_SOURCE_DIR}
+${CMAKE_SOURCE_DIR}/scribus
+)
+
+SET(IMPORTUNICONVERTOR_PLUGIN_MOC_CLASSES
+ uniconvplugin.h
+)
+
+SET(IMPORTUNICONVERTOR_PLUGIN_SOURCES
+ uniconvplugin.cpp
+)
+
+SET(SCRIBUS_IMPORTUNICONVERTOR_PLUGIN "uniconvertorplugin")
+
+QT4_WRAP_CPP(IMPORTUNICONVERTOR_PLUGIN_MOC_SOURCES ${IMPORTUNICONVERTOR_PLUGIN_MOC_CLASSES})
+
+ADD_LIBRARY(${SCRIBUS_IMPORTUNICONVERTOR_PLUGIN} MODULE ${IMPORTUNICONVERTOR_PLUGIN_SOURCES} ${IMPORTUNICONVERTOR_PLUGIN_MOC_SOURCES})
+
+TARGET_LINK_LIBRARIES(${SCRIBUS_IMPORTUNICONVERTOR_PLUGIN} ${PLUGIN_LIBRARIES})
+
+INSTALL(TARGETS ${SCRIBUS_IMPORTUNICONVERTOR_PLUGIN}
+ LIBRARY
+ DESTINATION ${PLUGINDIR}
+ PERMISSIONS ${PLUGIN_PERMISSIONS}
+)
+
+ADD_DEPENDENCIES(${SCRIBUS_IMPORTUNICONVERTOR_PLUGIN} ${EXE_NAME})
+
+# SET_TARGET_PROPERTIES(${SCRIBUS_FONTPREVIEW_PLUGIN} PROPERTIES VERSION "0.0.0")
More information about the scribus-commit
mailing list