summaryrefslogtreecommitdiff
path: root/idl/inc/slot.hxx
blob: 34d60f1831af297e23cac028915b10adfb03a4f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- 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 .
 */

#pragma once

#include "types.hxx"
#include <tools/solar.h>

class SvMetaSlot : public SvMetaAttribute
{
public:
    SvIdentifier     aGroupId;
    SvIdentifier     aExecMethod;
    SvIdentifier     aStateMethod;

    SvBOOL           aToggle;
    SvBOOL           aAutoUpdate;

    SvBOOL           aAsynchron;

    SvBOOL           aRecordPerItem;// exclusive
    SvBOOL           aRecordPerSet;
    SvBOOL           aNoRecord;
    SvBOOL           aRecordAbsolute;

    SvBOOL           aMenuConfig;
    SvBOOL           aToolBoxConfig;
    SvBOOL           aAccelConfig;
    SvBOOL           aFastCall;
    SvBOOL           aContainer;
    OString          aDisableFlags;
    SvMetaSlot*      pNextSlot;
    sal_uInt32       nListPos;
    SvBOOL           aReadOnlyDoc;

    void            WriteSlot( std::string_view rShellName,
                            sal_uInt16 nCount, std::string_view rSlotId,
                            SvSlotElementList &rList,
                            size_t nStart,
                            SvIdlDataBase & rBase, SvStream & rOutStm );

    bool            IsVariable() const;
    bool            IsMethod() const;

    void    SetRecordPerItem( bool bSet )
            {
                aRecordPerItem = bSet;
                if( bSet )
                    aRecordPerSet = aNoRecord = false;
            }
    void    SetRecordPerSet( bool bSet )
            {
                aRecordPerSet = bSet;
                if( bSet )
                    aRecordPerItem = aNoRecord = false;
            }
    void    SetNoRecord( bool bSet )
            {
                aNoRecord = bSet;
                if( bSet )
                    aRecordPerItem = aRecordPerSet = false;
            }

public:
            SvMetaSlot();
            SvMetaSlot( SvMetaType * pType );

    const OString&      GetGroupId() const;
    const OString&      GetExecMethod() const;
    const OString&      GetStateMethod() const;
    const OString&      GetDisableFlags() const;
    bool                GetToggle() const;
    bool                GetAutoUpdate() const;

    bool                GetAsynchron() const;

    bool                GetRecordPerItem() const;
    bool                GetRecordPerSet() const;
    bool                GetNoRecord() const;
    bool                GetRecordAbsolute() const;

    bool                GetMenuConfig() const;
    bool                GetToolBoxConfig() const;
    bool                GetAccelConfig() const;
    bool                GetFastCall() const;
    bool                GetContainer() const;
    bool                GetReadOnlyDoc() const;

    sal_uInt32           GetListPos() const
                        { return nListPos; }
    void                SetListPos(sal_uInt32 n)
                        { nListPos = n; }
    void                ResetSlotPointer()
                        { pNextSlot = nullptr; }

    virtual bool        Test( SvTokenStream & rInStm ) override;
    virtual void        ReadAttributesSvIdl( SvIdlDataBase & rBase,
                                             SvTokenStream & rInStm ) override;
    virtual bool        ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override;
    virtual void        Insert( SvSlotElementList& ) override;
    void                WriteSlotStubs( std::string_view rShellName,
                                    std::vector<OString> & rList,
                                    SvStream & rOutStm ) const;
    sal_uInt16          WriteSlotMap( std::string_view rShellName,
                                    sal_uInt16 nCount,
                                    SvSlotElementList&,
                                    size_t nStart,
                                    SvIdlDataBase & rBase,
                                    SvStream & rOutStm );
    sal_uInt16          WriteSlotParamArray( SvIdlDataBase & rBase,
                                            SvStream & rOutStm ) const;
};

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