summaryrefslogtreecommitdiff
path: root/svx/source/tbxctrls/toolbarmenu.hxx
blob: 5b152fe4c6a951b6028eeeb35826afed7f8263e6 (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
#include <vcl/ctrl.hxx>

#include <vector>

class ToolbarMenuEntry;
typedef std::vector< ToolbarMenuEntry * > ToolbarMenuEntryVector;

class ToolbarMenu : public Control
{
private:
    ToolbarMenuEntryVector	maEntryVector;

    int mnCheckPos;
    int mnImagePos;
    int mnTextPos;

    int mnHighlightedEntry;
    int mnSelectedEntry;

    Size maSize;

    Link			maHighlightHdl;
    Link			maSelectHdl;

    void            StateChanged( StateChangedType nType );
    void            DataChanged( const DataChangedEvent& rDCEvt );

    void			initWindow();

    Size			implCalcSize();

    void			appendEntry( ToolbarMenuEntry* pEntry );

    void			implPaint( ToolbarMenuEntry* pThisOnly = NULL, bool bHighlight = false );

    void			implHighlightEntry( int nHighlightEntry, bool bHighlight );
    void			implHighlightEntry( const MouseEvent& rMEvt, bool bMBDown );

    void			implChangeHighlightEntry( int nEntry );
    void			implSelectEntry( int nSelectedEntry );

    ToolbarMenuEntry*	implCursorUpDown( bool bUp, bool bHomeEnd );
    ToolbarMenuEntry*	implGetEntry( int nEntry ) const;
    ToolbarMenuEntry*	implSearchEntry( int nEntryId ) const;

public:
                    ToolbarMenu( Window* pParent, WinBits nStyle );
                    ~ToolbarMenu();

    virtual void    MouseMove( const MouseEvent& rMEvt );
    virtual void    MouseButtonDown( const MouseEvent& rMEvt );
    virtual void    MouseButtonUp( const MouseEvent& rMEvt );
    virtual void    KeyInput( const KeyEvent& rKEvent );
    virtual void    Command( const CommandEvent& rCEvt );
    virtual void    Paint( const Rectangle& rRect );
    virtual void    RequestHelp( const HelpEvent& rHEvt );
    virtual void    Resize();
    virtual void	GetFocus();
    virtual void	LoseFocus();

    void			appendEntry( int nEntryId, const String& rStr, MenuItemBits nItemBits = 0 );
    void			appendEntry( int nEntryId, const Image& rImage, MenuItemBits nItemBits = 0 );
    void			appendEntry( int nEntryId, const String& rStr, const Image& rImage, MenuItemBits nItemBits = 0 );
    void			appendEntry( int nEntryId, Control* pControl, MenuItemBits nItemBits = 0 );
    void			appendEntry( int nEntryId, const String& rStr, Control* pControl, MenuItemBits nItemBits = 0 );
    void			appendSeparator();

    void			checkEntry( int nEntryId, bool bCheck = true );
    bool			isEntryChecked( int nEntryId ) const;

    void			enableEntry( int nEntryId, bool bEnable = true );
    bool			isEntryEnabled( int nEntryId ) const;

    void			setEntryText( int nEntryId, const String& rStr );
    const String&	getEntryText( int nEntryId ) const;

    void			setEntryImage( int nEntryId, const Image& rImage );
    const Image&	getEntryImage( int nEntryId ) const;

    const Size&		getMenuSize() const { return maSize; }

    void			SetHighlightHdl( const Link& rLink )	{ maHighlightHdl = rLink; }
    const Link& 	GetHighlightHdl() const 				{ return maHighlightHdl; }

    void			SetSelectHdl( const Link& rLink )		{ maSelectHdl = rLink; }
    const Link& 	GetSelectHdl() const					{ return maSelectHdl; }

    int				getSelectedEntryId() const;
    int				getHighlightedEntryId() const;
};