File: gallery.h

package info (click to toggle)
wxpython3.0 3.0.2.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 482,760 kB
  • ctags: 518,293
  • sloc: cpp: 2,127,226; python: 294,045; makefile: 51,942; ansic: 19,033; sh: 3,013; xml: 1,629; perl: 17
file content (299 lines) | stat: -rw-r--r-- 9,622 bytes parent folder | download | duplicates (6)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
///////////////////////////////////////////////////////////////////////////////
// Name:        ribbon/gallery.h
// Purpose:     interface of wxRibbonGallery
// Author:      Peter Cawley
// Licence:     wxWindows licence
///////////////////////////////////////////////////////////////////////////////

enum wxRibbonGalleryButtonState
{
    wxRIBBON_GALLERY_BUTTON_NORMAL,
    wxRIBBON_GALLERY_BUTTON_HOVERED,
    wxRIBBON_GALLERY_BUTTON_ACTIVE,
    wxRIBBON_GALLERY_BUTTON_DISABLED,
};

/**
    @class wxRibbonGallery

    A ribbon gallery is like a wxListBox, but for bitmaps rather than strings.
    It displays a collection of bitmaps arranged in a grid and allows the user
    to choose one. As there are typically more bitmaps in a gallery than can
    be displayed in the space used for a ribbon, a gallery always has scroll
    buttons to allow the user to navigate through the entire gallery. It also
    has an "extension" button, the behaviour of which is outside the scope of
    the gallery control itself, though it typically displays some kind of
    dialog related to the gallery.

    @beginEventEmissionTable{wxRibbonGalleryEvent}
    @event{EVT_RIBBONGALLERY_SELECTED(id, func)}
        Triggered when the user selects an item from the gallery. Note that the
        ID is that of the gallery, not of the item.
    @event{EVT_RIBBONGALLERY_CLICKED(id, func)}
        Similar to EVT_RIBBONGALLERY_SELECTED but triggered every time a
        gallery item is clicked, even if it is already selected. Note that the
        ID of the event is that of the gallery, not of the item, just as above.
        This event is available since wxWidgets 2.9.2.
    @event{EVT_RIBBONGALLERY_HOVER_CHANGED(id, func)}
        Triggered when the item being hovered over by the user changes. The
        item in the event will be the new item being hovered, or NULL if there
        is no longer an item being hovered. Note that the ID is that of the
        gallery, not of the item.
    @endEventTable
    @beginEventEmissionTable{wxCommandEvent}
    @event{EVT_BUTTON(id, func)}
        Triggered when the "extension" button of the gallery is pressed.
    @endEventTable

    @library{wxribbon}
    @category{ribbon}
*/
class wxRibbonGallery : public wxRibbonControl
{
public:
    /**
        Default constructor.
        With this constructor, Create() should be called in order to create
        the gallery.
    */
    wxRibbonGallery();

    /**
        Construct a ribbon gallery with the given parameters.
        @param parent
            Parent window for the gallery (typically a wxRibbonPanel).
        @param id
            An identifier for the gallery. @c wxID_ANY is taken to mean a default.
        @param pos
            Initial position of the gallery.
        @param size
            Initial size of the gallery.
        @param style
            Gallery style, currently unused.
    */
    wxRibbonGallery(wxWindow* parent,
                  wxWindowID id = wxID_ANY,
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = 0);

    /**
        Destructor.
    */
    virtual ~wxRibbonGallery();

    /**
        Create a gallery in two-step gallery construction.
        Should only be called when the default constructor is used, and
        arguments have the same meaning as in the full constructor.
    */
    bool Create(wxWindow* parent,
                wxWindowID id = wxID_ANY,
                const wxPoint& pos = wxDefaultPosition,
                const wxSize& size = wxDefaultSize,
                long style = 0);

    /**
        Remove all items from the gallery.
    */
    void Clear();

    /**
        Query if the gallery has no items in it.
    */
    bool IsEmpty() const;

    /**
        Get the number of items in the gallery.
    */
    unsigned int GetCount() const;

    /**
        Get an item by index.
    */
    wxRibbonGalleryItem* GetItem(unsigned int n);

    /**
        Add an item to the gallery (with no client data).
        @param bitmap
            The bitmap to display for the item. Note that all items must
            have equally sized bitmaps.
        @param id
            ID number to associate with the item. Not currently used for
            anything important.
    */
    wxRibbonGalleryItem* Append(const wxBitmap& bitmap, int id);

    /**
        Add an item to the gallery (with simple client data).
        @param bitmap
            The bitmap to display for the item. Note that all items must
            have equally sized bitmaps.
        @param id
            ID number to associate with the item. Not currently used for
            anything important.
        @param clientData
            An opaque pointer to associate with the item.
    */
    wxRibbonGalleryItem* Append(const wxBitmap& bitmap, int id, void* clientData);

    /**
        Add an item to the gallery (with complex client data)
        @param bitmap
            The bitmap to display for the item. Note that all items must
            have equally sized bitmaps.
        @param id
            ID number to associate with the item. Not currently used for
            anything important.
        @param clientData
            An object which contains data to associate with the item. The item
            takes ownership of this pointer, and will delete it when the item
            client data is changed to something else, or when the item is
            destroyed.
    */
    wxRibbonGalleryItem* Append(const wxBitmap& bitmap, int id, wxClientData* clientData);

    /**
        Set the client object associated with a gallery item.
    */
    void SetItemClientObject(wxRibbonGalleryItem* item, wxClientData* data);

    /**
        Get the client object associated with a gallery item.
    */
    wxClientData* GetItemClientObject(const wxRibbonGalleryItem* item) const;

    /**
        Set the client data associated with a gallery item.
    */
    void SetItemClientData(wxRibbonGalleryItem* item, void* data);

    /**
        Get the client data associated with a gallery item.
    */
    void* GetItemClientData(const wxRibbonGalleryItem* item) const;

    /**
        Set the selection to the given item, or removes the selection if
        @a item == NULL.

        Note that this not cause any events to be emitted.
    */
    void SetSelection(wxRibbonGalleryItem* item);

    /**
        Get the currently selected item, or NULL if there is none.

        The selected item is set by SetSelection(), or by the user clicking on
        an item.
    */
    wxRibbonGalleryItem* GetSelection() const;

    /**
        Get the currently hovered item, or NULL if there is none.

        The hovered item is the item underneath the mouse cursor.
    */
    wxRibbonGalleryItem* GetHoveredItem() const;

    /**
        Get the currently active item, or NULL if there is none.

        The active item is the item being pressed by the user, and will thus
        become the selected item if the user releases the mouse button.
    */
    wxRibbonGalleryItem* GetActiveItem() const;

    /**
        Get the state of the scroll up button.
    */
    wxRibbonGalleryButtonState GetUpButtonState() const;

    /**
        Get the state of the scroll down button.
    */
    wxRibbonGalleryButtonState GetDownButtonState() const;

    /**
        Get the state of the "extension" button.
    */
    wxRibbonGalleryButtonState GetExtensionButtonState() const;

    /**
        Query is the mouse is currently hovered over the gallery.

        @return @true if the cursor is within the bounds of the gallery (not
            just hovering over an item), @false otherwise.
    */
    bool IsHovered() const;

    /**
        Scroll the gallery contents by some amount.

        @param lines
          Positive values scroll toward the end of the gallery, while negative
          values scroll toward the start.

        @return @true if the gallery scrolled at least one pixel in the given
            direction, @false if it did not scroll.
    */
    virtual bool ScrollLines(int lines);
    
    /**
        Scroll the gallery contents by some fine-grained amount.

        @param pixels
          Positive values scroll toward the end of the gallery, while negative
          values scroll toward the start.

        @return @true if the gallery scrolled at least one pixel in the given
            direction, @false if it did not scroll.
    */
    bool ScrollPixels(int pixels);

    /**
        Scroll the gallery to ensure that the given item is visible.
    */
    void EnsureVisible(const wxRibbonGalleryItem* item);
};

/**
    @class wxRibbonGalleryEvent

    @library{wxribbon}
    @category{events,ribbon}

    @see wxRibbonBar
*/
class wxRibbonGalleryEvent : public wxCommandEvent
{
public:
    /**
        Constructor.
    */
    wxRibbonGalleryEvent(wxEventType command_type = wxEVT_NULL,
                         int win_id = 0,
                         wxRibbonGallery* gallery = NULL,
                         wxRibbonGalleryItem* item = NULL);

    /**
        Returns the gallery which the event relates to.
    */
    wxRibbonGallery* GetGallery();

    /**
        Returns the gallery item which the event relates to, or NULL if it does
        not relate to an item.
    */
    wxRibbonGalleryItem* GetGalleryItem();

    /**
        Sets the gallery relating to this event.
    */
    void SetGallery(wxRibbonGallery* gallery);

    /**
        Sets the gallery item relating to this event.
    */
    void SetGalleryItem(wxRibbonGalleryItem* item);
};