| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: htmllbox.h
- // Purpose: interface of wxHtmlListBox
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxHtmlListBox
- wxHtmlListBox is an implementation of wxVListBox which shows HTML content in
- the listbox rows. This is still an abstract base class and you will need to
- derive your own class from it (see htlbox sample for the example) but you will
- only need to override a single wxHtmlListBox::OnGetItem function.
- @beginEventEmissionTable{wxHtmlCellEvent,wxHtmlLinkEvent}
- @event{EVT_HTML_CELL_CLICKED(id, func)}
- A wxHtmlCell was clicked.
- @event{EVT_HTML_CELL_HOVER(id, func)}
- The mouse passed over a wxHtmlCell.
- @event{EVT_HTML_LINK_CLICKED(id, func)}
- A wxHtmlCell which contains an hyperlink was clicked.
- @endEventTable
- @library{wxhtml}
- @category{ctrl}
- @see wxSimpleHtmlListBox
- */
- class wxHtmlListBox : public wxVListBox
- {
- public:
- /**
- Normal constructor which calls Create() internally.
- */
- wxHtmlListBox(wxWindow* parent, wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxHtmlListBoxNameStr);
- /**
- Default constructor, you must call Create() later.
- */
- wxHtmlListBox();
- /**
- Destructor cleans up whatever resources we use.
- */
- virtual ~wxHtmlListBox();
- /**
- Creates the control and optionally sets the initial number of items in it
- (it may also be set or changed later with wxVListBox::SetItemCount).
- There are no special styles defined for wxHtmlListBox, in particular the
- wxListBox styles (with the exception of @c wxLB_MULTIPLE) cannot be used here.
- Returns @true on success or @false if the control couldn't be created
- */
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxHtmlListBoxNameStr);
- //@{
- /**
- Returns the wxFileSystem used by the HTML parser of this object.
- The file system object is used to resolve the paths in HTML fragments
- displayed in the control and you should use wxFileSystem::ChangePathTo
- if you use relative paths for the images or other resources embedded in
- your HTML.
- */
- wxFileSystem& GetFileSystem() const;
- const wxFileSystem& GetFileSystem() const;
- //@}
- protected:
- /**
- Called when the user clicks on hypertext link. Does nothing by default.
- Overloading this method is deprecated; intercept the event instead.
- @param n
- Index of the item containing the link.
- @param link
- Description of the link.
- @see wxHtmlLinkInfo.
- */
- virtual void OnLinkClicked(size_t n, const wxHtmlLinkInfo& link);
- /**
- This virtual function may be overridden to change the appearance of the
- background of the selected cells in the same way as GetSelectedTextColour().
- It should be rarely, if ever, used because wxVListBox::SetSelectionBackground
- allows to change the selection background for all cells at once and doing
- anything more fancy is probably going to look strangely.
- @see GetSelectedTextColour()
- */
- virtual wxColour GetSelectedTextBgColour(const wxColour& colBg) const;
- /**
- This virtual function may be overridden to customize the appearance of the
- selected cells. It is used to determine how the colour @a colFg is going to
- look inside selection. By default all original colours are completely ignored
- and the standard, system-dependent, selection colour is used but the program
- may wish to override this to achieve some custom appearance.
- @see GetSelectedTextBgColour(),
- wxVListBox::SetSelectionBackground, wxSystemSettings::GetColour
- */
- virtual wxColour GetSelectedTextColour(const wxColour& colFg) const;
- /**
- This function may be overridden to decorate HTML returned by OnGetItem().
- */
- virtual wxString OnGetItemMarkup(size_t n) const;
- /**
- This method must be implemented in the derived class and should return
- the body (i.e. without @c html nor @c body tags) of the HTML fragment
- for the given item.
- Note that this function should always return a text fragment for the @a n item
- which renders with the same height both when it is selected and when it's not:
- i.e. if you call, inside your OnGetItem() implementation, @c IsSelected(n) to
- make the items appear differently when they are selected, then you should make
- sure that the returned HTML fragment will render with the same height or else
- you'll see some artifacts when the user selects an item.
- */
- virtual wxString OnGetItem(size_t n) const = 0;
- };
- /**
- @class wxSimpleHtmlListBox
- wxSimpleHtmlListBox is an implementation of wxHtmlListBox which
- shows HTML content in the listbox rows.
- Unlike wxHtmlListBox, this is not an abstract class and thus it has the
- advantage that you can use it without deriving your own class from it.
- However, it also has the disadvantage that this is not a virtual control and
- thus it's not well-suited for those cases where you need to show a huge number
- of items: every time you add/insert a string, it will be stored internally
- and thus will take memory.
- The interface exposed by wxSimpleHtmlListBox fully implements the
- wxControlWithItems interface, thus you should refer to wxControlWithItems's
- documentation for the API reference for adding/removing/retrieving items in
- the listbox. Also note that the wxVListBox::SetItemCount function is
- @c protected in wxSimpleHtmlListBox's context so that you cannot call it
- directly, wxSimpleHtmlListBox will do it for you.
- Note: in case you need to append a lot of items to the control at once, make
- sure to use the
- @ref wxControlWithItems::Append "Append(const wxArrayString&)" function.
- Thus the only difference between a wxListBox and a wxSimpleHtmlListBox
- is that the latter stores strings which can contain HTML fragments (see the
- list of @ref overview_html_supptags "tags supported by wxHTML").
- Note that the HTML strings you fetch to wxSimpleHtmlListBox should not contain
- the @c \<html\> or @c \<body\> tags.
- @beginStyleTable
- @style{wxHLB_DEFAULT_STYLE}
- The default style: wxBORDER_SUNKEN
- @style{wxHLB_MULTIPLE}
- Multiple-selection list: the user can toggle multiple items on and off.
- @endStyleTable
- A wxSimpleHtmlListBox emits the same events used by wxListBox and by wxHtmlListBox.
- @beginEventEmissionTable
- @event{EVT_LISTBOX(id, func)}
- Process a @c wxEVT_LISTBOX event, when an item on the list
- is selected. See wxCommandEvent.
- @event{EVT_LISTBOX_DCLICK(id, func)}
- Process a @c wxEVT_LISTBOX_DCLICK event, when the listbox is
- double-clicked. See wxCommandEvent.
- @event{EVT_HTML_CELL_CLICKED(id, func)}
- A wxHtmlCell was clicked. See wxHtmlCellEvent.
- @event{EVT_HTML_CELL_HOVER(id, func)}
- The mouse passed over a wxHtmlCell. See wxHtmlCellEvent.
- @event{EVT_HTML_LINK_CLICKED(id, func)}
- A wxHtmlCell which contains an hyperlink was clicked. See wxHtmlLinkEvent
- @endEventTable
- @library{wxhtml}
- @category{ctrl}
- @genericAppearance{simplehtmllistbox}
- @see wxSimpleHtmlListBox::Create
- */
- class wxSimpleHtmlListBox : public wxHtmlListBox,
- public wxItemContainer
- {
- public:
- /**
- Constructor, creating and showing the HTML list box.
- @param parent
- Parent window. Must not be NULL.
- @param id
- Window identifier. A value of -1 indicates a default value.
- @param pos
- Window position.
- If ::wxDefaultPosition is specified then a default position is chosen.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param n
- Number of strings with which to initialise the control.
- @param choices
- An array of strings with which to initialise the control.
- @param style
- Window style. See wxHLB_* flags.
- @param validator
- Window validator.
- @param name
- Window name.
- */
- wxSimpleHtmlListBox(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- int n = 0,
- const wxString choices[] = NULL,
- long style = wxHLB_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxSimpleHtmlListBoxNameStr);
- /**
- Constructor, creating and showing the HTML list box.
- @param parent
- Parent window. Must not be NULL.
- @param id
- Window identifier. A value of -1 indicates a default value.
- @param pos
- Window position.
- @param size
- Window size. If wxDefaultSize is specified then the window is sized appropriately.
- @param choices
- An array of strings with which to initialise the control.
- @param style
- Window style. See wxHLB_* flags.
- @param validator
- Window validator.
- @param name
- Window name.
- */
- wxSimpleHtmlListBox(wxWindow* parent, wxWindowID id,
- const wxPoint& pos,
- const wxSize& size,
- const wxArrayString& choices,
- long style = wxHLB_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxSimpleHtmlListBoxNameStr);
- /**
- Default constructor, you must call Create() later.
- */
- wxSimpleHtmlListBox();
- /**
- Frees the array of stored items and relative client data.
- */
- virtual ~wxSimpleHtmlListBox();
- //@{
- /**
- Creates the HTML listbox for two-step construction.
- See wxSimpleHtmlListBox() for further details.
- */
- bool Create(wxWindow *parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- int n = 0, const wxString choices[] = NULL,
- long style = wxHLB_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxSimpleHtmlListBoxNameStr);
- bool Create(wxWindow *parent, wxWindowID id,
- const wxPoint& pos,
- const wxSize& size,
- const wxArrayString& choices,
- long style = wxHLB_DEFAULT_STYLE,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxSimpleHtmlListBoxNameStr);
- //@}
- };
|