/* -*- 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_style_Style_idl__
#define __com_sun_star_style_Style_idl__

#include <com/sun/star/style/XStyle.idl>
#include <com/sun/star/beans/XPropertySet.idl>
#include <com/sun/star/beans/XMultiPropertySet.idl>
#include <com/sun/star/beans/XMultiPropertyStates.idl>
#include <com/sun/star/beans/NamedValue.idl>
#include <com/sun/star/xml/UserDefinedAttributesSupplier.idl>



 module com {  module sun {  module star {  module style {


/** This service specifies a single style sheet.
 */
published service Style
{
    /** contains user defined attributes.

        @see    com::sun::star::xml::UserDefinedAttributesSupplier
     */
    [optional] service com::sun::star::xml::UserDefinedAttributesSupplier;


    interface com::sun::star::style::XStyle;

        interface com::sun::star::beans::XPropertySet;

        [optional] interface com::sun::star::beans::XMultiPropertySet;

    /* This optional interface is available as an optimization, allowing users
       to use "setAllPropertiesToDefault", for example. */

    [optional] interface com::sun::star::beans::XMultiPropertyStates;


    /** determines if a style is physically created.

        <p> Built in styles may not be created until they are needed.
        To prevent standard style properties from being exported, it may be
        useful to check if the style is created first.
        </p>
     */
    [optional, readonly, property] boolean IsPhysical;

    /** contains the name of the style that is applied to the next paragraph.

        <p> This property is usually available at paragraph styles only. </p>
     */
    [optional, property] string FollowStyle;

    /** contains the name of the style as it is displayed in the user interface.

        <p> The names of the styles at the API are language independent. The user interface
        names are localized.</p>
     */
    [optional, readonly, property] string DisplayName;

    /** determines if a style is automatically updated, if the properties of an object
        that the style is applied to are changed.

        <p> For example, if the style is applied to a paragraph and the properties of the paragraph
        are changed then the style will be updated accordingly.</p>
     */
    [optional, property] string IsAutoUpdate;

    /** defines the context and styles for conditional paragraphs.

        <p>This property is only available if the style is a conditional
        paragraph style.</p>

        <p>The sequence consists of pairs where the name part of the pair
        defines the context where it should be applied and the value part
        is a string naming the style to be used in that context.</p>

        <p>Assigning an empty string to the style name will disable
        the conditional style for that context.</p>

        <p>The allowed strings (contexts) for the name part of an entry
        of the sequence are:</p>

        <ul>
            <li>TableHeader</li>
            <li>Table</li>
            <li>Frame</li>
            <li>Section</li>
            <li>Footnote</li>
            <li>Endnote</li>
            <li>Header</li>
            <li>Footer</li>
            <li>OutlineLevel1</li>
            <li>OutlineLevel2</li>
            <li>OutlineLevel3</li>
            <li>OutlineLevel4</li>
            <li>OutlineLevel5</li>
            <li>OutlineLevel6</li>
            <li>OutlineLevel7</li>
            <li>OutlineLevel8</li>
            <li>OutlineLevel9</li>
            <li>OutlineLevel10</li>
            <li>NumberingLevel1</li>
            <li>NumberingLevel2</li>
            <li>NumberingLevel3</li>
            <li>NumberingLevel4</li>
            <li>NumberingLevel5</li>
            <li>NumberingLevel6</li>
            <li>NumberingLevel7</li>
            <li>NumberingLevel8</li>
            <li>NumberingLevel9</li>
            <li>NumberingLevel10</li>
        </ul>


        @since  OOo 2.0.1
     */
    [optional, property] sequence< com::sun::star::beans::NamedValue > ParaStyleConditions;

    /** Flag indicating whether to hide the style in the UI.
        @since LibreOffice 4.0
     */
    [optional, property] boolean Hidden;

    /** Grab bag of style properties, used as a string-any map for interim interop purposes.

        @since LibreOffice 4.2

        <p>This property is intentionally not handled by the ODF filter. Any
        member that should be handled there should be first moved out from this grab
        bag to a separate property.</p>
    */
    [optional, property] sequence<com::sun::star::beans::PropertyValue> StyleInteropGrabBag;
};


}; }; }; };
#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
