X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d54b227fdff0f0e9750e3ed3f185e6f7f631baf1..931d6a47c32a5b4c283243cb553ce71ee2b535d5:/include/wx/htmllbox.h diff --git a/include/wx/htmllbox.h b/include/wx/htmllbox.h index f53d89a40c..27c3a36c30 100644 --- a/include/wx/htmllbox.h +++ b/include/wx/htmllbox.h @@ -4,7 +4,6 @@ // Author: Vadim Zeitlin // Modified by: // Created: 31.05.03 -// RCS-ID: $Id$ // Copyright: (c) 2003 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -20,13 +19,13 @@ #include "wx/filesys.h" #endif // wxUSE_FILESYSTEM -class WXDLLIMPEXP_HTML wxHtmlCell; -class WXDLLIMPEXP_HTML wxHtmlWinParser; -class WXDLLIMPEXP_HTML wxHtmlListBoxCache; -class WXDLLIMPEXP_HTML wxHtmlListBoxStyle; +class WXDLLIMPEXP_FWD_HTML wxHtmlCell; +class WXDLLIMPEXP_FWD_HTML wxHtmlWinParser; +class WXDLLIMPEXP_FWD_HTML wxHtmlListBoxCache; +class WXDLLIMPEXP_FWD_HTML wxHtmlListBoxStyle; -extern WXDLLEXPORT_DATA(const wxChar) wxHtmlListBoxNameStr[]; -extern WXDLLEXPORT_DATA(const wxChar) wxSimpleHtmlListBoxNameStr[]; +extern WXDLLIMPEXP_DATA_HTML(const char) wxHtmlListBoxNameStr[]; +extern WXDLLIMPEXP_DATA_HTML(const char) wxSimpleHtmlListBoxNameStr[]; // ---------------------------------------------------------------------------- // wxHtmlListBox @@ -69,12 +68,11 @@ public: virtual ~wxHtmlListBox(); // override some base class virtuals - virtual void RefreshLine(size_t line); - virtual void RefreshLines(size_t from, size_t to); + virtual void RefreshRow(size_t line); + virtual void RefreshRows(size_t from, size_t to); virtual void RefreshAll(); virtual void SetItemCount(size_t count); - #if wxUSE_FILESYSTEM // retrieve the file system used by the wxHtmlWinParser: if you use // relative paths in your HTML, you should use its ChangePathTo() method @@ -112,10 +110,12 @@ protected: virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const; virtual wxCoord OnMeasureItem(size_t n) const; - // This method may be overriden to handle clicking on a link in - // the listbox. By default, clicking links is ignored. - virtual void OnLinkClicked(size_t WXUNUSED(n), - const wxHtmlLinkInfo& WXUNUSED(link)) { } + // override this one to draw custom background for selected items correctly + virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const; + + // this method may be overridden to handle clicking on a link in the + // listbox (by default, clicks on links are simply ignored) + virtual void OnLinkClicked(size_t n, const wxHtmlLinkInfo& link); // event handlers void OnSize(wxSizeEvent& event); @@ -184,7 +184,7 @@ private: DECLARE_EVENT_TABLE() - DECLARE_NO_COPY_CLASS(wxHtmlListBox) + wxDECLARE_NO_COPY_CLASS(wxHtmlListBox); }; @@ -195,9 +195,10 @@ private: #define wxHLB_DEFAULT_STYLE wxBORDER_SUNKEN #define wxHLB_MULTIPLE wxLB_MULTIPLE -class WXDLLIMPEXP_HTML wxSimpleHtmlListBox : public wxHtmlListBox, - public wxItemContainer +class WXDLLIMPEXP_HTML wxSimpleHtmlListBox : + public wxWindowWithItems { + DECLARE_ABSTRACT_CLASS(wxSimpleHtmlListBox) public: // wxListbox-compatible constructors // --------------------------------- @@ -252,9 +253,6 @@ public: int GetSelection() const { return wxVListBox::GetSelection(); } - // see ctrlsub.h for more info about this: - wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST - // accessing strings // ----------------- @@ -270,53 +268,53 @@ public: virtual void SetString(unsigned int n, const wxString& s); - virtual void Clear(); - virtual void Delete(unsigned int n); - - // override default unoptimized wxItemContainer::Append() function - void Append(const wxArrayString& strings); - - // since we override one Append() overload, we need to overload all others too - int Append(const wxString& item) - { return wxItemContainer::Append(item); } - int Append(const wxString& item, void *clientData) - { return wxItemContainer::Append(item, clientData); } - int Append(const wxString& item, wxClientData *clientData) - { return wxItemContainer::Append(item, clientData); } - + // resolve ambiguity between wxItemContainer and wxVListBox versions + void Clear(); protected: - - virtual int DoAppend(const wxString& item); - virtual int DoInsert(const wxString& item, unsigned int pos); + virtual int DoInsertItems(const wxArrayStringsAdapter & items, + unsigned int pos, + void **clientData, wxClientDataType type); virtual void DoSetItemClientData(unsigned int n, void *clientData) - { m_clientData[n] = clientData; } + { m_HTMLclientData[n] = clientData; } virtual void *DoGetItemClientData(unsigned int n) const - { return m_clientData[n]; } - virtual void DoSetItemClientObject(unsigned int n, wxClientData *clientData) - { m_clientData[n] = (void *)clientData; } - virtual wxClientData *DoGetItemClientObject(unsigned int n) const - { return (wxClientData *)m_clientData[n]; } + { return m_HTMLclientData[n]; } + + // wxItemContainer methods + virtual void DoClear(); + virtual void DoDeleteOneItem(unsigned int n); // calls wxHtmlListBox::SetItemCount() and RefreshAll() void UpdateCount(); - // overload these functions just to change their visibility: users of + // override these functions just to change their visibility: users of // wxSimpleHtmlListBox shouldn't be allowed to call them directly! virtual void SetItemCount(size_t count) { wxHtmlListBox::SetItemCount(count); } - virtual void SetLineCount(size_t count) - { wxHtmlListBox::SetLineCount(count); } + virtual void SetRowCount(size_t count) + { wxHtmlListBox::SetRowCount(count); } virtual wxString OnGetItem(size_t n) const { return m_items[n]; } - wxArrayString m_items; - wxArrayPtrVoid m_clientData; + virtual void InitEvent(wxCommandEvent& event, int n) + { + // we're not a virtual control and we can include the string + // of the item which was clicked: + event.SetString(m_items[n]); + wxVListBox::InitEvent(event, n); + } + + wxArrayString m_items; + wxArrayPtrVoid m_HTMLclientData; + + // Note: For the benefit of old compilers (like gcc-2.8) this should + // not be named m_clientdata as that clashes with the name of an + // anonymous struct member in wxEvtHandler, which we derive from. - DECLARE_NO_COPY_CLASS(wxSimpleHtmlListBox) + wxDECLARE_NO_COPY_CLASS(wxSimpleHtmlListBox); }; #endif // _WX_HTMLLBOX_H_