1. corrected bug in MDI sample (which resulted in missing horz scrollbar)

2. wxRegKey::Rename() added, regtest sample shows copying/moving/renaming keys
   and values now
3. using wxLog() insread of WriteText() contorsions in the listctrl sample,
   show client data from events in the log messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-02-24 23:40:42 +00:00
parent 225fe9d6ef
commit c41ea66a5d
6 changed files with 344 additions and 305 deletions

View File

@@ -26,7 +26,18 @@
#endif #endif
#ifndef __WXMSW__ #ifndef __WXMSW__
#include "mondrian.xpm" #include "mondrian.xpm"
#include "bitmaps/toolbrai.xpm"
#include "bitmaps/toolchar.xpm"
#include "bitmaps/tooldata.xpm"
#include "bitmaps/toolnote.xpm"
#include "bitmaps/tooltodo.xpm"
#include "bitmaps/toolchec.xpm"
#include "bitmaps/toolgame.xpm"
#include "bitmaps/tooltime.xpm"
#include "bitmaps/toolword.xpm"
#include "bitmaps/small1.xpm"
#endif #endif
#include "wx/listctrl.h" #include "wx/listctrl.h"
@@ -83,131 +94,7 @@ int wxCALLBACK MyCompareFunction(long item1, long item2, long sortData)
bool MyApp::OnInit() bool MyApp::OnInit()
{ {
// Create the main frame window // Create the main frame window
MyFrame *frame = new MyFrame((wxFrame *) NULL, "wxListCtrl Test", 50, 50, 450, 340); MyFrame *frame = new MyFrame("wxListCtrl Test", 50, 50, 450, 340);
// Give it an icon
frame->SetIcon( wxICON(mondrian) );
// Make an image list containing large icons
m_imageListNormal = new wxImageList(32, 32, TRUE);
m_imageListSmall = new wxImageList(16, 16, TRUE);
#ifdef __WXMSW__
m_imageListNormal->Add( wxIcon("icon1", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon2", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon3", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon4", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon5", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon6", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon7", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon8", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon9", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListSmall->Add( wxIcon("iconsmall", wxBITMAP_TYPE_ICO_RESOURCE) );
#else
#include "bitmaps/toolbrai.xpm"
m_imageListNormal->Add( wxIcon( toolbrai_xpm ) );
#include "bitmaps/toolchar.xpm"
m_imageListNormal->Add( wxIcon( toolchar_xpm ) );
#include "bitmaps/tooldata.xpm"
m_imageListNormal->Add( wxIcon( tooldata_xpm ) );
#include "bitmaps/toolnote.xpm"
m_imageListNormal->Add( wxIcon( toolnote_xpm ) );
#include "bitmaps/tooltodo.xpm"
m_imageListNormal->Add( wxIcon( tooltodo_xpm ) );
#include "bitmaps/toolchec.xpm"
m_imageListNormal->Add( wxIcon( toolchec_xpm ) );
#include "bitmaps/toolgame.xpm"
m_imageListNormal->Add( wxIcon( toolgame_xpm ) );
#include "bitmaps/tooltime.xpm"
m_imageListNormal->Add( wxIcon( tooltime_xpm ) );
#include "bitmaps/toolword.xpm"
m_imageListNormal->Add( wxIcon( toolword_xpm ) );
#include "bitmaps/small1.xpm"
m_imageListSmall->Add( wxIcon( small1_xpm) );
#endif
// Make a menubar
wxMenu *menuFile = new wxMenu;
menuFile->Append(LIST_ABOUT, "&About");
menuFile->AppendSeparator();
#if 0 // what is this for? (VZ)
menuFile->Append(BUSY_ON, "&Busy cursor on");
menuFile->Append(BUSY_OFF, "&Busy cursor off");
menuFile->AppendSeparator();
#endif
menuFile->Append(LIST_QUIT, "E&xit\tAlt-X");
wxMenu *menuView = new wxMenu;
menuView->Append(LIST_LIST_VIEW, "&List view\tF1");
menuView->Append(LIST_REPORT_VIEW, "&Report view\tF2");
menuView->Append(LIST_ICON_VIEW, "&Icon view\tF3");
menuView->Append(LIST_ICON_TEXT_VIEW, "Icon view with &text\tF4");
menuView->Append(LIST_SMALL_ICON_VIEW, "&Small icon view\tF5");
menuView->Append(LIST_SMALL_ICON_TEXT_VIEW, "Small icon &view with text\tF6");
wxMenu *menuList = new wxMenu;
menuList->Append(LIST_DESELECT_ALL, "&Deselect All\tCtrl-D");
menuList->Append(LIST_SELECT_ALL, "S&elect All\tCtrl-A");
menuList->AppendSeparator();
menuList->Append(LIST_SORT, "&Sort\tCtrl-S");
menuList->AppendSeparator();
menuList->Append(LIST_DELETE_ALL, "Delete &all items");
menuList->AppendSeparator();
menuList->Append(LIST_TOGGLE_MULTI_SEL, "&Multiple selection\tCtrl-M",
"Toggle multiple selection", TRUE);
wxMenu *menuCol = new wxMenu;
menuCol->Append(LIST_SET_FG_COL, "&Foreground colour...");
menuCol->Append(LIST_SET_BG_COL, "&Background colour...");
wxMenuBar *menubar = new wxMenuBar;
menubar->Append(menuFile, "&File");
menubar->Append(menuView, "&View");
menubar->Append(menuList, "&List");
menubar->Append(menuCol, "&Colour");
frame->SetMenuBar(menubar);
frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL,
wxPoint(0, 0), wxSize(400, 200),
wxLC_LIST |
wxSUNKEN_BORDER |
wxLC_EDIT_LABELS |
// wxLC_USER_TEXT requires app to supply all text on demand
// wxLC_USER_TEXT |
wxLC_SINGLE_SEL
);
frame->m_logWindow = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxSize(400, 200), wxTE_MULTILINE|wxSUNKEN_BORDER);
wxLayoutConstraints *c = new wxLayoutConstraints;
c->top.SameAs (frame, wxTop);
c->left.SameAs (frame, wxLeft);
c->right.SameAs (frame, wxRight);
c->height.PercentOf (frame, wxHeight, 66);
frame->m_listCtrl->SetConstraints(c);
c = new wxLayoutConstraints;
c->top.Below (frame->m_listCtrl);
c->left.SameAs (frame, wxLeft);
c->right.SameAs (frame, wxRight);
c->bottom.SameAs (frame, wxBottom);
frame->m_logWindow->SetConstraints(c);
frame->SetAutoLayout(TRUE);
wxString buf;
for ( int i=0; i < 30; i++)
{
wxChar buf[20];
wxSprintf(buf, _T("Item %d"), i);
frame->m_listCtrl->InsertItem(i, buf);
}
frame->CreateStatusBar(3);
// Show the frame // Show the frame
frame->Show(TRUE); frame->Show(TRUE);
@@ -218,22 +105,139 @@ bool MyApp::OnInit()
} }
// My frame constructor // My frame constructor
MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h) MyFrame::MyFrame(const wxChar *title, int x, int y, int w, int h)
: wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) : wxFrame((wxFrame *)NULL, -1, title, wxPoint(x, y), wxSize(w, h))
{ {
m_listCtrl = (MyListCtrl *) NULL; m_listCtrl = (MyListCtrl *) NULL;
m_logWindow = (wxTextCtrl *) NULL; m_logWindow = (wxTextCtrl *) NULL;
// Give it an icon
SetIcon( wxICON(mondrian) );
// Make an image list containing large icons
m_imageListNormal = new wxImageList(32, 32, TRUE);
m_imageListSmall = new wxImageList(16, 16, TRUE);
#ifdef __WXMSW__
m_imageListNormal->Add( wxIcon("icon1", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon2", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon3", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon4", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon5", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon6", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon7", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon8", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListNormal->Add( wxIcon("icon9", wxBITMAP_TYPE_ICO_RESOURCE) );
m_imageListSmall->Add( wxIcon("iconsmall", wxBITMAP_TYPE_ICO_RESOURCE) );
#else
m_imageListNormal->Add( wxIcon( toolbrai_xpm ) );
m_imageListNormal->Add( wxIcon( toolchar_xpm ) );
m_imageListNormal->Add( wxIcon( tooldata_xpm ) );
m_imageListNormal->Add( wxIcon( toolnote_xpm ) );
m_imageListNormal->Add( wxIcon( tooltodo_xpm ) );
m_imageListNormal->Add( wxIcon( toolchec_xpm ) );
m_imageListNormal->Add( wxIcon( toolgame_xpm ) );
m_imageListNormal->Add( wxIcon( tooltime_xpm ) );
m_imageListNormal->Add( wxIcon( toolword_xpm ) );
m_imageListSmall->Add( wxIcon( small1_xpm) );
#endif
// Make a menubar
wxMenu *menuFile = new wxMenu;
menuFile->Append(LIST_ABOUT, "&About");
menuFile->AppendSeparator();
#if 0 // what is this for? (VZ)
menuFile->Append(BUSY_ON, "&Busy cursor on");
menuFile->Append(BUSY_OFF, "&Busy cursor off");
menuFile->AppendSeparator();
#endif
menuFile->Append(LIST_QUIT, "E&xit\tAlt-X");
wxMenu *menuView = new wxMenu;
menuView->Append(LIST_LIST_VIEW, "&List view\tF1");
menuView->Append(LIST_REPORT_VIEW, "&Report view\tF2");
menuView->Append(LIST_ICON_VIEW, "&Icon view\tF3");
menuView->Append(LIST_ICON_TEXT_VIEW, "Icon view with &text\tF4");
menuView->Append(LIST_SMALL_ICON_VIEW, "&Small icon view\tF5");
menuView->Append(LIST_SMALL_ICON_TEXT_VIEW, "Small icon &view with text\tF6");
wxMenu *menuList = new wxMenu;
menuList->Append(LIST_DESELECT_ALL, "&Deselect All\tCtrl-D");
menuList->Append(LIST_SELECT_ALL, "S&elect All\tCtrl-A");
menuList->AppendSeparator();
menuList->Append(LIST_SORT, "&Sort\tCtrl-S");
menuList->AppendSeparator();
menuList->Append(LIST_DELETE_ALL, "Delete &all items");
menuList->AppendSeparator();
menuList->Append(LIST_TOGGLE_MULTI_SEL, "&Multiple selection\tCtrl-M",
"Toggle multiple selection", TRUE);
wxMenu *menuCol = new wxMenu;
menuCol->Append(LIST_SET_FG_COL, "&Foreground colour...");
menuCol->Append(LIST_SET_BG_COL, "&Background colour...");
wxMenuBar *menubar = new wxMenuBar;
menubar->Append(menuFile, "&File");
menubar->Append(menuView, "&View");
menubar->Append(menuList, "&List");
menubar->Append(menuCol, "&Colour");
SetMenuBar(menubar);
m_listCtrl = new MyListCtrl(this, LIST_CTRL,
wxDefaultPosition, wxDefaultSize,
wxLC_LIST |
wxSUNKEN_BORDER |
wxLC_EDIT_LABELS |
// wxLC_USER_TEXT requires app to supply all
// text on demand
//wxLC_USER_TEXT |
wxLC_SINGLE_SEL
);
m_logWindow = new wxTextCtrl(this, -1, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE | wxSUNKEN_BORDER);
m_logOld = wxLog::SetActiveTarget(new wxLogTextCtrl(m_logWindow));
wxLayoutConstraints *c = new wxLayoutConstraints;
c->top.SameAs (this, wxTop);
c->left.SameAs (this, wxLeft);
c->right.SameAs (this, wxRight);
c->height.PercentOf (this, wxHeight, 66);
m_listCtrl->SetConstraints(c);
c = new wxLayoutConstraints;
c->top.Below (m_listCtrl);
c->left.SameAs (this, wxLeft);
c->right.SameAs (this, wxRight);
c->bottom.SameAs (this, wxBottom);
m_logWindow->SetConstraints(c);
SetAutoLayout(TRUE);
for ( int i = 0; i < 30; i++ )
{
long idx = m_listCtrl->InsertItem(i, wxString::Format(_T("Item %d"), i));
m_listCtrl->SetItemData(idx, i*i);
}
CreateStatusBar(3);
} }
MyFrame::~MyFrame() MyFrame::~MyFrame()
{ {
delete wxGetApp().m_imageListNormal; delete wxLog::SetActiveTarget(m_logOld);
delete wxGetApp().m_imageListSmall;
delete m_imageListNormal;
delete m_imageListSmall;
} }
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{ {
Close(TRUE); Close(TRUE);
} }
void MyFrame::BusyOn(wxCommandEvent& WXUNUSED(event)) void MyFrame::BusyOn(wxCommandEvent& WXUNUSED(event))
@@ -292,7 +296,7 @@ void MyFrame::OnReportView(wxCommandEvent& WXUNUSED(event))
m_listCtrl->SetSingleStyle(wxLC_REPORT); m_listCtrl->SetSingleStyle(wxLC_REPORT);
m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL); m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL);
m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
m_listCtrl->InsertColumn(0, "Column 1"); // , wxLIST_FORMAT_LEFT, 140); m_listCtrl->InsertColumn(0, "Column 1"); // , wxLIST_FORMAT_LEFT, 140);
m_listCtrl->InsertColumn(1, "Column 2"); // , wxLIST_FORMAT_LEFT, 140); m_listCtrl->InsertColumn(1, "Column 2"); // , wxLIST_FORMAT_LEFT, 140);
@@ -351,8 +355,8 @@ void MyFrame::OnIconView(wxCommandEvent& WXUNUSED(event))
m_listCtrl->ClearAll(); m_listCtrl->ClearAll();
m_listCtrl->SetSingleStyle(wxLC_ICON); m_listCtrl->SetSingleStyle(wxLC_ICON);
m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); m_listCtrl->SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
for ( int i=0; i < 9; i++) for ( int i=0; i < 9; i++)
{ {
@@ -366,8 +370,8 @@ void MyFrame::OnIconTextView(wxCommandEvent& WXUNUSED(event))
m_listCtrl->ClearAll(); m_listCtrl->ClearAll();
m_listCtrl->SetSingleStyle(wxLC_ICON); m_listCtrl->SetSingleStyle(wxLC_ICON);
m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); m_listCtrl->SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
for ( int i=0; i < 9; i++) for ( int i=0; i < 9; i++)
{ {
@@ -383,8 +387,8 @@ void MyFrame::OnSmallIconView(wxCommandEvent& WXUNUSED(event))
m_listCtrl->ClearAll(); m_listCtrl->ClearAll();
m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON); m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON);
m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); m_listCtrl->SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
for ( int i=0; i < 9; i++) for ( int i=0; i < 9; i++)
{ {
@@ -398,8 +402,8 @@ void MyFrame::OnSmallIconTextView(wxCommandEvent& WXUNUSED(event))
m_listCtrl->ClearAll(); m_listCtrl->ClearAll();
m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON); m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON);
m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); m_listCtrl->SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
for ( int i=0; i < 9; i++) for ( int i=0; i < 9; i++)
{ {
@@ -464,152 +468,77 @@ void MyFrame::OnDeleteAll(wxCommandEvent& WXUNUSED(event))
void MyListCtrl::OnColClick(wxListEvent& event) void MyListCtrl::OnColClick(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxLogMessage( "OnColumnClick at %d.", event.GetColumn() );
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
wxString msg;
msg.Printf( "OnColumnClick at %d.\n", event.GetColumn() );
text->WriteText(msg);
} }
void MyListCtrl::OnBeginDrag(wxListEvent& event) void MyListCtrl::OnBeginDrag(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxLogMessage( "OnBeginDrag at %d,%d.",
return; event.m_pointDrag.x, event.m_pointDrag.y );
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
wxString msg;
msg.Printf( "OnBeginDrag at %d,%d.\n", event.m_pointDrag.x, event.m_pointDrag.y );
text->WriteText(msg);
} }
void MyListCtrl::OnBeginRDrag(wxListEvent& event) void MyListCtrl::OnBeginRDrag(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxLogMessage( "OnBeginRDrag at %d,%d.",
return; event.m_pointDrag.x, event.m_pointDrag.y );
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
wxString msg;
msg.Printf( "OnBeginRDrag at %d,%d.\n", event.m_pointDrag.x, event.m_pointDrag.y );
text->WriteText(msg);
} }
void MyListCtrl::OnBeginLabelEdit(wxListEvent& event) void MyListCtrl::OnBeginLabelEdit(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxLogMessage("OnBeginLabelEdit: %s", event.m_item.m_text.c_str());
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText("OnBeginLabelEdit: ");
text->WriteText(event.m_item.m_text);
text->WriteText("\n");
} }
void MyListCtrl::OnEndLabelEdit(wxListEvent& event) void MyListCtrl::OnEndLabelEdit(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxLogMessage("OnEndLabelEdit: %s", event.m_item.m_text.c_str());
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText("OnEndLabelEdit: ");
text->WriteText(event.m_item.m_text);
text->WriteText("\n");
} }
void MyListCtrl::OnDeleteItem(wxListEvent& event) void MyListCtrl::OnDeleteItem(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnDeleteItem"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText(wxString::Format("%ld OnDeleteItem\n", event.GetIndex()));
} }
void MyListCtrl::OnDeleteAllItems(wxListEvent& WXUNUSED(event)) void MyListCtrl::OnDeleteAllItems(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnDeleteAllItems"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText("OnDeleteAllItems\n");
} }
void MyListCtrl::OnGetInfo(wxListEvent& event) void MyListCtrl::OnGetInfo(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) wxString msg;
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; msg << "OnGetInfo (" << event.m_item.m_itemId << ", " << event.m_item.m_col << ")";
if ( !text )
return;
text->WriteText("OnGetInfo\n");
(*text) << "OnGetInfo (" << event.m_item.m_itemId << ", " << event.m_item.m_col << ")";
if ( event.m_item.m_mask & wxLIST_MASK_STATE ) if ( event.m_item.m_mask & wxLIST_MASK_STATE )
(*text) << " wxLIST_MASK_STATE"; msg << " wxLIST_MASK_STATE";
if ( event.m_item.m_mask & wxLIST_MASK_TEXT ) if ( event.m_item.m_mask & wxLIST_MASK_TEXT )
(*text) << " wxLIST_MASK_TEXT"; msg << " wxLIST_MASK_TEXT";
if ( event.m_item.m_mask & wxLIST_MASK_IMAGE ) if ( event.m_item.m_mask & wxLIST_MASK_IMAGE )
(*text) << " wxLIST_MASK_IMAGE"; msg << " wxLIST_MASK_IMAGE";
if ( event.m_item.m_mask & wxLIST_MASK_DATA ) if ( event.m_item.m_mask & wxLIST_MASK_DATA )
(*text) << " wxLIST_MASK_DATA"; msg << " wxLIST_MASK_DATA";
if ( event.m_item.m_mask & wxLIST_SET_ITEM ) if ( event.m_item.m_mask & wxLIST_SET_ITEM )
(*text) << " wxLIST_SET_ITEM"; msg << " wxLIST_SET_ITEM";
if ( event.m_item.m_mask & wxLIST_MASK_WIDTH ) if ( event.m_item.m_mask & wxLIST_MASK_WIDTH )
(*text) << " wxLIST_MASK_WIDTH"; msg << " wxLIST_MASK_WIDTH";
if ( event.m_item.m_mask & wxLIST_MASK_FORMAT ) if ( event.m_item.m_mask & wxLIST_MASK_FORMAT )
(*text) << " wxLIST_MASK_WIDTH"; msg << " wxLIST_MASK_WIDTH";
if ( event.m_item.m_mask & wxLIST_MASK_TEXT ) if ( event.m_item.m_mask & wxLIST_MASK_TEXT )
{ {
event.m_item.m_text = "My callback text"; event.m_item.m_text = "My callback text";
} }
(*text) << "\n";
wxLogMessage(msg);
} }
void MyListCtrl::OnSetInfo(wxListEvent& event) void MyListCtrl::OnSetInfo(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnSetInfo"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText(wxString::Format("%ld OnSetInfo\n", event.GetIndex()));
} }
void MyListCtrl::OnSelected(wxListEvent& event) void MyListCtrl::OnSelected(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnSelected"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
if ( GetWindowStyle() & wxLC_REPORT ) if ( GetWindowStyle() & wxLC_REPORT )
{ {
@@ -619,52 +548,34 @@ void MyListCtrl::OnSelected(wxListEvent& event)
info.m_mask = wxLIST_MASK_TEXT; info.m_mask = wxLIST_MASK_TEXT;
if ( GetItem(info) ) if ( GetItem(info) )
{ {
*text << "Value of the 2nd field of the selected item: " wxLogMessage("Value of the 2nd field of the selected item: %s",
<< info.m_text << '\n'; info.m_text.c_str());
} }
else else
{ {
wxFAIL_MSG("wxListCtrl::GetItem() failed"); wxFAIL_MSG("wxListCtrl::GetItem() failed");
} }
} }
text->WriteText(wxString::Format("%ld OnSelected\n", event.GetIndex()));
} }
void MyListCtrl::OnDeselected(wxListEvent& event) void MyListCtrl::OnDeselected(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnDeselected"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText(wxString::Format("%ld OnDeselected\n", event.GetIndex()));
} }
void MyListCtrl::OnActivated(wxListEvent& event) void MyListCtrl::OnActivated(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnActivated"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText(wxString::Format("%ld OnActivated\n", event.GetIndex()));
} }
void MyListCtrl::OnListKeyDown(wxListEvent& event) void MyListCtrl::OnListKeyDown(wxListEvent& event)
{ {
if ( !wxGetApp().GetTopWindow() ) LogEvent(event, _T("OnListKeyDown"));
return;
wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow;
if ( !text )
return;
text->WriteText(wxString::Format("%ld OnListKeyDown\n", event.GetIndex()));
} }
void MyListCtrl::LogEvent(const wxListEvent& event, const wxChar *eventName)
{
wxLogMessage(_T("Item %ld: %s (item data = %ld)"),
event.GetIndex(), eventName, event.GetData());
}

View File

@@ -14,9 +14,6 @@ class MyApp: public wxApp
{ {
public: public:
virtual bool OnInit(); virtual bool OnInit();
wxImageList *m_imageListNormal;
wxImageList *m_imageListSmall;
}; };
class MyListCtrl: public wxListCtrl class MyListCtrl: public wxListCtrl
@@ -44,6 +41,9 @@ public:
void OnChar(wxKeyEvent& event); void OnChar(wxKeyEvent& event);
private:
void LogEvent(const wxListEvent& event, const wxChar *eventName);
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };
@@ -54,7 +54,7 @@ public:
MyListCtrl *m_listCtrl; MyListCtrl *m_listCtrl;
wxTextCtrl *m_logWindow; wxTextCtrl *m_logWindow;
MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); MyFrame(const wxChar *title, int x, int y, int w, int h);
~MyFrame(); ~MyFrame();
public: public:
@@ -77,6 +77,12 @@ public:
void BusyOn(wxCommandEvent& event); void BusyOn(wxCommandEvent& event);
void BusyOff(wxCommandEvent& event); void BusyOff(wxCommandEvent& event);
wxImageList *m_imageListNormal;
wxImageList *m_imageListSmall;
private:
wxLog *m_logOld;
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; };

View File

@@ -248,6 +248,9 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
// Associate the menu bar with the frame // Associate the menu bar with the frame
subframe->SetMenuBar(menu_bar); subframe->SetMenuBar(menu_bar);
subframe->CreateStatusBar();
subframe->SetStatusText(title);
int width, height; int width, height;
subframe->GetClientSize(&width, &height); subframe->GetClientSize(&width, &height);
MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height));
@@ -257,9 +260,6 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
// Give it scrollbars // Give it scrollbars
canvas->SetScrollbars(20, 20, 50, 50); canvas->SetScrollbars(20, 20, 50, 50);
subframe->CreateStatusBar();
subframe->SetStatusText(title);
subframe->Show(TRUE); subframe->Show(TRUE);
} }
@@ -357,7 +357,9 @@ void MyCanvas::OnDraw(wxDC& dc)
dc.DrawRoundedRectangle(150, 150, 100, 50, 20); dc.DrawRoundedRectangle(150, 150, 100, 50, 20);
dc.DrawEllipse(250, 250, 100, 50); dc.DrawEllipse(250, 250, 100, 50);
#if wxUSE_SPLINES
dc.DrawSpline(50, 200, 50, 100, 200, 10); dc.DrawSpline(50, 200, 50, 100, 200, 10);
#endif // wxUSE_SPLINES
dc.DrawLine(50, 230, 200, 230); dc.DrawLine(50, 230, 200, 230);
dc.DrawText("This is a test string", 50, 230); dc.DrawText("This is a test string", 50, 230);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -31,6 +31,8 @@
#include "wx/msw/registry.h" #include "wx/msw/registry.h"
#include "wx/msw/imaglist.h" #include "wx/msw/imaglist.h"
#include "wx/tokenzr.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// application type // application type
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -73,6 +75,9 @@ public:
void OnItemExpanding(wxTreeEvent& event); void OnItemExpanding(wxTreeEvent& event);
void OnSelChanged (wxTreeEvent& event); void OnSelChanged (wxTreeEvent& event);
void OnBeginEdit (wxTreeEvent& event);
void OnEndEdit (wxTreeEvent& event);
void OnBeginDrag (wxTreeEvent& event); void OnBeginDrag (wxTreeEvent& event);
void OnEndDrag (wxTreeEvent& event); void OnEndDrag (wxTreeEvent& event);
@@ -84,6 +89,7 @@ public:
void OnMenuTest(); void OnMenuTest();
// operations // operations
void GoTo(const wxString& location);
void Refresh(); void Refresh();
void DeleteSelected(); void DeleteSelected();
void ShowProperties(); void ShowProperties();
@@ -141,6 +147,8 @@ private:
bool m_restoreStatus; // after OnItemExpanding() bool m_restoreStatus; // after OnItemExpanding()
wxString m_nameOld; // the initial value of item being renamed
TreeNode *GetNode(const wxTreeEvent& event) TreeNode *GetNode(const wxTreeEvent& event)
{ return (TreeNode *)GetItemData((WXHTREEITEM)event.GetItem()); } { return (TreeNode *)GetItemData((WXHTREEITEM)event.GetItem()); }
@@ -172,6 +180,8 @@ public:
void OnAbout(wxCommandEvent& event); void OnAbout(wxCommandEvent& event);
void OnTest (wxCommandEvent& event); void OnTest (wxCommandEvent& event);
void OnGoTo (wxCommandEvent& event);
void OnExpand (wxCommandEvent& event); void OnExpand (wxCommandEvent& event);
void OnCollapse(wxCommandEvent& event); void OnCollapse(wxCommandEvent& event);
void OnToggle (wxCommandEvent& event); void OnToggle (wxCommandEvent& event);
@@ -199,6 +209,7 @@ enum
Menu_Quit = 100, Menu_Quit = 100,
Menu_About, Menu_About,
Menu_Test, Menu_Test,
Menu_GoTo,
Menu_Expand, Menu_Expand,
Menu_Collapse, Menu_Collapse,
Menu_Toggle, Menu_Toggle,
@@ -221,6 +232,7 @@ BEGIN_EVENT_TABLE(RegFrame, wxFrame)
EVT_MENU(Menu_Test, RegFrame::OnTest) EVT_MENU(Menu_Test, RegFrame::OnTest)
EVT_MENU(Menu_About, RegFrame::OnAbout) EVT_MENU(Menu_About, RegFrame::OnAbout)
EVT_MENU(Menu_Quit, RegFrame::OnQuit) EVT_MENU(Menu_Quit, RegFrame::OnQuit)
EVT_MENU(Menu_GoTo, RegFrame::OnGoTo)
EVT_MENU(Menu_Expand, RegFrame::OnExpand) EVT_MENU(Menu_Expand, RegFrame::OnExpand)
EVT_MENU(Menu_Collapse, RegFrame::OnCollapse) EVT_MENU(Menu_Collapse, RegFrame::OnCollapse)
EVT_MENU(Menu_Toggle, RegFrame::OnToggle) EVT_MENU(Menu_Toggle, RegFrame::OnToggle)
@@ -236,6 +248,10 @@ BEGIN_EVENT_TABLE(RegTreeCtrl, wxTreeCtrl)
EVT_TREE_DELETE_ITEM (Ctrl_RegTree, RegTreeCtrl::OnDeleteItem) EVT_TREE_DELETE_ITEM (Ctrl_RegTree, RegTreeCtrl::OnDeleteItem)
EVT_TREE_ITEM_EXPANDING(Ctrl_RegTree, RegTreeCtrl::OnItemExpanding) EVT_TREE_ITEM_EXPANDING(Ctrl_RegTree, RegTreeCtrl::OnItemExpanding)
EVT_TREE_SEL_CHANGED (Ctrl_RegTree, RegTreeCtrl::OnSelChanged) EVT_TREE_SEL_CHANGED (Ctrl_RegTree, RegTreeCtrl::OnSelChanged)
EVT_TREE_BEGIN_LABEL_EDIT(Ctrl_RegTree, RegTreeCtrl::OnBeginEdit)
EVT_TREE_END_LABEL_EDIT (Ctrl_RegTree, RegTreeCtrl::OnEndEdit)
EVT_TREE_BEGIN_DRAG (Ctrl_RegTree, RegTreeCtrl::OnBeginDrag) EVT_TREE_BEGIN_DRAG (Ctrl_RegTree, RegTreeCtrl::OnBeginDrag)
EVT_TREE_BEGIN_RDRAG (Ctrl_RegTree, RegTreeCtrl::OnBeginDrag) EVT_TREE_BEGIN_RDRAG (Ctrl_RegTree, RegTreeCtrl::OnBeginDrag)
EVT_TREE_END_DRAG (Ctrl_RegTree, RegTreeCtrl::OnEndDrag) EVT_TREE_END_DRAG (Ctrl_RegTree, RegTreeCtrl::OnEndDrag)
@@ -266,6 +282,7 @@ wxMenu *CreateRegistryMenu()
pMenuReg->Append(Menu_New, "&New", pMenuNew); pMenuReg->Append(Menu_New, "&New", pMenuNew);
pMenuReg->Append(Menu_Delete, "&Delete...", "Delete selected key/value"); pMenuReg->Append(Menu_Delete, "&Delete...", "Delete selected key/value");
pMenuReg->AppendSeparator(); pMenuReg->AppendSeparator();
pMenuReg->Append(Menu_GoTo, "&Go to...\tCtrl-G", "Go to registry key");
pMenuReg->Append(Menu_Expand, "&Expand", "Expand current key"); pMenuReg->Append(Menu_Expand, "&Expand", "Expand current key");
pMenuReg->Append(Menu_Collapse, "&Collapse", "Collapse current key"); pMenuReg->Append(Menu_Collapse, "&Collapse", "Collapse current key");
pMenuReg->Append(Menu_Toggle, "&Toggle", "Toggle current key"); pMenuReg->Append(Menu_Toggle, "&Toggle", "Toggle current key");
@@ -352,37 +369,55 @@ void RegFrame::OnAbout(wxCommandEvent& event)
dialog.ShowModal(); dialog.ShowModal();
} }
void RegFrame::OnTest(wxCommandEvent& event) void RegFrame::OnTest(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->OnMenuTest(); m_treeCtrl->OnMenuTest();
} }
void RegFrame::OnExpand(wxCommandEvent& event) void RegFrame::OnGoTo(wxCommandEvent& WXUNUSED(event))
{
static wxString s_location = _T("HKEY_CURRENT_USER\\Software\\wxWindows");
wxString location = wxGetTextFromUser
(
_T("Enter the location to go to:"),
_T("wxRegTest question"),
s_location,
this
);
if ( !location )
return;
s_location = location;
m_treeCtrl->GoTo(location);
}
void RegFrame::OnExpand(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_EXPAND); m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_EXPAND);
} }
void RegFrame::OnCollapse(wxCommandEvent& event) void RegFrame::OnCollapse(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_COLLAPSE); m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_COLLAPSE);
} }
void RegFrame::OnToggle(wxCommandEvent& event) void RegFrame::OnToggle(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_TOGGLE); m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_TOGGLE);
} }
void RegFrame::OnRefresh(wxCommandEvent& event) void RegFrame::OnRefresh(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->Refresh(); m_treeCtrl->Refresh();
} }
void RegFrame::OnDelete(wxCommandEvent& event) void RegFrame::OnDelete(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->DeleteSelected(); m_treeCtrl->DeleteSelected();
} }
void RegFrame::OnNewKey(wxCommandEvent& event) void RegFrame::OnNewKey(wxCommandEvent& WXUNUSED(event))
{ {
if ( m_treeCtrl->IsKeySelected() ) { if ( m_treeCtrl->IsKeySelected() ) {
m_treeCtrl->CreateNewKey( m_treeCtrl->CreateNewKey(
@@ -390,7 +425,7 @@ void RegFrame::OnNewKey(wxCommandEvent& event)
} }
} }
void RegFrame::OnNewText(wxCommandEvent& event) void RegFrame::OnNewText(wxCommandEvent& WXUNUSED(event))
{ {
if ( m_treeCtrl->IsKeySelected() ) { if ( m_treeCtrl->IsKeySelected() ) {
m_treeCtrl->CreateNewTextValue( m_treeCtrl->CreateNewTextValue(
@@ -398,7 +433,7 @@ void RegFrame::OnNewText(wxCommandEvent& event)
} }
} }
void RegFrame::OnNewBinary(wxCommandEvent& event) void RegFrame::OnNewBinary(wxCommandEvent& WXUNUSED(event))
{ {
if ( m_treeCtrl->IsKeySelected() ) { if ( m_treeCtrl->IsKeySelected() ) {
m_treeCtrl->CreateNewBinaryValue( m_treeCtrl->CreateNewBinaryValue(
@@ -406,7 +441,7 @@ void RegFrame::OnNewBinary(wxCommandEvent& event)
} }
} }
void RegFrame::OnInfo(wxCommandEvent& event) void RegFrame::OnInfo(wxCommandEvent& WXUNUSED(event))
{ {
m_treeCtrl->ShowProperties(); m_treeCtrl->ShowProperties();
} }
@@ -471,7 +506,7 @@ RegTreeCtrl::TreeNode *RegTreeCtrl::InsertNewTreeNode(TreeNode *pParent,
RegTreeCtrl::RegTreeCtrl(wxWindow *parent, wxWindowID id) RegTreeCtrl::RegTreeCtrl(wxWindow *parent, wxWindowID id)
: wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize, : wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize,
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER) wxTR_HAS_BUTTONS | wxTR_EDIT_LABELS | wxSUNKEN_BORDER)
{ {
// init members // init members
m_draggedItem = NULL; m_draggedItem = NULL;
@@ -625,6 +660,50 @@ void RegTreeCtrl::OnItemExpanding(wxTreeEvent& event)
} }
} }
void RegTreeCtrl::OnBeginEdit(wxTreeEvent& event)
{
TreeNode *pNode = GetNode(event);
if ( pNode->IsRoot() || pNode->Parent()->IsRoot() ) {
wxLogStatus(_T("This registry key can't be renamed."));
event.Veto();
}
else {
m_nameOld = pNode->m_strName;
}
}
void RegTreeCtrl::OnEndEdit(wxTreeEvent& event)
{
bool ok;
wxString name = event.GetLabel();
TreeNode *pNode = GetNode(event);
if ( pNode->IsKey() )
{
wxRegKey& key = pNode->Key();
ok = key.Rename(name);
}
else
{
pNode = pNode->Parent();
wxRegKey& key = pNode->Key();
ok = key.RenameValue(m_nameOld, name);
}
if ( !ok ) {
wxLogError(_T("Failed to rename '%s' to '%s'."),
m_nameOld.c_str(), name.c_str());
}
#if 0 // MSW tree ctrl doesn't like this at all, it hangs
else {
pNode->Refresh();
}
#endif // 0
}
void RegTreeCtrl::OnBeginDrag(wxTreeEvent& event) void RegTreeCtrl::OnBeginDrag(wxTreeEvent& event)
{ {
m_copyOnDrop = event.GetEventType() == wxEVT_COMMAND_TREE_BEGIN_DRAG; m_copyOnDrop = event.GetEventType() == wxEVT_COMMAND_TREE_BEGIN_DRAG;
@@ -697,8 +776,6 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event)
return; return;
} }
bool dstExpanded = IsExpanded(dst->Id());
bool ok; bool ok;
if ( isKey ) { if ( isKey ) {
wxRegKey& key = src->Key(); wxRegKey& key = src->Key();
@@ -710,10 +787,6 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event)
else { else {
ok = key.Copy(keyDst); ok = key.Copy(keyDst);
} }
if ( ok && dstExpanded ) {
dst->OnCollapse();
dst->OnExpand();
}
if ( ok && !m_copyOnDrop ) { if ( ok && !m_copyOnDrop ) {
// delete the old key // delete the old key
@@ -729,16 +802,15 @@ void RegTreeCtrl::OnEndDrag(wxTreeEvent& event)
if ( ok && !m_copyOnDrop ) { if ( ok && !m_copyOnDrop ) {
// we moved it, so delete the old one // we moved it, so delete the old one
ok = key.DeleteValue(src->m_strName); ok = key.DeleteValue(src->m_strName);
if ( ok ) {
// reexpand the key
dst->Refresh();
}
} }
} }
if ( !ok ) { if ( !ok ) {
wxLogError("Failed to %s registry %s.", verb.c_str(), what.c_str()); wxLogError("Failed to %s registry %s.", verb.c_str(), what.c_str());
} }
else {
dst->Refresh();
}
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -863,17 +935,16 @@ void RegTreeCtrl::TreeNode::Refresh()
if ( !IsKey() ) if ( !IsKey() )
return; return;
if ( m_pTree->IsExpanded(Id()) ) { bool wasExpanded = m_pTree->IsExpanded(Id());
if ( wasExpanded )
m_pTree->Collapse(Id()); m_pTree->Collapse(Id());
OnCollapse();
m_pTree->SetItemHasChildren(Id()); OnCollapse();
m_pTree->SetItemHasChildren(Id());
if ( wasExpanded ) {
m_pTree->Expand(Id()); m_pTree->Expand(Id());
OnExpand(); OnExpand();
} }
else {
// just allow it to be expanded
m_pTree->SetItemHasChildren(Id());
}
} }
bool RegTreeCtrl::TreeNode::DeleteChild(TreeNode *child) bool RegTreeCtrl::TreeNode::DeleteChild(TreeNode *child)
@@ -944,6 +1015,54 @@ const char *RegTreeCtrl::TreeNode::FullName() const
// operations on RegTreeCtrl // operations on RegTreeCtrl
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void RegTreeCtrl::GoTo(const wxString& location)
{
wxStringTokenizer tk(location, _T("\\"));
wxTreeItemId id = GetRootItem();
while ( tk.HasMoreTokens() ) {
wxString subkey = tk.GetNextToken();
wxTreeItemId idCurrent = id;
if ( !IsExpanded(idCurrent) )
Expand(idCurrent);
long dummy;
id = GetFirstChild(idCurrent, dummy);
if ( idCurrent == GetRootItem() ) {
// special case: we understand both HKCU and HKEY_CURRENT_USER here
for ( size_t key = 0; key < wxRegKey::nStdKeys; key++ ) {
if ( subkey == wxRegKey::GetStdKeyName(key) ||
subkey == wxRegKey::GetStdKeyShortName(key) ) {
break;
}
id = GetNextChild(idCurrent, dummy);
}
}
else {
// enum all children
while ( id.IsOk() ) {
if ( subkey == ((TreeNode *)GetItemData(id))->m_strName )
break;
id = GetNextChild(idCurrent, dummy);
}
}
if ( !id.IsOk() ) {
wxLogError(_T("No such key '%s'."), location.c_str());
return;
}
}
if ( id.IsOk() )
SelectItem(id);
}
void RegTreeCtrl::DeleteSelected() void RegTreeCtrl::DeleteSelected()
{ {
long lCurrent = GetSelection(), long lCurrent = GetSelection(),

View File

@@ -9,7 +9,8 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
#pragma implementation "controls.h" #pragma interface "text.cpp"
#pragma implementation "text.cpp"
#endif #endif
// For compilers that support precompilation, includes "wx/wx.h". // For compilers that support precompilation, includes "wx/wx.h".
@@ -194,7 +195,7 @@ bool MyApp::OnInit()
file_menu->AppendSeparator(); file_menu->AppendSeparator();
file_menu->Append(TEXT_ABOUT, "&About\tAlt-A"); file_menu->Append(TEXT_ABOUT, "&About\tAlt-A");
file_menu->AppendSeparator(); file_menu->AppendSeparator();
file_menu->Append(TEXT_QUIT, "E&xit\tAlt-X", "Quit controls sample"); file_menu->Append(TEXT_QUIT, "E&xit\tAlt-X", "Quit this sample");
wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE ); wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE );
menu_bar->Append(file_menu, "&File"); menu_bar->Append(file_menu, "&File");
@@ -444,7 +445,7 @@ void MyTextCtrl::OnText(wxCommandEvent& event)
const wxChar *data = (const wxChar *)(win->GetClientData()); const wxChar *data = (const wxChar *)(win->GetClientData());
if ( data ) if ( data )
{ {
wxLogMessage(_T("text changed in control '%s'"), data); wxLogMessage(_T("Text changed in control '%s'"), data);
} }
} }
@@ -755,7 +756,7 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) )
"tooltips and intercepting key and char events.\n" "tooltips and intercepting key and char events.\n"
"\n" "\n"
"Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin", "Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin",
"About Text Controls", "About wxTextCtrl Sample",
wxOK | wxICON_INFORMATION); wxOK | wxICON_INFORMATION);
dialog.ShowModal(); dialog.ShowModal();