self.name = name
         self.buffer = ''
     def write(self, data):
-        self.buffer += data.encode()
+        self.buffer += data.encode(g.currentEncoding)
     def close(self):
         wxMemoryFSHandler_AddFile(self.name, self.buffer)
 
     BITMAP_BUTTON = wxNewId()
     RADIO_BUTTON = wxNewId()
     SPIN_BUTTON = wxNewId()
+    TOGGLE_BUTTON = wxNewId()
 
     STATIC_BOX = wxNewId()
     CHECK_BOX = wxNewId()
             ID_NEW.BITMAP_BUTTON: 'wxBitmapButton',
             ID_NEW.RADIO_BUTTON: 'wxRadioButton',
             ID_NEW.SPIN_BUTTON: 'wxSpinButton',
+            ID_NEW.TOGGLE_BUTTON: 'wxToggleButton',
 
             ID_NEW.STATIC_BOX: 'wxStaticBox',
             ID_NEW.CHECK_BOX: 'wxCheckBox',
              (ID_NEW.BITMAP_BUTTON, 'BitmapButton', 'Create bitmap button'),
              (ID_NEW.RADIO_BUTTON, 'RadioButton', 'Create radio button'),
              (ID_NEW.SPIN_BUTTON, 'SpinButton', 'Create spin button'),
+             (ID_NEW.TOGGLE_BUTTON, 'ToggleButton', 'Create toggle button'),
              ],
             ['box', 'Boxes',
              (ID_NEW.STATIC_BOX, 'StaticBox', 'Create static box'),
             # Find position
             for i in range(notebook.GetPageCount()):
                 if notebook.GetPage(i) == obj:
-                    if notebook.GetSelection() != i: notebook.SetSelection(i)
+                    if notebook.GetSelection() != i:
+                        notebook.SetSelection(i)
+                        # Remove highlight - otherwise highlight window won't be visible
+                        if g.testWin.highLight:
+                            g.testWin.highLight.Remove()
                     break
         # Find first ancestor which is a wxWindow (not a sizer)
         winParent = itemParent
         while self.GetPyData(winParent).isSizer:
             winParent = self.GetItemParent(winParent)
-        parentPos = self.FindNodePos(winParent)
+        # Notebook children are layed out in a little strange way
+        if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook:
+            parentPos = wxPoint(0,0)
+        else:
+            parentPos = self.FindNodePos(winParent)
         # Position (-1,-1) is really (0,0)
         pos = obj.GetPosition()
         if pos == (-1,-1): pos = (0,0)
         return child
 
     def OnSelChanged(self, evt):
+        self.ChangeSelection(evt.GetItem())
+
+    def ChangeSelection(self, item):
         # Apply changes
         # !!! problem with wxGTK - GetOldItem is Ok if nothing selected
         #oldItem = evt.GetOldItem()
                 status = 'Changes were applied'
         g.frame.SetStatusText(status)
         # Generate view
-        self.selection = evt.GetItem()
+        self.selection = item
         if not self.selection.IsOk():
             self.selection = None
             return
                 testWin.panel = testWin
                 testWin.CreateStatusBar()
                 testWin.SetClientSize(testWin.GetBestSize())
-                testWin.panel = testWin
                 testWin.SetPosition(pos)
                 testWin.Show(True)
             elif xxx.__class__ == xxxPanel: