diff --git a/samples/widgets/Makefile.in b/samples/widgets/Makefile.in index d4d7647218..e51b00adce 100644 --- a/samples/widgets/Makefile.in +++ b/samples/widgets/Makefile.in @@ -70,6 +70,7 @@ WIDGETS_OBJECTS = \ widgets_filepicker.o \ widgets_fontpicker.o \ widgets_gauge.o \ + widgets_headerctrl.o \ widgets_hyperlnk.o \ widgets_itemcontainer.o \ widgets_listbox.o \ @@ -265,6 +266,9 @@ widgets_fontpicker.o: $(srcdir)/fontpicker.cpp widgets_gauge.o: $(srcdir)/gauge.cpp $(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/gauge.cpp +widgets_headerctrl.o: $(srcdir)/headerctrl.cpp + $(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/headerctrl.cpp + widgets_hyperlnk.o: $(srcdir)/hyperlnk.cpp $(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/hyperlnk.cpp diff --git a/samples/widgets/headerctrl.cpp b/samples/widgets/headerctrl.cpp new file mode 100644 index 0000000000..92979e49a0 --- /dev/null +++ b/samples/widgets/headerctrl.cpp @@ -0,0 +1,114 @@ +///////////////////////////////////////////////////////////////////////////// +// Program: wxWidgets Widgets Sample +// Name: headerctrl.cpp +// Purpose: Part of the widgets sample showing wxHeaderCtrl +// Author: Vadim Zeitlin +// Created: 2016-04-17 +// Copyright: (c) 2016 wxWindows team +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_HEADERCTRL + +// for all others, include the necessary headers +#ifndef WX_PRECOMP + #include "wx/button.h" + #include "wx/sizer.h" + #include "wx/stattext.h" +#endif + +#include "wx/headerctrl.h" + +#include "widgets.h" + +#include "icons/header.xpm" + +// ---------------------------------------------------------------------------- +// HeaderCtrlWidgetsPage +// ---------------------------------------------------------------------------- + +class HeaderCtrlWidgetsPage : public WidgetsPage +{ +public: + HeaderCtrlWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist) + : WidgetsPage(book, imaglist, header_xpm) + { + m_header = NULL; + m_sizerHeader = NULL; + } + + virtual wxWindow *GetWidget() const wxOVERRIDE { return m_header; } + virtual void RecreateWidget() wxOVERRIDE; + + // lazy creation of the content + virtual void CreateContent() wxOVERRIDE; + +protected: + // the control itself and the sizer it is in + wxHeaderCtrlSimple *m_header; + wxSizer *m_sizerHeader; + +private: + DECLARE_WIDGETS_PAGE(HeaderCtrlWidgetsPage) +}; + +// ============================================================================ +// implementation +// ============================================================================ + +#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) + #define HEADER_CTRL_FAMILY NATIVE_CTRLS +#else + #define HEADER_CTRL_FAMILY GENERIC_CTRLS +#endif + +IMPLEMENT_WIDGETS_PAGE(HeaderCtrlWidgetsPage, + wxT("Header"), HEADER_CTRL_FAMILY); + +void HeaderCtrlWidgetsPage::CreateContent() +{ + m_sizerHeader = new wxStaticBoxSizer(wxVERTICAL, this, "Header"); + RecreateWidget(); + + wxSizer* const sizerTop = new wxBoxSizer(wxHORIZONTAL); + sizerTop->Add(m_sizerHeader, wxSizerFlags(1).Expand().DoubleBorder()); + + SetSizer(sizerTop); +} + +void HeaderCtrlWidgetsPage::RecreateWidget() +{ + m_sizerHeader->Clear(true /* delete windows */); + + int flags = GetAttrs().m_defaultFlags; + + flags |= wxHD_DEFAULT_STYLE; + + m_header = new wxHeaderCtrlSimple(this, wxID_ANY, + wxDefaultPosition, wxDefaultSize, + flags); + m_header->AppendColumn(wxHeaderColumnSimple("First", 100)); + m_header->AppendColumn(wxHeaderColumnSimple("Second", 200)); + + m_sizerHeader->AddStretchSpacer(); + m_sizerHeader->Add(m_header, wxSizerFlags().Expand()); + m_sizerHeader->AddStretchSpacer(); + m_sizerHeader->Layout(); +} + +#endif // wxUSE_HEADERCTRL diff --git a/samples/widgets/icons/header.xpm b/samples/widgets/icons/header.xpm new file mode 100644 index 0000000000..ce95e30dff --- /dev/null +++ b/samples/widgets/icons/header.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static const char *const header_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 16 1", +" c Gray0", +". c #808000", +"X c #000080", +"o c #808080", +"O c #000000", +"+ c #808000", +"@ c #000080", +"# c none", +"$ c #808080", +"% c Red", +"& c Green", +"* c Yellow", +"= c Blue", +"- c Magenta", +"; c Cyan", +": c Gray100", +/* pixels */ +" ", +" ############################## ", +" #&&&&&&&&&&&&&&&&&&&&&&&&&&&&# ", +" #&&&&&&&&&&&&&&&&&&&&&&&&&&&&# ", +" #&&&&&&&&&&&&&&&&&&&&&&&&&&&&# ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" ############################## ", +" " +}; diff --git a/samples/widgets/makefile.bcc b/samples/widgets/makefile.bcc index 991ea88449..03fdfd2a7e 100644 --- a/samples/widgets/makefile.bcc +++ b/samples/widgets/makefile.bcc @@ -51,6 +51,7 @@ WIDGETS_OBJECTS = \ $(OBJS)\widgets_filepicker.obj \ $(OBJS)\widgets_fontpicker.obj \ $(OBJS)\widgets_gauge.obj \ + $(OBJS)\widgets_headerctrl.obj \ $(OBJS)\widgets_hyperlnk.obj \ $(OBJS)\widgets_itemcontainer.obj \ $(OBJS)\widgets_listbox.obj \ @@ -310,6 +311,9 @@ $(OBJS)\widgets_fontpicker.obj: .\fontpicker.cpp $(OBJS)\widgets_gauge.obj: .\gauge.cpp $(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) .\gauge.cpp +$(OBJS)\widgets_headerctrl.obj: .\headerctrl.cpp + $(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) .\headerctrl.cpp + $(OBJS)\widgets_hyperlnk.obj: .\hyperlnk.cpp $(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) .\hyperlnk.cpp diff --git a/samples/widgets/makefile.gcc b/samples/widgets/makefile.gcc index 3a0009ae8e..8f4c99d4ea 100644 --- a/samples/widgets/makefile.gcc +++ b/samples/widgets/makefile.gcc @@ -44,6 +44,7 @@ WIDGETS_OBJECTS = \ $(OBJS)\widgets_filepicker.o \ $(OBJS)\widgets_fontpicker.o \ $(OBJS)\widgets_gauge.o \ + $(OBJS)\widgets_headerctrl.o \ $(OBJS)\widgets_hyperlnk.o \ $(OBJS)\widgets_itemcontainer.o \ $(OBJS)\widgets_listbox.o \ @@ -299,6 +300,9 @@ $(OBJS)\widgets_fontpicker.o: ./fontpicker.cpp $(OBJS)\widgets_gauge.o: ./gauge.cpp $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\widgets_headerctrl.o: ./headerctrl.cpp + $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\widgets_hyperlnk.o: ./hyperlnk.cpp $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< diff --git a/samples/widgets/makefile.unx b/samples/widgets/makefile.unx index 6ec2d07a6e..08b3bfe112 100644 --- a/samples/widgets/makefile.unx +++ b/samples/widgets/makefile.unx @@ -68,6 +68,7 @@ WIDGETS_OBJECTS = \ widgets_filepicker.o \ widgets_fontpicker.o \ widgets_gauge.o \ + widgets_headerctrl.o \ widgets_hyperlnk.o \ widgets_itemcontainer.o \ widgets_listbox.o \ @@ -165,6 +166,9 @@ widgets_fontpicker.o: ./fontpicker.cpp widgets_gauge.o: ./gauge.cpp $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< +widgets_headerctrl.o: ./headerctrl.cpp + $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< + widgets_hyperlnk.o: ./hyperlnk.cpp $(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $< diff --git a/samples/widgets/makefile.vc b/samples/widgets/makefile.vc index aaa243fbae..7670f32252 100644 --- a/samples/widgets/makefile.vc +++ b/samples/widgets/makefile.vc @@ -46,6 +46,7 @@ WIDGETS_OBJECTS = \ $(OBJS)\widgets_filepicker.obj \ $(OBJS)\widgets_fontpicker.obj \ $(OBJS)\widgets_gauge.obj \ + $(OBJS)\widgets_headerctrl.obj \ $(OBJS)\widgets_hyperlnk.obj \ $(OBJS)\widgets_itemcontainer.obj \ $(OBJS)\widgets_listbox.obj \ @@ -433,6 +434,9 @@ $(OBJS)\widgets_fontpicker.obj: .\fontpicker.cpp $(OBJS)\widgets_gauge.obj: .\gauge.cpp $(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) .\gauge.cpp +$(OBJS)\widgets_headerctrl.obj: .\headerctrl.cpp + $(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) .\headerctrl.cpp + $(OBJS)\widgets_hyperlnk.obj: .\hyperlnk.cpp $(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) .\hyperlnk.cpp diff --git a/samples/widgets/widgets.bkl b/samples/widgets/widgets.bkl index 41dc5907e2..74536f79d7 100644 --- a/samples/widgets/widgets.bkl +++ b/samples/widgets/widgets.bkl @@ -37,6 +37,7 @@ filepicker.cpp fontpicker.cpp gauge.cpp + headerctrl.cpp hyperlnk.cpp itemcontainer.cpp listbox.cpp diff --git a/samples/widgets/widgets_vc7.vcproj b/samples/widgets/widgets_vc7.vcproj index 92eb7877da..f721fb2ba1 100644 --- a/samples/widgets/widgets_vc7.vcproj +++ b/samples/widgets/widgets_vc7.vcproj @@ -328,6 +328,9 @@ + + diff --git a/samples/widgets/widgets_vc8.vcproj b/samples/widgets/widgets_vc8.vcproj index 93c0a27227..0eaddea77e 100644 --- a/samples/widgets/widgets_vc8.vcproj +++ b/samples/widgets/widgets_vc8.vcproj @@ -866,6 +866,10 @@ RelativePath=".\gauge.cpp" > + + diff --git a/samples/widgets/widgets_vc9.vcproj b/samples/widgets/widgets_vc9.vcproj index dac1d5654c..d3743d808e 100644 --- a/samples/widgets/widgets_vc9.vcproj +++ b/samples/widgets/widgets_vc9.vcproj @@ -838,6 +838,10 @@ RelativePath=".\gauge.cpp" > + +