/*
* bonobo-persist.idl: Bonobo::Persist interfaces
*
* Copyright (C) 1999, 2000 Helix Code, Inc.
*
* Authors:
* Miguel de Icaza (miguel@gnu.org)
* Dan Winship (danw@helixcode.com)
*/
#ifndef BONOBO_PERSIST_IDL
#define BONOBO_PERSIST_IDL
#include "Bonobo_Unknown.idl"
#include "Bonobo_Storage.idl"
#include "Bonobo_Exception.idl"
module Bonobo {
interface Persist : Unknown {
enum Status {
SAVE_OK,
SAVE_CANCEL,
SAVE_FAILED
};
exception WrongDataType {};
exception FileNotFound {};
typedef string ContentType;
typedef sequence<ContentType> ContentTypeList;
/**
* getContentTypes:
*
* Gets a list of supported mime types that this
* persistor can save its data in. The default /
* preferred type being the first element.
*/
ContentTypeList getContentTypes ();
typedef string IID;
/**
* getIId:
*
* Get the IID necessary to recreate the object whose
* internal state this interface represents
*/
IID getIId ();
/**
* isDirty:
*
* Indicates if a save is necessary.
*/
boolean isDirty ();
void unImplemented1 ();
void unImplemented2 ();
};
/*
* The PersistFile interface is somewhat mis-named it
* should be PersistURI.
*
* This allows applications to load and save documents
* via the Gnome VFS.
*/
interface PersistFile : Persist {
exception NoCurrentName {
string extension;
};
/**
* load:
* @uri: URI to load from
*
* Loads the document object from the file
* pointed in by @path
*/
void load (in string uri)
raises (IOError, NotSupported,
WrongDataType, FileNotFound);
/**
* save:
* @uri: the URI to save to
* saves the document object to the file
* pointed in by @path
*/
void save (in string uri)
raises (IOError, NotSupported);
/**
* getCurrentFile:
*
* Returns the URI of the current file.
*/
string getCurrentFile ()
raises (NoCurrentName);
void unImplemented3 ();
void unImplemented4 ();
};
/*
* PersistStorage is implemented by BonoboObjects.
*
* The methods are used by Bonobo and the container
* applications to manipulate the storage of a componet
*/
interface PersistStorage : Persist {
/**
* load:
* @storage: The storage to load the state from
*
* The bonobo_object should load its state from the
* @storage provided
*/
void load (in Bonobo::Storage storage)
raises (IOError, NotSupported,
WrongDataType);
/**
* save:
* @storage: The storage in which to save the state
* of the bonobo_object
* @same_as_loaded: if TRUE, this means the object
* is being saved to the same source used to load the object
*
* BonoboObjects should save their sate in the @storage
*/
void save (in Bonobo::Storage storage,
in boolean same_as_loaded)
raises (IOError, NotSupported);
};
/*
* This interface is used by items which only need to store
* information in a Stream ( monikers are the primary
* users of this ).
*
* Unlike PersistStorage, the Stream passed is only valid
* during these calls (ie, you should not incref these
* and used them after this).
*/
interface PersistStream : Persist {
/**
* load:
* @stream: Where to load the state from
* @type: the MIME content type of the data, or ""
* if it is unknown.
*
* Loads the status of the object from @stream
*/
void load (in Bonobo::Stream stream, in ContentType type)
raises (IOError, NotSupported,
WrongDataType);
/**
* save:
* @stream: Where to save the state to.
* @type: the MIME content type to save the data in,
* or "" if any type is acceptable.
*
* If no exception was thrown the data in the stream has
* the requested content type; if no type was requested
* the first entry from getContentTypes is returned.
* Hence no return value is needed.
*
* Saves the state of the object to the @stream
*/
void save (in Bonobo::Stream stream, in ContentType type)
raises (IOError, NotSupported,
WrongDataType);
void unImplemented3 ();
void unImplemented4 ();
};
};
#endif /* BONOBO_PERSIST_IDL */