diff options
Diffstat (limited to 'offapi/com/sun/star/drawing/framework')
31 files changed, 2262 insertions, 0 deletions
diff --git a/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl b/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl new file mode 100644 index 000000000..38fcb79ed --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl @@ -0,0 +1,44 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_AnchorBindingMode_idl__ +#define __com_sun_star_drawing_framework_AnchorBindingMode_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/util/XCloneable.idl> + +module com { module sun { module star { module drawing { module framework { + +/** This enum specifies how a resource is bound to an anchor. This can be + direct or indirect. + <p>Example: Let r:a1:a2 denote a resource r which is bound to + anchor a1:a2 which itself is a resource a1 bound to anchor a2. + Then r:a1:a2 is bound directly to a1:a2 and indirectly to a2.</p> +*/ +enum AnchorBindingMode +{ + DIRECT, + INDIRECT +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl b/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl new file mode 100644 index 000000000..96346e96c --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_BasicPaneFactory_idl__ +#define __com_sun_star_drawing_framework_BasicPaneFactory_idl__ + +#include <com/sun/star/frame/XController.idl> +#include <com/sun/star/drawing/framework/XResourceFactory.idl> + +module com { module sun { module star { module drawing { module framework { + +/** The BasicPaneFactory is a resource factory that provides the + panes used by the Draw and Impress applications. + <p>This factory provides the center, left, and right pane. For the left + pane there are two URLS, <code>private:resource/floater/LeftImpressPane</code> + and <code>private:resource/floater/LeftDrawPane</code>, one for Impress, + the other for Draw. The center pane and the right pane have the URLs + <code>private:resource/floater/CenterPane</code> and + <code>private:resource/floater/RightPane</code> respectively.</p> + <p>This factory is typically created indirectly by registering it in the + configuration and have the XModuleController create it on + demand.</p> +*/ +service BasicPaneFactory : XResourceFactory +{ + /** Give the controller to new instances so that they have access to the + drawing framework controllers. + */ + create ([in] ::com::sun::star::frame::XController xController); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl b/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl new file mode 100644 index 000000000..55e1d5004 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_BasicToolBarFactory_idl__ +#define __com_sun_star_drawing_framework_BasicToolBarFactory_idl__ + +#include <com/sun/star/frame/XController.idl> +#include <com/sun/star/drawing/framework/XResourceFactory.idl> + +module com { module sun { module star { module drawing { module framework { + +/** The BasicToolBarFactory is a resource factory that provides + (some of) the tool bars used by the Draw and Impress applications. + + <p>The factory recognizes the following URLs:<ul> + <li><code>private:resource/toolbar/ViewTabBar</code> for the tab bar + that allows the switching between views.</li> + </ul> + This short list marks the implementation of this service clearly as + being in transition. + </p> + + <p>This factory is typically created indirectly by registering it in the + configuration and have the XModuleController create it on + demand.</p> +*/ +service BasicToolBarFactory : XResourceFactory +{ + /** Give the controller to new instances so that they have access to the + drawing framework controllers. + */ + create ([in] ::com::sun::star::frame::XController xController); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl b/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl new file mode 100644 index 000000000..84f59a810 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_BasicViewFactory_idl__ +#define __com_sun_star_drawing_framework_BasicViewFactory_idl__ + +#include <com/sun/star/frame/XController.idl> +#include <com/sun/star/drawing/framework/XResourceFactory.idl> + +module com { module sun { module star { module drawing { module framework { + +/** The BasicViewFactory is a view factory that provides the + panes used by the Draw and Impress applications. + + <p>The factory recognizes the following URLs:<ul> + <li><code>private:resource/view/ImpressView</code> for the regular edit + view of the Impress application.</li> + <li><code>private:resource/view/GraphicView</code> for the regular edit + view of the Draw application.</li> + <li><code>private:resource/view/OutlineView</code> for the outline view.</li> + <li><code>private:resource/view/NotesView</code> for the notes view.</li> + <li><code>private:resource/view/HandoutView</code> for the handout view.</li> + <li><code>private:resource/view/SlideSorter</code> for the slide sorter + regardless of which pane it is used in.</li> + <li><code>private:resource/view/PresentationView</code> for the slide show.</li> + <li><code>private:resource/view/TaskPane</code> for the task pane.</li> + </ul></p> +*/ +service BasicViewFactory : XResourceFactory +{ + /** Give the controller to new instances so that they have access to the + drawing framework controllers. + */ + create ([in] ::com::sun::star::frame::XController xController); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/BorderType.idl b/offapi/com/sun/star/drawing/framework/BorderType.idl new file mode 100644 index 000000000..521c0cddd --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/BorderType.idl @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_BorderType_idl__ +#define __com_sun_star_drawing_framework_BorderType_idl__ + + +module com { module sun { module star { module drawing { module framework { + +/** See XPaneBorderPainter and its addBorder() and removeBorder() methods + for an explanation of the border type and its values. +*/ +enum BorderType +{ + INNER_BORDER, + OUTER_BORDER, + TOTAL_BORDER +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/Configuration.idl b/offapi/com/sun/star/drawing/framework/Configuration.idl new file mode 100644 index 000000000..572bce00a --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/Configuration.idl @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_Configuration_idl__ +#define __com_sun_star_drawing_framework_Configuration_idl__ + +#include <com/sun/star/drawing/framework/XConfiguration.idl> + +module com { module sun { module star { module drawing { module framework { + +/** This service provides the means for constructing new configurations. + + <p>Most likely use is the XConfigurationController::restoreConfiguration() + method.</p> + + @see XConfiguration + for a description of the configuration. +*/ +service Configuration + : XConfiguration +{ + /** Create an empty configuration. + <p>This should not be necessary very often. Changes to an + existing configuration are more likely.</p> + */ + create(); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl b/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl new file mode 100644 index 000000000..db5008de1 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl @@ -0,0 +1,78 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_ConfigurationChangeEvent_idl__ +#define __com_sun_star_drawing_framework_ConfigurationChangeEvent_idl__ + +#include <com/sun/star/lang/EventObject.idl> + +module com { module sun { module star { module uno { interface XInterface; }; }; }; }; + +module com { module sun { module star { module drawing { module framework { + +interface XConfiguration; +interface XResourceId; + +/** Objects of this class are used for notifying changes of the + configuration. + + <p>They are broadcasted by the configuration controller + which maintains the configuration. The set of types of configuration + changes is not fixed and is not maintained or documented in one + place.</p> + + <p>The set of used members and the exact meaning of their values is not the + same for all types. Therefore, the descriptions of the members are just + general guidelines. See XConfigurationController for a + list of event types used by the basic drawing framework.</p> +*/ +struct ConfigurationChangeEvent + : ::com::sun::star::lang::EventObject +{ + /** The type of configuration change is a free-form string. This is the + only member that is always set. The values of the other members + depend on the configuration change type and may or may not be set. + */ + string Type; + + /** The current configuration, depending on the event type, either + before or after the change. May be an empty reference. + */ + XConfiguration Configuration; + + /** The resource id that is part of the configuration change. + */ + XResourceId ResourceId; + + /** The resource object that corresponds to the ResourceId. May + be an empty reference. + */ + com::sun::star::uno::XInterface ResourceObject; + + /** Each listener is called with exactly the #UserData + that was given when the listener was registered. + */ + any UserData; +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/ConfigurationController.idl b/offapi/com/sun/star/drawing/framework/ConfigurationController.idl new file mode 100644 index 000000000..5d676ada0 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/ConfigurationController.idl @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_ConfigurationController_idl__ +#define __com_sun_star_drawing_framework_ConfigurationController_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/XConfigurationController.idl> +#include <com/sun/star/frame/XController.idl> + +module com { module sun { module star { module drawing { module framework { + +/** See XConfigurationController for a description of the + configuration controller. + + <p>This service is used at the moment by the + XControllerManager to create a configuration controller. + This allows developers to replace the default implementation of the + configuration controller with their own. This may not be a useful + feature. Furthermore the sub controllers may need a tighter coupling + than the interfaces allow. These are reasons for removing this service + in the future and let the controller manager create the sub controllers + directly.</p> +*/ +service ConfigurationController + : XConfigurationController +{ + create ([in] ::com::sun::star::frame::XController xController); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/ModuleController.idl b/offapi/com/sun/star/drawing/framework/ModuleController.idl new file mode 100644 index 000000000..8236a4ab1 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/ModuleController.idl @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_ModuleController_idl__ +#define __com_sun_star_drawing_framework_ModuleController_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/XModuleController.idl> + +module com { module sun { module star { module drawing { module framework { + +/** See XModuleController for a description of the module + controller. + + <p>See ConfigurationController for a comment why this + service may be removed in the future.</p> + + <p>The ModuleController object for an application can be + obtained via the XControllerManager interface. +*/ +service ModuleController : XModuleController +{ + /** Create a new instance of a ModuleController as sub + controller of the given XController object. + */ + create ([in] ::com::sun::star::frame::XController xController); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl b/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl new file mode 100644 index 000000000..2239ba7f3 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_ResourceActivationMode_idl__ +#define __com_sun_star_drawing_framework_ResourceActivationMode_idl__ + +module com { module sun { module star { module drawing { module framework { + +/** The ResourceActivationMode specifies, for example for the + com::sun::star::drawing::framework::XConfigurationController::requestResourceActivation(), + whether a requested resource is to replace an existing resource of the + same class or is to be activated additionally. +*/ +enum ResourceActivationMode +{ + /** A resource is requested in addition to already existing ones. This + is used for example for panes. + */ + ADD, + + /** A resource is requested to replace an already existing one of the + same class. This is used for example for views. + */ + REPLACE +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/ResourceId.idl b/offapi/com/sun/star/drawing/framework/ResourceId.idl new file mode 100644 index 000000000..8a70d4515 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/ResourceId.idl @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_ResourceId_idl__ +#define __com_sun_star_drawing_framework_ResourceId_idl__ + +#include <com/sun/star/drawing/framework/XResourceId.idl> + +module com { module sun { module star { module drawing { module framework { + +/** The ResourceId service provides several constructors for + resource ids. + <p>They mainly differ in how the anchor is specified.</p> +*/ +service ResourceId + : XResourceId +{ + /** Create an empty resource id. It does not specify a specific + resource but describes the absence of one. + */ + createEmpty (); + + /** Create a resource id that has no anchor. + <p>This constructor can be used to create resource ids for panes.</p> + */ + create ([in] string sResourceURL); + + /** Create a resource id for an anchor that is given as + XResourceId object. This is the most general of the + constructor variants. + */ + createWithAnchor ([in] string sResourceURL, [in] XResourceId xAnchor); + + /** Create a resource id for a resource that is bound to an anchor that + can be specified by a single URL. + <p>This constructor can be used to create resources ids for views + where the anchor is a pane.</p> + */ + createWithAnchorURL ([in] string sResourceURL, [in] string sAnchorURL); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/TabBarButton.idl b/offapi/com/sun/star/drawing/framework/TabBarButton.idl new file mode 100644 index 000000000..c9565ca1f --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/TabBarButton.idl @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_TabBarButton_idl__ +#define __com_sun_star_drawing_framework_TabBarButton_idl__ + +module com { module sun { module star { module drawing { module framework { + +interface XResourceId; + +/** Descriptor of a tab bar button. Tab bar buttons are typically used to + offer the user the choice between different views to be displayed in + one pane. + <p>For identification only the #ResourceId is used, so for + some methods of the XTabBar interface only the + #ResourceId member is evaluated.</p> +*/ +struct TabBarButton +{ + /** This label is displayed on the UI as button text. + <p>The label is expected to be localized.</p> + */ + string ButtonLabel; + + /** The localized help text that may be displayed in a tool tip. + */ + string HelpText; + + /** XResourceId object of the resource that is requested to be + displayed when the tab bar button is activated. + <p>For some methods of the XTabBar interface only this + member is evaluated. That is because only this member is used to + identify a tab bar button.</p> + */ + XResourceId ResourceId; +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfiguration.idl b/offapi/com/sun/star/drawing/framework/XConfiguration.idl new file mode 100644 index 000000000..a432359c1 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfiguration.idl @@ -0,0 +1,126 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfiguration_idl__ +#define __com_sun_star_drawing_framework_XConfiguration_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/util/XCloneable.idl> +#include <com/sun/star/drawing/framework/AnchorBindingMode.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XResourceId; + +/** A configuration describes the resources of an application like panes, + views, and tool bars and their relationships that are currently active + or are requested to be activated. Resources are specified by ResourceId + structures rather than references so that not only the current + configuration but also a requested configuration can be represented. + + <p>Direct manipulation of a configuration object is not advised with the + exception of the ConfigurationController and objects that + implement the XConfigurationChangeRequest interface.</p> + + @see XConfigurationController +*/ +interface XConfiguration + : ::com::sun::star::util::XCloneable +{ + /** Returns the list of resources that are bound directly and/or + indirectly to the given anchor. A URL filter can reduce the set of + returned resource ids. + @param xAnchorId + This anchor typically is either a pane or an empty + XResourceId object. An + empty reference is treated like an XResourceId object. + @param sTargetURLPrefix + When a non-empty string is given then resource ids are returned + only when their resource URL matches this prefix, i.e. when it + begins with this prefix or is equal to it. Characters with + special meaning to URLs are not interpreted. In the typical + usage the prefix specifies the type of a resource. A typical + value is "private:resource/floater/", which is the prefix for + pane URLs. In a recursive search, only resource ids at the top + level are matched against this prefix. + <p>Use an empty string to prevent filtering out resource ids.</p> + @param eSearchMode + This flag defines whether to return only resources that are + directly bound to the given anchor or a recursive search is to + be made. Note that for the recursive search and an empty anchor + all resource ids are returned that belong to the configuration. + @return + The set of returned resource ids may be empty when there are no + resource ids that match all conditions. The resources in the + sequence are ordered with respect to the + XResourceId::compareTo() method. + */ + sequence<XResourceId> getResources ( + [in] XResourceId xAnchorId, + [in] string sTargetURLPrefix, + [in] AnchorBindingMode eSearchMode); + + /** <p>Returns whether the specified resource is part of the + configuration.</p> + This is independent of whether the resource does really exist and is + active, i.e. has a visible representation in the GUI. + @param xResourceId + The id of a resource. May be empty (empty reference or empty + XResourceId object) in which case `FALSE` is + returned. + @return + Returns `TRUE` when the resource is part of the configuration + and `FALSE` when it is not. + */ + boolean hasResource ([in] XResourceId xResourceId); + + /** Add a resource to the configuration. + <p>This method should be used only by objects that implement the + XConfigurationRequest interface or by the configuration + controller.</p> + @param xResourceId + The resource to add to the configuration. When the specified + resource is already part of the configuration then this call is + silently ignored. + @throws IllegalArgumentException + When an empty resource id is given then an + IllegalArgumentException is thrown. + */ + void addResource ([in] XResourceId xResourceId); + + /** Remove a resource from the configuration. + <p>This method should be used only by objects that implement the + XConfigurationRequest interface or by the configuration + controller.</p> + @param xResourceId + The resource to remove from the configuration. When the + specified resource is not part of the configuration then this + call is silently ignored. + @throws IllegalArgumentException + When an empty resource id is given then an + IllegalArgumentException is thrown. + */ + void removeResource ([in] XResourceId xResourceId); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl b/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl new file mode 100644 index 000000000..9fb5ec4ed --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfigurationChangeListener_idl__ +#define __com_sun_star_drawing_framework_XConfigurationChangeListener_idl__ + +#include <com/sun/star/lang/XEventListener.idl> +#include <com/sun/star/drawing/framework/ConfigurationChangeEvent.idl> + +module com { module sun { module star { module drawing { module framework { + +/** A listener for configuration changes is called when it has been + registered at the configuration controller and a configuration change + occurs. +*/ +interface XConfigurationChangeListener + : ::com::sun::star::lang::XEventListener +{ + /** The exact time of when a listener is called (before the change takes + place, during the change, or when the change has been made) depends + on the change event. The order in which listeners are called is the + order in which they are registered (First registered, first called.) + */ + void notifyConfigurationChange ([in] ConfigurationChangeEvent aEvent); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl b/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl new file mode 100644 index 000000000..3f9ec9b42 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl @@ -0,0 +1,58 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfigurationChangeRequest_idl__ +#define __com_sun_star_drawing_framework_XConfigurationChangeRequest_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/ConfigurationChangeEvent.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XConfiguration; + +/** A single explicit request for a configuration change. + + <p>The requested change is committed to a configuration only when the + execute() method is called. Configuration change + requests are executed asynchronously. This is done to avoid reentrance + problems with objects that are registered as + XConfigurationChangeListener and at the same time make + configuration change requests. When the requests were executed + synchronously then the listeners would be notified of the changes while + their request call has not yet returned.</p> + + <p>This interface is typically used internally by the + XConfigurationController</p> @see XConfigurationController +*/ +interface XConfigurationChangeRequest +{ + /** Commit the configuration change request represented by the called + object to the given configuration. + @param xConfiguration + This is the configuration to commit the requested change to. + */ + void execute ([in] XConfiguration xConfiguration); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationController.idl b/offapi/com/sun/star/drawing/framework/XConfigurationController.idl new file mode 100644 index 000000000..eaac2123b --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfigurationController.idl @@ -0,0 +1,255 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfigurationController_idl__ +#define __com_sun_star_drawing_framework_XConfigurationController_idl__ + +#include <com/sun/star/drawing/framework/ConfigurationChangeEvent.idl> +#include <com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl> +#include <com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl> +#include <com/sun/star/drawing/framework/XResourceFactoryManager.idl> +#include <com/sun/star/drawing/framework/ResourceActivationMode.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XConfigurationChangeListener; +interface XConfigurationChangeRequest; +interface XResourceId; +interface XResource; + +/** The configuration controller is responsible for the management of the + set of active resources. + + <p>There are two configurations of resources:<ul> + <li>The current configuration contains the set of currently active + resources.</li> + <li>The requested configuration describes what the current configuration + should be. The requested configuration is changed usually by calling + requestResourceActivation() and + requestResourceDeactivation().</li> + </ul></p> + + <p>When the two configurations differ then the current configuration is + updated eventually to reflect the requested configuration. An update + takes place when the following three conditions are fulfilled. + <ol> + <li>when the last pending request for configuration changes has been + processed,</li> + <li>when the update() method is called.</li> + <li>when the configuration manager it is unlocked after formerly being + locked.</li> + </ol></p> + + <p>Requests for configuration changes are handled in a two step process: + <ol> + <li>First the requested configuration is updated iteratively: Every + request that is being made by calling + requestResourceActivation() or + requestResourceDeactivation() results in one or more + function objects, that each implement the + XConfigurationChangeRequest interface. These are inserted + into a queue. The request objects in the queue are processed + asynchronously one at a time in the order in which they are inserted. + Only when one request object is processed a change to the requested + configuration is made. These changes are broadcasted to registered + XConfigurationChangeListener objects. Listeners may + decide to make requests that then are added to the queue. For example + when the view in the center pane is replaced by another view, some + listeners may want to turn some side panes on or off, or show other + views in the side panes.</p> + <p>This process goes on until the queue of request objects becomes + empty. Until this point only the requested configuration has been + modified. No resources have been activated or deactivated.</p></li> + + <li><p>The second update step activates or deactivates resources so that + the current configuration (the one that comprises the actually active + resources) reflects the requested configuration.</p> + <p>The order in which resources are activated or deactivated depends on + the dependency between the resources. For example a view depends on the + pane it is displayed in. Resources that other resources depend on are + activated first and deactivated last. The order is undefined for + unrelated resources.</p> + <p>Note that the second update step may not be able to activate (or even to + deactivate) all the requested resources. Either because they are + temporarily or permanently unavailable. For example, during the + start-up of a new Impress application the side panes are displayed + with a visible delay because they are not provided sooner by the + underlying framework. Such unavailable resources are not forgotten but + remain in the requested configuration. Every time the configuration + controller updates its current configuration these resources are + requested once more.</li></ol></p> + + <p>The configuration controller sends the following events: + <ul> + <li>ResourceActivationRequested is sent when the + activation of a resource has been requested and the resource is not yet + active in the requested configuration. The event is sent when the + configuration change request is executed, not when the + requestResourceActivation() call is made.</p> + <p>The ConfigurationChangeEvent::ResourceId member is set to the requested + resource. The ResourceObject member is not + set.</p></li> + <li>ResourceDeactivationRequested is sent when the + deactivation of a resource has been requested and the resource is active + in the requested configuration. The event is sent when the + configuration change request is executed that is created when for + example requestResourceDeactivation() is called.</p> + <p>The ResourceId member is set to the requested + resource. The ResourceObject member is not + set.</p></li> + <li>ConfigurationUpdateStart is sent before the update of + the current configuration starts.</p> + <p>The requested configuration is available in the + ConfigurationChangeEvent::Configuration member. The + ResourceId and ResourceObject members + are not set.</p></li> + <li>ConfigurationUpdateEnd is sent after the update of + the current configuration ends.</p> + <p>The requested configuration is + available in the ConfigurationChangeEvent::Configuration member. + The ResourceId and ResourceObject members are not set.</p></li> + <li>ResourceActivation is sent when a resource is + activated, i.e. when a new object of a resource is created (or taken + from a cache).</p> + <p>The ResourceId and ResourceObject + members are set to the XResourceId and object reference of + the activated resource.</p></li> + <li>ResourceDeactivation is sent when a resource is + deactivated, i.e. when an object that previously was part of the + configuration is removed from the configuration.</p> + <p>The ResourceId and ResourceObject + members are set to XResourceId and object reference of the + deactivated resource.</p></li> + </ul></p> +*/ +interface XConfigurationController +{ + interface XConfigurationControllerRequestQueue; + interface XConfigurationControllerBroadcaster; + interface XResourceFactoryManager; + + /** Request the activation of a resource. + <p>The request is processed asynchronously. Notifications about + configuration changes are sent after this call returns.</p> + @param xResourceId + The resource whose activation is requested. + @param eMode + <p>When eMode is REPLACE then, before adding the + resource activation to the request queue, similar resources + linked to the same anchor are removed. This makes it easier to + switch between resources whose activation is mutually exclusive. + For example, there can only be one view per pane, so before + activating a new view the old one has to be deactivated.</p> + <p>When eMode is ADD then the resource is requested + without further changes.</p> + */ + void requestResourceActivation ( + [in] XResourceId xResourceId, + [in] ResourceActivationMode eMode); + + /** Request the deactivation of a resource. + <p>The request is processed asynchronously. Notifications about + configuration changes are sent after this call returns.</p> + <p>Requesting the deactivation + of a resource that is not active is not an error.</p> + @param xResourceId + The resource whose deactivation is requested. + */ + void requestResourceDeactivation ( + [in] XResourceId xResourceId); + + + /** Return the active resource specified by the given resource id. + @param xResourceId + A valid resource id. This should, but does not have to be, the + resource id of an active resource. + @return + When the given resource id specifies an active resource then + that resource is returned. Otherwise an empty reference is + returned. + */ + XResource getResource ( + [in] XResourceId xResourceId); + + /** Lock the processing of configuration change requests. + <p>This is only necessary when more than one change request is being + made in a row. It prevents an update being made (with all the visible UI + changes) before all change requests are being made.</p> + <p>Recursive lock() calls are recognized: the + configuration controller is locked while lock() was + called more often than unlock().</p> + */ + void lock (); + + /** Unlock the processing of configuration change requests. + <p>When unlock() is called as many times as + lock() and the queue of configuration change + requests is not empty the configuration controller continues the + processing of the change requests. An update of the current + configuration will eventually being made.</p> + */ + void unlock (); + + /** Explicitly request an update of the current configuration. + <p>Call it when a resource is activated or deactivated + without the control and knowledge of the drawing framework. Calling + this method (from outside the drawing framework) should hardly every + be necessary.</p> + */ + void update (); + + /** Return a copy of the requested configuration. + <p>Modifications to the returned configuration have no effect on the + drawing framework.</p> + */ + XConfiguration getRequestedConfiguration (); + + /** Return a copy of the current configuration. + <p>Modifications to the returned configuration have no effect on the + drawing framework.</p> + */ + XConfiguration getCurrentConfiguration (); + + /** Replace the requested configuration with the given configuration and + schedule an update of the current configuration. + <p>Together with the getCurrentConfiguration() and + getRequestedConfiguration() methods this + allows the saving and restoring of configurations. However, the + given configuration can have other origins then these methods.</p> + <p>The given configuration is transformed into a list of change + requests so that the resulting requested configuration equals the + given configuration. This has the advantage that not only the + resource activations and deactivations but all configuration + changes are properly broadcasted.</p> + <p>Note that because of the configuration change notifications + listeners can make more configuration change requests, so that the + resulting requested configuration can be different from the given + configuration.</p> + @param xConfiguration + This typically is a configuration that was obtained with an + earlier getRequestedConfiguration() call. + */ + void restoreConfiguration ([in] XConfiguration xConfiguration); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl b/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl new file mode 100644 index 000000000..2af2cba09 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfigurationControllerBroadcaster_idl__ +#define __com_sun_star_drawing_framework_XConfigurationControllerBroadcaster_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/ConfigurationChangeEvent.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XConfigurationChangeListener; + +/** Manage the set of registered event listeners and the event notification for a configuration + controller. + <p>The listeners are called in the order in which they are registered.</p> +*/ +interface XConfigurationControllerBroadcaster +{ + /** Add a new listener for configuration changes. + <p>The listener is notified only for the specified type of + configuration changes. When the listener is interested in more than + one event type this method has to be called multiple times. + Alternatively it can register as universal listener that will be + called for all event types. However, this option is provided + primarily to support debugging and monitoring.</p> + @param xListener + The new listener. + @param sEventType + The event type that the listener is interested in. The set of + event types is not fixed and there can be no exhaustive + list. The empty string is a special value in that the listener + will be called for all types of event. + @param aUserData + Arbitrary data that is passed to the listener when it is called + for the specified event type. When one listener is registered + for more than one event type then different user data objects + may be given as well. Supplying unique integer values allows + the listener to use a switch statement to distinguish between + the different event types. + */ + void addConfigurationChangeListener ( + [in] XConfigurationChangeListener xListener, + [in] string sEventType, + [in] any aUserData); + + /** Remove a listener for configuration changes. + @param xListener + The listener that is to be removed. + */ + void removeConfigurationChangeListener ( + [in] XConfigurationChangeListener xListener); + + /** With this method other objects can send events to all the registered + listeners. + */ + void notifyEvent ( + [in] ConfigurationChangeEvent aEvent); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl b/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl new file mode 100644 index 000000000..2c3125c1c --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl @@ -0,0 +1,67 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XConfigurationControllerRequestQueue_idl__ +#define __com_sun_star_drawing_framework_XConfigurationControllerRequestQueue_idl__ + +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XConfigurationChangeRequest; + +/** The request queue of the configuration controller handles requests for + changes to the current configuration. + + <p>This interface allows callers to add requests to the back of the + queue and to determine whether the queue is empty. Using this interface + should normally not be necessary for anyone else than the + XConfigurationController. It may be removed in the future.</p> +*/ +interface XConfigurationControllerRequestQueue +{ + /** Return whether there are pending requests for configuration changes. + @return + Returns `TRUE` when there is at least one request object in the + queue that has not yet been processed. It returns `FALSE` when + the queue is empty. + */ + boolean hasPendingRequests (); + + /** Add a request for a configuration change to the request queue. + <p>This method should not be called from outside the drawing + framework. Other sub controllers of the drawing framework are typical + callers. They can add change requests that can not be made with the + requestResourceActivation() and + requestResourceDeactivation() methods.</p> + @param xRequest + The configuration change represented by this request object must only + be committed to the configuration when the + com::sun::star::drawing::framework::XConfigurationChangeRequest::execute() + method of the xRequest object is called. + */ + void postChangeRequest ( + [in] XConfigurationChangeRequest xRequest); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XControllerManager.idl b/offapi/com/sun/star/drawing/framework/XControllerManager.idl new file mode 100644 index 000000000..4c615b66b --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XControllerManager.idl @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XControllerManager_idl__ +#define __com_sun_star_drawing_framework_XControllerManager_idl__ + +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XConfigurationController; +interface XModuleController; + +/** The XControllerManager gives access to the controllers of the drawing + framework. + <p>The XControllerManager interface is typically + implemented by the same object that implements + com::sun::star::frame::XController.</p> +*/ +interface XControllerManager +{ + /** Return the XConfigurationController object. + @return + The returned reference is never empty. + */ + XConfigurationController getConfigurationController (); + + /** Return the XModuleController object. + @return + The returned reference is never empty. + */ + XModuleController getModuleController (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XModuleController.idl b/offapi/com/sun/star/drawing/framework/XModuleController.idl new file mode 100644 index 000000000..e9f8b581d --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XModuleController.idl @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XModuleController_idl__ +#define __com_sun_star_drawing_framework_XModuleController_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/awt/XWindow.idl> +#include <com/sun/star/frame/XController.idl> +#include <com/sun/star/drawing/framework/ResourceId.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XView; + +/** The module controller is responsible for loading a module (ad-don, + plugin, whatever the name) when it is first used. + <p>For this there is a + list in the office configuration which associates resource URLs with + service names which in turn are associated with modules (or dlls). The + path to the office configuration list is + MultiPaneGUI/Framework/ResourceFactories in the + Impress.xcu file.</p> +*/ +interface XModuleController +{ + /** When the specified resource is requested for the first time then + create a new instance of the associated factory service. + */ + void requestResource ([in] string sResourceTypeURL); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XPane.idl b/offapi/com/sun/star/drawing/framework/XPane.idl new file mode 100644 index 000000000..04b7cd137 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XPane.idl @@ -0,0 +1,60 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XPane_idl__ +#define __com_sun_star_drawing_framework_XPane_idl__ + +#include <com/sun/star/awt/XWindow.idl> +#include <com/sun/star/rendering/XCanvas.idl> +#include <com/sun/star/drawing/framework/XResource.idl> +#include <com/sun/star/drawing/framework/XRelocatableResource.idl> + +module com { module sun { module star { module drawing { module framework { + +/** A pane is an abstraction of a window and is one of the resources managed + by the drawing framework. + <p>Apart from the area that displays a view a pane may contain other + parts like title, menu, closer button.</p> + <p>The URL prefix of panes is <code>private:resource/floater</code></p> +*/ +interface XPane +{ + interface XResource; + + /** Return the com::sun::star::awt::XWindow of the + pane that is used to display a view. + */ + ::com::sun::star::awt::XWindow getWindow (); + + /** Return the com::sun::star::awt::XCanvas of the pane. The + com::sun::star::rendering::XCanvas object is expected to + be associated with the com::sun::star::awt::XWindow object returned by + getWindow(). + @return + When the com::sun::star::rendering::XCanvas + interface is not supported then an empty reference is returned. + */ + ::com::sun::star::rendering::XCanvas getCanvas (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XPane2.idl b/offapi/com/sun/star/drawing/framework/XPane2.idl new file mode 100644 index 000000000..6bbaae249 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XPane2.idl @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XPane2_idl__ +#define __com_sun_star_drawing_framework_XPane2_idl__ + +#include <com/sun/star/accessibility/XAccessible.idl> + +module com { module sun { module star { module drawing { module framework { + +/** An extension of the XPane interface that adds support for + a) showing and hiding the windows that internally belong to the pane and + b) setting the accessibility object. + This is typically an optional interface. +*/ +interface XPane2 +{ + /** Return whether all windows that are used to implement the pane are + visible. + @return `TRUE` when all windows of the pane are visible. + */ + boolean isVisible (); + + /** Hide or show the pane. If there is more than one window used to + implement the pane then it is left to the implementation if one, + some, or all windows are hidden or shown as long as the pane becomes + hidden or visible. + @param bIsVisible + When `TRUE` then show the pane. Hide it otherwise. + */ + void setVisible ([in] boolean bIsVisible); + + /** Set the accessibility object for the pane. When there is more than + one window used to implement the pane then the given accessibility + object is usually set at the topmost window. However, the details + are implementation dependent. + @param xAccessible + May be an empty reference. + */ + void setAccessible ([in] ::com::sun::star::accessibility::XAccessible xAccessible); + + /** Return the accessibility object that is currently associated with + the windows that implement the pane. + */ + ::com::sun::star::accessibility::XAccessible getAccessible (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl b/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl new file mode 100644 index 000000000..b0e172ba5 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl @@ -0,0 +1,152 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XPaneBorderPainter_idl__ +#define __com_sun_star_drawing_framework_XPaneBorderPainter_idl__ + +#include <com/sun/star/awt/Rectangle.idl> +#include <com/sun/star/awt/Point.idl> +#include <com/sun/star/rendering/XCanvas.idl> +#include <com/sun/star/drawing/framework/BorderType.idl> + +module com { module sun { module star { module drawing { module framework { + +/** Paint the border around a rectangular region, typically a pane. + + <p>Calling objects have to be able to derive inner bounding boxes of the + border from the outer ones and inner ones from outer ones. This + conversion and the painting of the border involves three rectangles. + The inner and outer bounding box of the border. This is a logical + bounding box which the paint methods may paint over. The center box is + the third rectangle. This is the actual border between outer and inner + background color or bitmap and it is used for placing the bitmaps that are used + paint the border. The inner sides and corners are places relative to + this center box, i.e. when not further offsets are given then the upper + left corner bitmap is painted with its lower right at the upper left of + the center box.</p> +*/ +interface XPaneBorderPainter +{ + /** Enlarge the given rectangle by the size of the specified part of the + border. This method can be used to convert an inner bounding box + into the center box or the outer bounding box. + @param sPaneBorderStyleName + The pane style defines the sizes of the border. + @param aRectangle + This rectangle will be converted into a larger one. This should + be the center box or the inner bounding box of the border. + @param eBorderType + The part of the border to add to the given rectangle. + Use INNER_BORDER to convert an inner bounding box into the + center box or TOTAL_BORDER to convert it into the outer bounding + box. OUTER_BORDER can be used to convert the center box into + the outer bounding box. + */ + ::com::sun::star::awt::Rectangle addBorder ( + [in] string sPaneBorderStyleName, + [in] ::com::sun::star::awt::Rectangle aRectangle, + [in] BorderType eBorderType); + + /** Shrink the given rectangle by the size of the specified part of the + border. This method can be used to convert an outer bounding box + into the center box or the inner bounding box. + @param sPaneBorderStyleName + The pane style defines the sizes of the border. + @param aRectangle + This rectangle will be converted into a smaller one that lies + inside it. It should be the center box or the outer bounding + box of the border. + @param eBorderType + The part of the border to remove from the given rectangle. + Use OUTER_BORDER to convert an outer bounding box into the + center box or TOTAL_BORDER to convert it into the inner bounding + box. INNER_BORDER can be used to convert the center box into + the inner bounding box. + */ + ::com::sun::star::awt::Rectangle removeBorder ( + [in] string sPaneBorderStyleName, + [in] ::com::sun::star::awt::Rectangle aRectangle, + [in] BorderType eBorderType); + + /** Paint the border around a pane. + @param sPaneBorderStyleName + The pane style to use for painting the border. + @param xCanvas + The canvas onto which the border is painted. + @param aOuterBorderRectangle + The outer bounding box of the border. Use addBorder to convert + the bounding box of a pane (the inner bounding box of the + border) into this outer bounding box of the border. + @param aRepaintArea + The area in which the border has to be repainted. The clip + rectangle. + @param sTitle + The pane title. Supply an empty string for panes without + title. It is the responsibility of the caller to supply a title + only for pane border styles that support a title. + */ + void paintBorder ( + [in] string sPaneBorderStyleName, + [in] ::com::sun::star::rendering::XCanvas xCanvas, + [in] ::com::sun::star::awt::Rectangle aOuterBorderRectangle, + [in] ::com::sun::star::awt::Rectangle aRepaintArea, + [in] string sTitle); + + /** Paint the border around a pane where the border includes a call out + that is anchored at the given point. Most arguments have the same + meaning as in the paintBorder(). + + @see paintBorder + + @param sPaneBorderStyleName + See description in #paintBorder. + @param xCanvas + See description in #paintBorder. + @param aOuterBorderRectangle + See description in #paintBorder. + @param aRepaintArea + See description in #paintBorder. + @param sTitle + See description in #paintBorder. + @param aCalloutAnchor + The anchor point of the call out. It is usually located outside + the border. + */ + void paintBorderWithCallout ( + [in] string sPaneBorderStyleName, + [in] ::com::sun::star::rendering::XCanvas xCanvas, + [in] ::com::sun::star::awt::Rectangle aOuterBorderRectangle, + [in] ::com::sun::star::awt::Rectangle aRepaintArea, + [in] string sTitle, + [in] ::com::sun::star::awt::Point aCalloutAnchor); + + /** Return the offset of a call out anchor with respect to the outer + border. This value is used when the call out is realized by a fixed + bitmap in order to determine the size and/or location of the outer + border for a given call out. + */ + ::com::sun::star::awt::Point getCalloutOffset ( + [in] string sPaneBorderStyleName); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl b/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl new file mode 100644 index 000000000..4d426fe11 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XRelocatableResource_idl__ +#define __com_sun_star_drawing_framework_XRelocatableResource_idl__ + +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XResource; + +/** An optional interface that is implemented by resources that are + relocatable to different anchors. +*/ +interface XRelocatableResource +{ + /** Replace the current anchor of the called resource with the given + one. + @param xNewAnchor + The new anchor. + @return + Returns `TRUE` when the relocation was successful. + */ + boolean relocateToAnchor ([in] XResource xNewAnchor); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XResource.idl b/offapi/com/sun/star/drawing/framework/XResource.idl new file mode 100644 index 000000000..c2056e526 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XResource.idl @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XResource_idl__ +#define __com_sun_star_drawing_framework_XResource_idl__ + +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XResourceId; + +/** Base interface that provides functionality shared by all resource types + of the drawing framework. +*/ +interface XResource +{ + /** Return an XResourceId object for the called resource. + The returned id unambiguously identifies the resource. + */ + XResourceId getResourceId (); + + /** Some resources must not be leafs, i.e. have to be anchor to at least + one other resource. Most panes are examples for this. Views on the + other hand are in most cases no anchors. So the typical pane will + return `TRUE` and the typical view will return `FALSE`. + + The return value is used to determine whether a resource has to be + deactivated when it has no children, either because none is + requested or because none can be created. + */ + boolean isAnchorOnly (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XResourceFactory.idl b/offapi/com/sun/star/drawing/framework/XResourceFactory.idl new file mode 100644 index 000000000..0c7c270de --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XResourceFactory.idl @@ -0,0 +1,80 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XResourceFactory_idl__ +#define __com_sun_star_drawing_framework_XResourceFactory_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/lang/WrappedTargetException.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XResource; +interface XResourceId; + +/** Factory and possibly cache for creating and releasing resources. + <p>A resource factory is created and used by the + XConfigurationController object.</p> + <p>A factory may want to implement a cache to reuse previously released + resources.</p> +*/ +interface XResourceFactory +{ + /** Create a resource for the given XResourceId object. + @param xResourceId + The resource URL of this id specifies the type of resource to + create. The anchor can be used to obtain the associated object + from the configuration controller. For example, when a view is + created, then the new object can be initialized with the pane + that is its anchor. + <p>Valid values are those for which the factory has previously been + registered at the XConfigurationController</p>. + @return + Returns a resource object that has been just created or was + taken from a cache. When the requested resource can not be + created then an empty reference is returned. A later call may + be successful. This, for example, can be the case with SFX + based side panes. They are not available right after the + creation of a new application frame. + @throws InvalidArgumentException + when the given URL is not supported by the factory. + */ + XResource createResource ( + [in] XResourceId xResourceId) + raises ( ::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::lang::WrappedTargetException + ); + + /** Call this method to tell a factory that the given resource is no + longer in use. The factory can decide whether to destroy the + resource or to keep it in a cache in order to reuse it later. + @param xResource + The given resource has to be one created by the same factory. + @throws InvalidArgumentException + when the given pane was not created by the same factory. + */ + void releaseResource ([in] XResource xResource); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl b/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl new file mode 100644 index 000000000..1da726ba1 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl @@ -0,0 +1,90 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XResourceFactoryManager_idl__ +#define __com_sun_star_drawing_framework_XResourceFactoryManager_idl__ + +#include <com/sun/star/uno/XInterface.idl> + +module com { module sun { module star { module drawing { module framework { + +interface XResourceId; +interface XResourceFactory; + +/** The XResourceFactoryManager is part of the configuration controller and + manages the set of registered resource factories. + + @see XConfigurationController + @see XResourceFactory +*/ +interface XResourceFactoryManager +{ + /** Register a new resource factory for the given URL. + <p>When one factory is responsible for more than one type of resource + then this method has to be called for each type. If this method is + called multiple times for the same URL then a previously registered + factory is removed for the URL.</p> + @param sResourceURL + The URL of the resource that the factory can create. + @param xResourceFactory + The resource factory object. + */ + void addResourceFactory ( + [in] string sResourceURL, + [in] XResourceFactory xResourceFactory); + + /** Remove a resource factory for one type of resource. When the + factory has been registered for other URLs as well then it remains + registered for them. Use the + removeResourceFactoryForReference() to remove a + factory completely. + @param sResourceURL + The URL for which to remove the resource factory. + */ + void removeResourceFactoryForURL ( + [in] string sResourceURL); + + /** Remove a resource factory for all resource types it has been registered for. Use + removeResourceFactoryForURL() to remove a factory + just for one resource type and to leave it registered for others. + @param xResourceFactory + The resource factory object to remove. + */ + void removeResourceFactoryForReference ( + [in] XResourceFactory xResourceFactory); + + /** Return the resource factory that was previously registered for the + given resource type. This method is typically called by one of the + resource controllers. + @param sResourceURL + The URL of the resource type for which to return the resource + factory. + @return + When no resource factory was registered for the given resource + type then an empty reference is returned. + */ + XResourceFactory getResourceFactory ( + [in] string sResourceURL); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XResourceId.idl b/offapi/com/sun/star/drawing/framework/XResourceId.idl new file mode 100644 index 000000000..d2635ae76 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XResourceId.idl @@ -0,0 +1,145 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XResourceId_idl__ +#define __com_sun_star_drawing_framework_XResourceId_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/AnchorBindingMode.idl> +#include <com/sun/star/util/URL.idl> + +module com { module sun { module star { module drawing { module framework { + +/** A resource id uses a set of URLs to unambiguously specify a resource of + the drawing framework. + <p>Resources of the drawing framework are panes, views, tool bars, and + command groups. One URL describes the type of the actual resource. A + sequence of URLs (typically one, sometimes two) specifies its anchor, + the resource it is bound to. The anchor typically is a pane (for + views), or it is empty (for panes).</p> + <p>The resource URL may be empty. In this case the anchor is empty, + too. Such an empty resource id does not describe a resource but rather + the absence of one. Instead of an empty XResourceId object + an empty reference can be used in many places.</p> + <p>The resource URL may have arguments that are passed to the factory + method on its creation. Arguments are only available through the + getFullResourceURL(). The getResourceURL() method strips them away.</p> +*/ +interface XResourceId +{ + /** Return the URL of the resource. Arguments supplied on creation are + stripped away. Use getFullResourceURL() to access them. + */ + string getResourceURL (); + + /** Return a URL object of the resource URL that may contain arguments. + */ + com::sun::star::util::URL getFullResourceURL (); + + /** Return whether there is a non-empty anchor URL. When this method + returns `FALSE` then getAnchorURLs() will return an empty list. + */ + boolean hasAnchor (); + + /** Return a new XResourceId that represents the anchor resource. + */ + XResourceId getAnchor (); + + /** Return the, possibly empty, list of anchor URLs. The URLs are + ordered so that the one in position 0 is the direct anchor of the + resource, while the one in position i+1 is the direct anchor of the + one in position i. + */ + sequence<string> getAnchorURLs (); + + /** Return the type prefix of the resource URL. This includes all up to + and including the second slash. + */ + string getResourceTypePrefix (); + + /** Compare the called XResourceId object with the given + one. + <p>The two resource ids A and B are compared so that if A<B (return + value is -1) then either A and B are unrelated or A is a direct or + indirect anchor of B.</p> + <p>The algorithm for this comparison is quite simple. It uses a + double lexicographic ordering. On the lower level individual URLs + are compared via the lexicographic order defined on strings. On the + higher level two resource ids are compared via a lexicographic order + defined on the URLS. So when there are two resource ids A1.A2 + (A1 being the anchor of A2) and B1.B2 then A1.A2<B1.B2 when A1<B1 or + A1==B1 and A2<B2. Resource ids may have different lengths: A1 < + B1.B2 when A1<B1 or A1==B1 (anchors first then resources linked to them.</p> + @param xId + The resource id to which the called resource id is compared. + @return + Returns 0 when the called resource id is + equivalent to the given resource id. Returns <code>-1</code> or + <code>+1</code> when the two compared resource ids differ. + */ + short compareTo ( + [in] XResourceId xId); + + /** Return whether the anchor of the called resource id object + represents the same resource as the given object. + <p>Note that not only the anchor of the given object is taken into + account. The whole object, including the resource URL, is + interpreted as anchor resource.</p> + @param xAnchorId + The resource id of the anchor. + @param eMode + This mode specifies how the called resource has to be bound to + the given anchor in order to have this function return `TRUE`. + <p>If eMode is DIRECT then the anchor of the called resource id + has to be identical to the given anchor. If eMode is + INDIRECT then the given anchor has to be a part + of the anchor of the called resource. + */ + boolean isBoundTo ( + [in] XResourceId xAnchorId, + [in] AnchorBindingMode eMode); + + /** Return whether the anchor of the called resource id object + represents the same resource as the given anchor URL. This is a + convenience variant of the isBoundTo() function + that can also be seen as an optimization for the case that the + anchor consists of exactly one URL. + @param AnchorURL + The resource URL of the anchor. + @param eMode + This mode specifies how the called resource has to be bound to + the given anchor in order to have this function return. See the + description of isBoundTo() for more + information. + */ + boolean isBoundToURL ( + [in] string AnchorURL, + [in] AnchorBindingMode eMode); + + /** Return a copy of the called resource id. The caller becomes the + owner of the new object. + */ + XResourceId clone (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XTabBar.idl b/offapi/com/sun/star/drawing/framework/XTabBar.idl new file mode 100644 index 000000000..97778edf2 --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XTabBar.idl @@ -0,0 +1,94 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XTabBar_idl__ +#define __com_sun_star_drawing_framework_XTabBar_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/awt/XWindow.idl> +#include <com/sun/star/drawing/framework/TabBarButton.idl> + +module com { module sun { module star { module drawing { module framework { + +/** UI control for the selection of views in a pane. + <p>Every tab of a tab bar has, besides its localized title and help + text, the URL of a view. A possible alternative would be to use a + command URL instead of the view URL.</p> + <p>In the current Impress implementation a tab bar is only used for the + center pane to switch between views in the center pane. Tab bars can + make sense for other panes as well, i.e. for showing either the slide + sorter or the outline view in the left pane.</p> + <p>Tab bar buttons are identified by their resource id. Note that + because the resource anchors are all the same (the tab bar), it is the + resource URL that really identifies a button. There can not be two + buttons with the same resource id.</p> + </p> + <p>A better place for this interface (in an extended version) would be + <code>com::sun::star::awt</code></p> + @see TabBarButton +*/ +interface XTabBar +{ + /** Add a tab bar button to the right of another one. + @param aButton + The new tab bar button that is to be inserted. If a button with + the same resource id is already present than that is removed before the + new button is inserted. + @param aAnchor + The new button is inserted to the right of this button. When + its ResourceId is empty then the new button is inserted at the left + most position. + */ + void addTabBarButtonAfter ([in] TabBarButton aButton, [in] TabBarButton aAnchor); + + /** Add a tab bar button at the right most position. + @param aButton + The new tab bar button that is to be inserted. + */ + void appendTabBarButton ([in] TabBarButton aButton); + + /** Remove a tab bar button. + @param aButton + The tab bar button to remove. When there is no button with the + specified resource id then this call is silently ignored. + */ + void removeTabBarButton ([in] TabBarButton aButton); + + /** Test whether the specified button exists in the tab bar. + @param aButton + The tab bar button whose existence is tested. + @return + Returns `TRUE` when the button exists. + */ + boolean hasTabBarButton ([in] TabBarButton aButton); + + /** Return a sequence of all the tab bar buttons. + <p>Their order reflects the visible order in the tab bar.</p> + <p>This method can be used when + addTabBarButtonAfter() does not provide enough + control as to where to insert a new button.</p> + */ + sequence<TabBarButton> getTabBarButtons (); +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XToolBar.idl b/offapi/com/sun/star/drawing/framework/XToolBar.idl new file mode 100644 index 000000000..bc681b78e --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XToolBar.idl @@ -0,0 +1,40 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XToolBar_idl__ +#define __com_sun_star_drawing_framework_XToolBar_idl__ + +#include <com/sun/star/drawing/framework/XResource.idl> + +module com { module sun { module star { module drawing { module framework { + +/** Abstraction of tool bars used by the drawing framework. + @see XToolBarController + @see XToolBarFactory +*/ +interface XToolBar + : ::com::sun::star::drawing::framework::XResource +{ +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/drawing/framework/XView.idl b/offapi/com/sun/star/drawing/framework/XView.idl new file mode 100644 index 000000000..36610c77a --- /dev/null +++ b/offapi/com/sun/star/drawing/framework/XView.idl @@ -0,0 +1,46 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef __com_sun_star_drawing_framework_XView_idl__ +#define __com_sun_star_drawing_framework_XView_idl__ + +#include <com/sun/star/uno/XInterface.idl> +#include <com/sun/star/drawing/framework/XResource.idl> + +module com { module sun { module star { module drawing { module framework { + +/** A view in the drawing framework is any object that paints into a pane. + <p>Typical examples are the Impress views that show a graphical + representation of a document. But the task pane, which is primarily a + container of dialogs, is a view as well.</p> + <p>Luckily the drawing framework does not need to know much about what a + view is. It just needs to identify view objects and a typesafe way to + reference them.</p> + <p>The URL prefix of views is <code>private:resource/view</code></p> +*/ +interface XView +{ + interface XResource; +}; + +}; }; }; }; }; // ::com::sun::star::drawing::framework + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |