Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / aui / XS / AuiManager.xsp
1 #############################################################################
2 ## Name:        ext/aui/XS/AuiManager.xsp
3 ## Purpose:     XS++ for Wx::AuiManager
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     11/11/2006
7 ## RCS-ID:      $Id: AuiManager.xsp 2556 2009-05-11 10:18:47Z mbarbon $
8 ## Copyright:   (c) 2006-2009 Mattia Barbon
9 ## Licence:     This program is free software; you can redistribute it and/or
10 ##              modify it under the same terms as Perl itself
11 #############################################################################
12
13 #include <wx/aui/framemanager.h>
14 #include <wx/aui/auibook.h>
15 #include "cpp/aui.h"
16
17 %module{Wx};
18 %file{cpp/aui.h};
19 %{
20
21 #if WXPERL_W_VERSION_GE( 2, 8, 0 )
22 #define wxAUI_ART_SASH_SIZE                         wxAUI_DOCKART_SASH_SIZE
23 #define wxAUI_ART_CAPTION_SIZE                      wxAUI_DOCKART_CAPTION_SIZE
24 #define wxAUI_ART_GRIPPER_SIZE                      wxAUI_DOCKART_GRIPPER_SIZE
25 #define wxAUI_ART_PANE_BORDER_SIZE                  wxAUI_DOCKART_PANE_BORDER_SIZE
26 #define wxAUI_ART_PANE_BUTTON_SIZE                  wxAUI_DOCKART_PANE_BUTTON_SIZE
27 #define wxAUI_ART_BACKGROUND_COLOUR                 wxAUI_DOCKART_BACKGROUND_COLOUR
28 #define wxAUI_ART_SASH_COLOUR                       wxAUI_DOCKART_SASH_COLOUR
29 #define wxAUI_ART_ACTIVE_CAPTION_COLOUR             wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR
30 #define wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR    wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR
31 #define wxAUI_ART_INACTIVE_CAPTION_COLOUR           wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR
32 #define wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR  wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR
33 #define wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR        wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR
34 #define wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR      wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR
35 #define wxAUI_ART_BORDER_COLOUR                     wxAUI_DOCKART_BORDER_COLOUR
36 #define wxAUI_ART_GRIPPER_COLOUR                    wxAUI_DOCKART_GRIPPER_COLOUR
37 #define wxAUI_ART_CAPTION_FONT                      wxAUI_DOCKART_CAPTION_FONT
38 #define wxAUI_ART_GRADIENT_TYPE                     wxAUI_DOCKART_GRADIENT_TYPE
39 #else
40 #define wxAUI_DOCKART_SASH_SIZE                         wxAUI_ART_SASH_SIZE
41 #define wxAUI_DOCKART_CAPTION_SIZE                      wxAUI_ART_CAPTION_SIZE
42 #define wxAUI_DOCKART_GRIPPER_SIZE                      wxAUI_ART_GRIPPER_SIZE
43 #define wxAUI_DOCKART_PANE_BORDER_SIZE                  wxAUI_ART_PANE_BORDER_SIZE
44 #define wxAUI_DOCKART_PANE_BUTTON_SIZE                  wxAUI_ART_PANE_BUTTON_SIZE
45 #define wxAUI_DOCKART_BACKGROUND_COLOUR                 wxAUI_ART_BACKGROUND_COLOUR
46 #define wxAUI_DOCKART_SASH_COLOUR                       wxAUI_ART_SASH_COLOUR
47 #define wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR             wxAUI_ART_ACTIVE_CAPTION_COLOUR
48 #define wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR    wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR
49 #define wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR           wxAUI_ART_INACTIVE_CAPTION_COLOUR
50 #define wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR  wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR
51 #define wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR        wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR
52 #define wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR      wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR
53 #define wxAUI_DOCKART_BORDER_COLOUR                     wxAUI_ART_BORDER_COLOUR
54 #define wxAUI_DOCKART_GRIPPER_COLOUR                    wxAUI_ART_GRIPPER_COLOUR
55 #define wxAUI_DOCKART_CAPTION_FONT                      wxAUI_ART_CAPTION_FONT
56 #define wxAUI_DOCKART_GRADIENT_TYPE                     wxAUI_ART_GRADIENT_TYPE                     
57 #endif
58
59 double aui_constant( const char* name, int arg )
60 {
61     // !package: Wx
62     // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
63     // !tag: aui
64 #define r( n ) \
65     if( strEQ( name, #n ) ) \
66         return n;
67
68     WX_PL_CONSTANT_INIT();
69
70     switch( fl )
71     {
72     case 'A':
73         r( wxAUI_DOCK_NONE );
74         r( wxAUI_DOCK_TOP );
75         r( wxAUI_DOCK_RIGHT );
76         r( wxAUI_DOCK_BOTTOM );
77         r( wxAUI_DOCK_LEFT );
78         r( wxAUI_DOCK_CENTER );
79         r( wxAUI_DOCK_CENTRE );
80         r( wxAUI_MGR_ALLOW_FLOATING );
81         r( wxAUI_MGR_ALLOW_ACTIVE_PANE );
82         r( wxAUI_MGR_TRANSPARENT_DRAG );
83         r( wxAUI_MGR_TRANSPARENT_HINT );
84         r( wxAUI_MGR_VENETIAN_BLINDS_HINT );
85         r( wxAUI_MGR_RECTANGLE_HINT );
86         r( wxAUI_MGR_HINT_FADE );
87         r( wxAUI_MGR_NO_VENETIAN_BLINDS_FADE );
88         r( wxAUI_MGR_DEFAULT );
89         // 2.7.x
90         r( wxAUI_ART_SASH_SIZE );
91         r( wxAUI_ART_CAPTION_SIZE );
92         r( wxAUI_ART_GRIPPER_SIZE );
93         r( wxAUI_ART_PANE_BORDER_SIZE );
94         r( wxAUI_ART_PANE_BUTTON_SIZE );
95         r( wxAUI_ART_BACKGROUND_COLOUR );
96         r( wxAUI_ART_SASH_COLOUR );
97         r( wxAUI_ART_ACTIVE_CAPTION_COLOUR );
98         r( wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR );
99         r( wxAUI_ART_INACTIVE_CAPTION_COLOUR );
100         r( wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR );
101         r( wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR );
102         r( wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR );
103         r( wxAUI_ART_BORDER_COLOUR );
104         r( wxAUI_ART_GRIPPER_COLOUR );
105         r( wxAUI_ART_CAPTION_FONT );
106         r( wxAUI_ART_GRADIENT_TYPE );
107         // 2.8.x
108         r( wxAUI_DOCKART_SASH_SIZE );
109         r( wxAUI_DOCKART_CAPTION_SIZE );
110         r( wxAUI_DOCKART_GRIPPER_SIZE );
111         r( wxAUI_DOCKART_PANE_BORDER_SIZE );
112         r( wxAUI_DOCKART_PANE_BUTTON_SIZE );
113         r( wxAUI_DOCKART_BACKGROUND_COLOUR );
114         r( wxAUI_DOCKART_SASH_COLOUR );
115         r( wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR );
116         r( wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR );
117         r( wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR );
118         r( wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR );
119         r( wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR );
120         r( wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR );
121         r( wxAUI_DOCKART_BORDER_COLOUR );
122         r( wxAUI_DOCKART_GRIPPER_COLOUR );
123         r( wxAUI_DOCKART_CAPTION_FONT );
124         r( wxAUI_DOCKART_GRADIENT_TYPE );
125         r( wxAUI_GRADIENT_NONE );
126         r( wxAUI_GRADIENT_VERTICAL );
127         r( wxAUI_GRADIENT_HORIZONTAL );
128         r( wxAUI_BUTTON_STATE_NORMAL );
129         r( wxAUI_BUTTON_STATE_HOVER );
130         r( wxAUI_BUTTON_STATE_PRESSED );
131         r( wxAUI_BUTTON_STATE_DISABLED );
132         r( wxAUI_BUTTON_STATE_HIDDEN );
133         r( wxAUI_BUTTON_CLOSE );
134         r( wxAUI_BUTTON_MAXIMIZE_RESTORE );
135         r( wxAUI_BUTTON_MINIMIZE );
136         r( wxAUI_BUTTON_PIN );
137         r( wxAUI_BUTTON_OPTIONS );
138         r( wxAUI_BUTTON_WINDOWLIST );
139         r( wxAUI_BUTTON_LEFT );
140         r( wxAUI_BUTTON_RIGHT );
141         r( wxAUI_BUTTON_UP );
142         r( wxAUI_BUTTON_DOWN );
143         r( wxAUI_BUTTON_CUSTOM1 );
144         r( wxAUI_BUTTON_CUSTOM2 );
145         r( wxAUI_BUTTON_CUSTOM3 );
146         r( wxAUI_INSERT_PANE );
147         r( wxAUI_INSERT_ROW );
148         r( wxAUI_INSERT_DOCK );
149         r( wxAUI_NB_TOP );
150         r( wxAUI_NB_LEFT );
151         r( wxAUI_NB_RIGHT );
152         r( wxAUI_NB_BOTTOM );
153         r( wxAUI_NB_TAB_SPLIT );
154         r( wxAUI_NB_TAB_MOVE );
155         r( wxAUI_NB_TAB_EXTERNAL_MOVE );
156 #if WXPERL_W_VERSION_GE( 2, 8, 0 )
157         r( wxAUI_NB_TAB_FIXED_WIDTH );
158 #endif
159         r( wxAUI_NB_SCROLL_BUTTONS );
160         r( wxAUI_NB_WINDOWLIST_BUTTON );
161         r( wxAUI_NB_CLOSE_BUTTON );
162         r( wxAUI_NB_CLOSE_ON_ACTIVE_TAB );
163         r( wxAUI_NB_CLOSE_ON_ALL_TABS );
164         r( wxAUI_NB_DEFAULT_STYLE );
165         break;
166     }
167 #undef r
168
169     WX_PL_CONSTANT_CLEANUP();
170 }
171
172 wxPlConstants aui_module( &aui_constant );
173
174 %}
175 %file{-};
176
177 %name{Wx::AuiManagerEvent} class wxAuiManagerEvent
178 {
179     wxAuiManagerEvent( wxEventType type = wxEVT_NULL );
180
181 ##    void SetPane( wxAuiPaneInfto* p );
182     void SetButton( int b );
183 ##    danger! ownership
184 ##    void SetDC( wxDC* pdc );
185     wxAuiPaneInfo& GetPane()
186          %code%{ RETVAL = THIS->GetPane(); %}
187          %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
188     int GetButton();
189 ##    danger! ownership
190 ##    wxDC* GetDC() { return dc; }
191     
192     void Veto( bool veto = true );
193     bool GetVeto() const;
194     void SetCanVeto( bool can_veto );
195     bool CanVeto() const;
196 };
197
198 %name{Wx::AuiManager} class wxAuiManager
199 {
200     wxAuiManager( wxWindow* managed_wnd = NULL,
201                   unsigned int flags = wxAUI_MGR_DEFAULT );
202
203 %{
204 static void
205 wxAuiManager::CLONE()
206   CODE:
207     wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
208 %}
209
210     ## // thread OK
211     ~wxAuiManager()
212         %code%{  wxPli_thread_sv_unregister( aTHX_ "Wx::AuiManager", THIS, ST(0) );
213                  delete THIS;
214                %};
215
216     void UnInit();
217
218     void SetFlags( unsigned int flags );
219     unsigned int GetFlags() const;
220
221     void SetManagedWindow( wxWindow* managed_wnd );
222     wxWindow* GetManagedWindow() const;
223
224 ##    void SetArtProvider(wxAuiDockArt* art_provider);
225 ##    wxAuiDockArt* GetArtProvider() const;
226
227     %name{GetPaneWindow} wxAuiPaneInfo& GetPane( wxWindow* window )
228          %code%{ RETVAL = &THIS->GetPane( window ); %}
229          %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
230     %name{GetPaneString} wxAuiPaneInfo& GetPane( const wxString& name )
231          %code%{ RETVAL = &THIS->GetPane( name ); %}
232          %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
233
234     %name{AddPaneDefault} bool AddPane( wxWindow* window,
235                                         const wxAuiPaneInfo& pane_info );
236     %name{AddPanePoint} bool AddPane( wxWindow* window,
237                                       const wxAuiPaneInfo& pane_info,
238                                       const wxPoint& drop_pos );
239     %name{AddPaneDirection} bool AddPane( wxWindow* window,
240                                           int direction = wxLEFT,
241                                           const wxString& caption = wxEmptyString );
242
243     bool InsertPane( wxWindow* window,
244                      const wxAuiPaneInfo& insert_location,
245                      int insert_level = wxAUI_INSERT_PANE );
246
247     bool DetachPane( wxWindow* window );
248     
249     void ClosePane( wxAuiPaneInfo& pane_info );
250     void MaximizePane( wxAuiPaneInfo& pane_info );
251     void RestorePane( wxAuiPaneInfo& pane_info );
252     void RestoreMaximizedPane();
253
254 #if WXPERL_W_VERSION_GE( 2, 8, 0 )
255     void SetDockSizeConstraint( double width_pct, double height_pct );
256 ##    void GetDockSizeConstraint(double* width_pct, double* height_pct) const;
257 #endif
258
259     wxString SavePaneInfo( wxAuiPaneInfo& pane );
260     void LoadPaneInfo( wxString pane_part, wxAuiPaneInfo &pane );
261
262     wxString SavePerspective();
263
264     bool LoadPerspective( const wxString& perspective,
265                           bool update = true );
266
267     void Update();
268
269     void ShowHint( const wxRect& rect );
270     void HideHint();
271 };
272
273 %{
274
275 ## DECLARE_OVERLOAD( wapi, Wx::AuiPaneInfo )
276
277 void
278 wxAuiManager::GetPane( ... )
279   PPCODE:
280     BEGIN_OVERLOAD()
281         MATCH_REDISP( wxPliOvl_wwin, GetPaneWindow )
282         MATCH_REDISP( wxPliOvl_s, GetPaneString )
283     END_OVERLOAD( "Wx::AuiManager::GetPane" )
284
285 void
286 wxAuiManager::GetAllPanes()
287   PPCODE:
288     const wxAuiPaneInfoArray& panes = THIS->GetAllPanes();
289     PUTBACK;
290     wxPli_non_objarray_push( aTHX_ panes, "Wx::AuiPaneInfo" );
291     SPAGAIN;
292
293 void
294 wxAuiManager::AddPane( ... )
295   PPCODE:
296     BEGIN_OVERLOAD()
297         MATCH_REDISP( wxPliOvl_wwin_wapi, AddPaneDefault )
298         MATCH_REDISP( wxPliOvl_wwin_wapi_wpoi, AddPanePoint )
299         MATCH_REDISP( wxPliOvl_wwin_n_s, AddPaneDirection )
300     END_OVERLOAD( "Wx::AuiManager::AddPane" )
301
302 %}