File: AuiManager.xsp

package info (click to toggle)
libwx-perl 1%3A0.9909-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,912 kB
  • sloc: cpp: 9,728; perl: 8,182; ansic: 626; makefile: 41
file content (302 lines) | stat: -rw-r--r-- 11,556 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
300
301
302
#############################################################################
## Name:        ext/aui/XS/AuiManager.xsp
## Purpose:     XS++ for Wx::AuiManager
## Author:      Mattia Barbon
## Modified by:
## Created:     11/11/2006
## RCS-ID:      $Id: AuiManager.xsp 2971 2010-08-28 13:49:35Z mbarbon $
## Copyright:   (c) 2006-2010 Mattia Barbon
## Licence:     This program is free software; you can redistribute it and/or
##              modify it under the same terms as Perl itself
#############################################################################

#include <wx/aui/framemanager.h>
#include <wx/aui/auibook.h>
#include "xspp/aui.h"

%module{Wx};
%file{xspp/aui.h};
%{

#if WXPERL_W_VERSION_GE( 2, 8, 0 )
#define wxAUI_ART_SASH_SIZE                         wxAUI_DOCKART_SASH_SIZE
#define wxAUI_ART_CAPTION_SIZE                      wxAUI_DOCKART_CAPTION_SIZE
#define wxAUI_ART_GRIPPER_SIZE                      wxAUI_DOCKART_GRIPPER_SIZE
#define wxAUI_ART_PANE_BORDER_SIZE                  wxAUI_DOCKART_PANE_BORDER_SIZE
#define wxAUI_ART_PANE_BUTTON_SIZE                  wxAUI_DOCKART_PANE_BUTTON_SIZE
#define wxAUI_ART_BACKGROUND_COLOUR                 wxAUI_DOCKART_BACKGROUND_COLOUR
#define wxAUI_ART_SASH_COLOUR                       wxAUI_DOCKART_SASH_COLOUR
#define wxAUI_ART_ACTIVE_CAPTION_COLOUR             wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR
#define wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR    wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR
#define wxAUI_ART_INACTIVE_CAPTION_COLOUR           wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR
#define wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR  wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR
#define wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR        wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR
#define wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR      wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR
#define wxAUI_ART_BORDER_COLOUR                     wxAUI_DOCKART_BORDER_COLOUR
#define wxAUI_ART_GRIPPER_COLOUR                    wxAUI_DOCKART_GRIPPER_COLOUR
#define wxAUI_ART_CAPTION_FONT                      wxAUI_DOCKART_CAPTION_FONT
#define wxAUI_ART_GRADIENT_TYPE                     wxAUI_DOCKART_GRADIENT_TYPE
#else
#define wxAUI_DOCKART_SASH_SIZE                         wxAUI_ART_SASH_SIZE
#define wxAUI_DOCKART_CAPTION_SIZE                      wxAUI_ART_CAPTION_SIZE
#define wxAUI_DOCKART_GRIPPER_SIZE                      wxAUI_ART_GRIPPER_SIZE
#define wxAUI_DOCKART_PANE_BORDER_SIZE                  wxAUI_ART_PANE_BORDER_SIZE
#define wxAUI_DOCKART_PANE_BUTTON_SIZE                  wxAUI_ART_PANE_BUTTON_SIZE
#define wxAUI_DOCKART_BACKGROUND_COLOUR                 wxAUI_ART_BACKGROUND_COLOUR
#define wxAUI_DOCKART_SASH_COLOUR                       wxAUI_ART_SASH_COLOUR
#define wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR             wxAUI_ART_ACTIVE_CAPTION_COLOUR
#define wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR    wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR
#define wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR           wxAUI_ART_INACTIVE_CAPTION_COLOUR
#define wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR  wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR
#define wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR        wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR
#define wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR      wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR
#define wxAUI_DOCKART_BORDER_COLOUR                     wxAUI_ART_BORDER_COLOUR
#define wxAUI_DOCKART_GRIPPER_COLOUR                    wxAUI_ART_GRIPPER_COLOUR
#define wxAUI_DOCKART_CAPTION_FONT                      wxAUI_ART_CAPTION_FONT
#define wxAUI_DOCKART_GRADIENT_TYPE                     wxAUI_ART_GRADIENT_TYPE                     
#endif

double aui_constant( const char* name, int arg )
{
    // !package: Wx
    // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
    // !tag: aui
#define r( n ) \
    if( strEQ( name, #n ) ) \
        return n;

    WX_PL_CONSTANT_INIT();

    switch( fl )
    {
    case 'A':
        r( wxAUI_DOCK_NONE );
        r( wxAUI_DOCK_TOP );
        r( wxAUI_DOCK_RIGHT );
        r( wxAUI_DOCK_BOTTOM );
        r( wxAUI_DOCK_LEFT );
        r( wxAUI_DOCK_CENTER );
        r( wxAUI_DOCK_CENTRE );
        r( wxAUI_MGR_ALLOW_FLOATING );
        r( wxAUI_MGR_ALLOW_ACTIVE_PANE );
        r( wxAUI_MGR_TRANSPARENT_DRAG );
        r( wxAUI_MGR_TRANSPARENT_HINT );
        r( wxAUI_MGR_VENETIAN_BLINDS_HINT );
        r( wxAUI_MGR_RECTANGLE_HINT );
        r( wxAUI_MGR_HINT_FADE );
        r( wxAUI_MGR_NO_VENETIAN_BLINDS_FADE );
        r( wxAUI_MGR_DEFAULT );
        // 2.7.x
        r( wxAUI_ART_SASH_SIZE );
        r( wxAUI_ART_CAPTION_SIZE );
        r( wxAUI_ART_GRIPPER_SIZE );
        r( wxAUI_ART_PANE_BORDER_SIZE );
        r( wxAUI_ART_PANE_BUTTON_SIZE );
        r( wxAUI_ART_BACKGROUND_COLOUR );
        r( wxAUI_ART_SASH_COLOUR );
        r( wxAUI_ART_ACTIVE_CAPTION_COLOUR );
        r( wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR );
        r( wxAUI_ART_INACTIVE_CAPTION_COLOUR );
        r( wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR );
        r( wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR );
        r( wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR );
        r( wxAUI_ART_BORDER_COLOUR );
        r( wxAUI_ART_GRIPPER_COLOUR );
        r( wxAUI_ART_CAPTION_FONT );
        r( wxAUI_ART_GRADIENT_TYPE );
        // 2.8.x
        r( wxAUI_DOCKART_SASH_SIZE );
        r( wxAUI_DOCKART_CAPTION_SIZE );
        r( wxAUI_DOCKART_GRIPPER_SIZE );
        r( wxAUI_DOCKART_PANE_BORDER_SIZE );
        r( wxAUI_DOCKART_PANE_BUTTON_SIZE );
        r( wxAUI_DOCKART_BACKGROUND_COLOUR );
        r( wxAUI_DOCKART_SASH_COLOUR );
        r( wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR );
        r( wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR );
        r( wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR );
        r( wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR );
        r( wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR );
        r( wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR );
        r( wxAUI_DOCKART_BORDER_COLOUR );
        r( wxAUI_DOCKART_GRIPPER_COLOUR );
        r( wxAUI_DOCKART_CAPTION_FONT );
        r( wxAUI_DOCKART_GRADIENT_TYPE );
        r( wxAUI_GRADIENT_NONE );
        r( wxAUI_GRADIENT_VERTICAL );
        r( wxAUI_GRADIENT_HORIZONTAL );
        r( wxAUI_BUTTON_STATE_NORMAL );
        r( wxAUI_BUTTON_STATE_HOVER );
        r( wxAUI_BUTTON_STATE_PRESSED );
        r( wxAUI_BUTTON_STATE_DISABLED );
        r( wxAUI_BUTTON_STATE_HIDDEN );
        r( wxAUI_BUTTON_CLOSE );
        r( wxAUI_BUTTON_MAXIMIZE_RESTORE );
        r( wxAUI_BUTTON_MINIMIZE );
        r( wxAUI_BUTTON_PIN );
        r( wxAUI_BUTTON_OPTIONS );
        r( wxAUI_BUTTON_WINDOWLIST );
        r( wxAUI_BUTTON_LEFT );
        r( wxAUI_BUTTON_RIGHT );
        r( wxAUI_BUTTON_UP );
        r( wxAUI_BUTTON_DOWN );
        r( wxAUI_BUTTON_CUSTOM1 );
        r( wxAUI_BUTTON_CUSTOM2 );
        r( wxAUI_BUTTON_CUSTOM3 );
        r( wxAUI_INSERT_PANE );
        r( wxAUI_INSERT_ROW );
        r( wxAUI_INSERT_DOCK );
        r( wxAUI_NB_TOP );
        r( wxAUI_NB_LEFT );
        r( wxAUI_NB_RIGHT );
        r( wxAUI_NB_BOTTOM );
        r( wxAUI_NB_TAB_SPLIT );
        r( wxAUI_NB_TAB_MOVE );
        r( wxAUI_NB_TAB_EXTERNAL_MOVE );
#if WXPERL_W_VERSION_GE( 2, 8, 0 )
        r( wxAUI_NB_TAB_FIXED_WIDTH );
#endif
        r( wxAUI_NB_SCROLL_BUTTONS );
        r( wxAUI_NB_WINDOWLIST_BUTTON );
        r( wxAUI_NB_CLOSE_BUTTON );
        r( wxAUI_NB_CLOSE_ON_ACTIVE_TAB );
        r( wxAUI_NB_CLOSE_ON_ALL_TABS );
        r( wxAUI_NB_DEFAULT_STYLE );
        break;
    }
#undef r

    WX_PL_CONSTANT_CLEANUP();
}

wxPlConstants aui_module( &aui_constant );

%}
%file{-};

%name{Wx::AuiManagerEvent} class wxAuiManagerEvent
{
    wxAuiManagerEvent( wxEventType type = wxEVT_NULL );

##    void SetPane( wxAuiPaneInfto* p );
    void SetButton( int b );
##    danger! ownership
##    void SetDC( wxDC* pdc );
    wxAuiPaneInfo& GetPane()
         %code%{ RETVAL = THIS->GetPane(); %}
         %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
    int GetButton();
##    danger! ownership
##    wxDC* GetDC() { return dc; }
    
    void Veto( bool veto = true );
    bool GetVeto() const;
    void SetCanVeto( bool can_veto );
    bool CanVeto() const;
};

%name{Wx::AuiManager} class wxAuiManager
{
    wxAuiManager( wxWindow* managed_wnd = NULL,
                  unsigned int flags = wxAUI_MGR_DEFAULT );

%{
static void
wxAuiManager::CLONE()
  CODE:
    wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}

    ## // thread OK
    ~wxAuiManager()
        %code%{  wxPli_thread_sv_unregister( aTHX_ "Wx::AuiManager", THIS, ST(0) );
                 delete THIS;
               %};

    void UnInit();

    void SetFlags( unsigned int flags );
    unsigned int GetFlags() const;

    void SetManagedWindow( wxWindow* managed_wnd );
    wxWindow* GetManagedWindow() const;

##    void SetArtProvider(wxAuiDockArt* art_provider);
##    wxAuiDockArt* GetArtProvider() const;

    %name{GetPaneWindow} wxAuiPaneInfo& GetPane( wxWindow* window )
         %code%{ RETVAL = &THIS->GetPane( window ); %}
         %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
    %name{GetPaneString} wxAuiPaneInfo& GetPane( const wxString& name )
         %code%{ RETVAL = &THIS->GetPane( name ); %}
         %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};

    %name{AddPaneDefault} bool AddPane( wxWindow* window,
                                        const wxAuiPaneInfo& pane_info );
    %name{AddPanePoint} bool AddPane( wxWindow* window,
                                      const wxAuiPaneInfo& pane_info,
                                      const wxPoint& drop_pos );
    %name{AddPaneDirection} bool AddPane( wxWindow* window,
                                          int direction = wxLEFT,
                                          const wxString& caption = wxEmptyString );

    bool InsertPane( wxWindow* window,
                     const wxAuiPaneInfo& insert_location,
                     int insert_level = wxAUI_INSERT_PANE );

    bool DetachPane( wxWindow* window );
    
    void ClosePane( wxAuiPaneInfo& pane_info );
    void MaximizePane( wxAuiPaneInfo& pane_info );
    void RestorePane( wxAuiPaneInfo& pane_info );
    void RestoreMaximizedPane();

#if WXPERL_W_VERSION_GE( 2, 8, 0 )
    void SetDockSizeConstraint( double width_pct, double height_pct );
##    void GetDockSizeConstraint(double* width_pct, double* height_pct) const;
#endif

    wxString SavePaneInfo( wxAuiPaneInfo& pane );
    void LoadPaneInfo( wxString pane_part, wxAuiPaneInfo &pane );

    wxString SavePerspective();

    bool LoadPerspective( const wxString& perspective,
                          bool update = true );

    void Update();

    void ShowHint( const wxRect& rect );
    void HideHint();
};

%{

## DECLARE_OVERLOAD( wapi, Wx::AuiPaneInfo )

void
wxAuiManager::GetPane( ... )
  PPCODE:
    BEGIN_OVERLOAD()
        MATCH_REDISP( wxPliOvl_wwin, GetPaneWindow )
        MATCH_REDISP( wxPliOvl_s, GetPaneString )
    END_OVERLOAD( "Wx::AuiManager::GetPane" )

void
wxAuiManager::GetAllPanes()
  PPCODE:
    const wxAuiPaneInfoArray& panes = THIS->GetAllPanes();
    PUTBACK;
    wxPli_non_objarray_push( aTHX_ panes, "Wx::AuiPaneInfo" );
    SPAGAIN;

void
wxAuiManager::AddPane( ... )
  PPCODE:
    BEGIN_OVERLOAD()
        MATCH_REDISP_COUNT( wxPliOvl_wwin_wapi, AddPaneDefault, 2 )
        MATCH_REDISP( wxPliOvl_wwin_wapi_wpoi, AddPanePoint )
        MATCH_REDISP( wxPliOvl_wwin_n_s, AddPaneDirection )
    END_OVERLOAD( "Wx::AuiManager::AddPane" )

%}