//=============================================================================
//
// OpenFlipper
// Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
// www.openflipper.org
//
//-----------------------------------------------------------------------------
//
// License
//
// OpenFlipper is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenFlipper 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 Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenFlipper. If not, see .
//
//-----------------------------------------------------------------------------
//
// $Revision$
// $Author$
// $Date$
//
//=============================================================================
//
// C++ Interface: BasePlugin
//
// Description:
//
//
// Author: Jan Moebius , (C) 2007
//
#ifndef FILEINTERFACE_HH
#define FILEINTERFACE_HH
#include
#include
/** \brief Interface class for file and object handling
*
* This interface class has to be fully implemented. When you want to support save and load
* for an object type you have to implement all functions in this class. The core manages the
* load and save interaction and gives the load and save actions to your plugin. The decision
* which plugin is called for saving an object depends on your supportedTypes() and the filters
* defined by your plugin.
*/
class FileInterface {
public :
/** \brief The core gives the root of the object tree via this function */
virtual void setObjectRoot( BaseObject* _root ) = 0;
/// Return support for adding empty objects
virtual bool supportAddEmpty() = 0;
/// Add an empty object
virtual int addEmpty() = 0;
/// Return name for the types of data this plugin handles
virtual QString typeName() = 0;
/// Return supported Object type
virtual DataType supportedType() = 0;
/// Get the Qt Filters for Filedialogs when loading files
virtual QString getLoadFilters() = 0;
/// Get the Qt Filters for Filedialogs when saving files
virtual QString getSaveFilters() = 0;
/** You can provide a special widget showing options for saving your file types
* depending on the current filter
*
* _currentFilter: one filter from saveFilters
*
* Return 0 when you dont need one
*/
virtual QWidget* saveOptionsWidget(QString _currentFilter) = 0;
/** You can provide a special widget showing options for loading your file types
* depending on the current filter
*
* _currentFilter: one filter from loadFilters
*
* Return 0 when you dont need one
*/
virtual QWidget* loadOptionsWidget(QString _currentFilter) = 0;
public slots:
/// load an object from the given file
virtual int loadObject(QString _filename) = 0;
/// Save the object with given id,filename
virtual bool saveObject(int _id, QString _filename) = 0;
//Optionswidget
};
Q_DECLARE_INTERFACE(FileInterface,"OpenFlipper.FileInterface/0.3")
#endif // FILEINTERFACE_HH