1 #############################################################################
2 ## Name: ext/aui/XS/AuiManager.xsp
3 ## Purpose: XS++ for Wx::AuiManager
4 ## Author: Mattia Barbon
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 #############################################################################
13 #include <wx/aui/framemanager.h>
14 #include <wx/aui/auibook.h>
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
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
59 double aui_constant( const char* name, int arg )
62 // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
65 if( strEQ( name, #n ) ) \
68 WX_PL_CONSTANT_INIT();
75 r( wxAUI_DOCK_RIGHT );
76 r( wxAUI_DOCK_BOTTOM );
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 );
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 );
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 );
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 );
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 );
169 WX_PL_CONSTANT_CLEANUP();
172 wxPlConstants aui_module( &aui_constant );
177 %name{Wx::AuiManagerEvent} class wxAuiManagerEvent
179 wxAuiManagerEvent( wxEventType type = wxEVT_NULL );
181 ## void SetPane( wxAuiPaneInfto* p );
182 void SetButton( int b );
184 ## void SetDC( wxDC* pdc );
185 wxAuiPaneInfo& GetPane()
186 %code%{ RETVAL = THIS->GetPane(); %}
187 %cleanup%{ wxPli_object_set_deleteable( aTHX_ ST(0), false ); %};
190 ## wxDC* GetDC() { return dc; }
192 void Veto( bool veto = true );
193 bool GetVeto() const;
194 void SetCanVeto( bool can_veto );
195 bool CanVeto() const;
198 %name{Wx::AuiManager} class wxAuiManager
200 wxAuiManager( wxWindow* managed_wnd = NULL,
201 unsigned int flags = wxAUI_MGR_DEFAULT );
205 wxAuiManager::CLONE()
207 wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
212 %code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::AuiManager", THIS, ST(0) );
218 void SetFlags( unsigned int flags );
219 unsigned int GetFlags() const;
221 void SetManagedWindow( wxWindow* managed_wnd );
222 wxWindow* GetManagedWindow() const;
224 ## void SetArtProvider(wxAuiDockArt* art_provider);
225 ## wxAuiDockArt* GetArtProvider() const;
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 ); %};
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 );
243 bool InsertPane( wxWindow* window,
244 const wxAuiPaneInfo& insert_location,
245 int insert_level = wxAUI_INSERT_PANE );
247 bool DetachPane( wxWindow* window );
249 void ClosePane( wxAuiPaneInfo& pane_info );
250 void MaximizePane( wxAuiPaneInfo& pane_info );
251 void RestorePane( wxAuiPaneInfo& pane_info );
252 void RestoreMaximizedPane();
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;
259 wxString SavePaneInfo( wxAuiPaneInfo& pane );
260 void LoadPaneInfo( wxString pane_part, wxAuiPaneInfo &pane );
262 wxString SavePerspective();
264 bool LoadPerspective( const wxString& perspective,
265 bool update = true );
269 void ShowHint( const wxRect& rect );
275 ## DECLARE_OVERLOAD( wapi, Wx::AuiPaneInfo )
278 wxAuiManager::GetPane( ... )
281 MATCH_REDISP( wxPliOvl_wwin, GetPaneWindow )
282 MATCH_REDISP( wxPliOvl_s, GetPaneString )
283 END_OVERLOAD( "Wx::AuiManager::GetPane" )
286 wxAuiManager::GetAllPanes()
288 const wxAuiPaneInfoArray& panes = THIS->GetAllPanes();
290 wxPli_non_objarray_push( aTHX_ panes, "Wx::AuiPaneInfo" );
294 wxAuiManager::AddPane( ... )
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" )