#############################################################################
## 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" )
%}