/**
* bonobo-control.idl: Control interfaces
*
* Copyright (C) 1999, 2000 Helix Code, Inc.
*
* Authors:
* Nat Friedman <nat@nat.org>
* Miguel de Icaza <miguel@gnu.org>
*/
#ifndef BONOBO_CONTROL_IDL
#define BONOBO_CONTROL_IDL
#include "Bonobo_UI.idl"
#include "Bonobo_Gdk.idl"
#include "Bonobo_Property.idl"
module Bonobo {
interface ControlFrame : Bonobo::Unknown {
/**
* getToplevelId
*
* Returns: the WindowId of the true toplevel of the
* application the control is embedded inside.
*/
Gdk::WindowId getToplevelId ();
/**
* getAmbientProperties:
*
* Returns: A PropertyBag containing the ambient properties
* for this container.
*/
PropertyBag getAmbientProperties ();
/**
* getUIContainer:
*
* Returns: The interface to be used for menu/toolbar item merging.
*/
UIContainer getUIContainer ();
/* --- Notifications --- */
/**
* activated:
* @state: TRUE if the associated Control has been activated,
* FALSE if it just became inactive.
*/
oneway void notifyActivated (in boolean state);
/**
* queueResize:
*
* Tell the container that the Control would like to be
* resized. The container should follow-up by calling
* Control::setSize ()
*
*/
oneway void queueResize ();
/**
* activateURI:
* @uri: The uri we would like to get loaded.
* @relative: Whether the URI is relative to the current URI
*
* This is used by the containee when it needs
* to ask the container to perform some action
* with a given URI.
*
* The user has requested that the uri be loaded
*/
oneway void activateURI (in string uri, in boolean relative);
/**
* getParentAccessible:
*
* Returns: A CORBA Accessibility reference, related to the
* parent of the container widget associated with this control
* frame.
*/
Unknown getParentAccessible ();
/**
* unImplemented:
*
* placeholders for future expansion.
*/
void unImplemented ();
void unImplemented2 ();
};
interface Control : Bonobo::Unknown {
exception NoContents { };
/**
* getProperties:
*
* Returns: A PropertyBag containing this Control's properties.
*/
PropertyBag getProperties ();
/**
* getDesiredSize:
*
* Returns the requested size for the contained widget.
*/
Gtk::Requisition getDesiredSize ();
/**
* getAccessible:
*
* Returns: accessibility related resources
*/
Bonobo::Unknown getAccessible ();
/**
* getWindowId:
* @cookie: ',' delimited string, format:
* 'screen' = <int> [, [ <reserved for expansion> ] ]
*
* Returns: the windowId of the plug's window
*/
Gdk::WindowId getWindowId (in string cookie)
raises (NoContents);
/**
* getPopupContainer:
*
* Returns: A UIContainer for a parent to push popup items into
*/
UIContainer getPopupContainer ();
/**
* setFrame:
* @frame: A Bonobo_ControlFrame.
*
* Gives the Control a handle to its ControlFrame.
*
* Returns: The windowId of the plug
*/
oneway void setFrame (in ControlFrame frame);
/**
* setSize:
* @width: width given to the control
* @height: height given to the control
*
* Informs the Control of the size assigned by its container application
*/
oneway void setSize (in short width, in short height);
/**
* setState:
* @state: The new state of the control.
*
* Set the control's activity state.
*/
oneway void setState (in Gtk::State state);
/**
* activate:
*
* Activates or deactivates this Control.
*/
oneway void activate (in boolean activate);
/**
* focus:
*
* a Control proxy for GtkContainer::focus()
*
* Returns: whether focus was transfered.
*/
boolean focus (in Gtk::Direction direction);
/**
* unImplemented:
*
* placeholders for future expansion.
*/
void unImplemented ();
void unImplemented2 ();
void unImplemented3 ();
};
interface PropertyControl : Bonobo::Unknown {
readonly attribute long pageCount;
enum Action {
APPLY,
HELP
};
/**
* NoPage: Raised when the page number specified
* does not exist.
*/
exception NoPage {};
/**
* An interface for allowing a customization interface
* in addition / instead of a property bag; rather immature.
*/
/**
* getControl:
* @pagenumber: The number of the page to get.
*
* Gets the page number @pagenumber. Multiple pages can be used
* in a number of different ways. One way is for each page to be
* a new page in a GnomeDruid widget. Another way is for each page
* to be a page of a GtkNotebook in a GnomePropertyBox. The most
* common case, however, is for one single page.
*
* Returns: a Bonobo::Control for the page.
*/
Control getControl (in long pagenumber)
raises (NoPage);
/**
* notifyAction:
* @pagenumber: The page number that this action was performed on.
* @action: The action that should be performed on the settings.
*
* Tell the client what it should do with the settings in the
* PropertyControl.
*/
void notifyAction (in long pagenumber, in Action _action)
raises (NoPage);
void unImplemented ();
void unImplemented2 ();
};
};
#endif