]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/treectrl/treetest.cpp
Tcl regex lib
[wxWidgets.git] / samples / treectrl / treetest.cpp
index 2eed27fb7d73edc8903d8e311c7d03d249661a5f..4b82bf8ad02784f15999d36f6885f241e6dfe4f6 100644 (file)
 
 #include "treetest.h"
 
-// under Windows the icons are in the .rc file
-#ifndef __WXMSW__
-    #include "icon1.xpm"
-    #include "icon2.xpm"
-    #include "icon3.xpm"
-    #include "icon4.xpm"
-    #include "icon5.xpm"
-    #include "mondrian.xpm"
-#endif
+#include "icon1.xpm"
+#include "icon2.xpm"
+#include "icon3.xpm"
+#include "icon4.xpm"
+#include "icon5.xpm"
+#include "mondrian.xpm"
+
 
 // verify that the item is ok and insult the user if it is not
 #define CHECK_ITEM( item ) if ( !item.IsOk() ) {                                 \
@@ -645,20 +643,13 @@ void MyTreeCtrl::CreateImageList(int size)
     wxImageList *images = new wxImageList(size, size, TRUE);
 
     // should correspond to TreeCtrlIcon_xxx enum
-#if defined(__WXMSW__) && defined(__WIN16__)
-    images->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE));
-#else // !MSW
     wxBusyCursor wait;
     wxIcon icons[5];
-    icons[0] = wxICON(icon1);
-    icons[1] = wxICON(icon2);
-    icons[2] = wxICON(icon3);
-    icons[3] = wxICON(icon4);
-    icons[4] = wxICON(icon5);
+    icons[0] = wxIcon(icon1_xpm);
+    icons[1] = wxIcon(icon2_xpm);
+    icons[2] = wxIcon(icon3_xpm);
+    icons[3] = wxIcon(icon4_xpm);
+    icons[4] = wxIcon(icon5_xpm);
 
     int sizeOrig = icons[0].GetWidth();
     for ( size_t i = 0; i < WXSIZEOF(icons); i++ )
@@ -669,10 +660,9 @@ void MyTreeCtrl::CreateImageList(int size)
         }
         else
         {
-            images->Add(wxBitmap(icons[i].ConvertToImage().Rescale(size, size)));
+            images->Add(wxBitmap(wxBitmap(icons[i]).ConvertToImage().Rescale(size, size)));
         }
     }
-#endif // MSW/!MSW
 
     AssignImageList(images);
 }
@@ -690,19 +680,12 @@ void MyTreeCtrl::CreateButtonsImageList(int size)
     wxImageList *images = new wxImageList(size, size, TRUE);
 
     // should correspond to TreeCtrlIcon_xxx enum
-#if defined(__WXMSW__) && defined(__WIN16__)
-    images->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap3", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap4", wxBITMAP_TYPE_BMP_RESOURCE));
-    images->Add(wxBitmap("bitmap5", wxBITMAP_TYPE_BMP_RESOURCE));
-#else // !MSW
     wxBusyCursor wait;
     wxIcon icons[4];
-    icons[0] = wxICON(icon3);   // closed
-    icons[1] = wxICON(icon3);   // closed, selected
-    icons[2] = wxICON(icon5);   // open
-    icons[3] = wxICON(icon5);   // open, selected
+    icons[0] = wxIcon(icon3_xpm);   // closed
+    icons[1] = wxIcon(icon3_xpm);   // closed, selected
+    icons[2] = wxIcon(icon5_xpm);   // open
+    icons[3] = wxIcon(icon5_xpm);   // open, selected
 
     for ( size_t i = 0; i < WXSIZEOF(icons); i++ )
     {
@@ -716,7 +699,6 @@ void MyTreeCtrl::CreateButtonsImageList(int size)
             images->Add(wxBitmap(icons[i].ConvertToImage().Rescale(size, size)));
         }
     }
-#endif // MSW/!MSW
 
     AssignButtonsImageList(images);
 #endif
@@ -866,10 +848,146 @@ TREE_EVENT_HANDLER(OnItemExpanding)
 TREE_EVENT_HANDLER(OnItemCollapsed)
 TREE_EVENT_HANDLER(OnSelChanged)
 TREE_EVENT_HANDLER(OnSelChanging)
-TREE_EVENT_HANDLER(OnTreeKeyDown)
 
 #undef TREE_EVENT_HANDLER
 
+void LogKeyEvent(const wxChar *name, const wxKeyEvent& event)
+{
+    wxString key;
+    long keycode = event.KeyCode();
+    {
+        switch ( keycode )
+        {
+            case WXK_BACK: key = "BACK"; break;
+            case WXK_TAB: key = "TAB"; break;
+            case WXK_RETURN: key = "RETURN"; break;
+            case WXK_ESCAPE: key = "ESCAPE"; break;
+            case WXK_SPACE: key = "SPACE"; break;
+            case WXK_DELETE: key = "DELETE"; break;
+            case WXK_START: key = "START"; break;
+            case WXK_LBUTTON: key = "LBUTTON"; break;
+            case WXK_RBUTTON: key = "RBUTTON"; break;
+            case WXK_CANCEL: key = "CANCEL"; break;
+            case WXK_MBUTTON: key = "MBUTTON"; break;
+            case WXK_CLEAR: key = "CLEAR"; break;
+            case WXK_SHIFT: key = "SHIFT"; break;
+            case WXK_ALT: key = "ALT"; break;
+            case WXK_CONTROL: key = "CONTROL"; break;
+            case WXK_MENU: key = "MENU"; break;
+            case WXK_PAUSE: key = "PAUSE"; break;
+            case WXK_CAPITAL: key = "CAPITAL"; break;
+            case WXK_PRIOR: key = "PRIOR"; break;
+            case WXK_NEXT: key = "NEXT"; break;
+            case WXK_END: key = "END"; break;
+            case WXK_HOME: key = "HOME"; break;
+            case WXK_LEFT: key = "LEFT"; break;
+            case WXK_UP: key = "UP"; break;
+            case WXK_RIGHT: key = "RIGHT"; break;
+            case WXK_DOWN: key = "DOWN"; break;
+            case WXK_SELECT: key = "SELECT"; break;
+            case WXK_PRINT: key = "PRINT"; break;
+            case WXK_EXECUTE: key = "EXECUTE"; break;
+            case WXK_SNAPSHOT: key = "SNAPSHOT"; break;
+            case WXK_INSERT: key = "INSERT"; break;
+            case WXK_HELP: key = "HELP"; break;
+            case WXK_NUMPAD0: key = "NUMPAD0"; break;
+            case WXK_NUMPAD1: key = "NUMPAD1"; break;
+            case WXK_NUMPAD2: key = "NUMPAD2"; break;
+            case WXK_NUMPAD3: key = "NUMPAD3"; break;
+            case WXK_NUMPAD4: key = "NUMPAD4"; break;
+            case WXK_NUMPAD5: key = "NUMPAD5"; break;
+            case WXK_NUMPAD6: key = "NUMPAD6"; break;
+            case WXK_NUMPAD7: key = "NUMPAD7"; break;
+            case WXK_NUMPAD8: key = "NUMPAD8"; break;
+            case WXK_NUMPAD9: key = "NUMPAD9"; break;
+            case WXK_MULTIPLY: key = "MULTIPLY"; break;
+            case WXK_ADD: key = "ADD"; break;
+            case WXK_SEPARATOR: key = "SEPARATOR"; break;
+            case WXK_SUBTRACT: key = "SUBTRACT"; break;
+            case WXK_DECIMAL: key = "DECIMAL"; break;
+            case WXK_DIVIDE: key = "DIVIDE"; break;
+            case WXK_F1: key = "F1"; break;
+            case WXK_F2: key = "F2"; break;
+            case WXK_F3: key = "F3"; break;
+            case WXK_F4: key = "F4"; break;
+            case WXK_F5: key = "F5"; break;
+            case WXK_F6: key = "F6"; break;
+            case WXK_F7: key = "F7"; break;
+            case WXK_F8: key = "F8"; break;
+            case WXK_F9: key = "F9"; break;
+            case WXK_F10: key = "F10"; break;
+            case WXK_F11: key = "F11"; break;
+            case WXK_F12: key = "F12"; break;
+            case WXK_F13: key = "F13"; break;
+            case WXK_F14: key = "F14"; break;
+            case WXK_F15: key = "F15"; break;
+            case WXK_F16: key = "F16"; break;
+            case WXK_F17: key = "F17"; break;
+            case WXK_F18: key = "F18"; break;
+            case WXK_F19: key = "F19"; break;
+            case WXK_F20: key = "F20"; break;
+            case WXK_F21: key = "F21"; break;
+            case WXK_F22: key = "F22"; break;
+            case WXK_F23: key = "F23"; break;
+            case WXK_F24: key = "F24"; break;
+            case WXK_NUMLOCK: key = "NUMLOCK"; break;
+            case WXK_SCROLL: key = "SCROLL"; break;
+            case WXK_PAGEUP: key = "PAGEUP"; break;
+            case WXK_PAGEDOWN: key = "PAGEDOWN"; break;
+            case WXK_NUMPAD_SPACE: key = "NUMPAD_SPACE"; break;
+            case WXK_NUMPAD_TAB: key = "NUMPAD_TAB"; break;
+            case WXK_NUMPAD_ENTER: key = "NUMPAD_ENTER"; break;
+            case WXK_NUMPAD_F1: key = "NUMPAD_F1"; break;
+            case WXK_NUMPAD_F2: key = "NUMPAD_F2"; break;
+            case WXK_NUMPAD_F3: key = "NUMPAD_F3"; break;
+            case WXK_NUMPAD_F4: key = "NUMPAD_F4"; break;
+            case WXK_NUMPAD_HOME: key = "NUMPAD_HOME"; break;
+            case WXK_NUMPAD_LEFT: key = "NUMPAD_LEFT"; break;
+            case WXK_NUMPAD_UP: key = "NUMPAD_UP"; break;
+            case WXK_NUMPAD_RIGHT: key = "NUMPAD_RIGHT"; break;
+            case WXK_NUMPAD_DOWN: key = "NUMPAD_DOWN"; break;
+            case WXK_NUMPAD_PRIOR: key = "NUMPAD_PRIOR"; break;
+            case WXK_NUMPAD_PAGEUP: key = "NUMPAD_PAGEUP"; break;
+            case WXK_NUMPAD_PAGEDOWN: key = "NUMPAD_PAGEDOWN"; break;
+            case WXK_NUMPAD_END: key = "NUMPAD_END"; break;
+            case WXK_NUMPAD_BEGIN: key = "NUMPAD_BEGIN"; break;
+            case WXK_NUMPAD_INSERT: key = "NUMPAD_INSERT"; break;
+            case WXK_NUMPAD_DELETE: key = "NUMPAD_DELETE"; break;
+            case WXK_NUMPAD_EQUAL: key = "NUMPAD_EQUAL"; break;
+            case WXK_NUMPAD_MULTIPLY: key = "NUMPAD_MULTIPLY"; break;
+            case WXK_NUMPAD_ADD: key = "NUMPAD_ADD"; break;
+            case WXK_NUMPAD_SEPARATOR: key = "NUMPAD_SEPARATOR"; break;
+            case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break;
+            case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break;
+
+            default:
+            {
+               if ( wxIsprint((int)keycode) )
+                   key.Printf(_T("'%c'"), (char)keycode);
+               else if ( keycode > 0 && keycode < 27 )
+                   key.Printf(_("Ctrl-%c"), _T('A') + keycode - 1);
+               else
+                   key.Printf(_T("unknown (%ld)"), keycode);
+            }
+        }
+    }
+
+    wxLogMessage( _T("%s event: %s (flags = %c%c%c%c)"),
+                  name,
+                  key.c_str(),
+                  event.ControlDown() ? _T('C') : _T('-'),
+                  event.AltDown() ? _T('A') : _T('-'),
+                  event.ShiftDown() ? _T('S') : _T('-'),
+                  event.MetaDown() ? _T('M') : _T('-'));
+}
+
+void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent& event)
+{
+    LogKeyEvent(_T("Tree key down "), event.GetKeyEvent());
+
+    event.Skip();
+}
+
 void MyTreeCtrl::OnBeginDrag(wxTreeEvent& event)
 {
     // need to explicitly allow drag
@@ -944,7 +1062,7 @@ void MyTreeCtrl::OnEndLabelEdit(wxTreeEvent& event)
     // don't allow anything except letters in the labels
     if ( !event.GetLabel().IsWord() )
     {
-        wxMessageBox(wxT("The label should contain only letters."));
+        wxMessageBox(wxT("The new label should be a single word."));
 
         event.Veto();
     }