/* 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. */ /*************************************************************************** * Copyright (C) 2004 by Riku Leino * * tsoots@gmail.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef GTGETTEXT_H #define GTGETTEXT_H #include #include #include #include #include #include #include #include "scconfig.h" #include "scribusapi.h" #include "scfonts.h" class PageItem; class ScribusDoc; class gtDialogs; // A struct for holding the Importer specific information. struct ImporterData { QString soFilePath; // Path to the Importer QString fileFormatName; // Name of the Importer QStringList fileEndings; // Array of filenames supported by the importer }; // A Struct for holding the results of the File selection Dialog struct ImportSetup { bool runDialog; // Did the dialog run correctly? int importer; // Which importer was selected? QString filename; // What filename is to be loaded? bool textOnly; // Do we import as text only? QString encoding; // File encoding }; /* GetText handles the open file dialog and importer plugins loading and launching. */ class SCRIBUS_API gtGetText { private: std::vector importers; // Vector of the loaded importers QMap importerMap; // QMap of the supported extensions to their relevant importers entry for easy access void loadImporterPlugins(); // Find the available plugins based on the environment, validate they load, and // create quick lookup mappings. void CallDLL(const ImporterData& idata, const QString& filePath, const QString& encoding, bool textOnly, bool append, PageItem* importItem); // Loads, validates, and executes the Importer code. bool DLLName(QString name, QString *ffName, QStringList *fileEndings); // Loads the "DLL", validates the importer is good, populates the passed parameters with // the plugin information. void createMap(); // Create the importer Qmap. gtDialogs* dias; // File Selection Dialog pointer. QStringList ilist; // List of supported importers, used with dialogs ScribusDoc* m_Doc; // Which document are we working with. public: gtGetText(ScribusDoc* doc); // Constructor ~gtGetText(); // Destructor ImportSetup run(); // Creates the dialog for the user to import a file based on the supported file formats. void launchImporter(int importer, const QString& filename, bool textOnly, const QString& encoding, bool append, PageItem* target=0); // Look at the results of the file selection dialog and figure out if you need to use an importer. // Prompt the user if the importer to use isn't obvious. }; #endif