wxTextFile m_file;
#endif
- DECLARE_NO_COPY_CLASS(MyHtmlListBox)
+ wxDECLARE_NO_COPY_CLASS(MyHtmlListBox);
DECLARE_DYNAMIC_CLASS(MyHtmlListBox)
};
void OnToggleMulti(wxCommandEvent& event);
void OnSelectAll(wxCommandEvent& event);
void OnUpdateItem(wxCommandEvent& event);
+ void OnGetItemRect(wxCommandEvent& event);
void OnSetBgCol(wxCommandEvent& event);
void OnSetSelBgCol(wxCommandEvent& event);
void OnSetSelFgCol(wxCommandEvent& event);
+ void OnClear(wxCommandEvent& event);
void OnUpdateUISelectAll(wxUpdateUIEvent& event);
{
wxLogMessage(_T("Listbox item %d double clicked."), event.GetInt());
}
-
+
void OnHtmlLinkClicked(wxHtmlLinkEvent& event);
void OnHtmlCellHover(wxHtmlCellEvent &event);
void OnHtmlCellClicked(wxHtmlCellEvent &event);
- wxSimpleHtmlListBox *GetSimpleBox()
+ wxSimpleHtmlListBox *GetSimpleBox()
{ return wxDynamicCast(m_hlbox, wxSimpleHtmlListBox); }
MyHtmlListBox *GetMyBox()
{ return wxDynamicCast(m_hlbox, MyHtmlListBox); }
HtmlLbox_ToggleMulti,
HtmlLbox_SelectAll,
HtmlLbox_UpdateItem,
+ HtmlLbox_GetItemRect,
HtmlLbox_SetBgCol,
HtmlLbox_SetSelBgCol,
HtmlLbox_SetSelFgCol,
+ HtmlLbox_Clear,
+
// it is important for the id corresponding to the "About" command to have
// this standard value as otherwise it won't be handled properly under Mac
// (where it is special and put into the "Apple" menu)
EVT_MENU(HtmlLbox_ToggleMulti, MyFrame::OnToggleMulti)
EVT_MENU(HtmlLbox_SelectAll, MyFrame::OnSelectAll)
EVT_MENU(HtmlLbox_UpdateItem, MyFrame::OnUpdateItem)
+ EVT_MENU(HtmlLbox_GetItemRect, MyFrame::OnGetItemRect)
EVT_MENU(HtmlLbox_About, MyFrame::OnAbout)
EVT_MENU(HtmlLbox_SetSelBgCol, MyFrame::OnSetSelBgCol)
EVT_MENU(HtmlLbox_SetSelFgCol, MyFrame::OnSetSelFgCol)
+ EVT_MENU(HtmlLbox_Clear, MyFrame::OnClear)
+
EVT_UPDATE_UI(HtmlLbox_SelectAll, MyFrame::OnUpdateUISelectAll)
#if wxUSE_MENUS
// create a menu bar
wxMenu *menuFile = new wxMenu;
- menuFile->AppendRadioItem(HtmlLbox_CustomBox, _T("Use custom box"),
+ menuFile->AppendRadioItem(HtmlLbox_CustomBox, _T("Use custom box"),
_T("Use a wxHtmlListBox virtual class control"));
- menuFile->AppendRadioItem(HtmlLbox_SimpleBox, _T("Use simple box"),
+ menuFile->AppendRadioItem(HtmlLbox_SimpleBox, _T("Use simple box"),
_T("Use a wxSimpleHtmlListBox control"));
menuFile->AppendSeparator();
menuFile->Append(HtmlLbox_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
menuHLbox->AppendSeparator();
menuHLbox->Append(HtmlLbox_SelectAll, _T("Select &all items\tCtrl-A"));
menuHLbox->Append(HtmlLbox_UpdateItem, _T("Update &first item\tCtrl-U"));
+ menuHLbox->Append(HtmlLbox_GetItemRect, _T("Show &rectangle of item #10\tCtrl-R"));
menuHLbox->AppendSeparator();
menuHLbox->Append(HtmlLbox_SetBgCol, _T("Set &background...\tCtrl-B"));
menuHLbox->Append(HtmlLbox_SetSelBgCol,
menuHLbox->AppendCheckItem(HtmlLbox_SetSelFgCol,
_T("Keep &foreground in selection\tCtrl-F"));
+ menuHLbox->AppendSeparator();
+ menuHLbox->Append(HtmlLbox_Clear, _T("&Clear\tCtrl-L"));
+
// the "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(HtmlLbox_About, _T("&About...\tF1"), _T("Show about dialog"));
CreateStatusBar(2);
SetStatusText(_T("Welcome to wxWidgets!"));
#endif // wxUSE_STATUSBAR
-
+
// create the child controls
CreateBox();
wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, _T(""),
{
m_hlbox = new wxSimpleHtmlListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
0, NULL, multi ? wxLB_MULTIPLE : 0);
-
+
// unlike wxHtmlListBox which is abstract, wxSimpleHtmlListBox is a
// concrete control and doesn't support virtual mode, this we need
// to add all of its items from the beginning
void MyFrame::OnSimpleOrCustomBox(wxCommandEvent& WXUNUSED(event))
{
wxWindow *old = m_hlbox;
-
+
// we need to recreate the listbox
CreateBox();
GetSizer()->Replace(old, m_hlbox);
delete old;
-
+
GetSizer()->Layout();
Refresh();
}
void MyFrame::OnToggleMulti(wxCommandEvent& WXUNUSED(event))
{
wxWindow *old = m_hlbox;
-
+
// we need to recreate the listbox
CreateBox();
GetSizer()->Replace(old, m_hlbox);
GetMyBox()->UpdateFirstItem();
}
+void MyFrame::OnGetItemRect(wxCommandEvent& WXUNUSED(event))
+{
+ static const int ITEM = 10;
+ const wxRect r = m_hlbox->GetItemRect(ITEM);
+ wxLogMessage("Rect of item %d: (%d, %d)-(%d, %d)",
+ ITEM, r.x, r.y, r.x + r.width, r.y + r.height);
+}
+
void MyFrame::OnSetBgCol(wxCommandEvent& WXUNUSED(event))
{
wxColour col = wxGetColourFromUser(this, m_hlbox->GetBackgroundColour());
}
}
+void MyFrame::OnClear(wxCommandEvent& WXUNUSED(event))
+{
+ m_hlbox->Clear();
+}
+
void MyFrame::OnHtmlLinkClicked(wxHtmlLinkEvent &event)
{
wxLogMessage(wxT("The url '%s' has been clicked!"), event.GetLinkInfo().GetHref().c_str());
if (GetMyBox())
{
GetMyBox()->m_linkClicked = true;
- GetMyBox()->RefreshLine(1);
+ GetMyBox()->RefreshRow(1);
}
}
{
if ( !n && m_firstItemUpdated )
{
- return wxString::Format(_T("<h1><b>Just updated</b></h1>"));
+ return _T("<h1><b>Just updated</b></h1>");
}
#ifdef USE_HTML_FILE
{
m_firstItemUpdated = !m_firstItemUpdated;
- RefreshLine(0);
+ RefreshRow(0);
}