The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#############################################################################
## Name:        ext/ribbon/XS/RibbonBar.xsp
## Purpose:     XS++ for Wx::RibbonBar
## 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_RIBBON

#include <wx/ribbon/bar.h>

%loadplugin{build::Wx::XSP::Overload};
%loadplugin{build::Wx::XSP::Event};

%name{Wx::RibbonBarEvent} class wxRibbonBarEvent : public %name{Wx::NotifyEvent} wxNotifyEvent
{
public:
    
    wxRibbonBarEvent(wxEventType command_type = wxEVT_NULL,
                     int win_id = 0,
                     wxRibbonPage* page = NULL);

    wxRibbonPage* GetPage();
    
    void SetPage(wxRibbonPage* page);
    wxEvent *Clone();
};

%Event{%EVT_RIBBONBAR_PAGE_CHANGED(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED};
%Event{%EVT_RIBBONBAR_PAGE_CHANGING(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGING};
%Event{%EVT_RIBBONBAR_TAB_MIDDLE_DOWN(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_TAB_MIDDLE_DOWN};
%Event{%EVT_RIBBONBAR_TAB_MIDDLE_UP(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_TAB_MIDDLE_UP};
%Event{%EVT_RIBBONBAR_TAB_RIGHT_DOWN(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_DOWN};
%Event{%EVT_RIBBONBAR_TAB_RIGHT_UP(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP};
%Event{%EVT_RIBBONBAR_TAB_LEFT_DCLICK(id, func)%}
      {wxEVT_COMMAND_RIBBONBAR_TAB_LEFT_DCLICK};      


%name{Wx::RibbonBar} class wxRibbonBar : public %name{Wx::RibbonControl} wxRibbonControl
{
public:
   
    %name{newDefault} wxRibbonBar() %Overload
        %postcall{% wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %};

    %name{newFull} wxRibbonBar(wxWindow* parent,
                wxWindowID id = wxID_ANY,
                const wxPoint& pos = wxDefaultPosition,
                const wxSize& size = wxDefaultSize,
                long style = wxRIBBON_BAR_DEFAULT_STYLE) %Overload
        %postcall{% wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %};
    
    bool Create(wxWindow* parent,
                wxWindowID id = wxID_ANY,
                const wxPoint& pos = wxDefaultPosition,
                const wxSize& size = wxDefaultSize,
                long style = wxRIBBON_BAR_DEFAULT_STYLE);

    void SetTabCtrlMargins(int left, int right);

    void SetArtProvider(wxRibbonArtProvider* art);

    %name{SetActivePageByIndex} bool SetActivePage(size_t page) %Overload;
    
    %name{SetActivePageByPage} bool SetActivePage(wxRibbonPage* page) %Overload;
    
    int GetActivePage() const;
    
    wxRibbonPage* GetPage(int n);
    
    bool DismissExpandedPanel();

    void ShowPanels(bool show = true);

    void HidePanels();

    bool ArePanelsShown() const;
    
    virtual bool Realize();
    
    void SetWindowStyleFlag(long style);
    long GetWindowStyleFlag() const;
    virtual bool HasMultiplePages() const;

#if WXPERL_W_VERSION_GE( 2, 9, 4 )
    size_t GetPageCount() const;
    void DeletePage(size_t n);
    void ClearPages();
#endif    

};

#endif