/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Interface for the Evolution components. * * Authors: * Ettore Perazzoli * * Copyright (C) 2003 Ximian, Inc. */ #ifndef _GNOME_EVOLUTION_COMPONENT_IDL #define _GNOME_EVOLUTION_COMPONENT_IDL #include #ifndef __evolution_shell_COMPILATION #ifdef __ORBIT_IDL__ %{ #pragma include_defs shell/evolution-component.h %} #pragma inhibit push #endif #endif module GNOME { module Evolution { enum CreatableItem { CREATABLE_OBJECT, CREATABLE_FOLDER }; enum ShellState { USER_OFFLINE, FORCED_OFFLINE, USER_ONLINE }; /* A type of item that the component can create when asked by the user, e.g. a mail message or an appointment. */ struct CreatableItemType { string id; string description; string menuDescription; string tooltip; char menuShortcut; string iconName; CreatableItem type; }; typedef sequence CreatableItemTypeList; interface ComponentView : Bonobo::Unknown { void getControls (out Bonobo::Control sidebar_control, out Bonobo::Control view_control, out Bonobo::Control statusbar_control); }; interface Listener : Bonobo::Unknown { /* Indicate the change of state is complete */ void complete(); }; interface Component : Bonobo::Unknown { exception Failed {}; exception UnknownType {}; /* We don't know about the old version we're upgrading from */ exception UnsupportedVersion {}; /* We encountered a non-recoverable, fatal error, explain why */ exception UpgradeFailed { string what; string why; }; /*** Upgrade path. ***/ void upgradeFromVersion (in short major, in short minor, in short revision) raises (UnsupportedVersion, UpgradeFailed); /*** Basic functionality. ***/ ComponentView createView(in ShellView parent) raises (Failed); /* Check if the component can quit. Do not perform any quit-related tasks however. May be called multiple times, depending on user interaction. */ boolean requestQuit (); /* Ask the component to quit. Returns TRUE when the component has completed any closing-down tasks, and is ready to exit(). This will be called repeatedly at intervals until it returns TRUE. */ boolean quit (); /* Notify the component of whether the shell is currently running in interactive mode or not. (I.e. basically, whether there are any Evolution windows on the screen.) @new_view_xid is an X Window ID ("None" if @now_interactive is FALSE) */ void interactive (in boolean now_interactive, in unsigned long new_view_xid); /*** The following stuff is needed to build the "New" toolbar item as well as the "File -> New" submenu. ***/ /* List of creatable items. */ readonly attribute CreatableItemTypeList userCreatableItems; /* Pop up a new editing dialog for the item with the specified @item_type_name. */ void requestCreateItem (in string item_type_name) raises (UnknownType, Failed); /*** URI handling (e.g. for the command-line, "evolution mailto:foo@bar.org") ***/ void handleURI (in string uri); /*** Send/receive. ***/ void sendAndReceive (); /* Set the online status of the component asynchronously */ void setLineStatus(in ShellState shell_state, in Listener listener); }; }; }; #ifndef __evolution_shell_COMPILATION #ifdef __ORBIT_IDL__ #pragma inhibit pop #endif #endif #endif /* _GNOME_EVOLUTION_COMPONENT_IDL */