/*
* bonobo-property.idl: The Bonobo Property interfaces.
*
* Authors:
* Nat Friedman (nat@nat.org)
* Michael Meeks (michael@ximian.com)
* Dietmar Maurer (dietmar@ximian.com)
* Mike Kestner (mkestner@ameritech.net)
*
* Copyright 1999, 2000, 2001 Ximian, Inc.
* Copyright 2000, Mike Kestner
*/
/*
* Each PropertyBag is aggregated with an EventSource, so that it is
* possible to attach event listeners. The event name is composed
* of "Bonobo/Property", the type of the event and finally the property
* name - everything separated by colons. At the moment there is only one
* type defined - "change". So if a property with name "autosave" changes
* its value, we emit an event with the name:
* "Bonobo/Property:change:autosave"
*/
#ifndef BONOBO_PROPERTY_IDL
#define BONOBO_PROPERTY_IDL
#include "Bonobo_Unknown.idl"
#include "Bonobo_Listener.idl"
module Bonobo {
struct Pair {
string name;
any value;
};
typedef sequence<Pair> PropertySet;
typedef sequence<string> KeyList;
typedef long PropertyFlags;
const PropertyFlags PROPERTY_READABLE = 1;
const PropertyFlags PROPERTY_WRITEABLE = 2;
const PropertyFlags PROPERTY_NO_LISTENING = 4;
const PropertyFlags PROPERTY_NO_AUTONOTIFY = 8;
const PropertyFlags PROPERTY_NO_PERSIST = 16;
interface PropertyBag : Bonobo::Unknown {
exception NotFound {};
exception InvalidType {};
exception _ReadOnly {};
exception BackendFailed {};
/**
* getKeys:
*
* Returns: A list of keys matching @filter.
*/
KeyList getKeys (in string filter)
raises (NotFound, BackendFailed);
/**
* getType:
*
* Returns: The type of property @key.
*/
#ifdef __ORBIT_IDL__
TypeCode getType (in string key)
#else
CORBA::TypeCode getType (in string key)
#endif
raises (NotFound, BackendFailed);
/**
* getValue:
*
* Returns: The current value for property @key.
*/
any getValue (in string key)
raises (NotFound, BackendFailed);
/**
* setValue:
*
* Sets the value for property @key to @value
*/
void setValue (in string key, in any value)
raises (NotFound, InvalidType, ReadOnly, BackendFailed);
/**
* getValue:
*
* Returns: A list of properties matching @filter.
*/
PropertySet getValues (in string filter)
raises (NotFound, BackendFailed);
/**
* setValue:
*
* Sets the values contained in @set.
*/
void setValues (in PropertySet set)
raises (InvalidType, ReadOnly, BackendFailed);
/**
* getDefault:
*
* Returns: The default value for property @key.
*
* Property editors can use it to implement a "set property value to
* default" mechanism.
*
*/
any getDefault (in string key)
raises (NotFound, BackendFailed);
/**
* getDocTitle:
*
* Returns: A short string describing property @key.
*/
string getDocTitle (in string key)
raises (NotFound, BackendFailed);
/**
* getDoc:
*
* Returns: A verbose documentation describing property @key.
*/
string getDoc (in string key)
raises (NotFound, BackendFailed);
/**
* getFlags:
*
* Returns:
*/
PropertyFlags getFlags (in string key)
raises (NotFound, BackendFailed);
void unImplemented1 ();
void unImplemented2 ();
void unImplemented3 ();
void unImplemented4 ();
};
interface ConfigDatabase : PropertyBag {
enum DBFlags {
_DEFAULT,
WRITE,
MANDATORY
};
/**
* isWriteable:
*
* indicates whether the database is writeable or not
*/
readonly attribute boolean isWriteable;
/**
* getDirs:
*
* Returns: A list of directory names.
*/
KeyList getDirs (in string dir)
raises (NotFound, BackendFailed);
/**
* hasDir:
*
* Returns: TRUE if @dir exists.
*/
boolean hasDir (in string dir)
raises (BackendFailed);
/**
* removeValue:
*
* Remove a value from the database.
*/
void removeValue (in string key)
raises (BackendFailed);
/**
* removeDir:
*
* Removes all values contained in directory.
*/
void removeDir (in string dir)
raises (BackendFailed);
/**
* addDatabase:
*
* The added database will be used to lookup default values.
*/
void addDatabase (in ConfigDatabase db, in string key,
in DBFlags flags)
raises (BackendFailed);
/**
* sync:
*
* Flush all buffers
*/
void sync ()
raises (BackendFailed);
void unImplemented5 ();
void unImplemented6 ();
void unImplemented7 ();
void unImplemented8 ();
};
};
#endif /* BONOBO_PROPERTY_IDL */