#############################################################################
## Name: ext/propgrid/XS/PGEditor.xsp
## Purpose: XS++ for Wx::PGEditor
## Author: Mark Dootson
## Modified by:
## Created: 04/03/2012
## RCS-ID: $Id: $
## Copyright: (c) 2012 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
%module{Wx};
#if WXPERL_W_VERSION_GE( 2, 9, 3 ) && wxUSE_PROPGRID
%loadplugin{build::Wx::XSP::Overload};
%name{Wx::PGWindowList} class wxPGWindowList
{
%{
static void
wxPGWindowList::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
%name{newDefault} wxPGWindowList() %Overload;
%name{newOneWindow} wxPGWindowList( wxWindow* a ) %Overload;
%name{newTwoWindows} wxPGWindowList( wxWindow* a, wxWindow* b ) %Overload;
~wxPGWindowList()
%code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::PGWindowList", THIS, ST(0) );
delete THIS;
%};
void SetSecondary( wxWindow* secondary );
};
%name{Wx::PGMultiButton} class wxPGMultiButton : public %name{Wx::Window} wxWindow
{
public:
wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz )
%postcall{% wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %};
%name{AddString} void Add( const wxString& label, int id = -2 ) %Overload;
%name{AddBitmap} void Add( const wxBitmap& bitmap, int id = -2 ) %Overload;
void Finalize( wxPropertyGrid* propGrid, const wxPoint& pos );
wxWindow* GetButton( unsigned int i );
int GetButtonId( unsigned int i ) const;
unsigned int GetCount();
wxSize GetPrimarySize() const;
};
%name{Wx::PGEditor} class wxPGEditor : public %name{Wx::Object} wxObject
{
%{
static void
wxPGEditor::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
~wxPGEditor()
%code%{ wxPli_thread_sv_unregister( aTHX_ wxPli_get_class( aTHX_ ST(0) ), THIS, ST(0) );
if( wxPli_object_is_deleteable( aTHX_ ST(0) ) )
delete THIS;
%};
virtual wxString GetName() const; /* %Virtual; */
virtual wxPGWindowList CreateControls( wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size ) const; /* = 0; %Virtual{pure}; */
/** Loads value from property to the control. */
virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const; /* = 0 %Virtual{pure}; */
virtual void DrawValue( wxDC& dc, const wxRect& rect,
wxPGProperty* property, const wxString& text ) const; /* %Virtual; */
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, wxWindow* wnd_primary, wxEvent& event ) const; /* = 0 %Virtual{pure}; */
virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual void SetValueToUnspecified( wxPGProperty* property,
wxWindow* ctrl ) const; /* = 0 %Virtual{pure}; */
virtual void SetControlAppearance( wxPropertyGrid* pg,
wxPGProperty* property,
wxWindow* ctrl,
const wxPGCell& appearance,
const wxPGCell& oldAppearance,
bool unspecified ) const; /* %Virtual; */
/** Sets control's value specifically from string. */
virtual void SetControlStringValue( wxPGProperty* property,
wxWindow* ctrl, const wxString& txt ) const; /* %Virtual; */
/** Sets control's value specifically from int (applies to choice etc.). */
virtual void SetControlIntValue( wxPGProperty* property,
wxWindow* ctrl, int value ) const; /* %Virtual; */
virtual int InsertItem( wxWindow* ctrl, const wxString& label, int index ) const; /* %Virtual; */
virtual void DeleteItem( wxWindow* ctrl, int index ) const; /* %Virtual; */
virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; /* %Virtual; */
virtual bool CanContainCustomImage() const; /* %Virtual; */
};
%name{Wx::PGEditorDialogAdapter} class wxPGEditorDialogAdapter : public %name{Wx::Object} wxObject
{
%{
static void
wxPGEditorDialogAdapter::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
%}
public:
~wxPGEditorDialogAdapter()
%code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::PGEditorDialogAdapter", THIS, ST(0) );
delete THIS;
%};
bool ShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property );
virtual bool DoShowDialog( wxPropertyGrid* propGrid, wxPGProperty* property ); /* = 0 %Virtual{pure}; */
void SetValue( wxVariant value );
wxVariant& GetValue();
};
%name{Wx::PGTextCtrlEditor} class wxPGTextCtrlEditor : public %name{Wx::PGEditor} wxPGEditor
{
public:
wxPGTextCtrlEditor();
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
virtual void UpdateControl( wxPGProperty* property,
wxWindow* ctrl ); /* %Virtual; */
virtual bool OnEvent( wxPropertyGrid* propgrid,
wxPGProperty* property,
wxWindow* primaryCtrl,
wxEvent& event ) const; /* %Virtual; */
virtual bool GetValueFromControl( wxVariant& variant,
wxPGProperty* property,
wxWindow* ctrl ); /* %Virtual; */
virtual wxString GetName(); /* %Virtual; */
//virtual wxPGCellRenderer* GetCellRenderer() const;
virtual void SetControlStringValue( wxPGProperty* property,
wxWindow* ctrl,
const wxString& txt ); /* %Virtual; */
virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ); /* %Virtual; */
// Provided so that, for example, ComboBox editor can use the same code
// (multiple inheritance would get way too messy).
static bool OnTextCtrlEvent( wxPropertyGrid* propgrid,
wxPGProperty* property,
wxWindow* ctrl,
wxEvent& event );
static bool GetTextCtrlValueFromControl( wxVariant& variant,
wxPGProperty* property,
wxWindow* ctrl );
};
%name{Wx::PGChoiceEditor} class wxPGChoiceEditor : public %name{Wx::PGEditor} wxPGEditor
{
public:
wxPGChoiceEditor();
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
virtual void UpdateControl( wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual bool OnEvent( wxPropertyGrid* propgrid,
wxPGProperty* property,
wxWindow* primaryCtrl,
wxEvent& event ) const; /* %Virtual; */
virtual bool GetValueFromControl( wxVariant& variant,
wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual void SetValueToUnspecified( wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual wxString GetName() const; /* %Virtual; */
virtual void SetControlIntValue( wxPGProperty* property,
wxWindow* ctrl,
int value ) const; /* %Virtual; */
virtual void SetControlStringValue( wxPGProperty* property,
wxWindow* ctrl,
const wxString& txt ) const; /* %Virtual; */
virtual int InsertItem( wxWindow* ctrl,
const wxString& label,
int index ) const; /* %Virtual; */
virtual void DeleteItem( wxWindow* ctrl, int index ) const; /* %Virtual; */
virtual bool CanContainCustomImage() const; /* %Virtual; */
// CreateControls calls this with CB_READONLY in extraStyle
wxWindow* CreateControlsBase( wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& sz,
long extraStyle ) const;
};
%name{Wx::PGComboBoxEditor} class wxPGComboBoxEditor : public %name{Wx::PGChoiceEditor} wxPGChoiceEditor
{
public:
wxPGComboBoxEditor();
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
virtual wxString GetName() const; /* %Virtual; */
virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const; /* %Virtual; */
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* ctrl, wxEvent& event ) const; /* %Virtual; */
virtual bool GetValueFromControl( wxVariant& variant,
wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const; /* %Virtual; */
};
%name{Wx::PGChoiceAndButtonEditor} class wxPGChoiceAndButtonEditor : public %name{Wx::PGChoiceEditor} wxPGChoiceEditor
{
public:
wxPGChoiceAndButtonEditor();
virtual wxString GetName() const; /* %Virtual; */
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
};
%name{Wx::PGTextCtrlAndButtonEditor} class wxPGTextCtrlAndButtonEditor : public %name{Wx::PGTextCtrlEditor} wxPGTextCtrlEditor
{
public:
wxPGTextCtrlAndButtonEditor();
virtual wxString GetName() const; /* %Virtual; */
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
};
#if wxPG_INCLUDE_CHECKBOX
//
// Use custom check box code instead of native control
// for cleaner (ie. more integrated) look.
//
%name{Wx::PGCheckBoxEditor} class wxPGCheckBoxEditor : public %name{Wx::PGEditor} wxPGEditor
{
public:
wxPGCheckBoxEditor();
virtual wxString GetName() const; /* %Virtual; */
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const; /* %Virtual; */
virtual void UpdateControl( wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual bool OnEvent( wxPropertyGrid* propgrid,
wxPGProperty* property,
wxWindow* primaryCtrl,
wxEvent& event ) const; /* %Virtual; */
virtual bool GetValueFromControl( wxVariant& variant,
wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual void SetValueToUnspecified( wxPGProperty* property,
wxWindow* ctrl ) const; /* %Virtual; */
virtual void DrawValue( wxDC& dc,
const wxRect& rect,
wxPGProperty* property,
const wxString& text ) const; /* %Virtual; */
//virtual wxPGCellRenderer* GetCellRenderer() const;
virtual void SetControlIntValue( wxPGProperty* property,
wxWindow* ctrl,
int value ) const; /* %Virtual; */
};
#endif
#if wxUSE_SPINBTN
#include "wx/spinbutt.h"
#include "wx/propgrid/editors.h"
%name{Wx::PGSpinCtrlEditor} class wxPGSpinCtrlEditor : public %name{Wx::PGTextCtrlEditor} wxPGTextCtrlEditor
{
public:
wxPGSpinCtrlEditor();
wxString GetName() const;
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const;
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd, wxEvent& event ) const;
};
#endif // wxUSE_SPINBTN
#if wxUSE_DATEPICKCTRL
%name{Wx::PGDatePickerCtrlEditor} class wxPGDatePickerCtrlEditor : public %name{Wx::PGEditor} wxPGEditor
{
public:
wxString GetName() const;
virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const;
virtual void UpdateControl( wxPGProperty* property, wxWindow* wnd ) const;
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd, wxEvent& event ) const;
virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* wnd ) const;
virtual void SetValueToUnspecified( wxPGProperty* property, wxWindow* wnd ) const;
};
#endif // wxUSE_DATEPICKCTRL
#endif