diff --git a/examples/wxSerialConfigDialog.py b/examples/wxSerialConfigDialog.py
index 3a2a83d..7ceecad 100755
--- a/examples/wxSerialConfigDialog.py
+++ b/examples/wxSerialConfigDialog.py
@@ -19,13 +19,15 @@
 
 
 class SerialConfigDialog(wx.Dialog):
-    """Serial Port configuration dialog, to be used with pySerial 2.0+
-       When instantiating a class of this dialog, then the "serial" keyword
-       argument is mandatory. It is a reference to a serial.Serial instance.
-       the optional "show" keyword argument can be used to show/hide different
-       settings. The default is SHOW_ALL which corresponds to 
-       SHOW_BAUDRATE|SHOW_FORMAT|SHOW_FLOW|SHOW_TIMEOUT. All constants can be
-       found in this module (not the class)."""
+    """\
+    Serial Port configuration dialog, to be used with pySerial 2.0+
+    When instantiating a class of this dialog, then the "serial" keyword
+    argument is mandatory. It is a reference to a serial.Serial instance.
+    the optional "show" keyword argument can be used to show/hide different
+    settings. The default is SHOW_ALL which corresponds to 
+    SHOW_BAUDRATE|SHOW_FORMAT|SHOW_FLOW|SHOW_TIMEOUT. All constants can be
+    found in this module (not the class).
+    """
 
     def __init__(self, *args, **kwds):
         # grab the serial keyword and remove it from the dict
@@ -36,43 +38,74 @@
             self.show = kwds['show']
             del kwds['show']
         # begin wxGlade: SerialConfigDialog.__init__
-        # end wxGlade
         kwds["style"] = wx.DEFAULT_DIALOG_STYLE
         wx.Dialog.__init__(self, *args, **kwds)
         self.label_2 = wx.StaticText(self, -1, "Port")
-        self.combo_box_port = wx.ComboBox(self, -1, choices=["dummy1", "dummy2", "dummy3", "dummy4", "dummy5"], style=wx.CB_DROPDOWN)
-        if self.show & SHOW_BAUDRATE:
-            self.label_1 = wx.StaticText(self, -1, "Baudrate")
-            self.choice_baudrate = wx.Choice(self, -1, choices=["choice 1"])
-        if self.show & SHOW_FORMAT:
-            self.label_3 = wx.StaticText(self, -1, "Data Bits")
-            self.choice_databits = wx.Choice(self, -1, choices=["choice 1"])
-            self.label_4 = wx.StaticText(self, -1, "Stop Bits")
-            self.choice_stopbits = wx.Choice(self, -1, choices=["choice 1"])
-            self.label_5 = wx.StaticText(self, -1, "Parity")
-            self.choice_parity = wx.Choice(self, -1, choices=["choice 1"])
-        if self.show & SHOW_TIMEOUT:
-            self.checkbox_timeout = wx.CheckBox(self, -1, "Use Timeout")
-            self.text_ctrl_timeout = wx.TextCtrl(self, -1, "")
-            self.label_6 = wx.StaticText(self, -1, "seconds")
-        if self.show & SHOW_FLOW:
-            self.checkbox_rtscts = wx.CheckBox(self, -1, "RTS/CTS")
-            self.checkbox_xonxoff = wx.CheckBox(self, -1, "Xon/Xoff")
-        self.button_ok = wx.Button(self, -1, "OK")
-        self.button_cancel = wx.Button(self, -1, "Cancel")
+        self.choice_port = wx.Choice(self, -1, choices=[])
+        self.label_1 = wx.StaticText(self, -1, "Baudrate")
+        self.choice_baudrate = wx.Choice(self, -1, choices=["choice 1"])
+        self.sizer_1_staticbox = wx.StaticBox(self, -1, "Basics")
+        self.panel_format = wx.Panel(self, -1)
+        self.label_3 = wx.StaticText(self.panel_format, -1, "Data Bits")
+        self.choice_databits = wx.Choice(self.panel_format, -1, choices=["choice 1"])
+        self.label_4 = wx.StaticText(self.panel_format, -1, "Stop Bits")
+        self.choice_stopbits = wx.Choice(self.panel_format, -1, choices=["choice 1"])
+        self.label_5 = wx.StaticText(self.panel_format, -1, "Parity")
+        self.choice_parity = wx.Choice(self.panel_format, -1, choices=["choice 1"])
+        self.sizer_format_staticbox = wx.StaticBox(self.panel_format, -1, "Data Format")
+        self.panel_timeout = wx.Panel(self, -1)
+        self.checkbox_timeout = wx.CheckBox(self.panel_timeout, -1, "Use Timeout")
+        self.text_ctrl_timeout = wx.TextCtrl(self.panel_timeout, -1, "")
+        self.label_6 = wx.StaticText(self.panel_timeout, -1, "seconds")
+        self.sizer_timeout_staticbox = wx.StaticBox(self.panel_timeout, -1, "Timeout")
+        self.panel_flow = wx.Panel(self, -1)
+        self.checkbox_rtscts = wx.CheckBox(self.panel_flow, -1, "RTS/CTS")
+        self.checkbox_xonxoff = wx.CheckBox(self.panel_flow, -1, "Xon/Xoff")
+        self.sizer_flow_staticbox = wx.StaticBox(self.panel_flow, -1, "Flow Control")
+        self.button_ok = wx.Button(self, wx.ID_OK, "")
+        self.button_cancel = wx.Button(self, wx.ID_CANCEL, "")
 
         self.__set_properties()
         self.__do_layout()
+        # end wxGlade
+        # attach the event handlers
+        self.__attach_events()
+
+    def __set_properties(self):
+        # begin wxGlade: SerialConfigDialog.__set_properties
+        self.SetTitle("Serial Port Configuration")
+        self.choice_baudrate.SetSelection(0)
+        self.choice_databits.SetSelection(0)
+        self.choice_stopbits.SetSelection(0)
+        self.choice_parity.SetSelection(0)
+        self.text_ctrl_timeout.Enable(False)
+        self.button_ok.SetDefault()
+        # end wxGlade
+        self.SetTitle("Serial Port Configuration")
+        if self.show & SHOW_TIMEOUT:
+            self.text_ctrl_timeout.Enable(0)
+        self.button_ok.SetDefault()
+        
+        if not self.show & SHOW_BAUDRATE:
+            self.label_1.Hide()
+            self.choice_baudrate.Hide()
+        if not self.show & SHOW_FORMAT:
+            self.panel_format.Hide()
+        if not self.show & SHOW_TIMEOUT:
+            self.panel_timeout.Hide()
+        if not self.show & SHOW_FLOW:
+            self.panel_flow.Hide()
+
         # fill in ports and select current setting
         preferred_index = 0
-        self.combo_box_port.Clear()
+        self.choice_port.Clear()
         self.ports = []
         for n, (portname, desc, hwid) in enumerate(sorted(serial.tools.list_ports.comports())):
-            self.combo_box_port.Append('%s  (%s [%s])' % (portname, desc, hwid))
+            self.choice_port.Append('%s - %s' % (portname, desc))
             self.ports.append(portname)
-            if self.serial.portstr == portname:
+            if self.serial.name == portname:
                 preferred_index = n
-        self.combo_box_port.SetSelection(preferred_index)
+        self.choice_port.SetSelection(preferred_index)
         if self.show & SHOW_BAUDRATE:
             # fill in baud rates and select current setting
             self.choice_baudrate.Clear()
@@ -117,68 +150,54 @@
             self.checkbox_rtscts.SetValue(self.serial.rtscts)
             # set the rtscts mode
             self.checkbox_xonxoff.SetValue(self.serial.xonxoff)
-        # attach the event handlers
-        self.__attach_events()
-
-    def __set_properties(self):
-        # begin wxGlade: SerialConfigDialog.__set_properties
-        # end wxGlade
-        self.SetTitle("Serial Port Configuration")
-        if self.show & SHOW_TIMEOUT:
-            self.text_ctrl_timeout.Enable(0)
-        self.button_ok.SetDefault()
 
     def __do_layout(self):
         # begin wxGlade: SerialConfigDialog.__do_layout
-        # end wxGlade
         sizer_2 = wx.BoxSizer(wx.VERTICAL)
         sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_basics = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Basics"), wx.VERTICAL)
-        sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_5.Add(self.label_2, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-        sizer_5.Add(self.combo_box_port, 1, 0, 0)
-        sizer_basics.Add(sizer_5, 0, wx.RIGHT|wx.EXPAND, 0)
-        if self.show & SHOW_BAUDRATE:
-            sizer_baudrate = wx.BoxSizer(wx.HORIZONTAL)
-            sizer_baudrate.Add(self.label_1, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_baudrate.Add(self.choice_baudrate, 1, wx.ALIGN_RIGHT, 0)
-            sizer_basics.Add(sizer_baudrate, 0, wx.EXPAND, 0)
-        sizer_2.Add(sizer_basics, 0, wx.EXPAND, 0)
-        if self.show & SHOW_FORMAT:
-            sizer_8 = wx.BoxSizer(wx.HORIZONTAL)
-            sizer_7 = wx.BoxSizer(wx.HORIZONTAL)
-            sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
-            sizer_format = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Data Format"), wx.VERTICAL)
-            sizer_6.Add(self.label_3, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_6.Add(self.choice_databits, 1, wx.ALIGN_RIGHT, 0)
-            sizer_format.Add(sizer_6, 0, wx.EXPAND, 0)
-            sizer_7.Add(self.label_4, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_7.Add(self.choice_stopbits, 1, wx.ALIGN_RIGHT, 0)
-            sizer_format.Add(sizer_7, 0, wx.EXPAND, 0)
-            sizer_8.Add(self.label_5, 1, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_8.Add(self.choice_parity, 1, wx.ALIGN_RIGHT, 0)
-            sizer_format.Add(sizer_8, 0, wx.EXPAND, 0)
-            sizer_2.Add(sizer_format, 0, wx.EXPAND, 0)
-        if self.show & SHOW_TIMEOUT:
-            sizer_timeout = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Timeout"), wx.HORIZONTAL)
-            sizer_timeout.Add(self.checkbox_timeout, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_timeout.Add(self.text_ctrl_timeout, 0, 0, 0)
-            sizer_timeout.Add(self.label_6, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_2.Add(sizer_timeout, 0, 0, 0)
-        if self.show & SHOW_FLOW:
-            sizer_flow = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Flow Control"), wx.HORIZONTAL)
-            sizer_flow.Add(self.checkbox_rtscts, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_flow.Add(self.checkbox_xonxoff, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 4)
-            sizer_flow.Add((10,10), 1, wx.EXPAND, 0)
-            sizer_2.Add(sizer_flow, 0, wx.EXPAND, 0)
+        self.sizer_flow_staticbox.Lower()
+        sizer_flow = wx.StaticBoxSizer(self.sizer_flow_staticbox, wx.HORIZONTAL)
+        self.sizer_timeout_staticbox.Lower()
+        sizer_timeout = wx.StaticBoxSizer(self.sizer_timeout_staticbox, wx.HORIZONTAL)
+        self.sizer_format_staticbox.Lower()
+        sizer_format = wx.StaticBoxSizer(self.sizer_format_staticbox, wx.VERTICAL)
+        grid_sizer_1 = wx.FlexGridSizer(3, 2, 0, 0)
+        self.sizer_1_staticbox.Lower()
+        sizer_1 = wx.StaticBoxSizer(self.sizer_1_staticbox, wx.VERTICAL)
+        sizer_basics = wx.FlexGridSizer(3, 2, 0, 0)
+        sizer_basics.Add(self.label_2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        sizer_basics.Add(self.choice_port, 0, wx.EXPAND, 0)
+        sizer_basics.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        sizer_basics.Add(self.choice_baudrate, 0, wx.EXPAND, 0)
+        sizer_basics.AddGrowableCol(1)
+        sizer_1.Add(sizer_basics, 0, wx.EXPAND, 0)
+        sizer_2.Add(sizer_1, 0, wx.EXPAND, 0)
+        grid_sizer_1.Add(self.label_3, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        grid_sizer_1.Add(self.choice_databits, 1, wx.EXPAND | wx.ALIGN_RIGHT, 0)
+        grid_sizer_1.Add(self.label_4, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        grid_sizer_1.Add(self.choice_stopbits, 1, wx.EXPAND | wx.ALIGN_RIGHT, 0)
+        grid_sizer_1.Add(self.label_5, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        grid_sizer_1.Add(self.choice_parity, 1, wx.EXPAND | wx.ALIGN_RIGHT, 0)
+        sizer_format.Add(grid_sizer_1, 1, wx.EXPAND, 0)
+        self.panel_format.SetSizer(sizer_format)
+        sizer_2.Add(self.panel_format, 0, wx.EXPAND, 0)
+        sizer_timeout.Add(self.checkbox_timeout, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        sizer_timeout.Add(self.text_ctrl_timeout, 0, 0, 0)
+        sizer_timeout.Add(self.label_6, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        self.panel_timeout.SetSizer(sizer_timeout)
+        sizer_2.Add(self.panel_timeout, 0, wx.EXPAND, 0)
+        sizer_flow.Add(self.checkbox_rtscts, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        sizer_flow.Add(self.checkbox_xonxoff, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
+        sizer_flow.Add((10, 10), 1, wx.EXPAND, 0)
+        self.panel_flow.SetSizer(sizer_flow)
+        sizer_2.Add(self.panel_flow, 0, wx.EXPAND, 0)
         sizer_3.Add(self.button_ok, 0, 0, 0)
         sizer_3.Add(self.button_cancel, 0, 0, 0)
-        sizer_2.Add(sizer_3, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
-        self.SetAutoLayout(1)
+        sizer_2.Add(sizer_3, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
         self.SetSizer(sizer_2)
         sizer_2.Fit(self)
-        sizer_2.SetSizeHints(self)
         self.Layout()
+        # end wxGlade
 
     def __attach_events(self):
         wx.EVT_BUTTON(self, self.button_ok.GetId(), self.OnOK)
@@ -188,7 +207,7 @@
 
     def OnOK(self, events):
         success = True
-        self.serial.port     = self.ports[self.combo_box_port.GetSelection()]
+        self.serial.port     = self.ports[self.choice_port.GetSelection()]
         if self.show & SHOW_BAUDRATE:
             self.serial.baudrate = self.serial.BAUDRATES[self.choice_baudrate.GetSelection()]
         if self.show & SHOW_FORMAT:
@@ -203,10 +222,12 @@
                 try:
                     self.serial.timeout = float(self.text_ctrl_timeout.GetValue())
                 except ValueError:
-                    dlg = wx.MessageDialog(self, 'Timeout must be a numeric value',
-                                                'Value Error', wx.OK | wx.ICON_ERROR)
-                    dlg.ShowModal()
-                    dlg.Destroy()
+                    with wx.MessageDialog(
+                            self,
+                            'Timeout must be a numeric value',
+                            'Value Error',
+                            wx.OK | wx.ICON_ERROR) as dlg:
+                        dlg.ShowModal()
                     success = False
             else:
                 self.serial.timeout = None
@@ -243,7 +264,7 @@
             if result != wx.ID_OK:
                 break
         # the user can play around with the values, CANCEL aborts the loop
-        while 1:
+        while True:
             dialog_serial_cfg = SerialConfigDialog(None, -1, "", serial=ser)
             self.SetTopWindow(dialog_serial_cfg)
             result = dialog_serial_cfg.ShowModal()
diff --git a/examples/wxSerialConfigDialog.wxg b/examples/wxSerialConfigDialog.wxg
index f5e92e0..8938479 100644
--- a/examples/wxSerialConfigDialog.wxg
+++ b/examples/wxSerialConfigDialog.wxg
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
-<!-- generated by wxGlade 0.3.1 on Fri Oct 03 01:53:04 2003 -->
+<!-- generated by wxGlade 0.6.5 on Sat Sep 12 02:03:03 2015 -->
 
-<application path="D:\prog\python\pyserial_sf\pyserial\examples\wxSerialConfigDialog.py" name="app" class="MyApp" option="0" language="python" top_window="dialog_serial_cfg" encoding="ISO-8859-1" use_gettext="0" overwrite="0">
+<application path="wxSerialConfigDialog.py" name="app" class="MyApp" option="0" language="python" top_window="dialog_serial_cfg" encoding="ISO-8859-1" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0" indent_amount="4" indent_symbol="space" source_extension=".cpp" header_extension=".h">
     <object class="SerialConfigDialog" name="dialog_serial_cfg" base="EditDialog">
         <style>wxDEFAULT_DIALOG_STYLE</style>
         <title>Serial Port Configuration</title>
@@ -11,59 +11,51 @@
                 <flag>wxEXPAND</flag>
                 <border>0</border>
                 <option>0</option>
-                <object class="wxStaticBoxSizer" name="sizer_basics" base="EditStaticBoxSizer">
+                <object class="wxStaticBoxSizer" name="sizer_1" base="EditStaticBoxSizer">
                     <orient>wxVERTICAL</orient>
                     <label>Basics</label>
                     <object class="sizeritem">
-                        <flag>wxRIGHT|wxEXPAND</flag>
+                        <flag>wxEXPAND</flag>
                         <border>0</border>
                         <option>0</option>
-                        <object class="wxBoxSizer" name="sizer_5" base="EditBoxSizer">
-                            <orient>wxHORIZONTAL</orient>
+                        <object class="wxFlexGridSizer" name="sizer_basics" base="EditFlexGridSizer">
+                            <hgap>0</hgap>
+                            <rows>3</rows>
+                            <growable_cols>1</growable_cols>
+                            <cols>2</cols>
+                            <vgap>0</vgap>
                             <object class="sizeritem">
                                 <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
                                 <border>4</border>
-                                <option>1</option>
+                                <option>0</option>
                                 <object class="wxStaticText" name="label_2" base="EditStaticText">
                                     <attribute>1</attribute>
                                     <label>Port</label>
                                 </object>
                             </object>
                             <object class="sizeritem">
+                                <flag>wxEXPAND</flag>
                                 <border>0</border>
-                                <option>1</option>
-                                <object class="wxComboBox" name="combo_box_port" base="EditComboBox">
+                                <option>0</option>
+                                <object class="wxChoice" name="choice_port" base="EditChoice">
                                     <selection>0</selection>
                                     <choices>
-                                        <choice>dummy1</choice>
-                                        <choice>dummy2</choice>
-                                        <choice>dummy3</choice>
-                                        <choice>dummy4</choice>
-                                        <choice>dummy5</choice>
                                     </choices>
                                 </object>
                             </object>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxBoxSizer" name="sizer_baudrate" base="EditBoxSizer">
-                            <orient>wxHORIZONTAL</orient>
                             <object class="sizeritem">
                                 <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
                                 <border>4</border>
-                                <option>1</option>
+                                <option>0</option>
                                 <object class="wxStaticText" name="label_1" base="EditStaticText">
                                     <attribute>1</attribute>
                                     <label>Baudrate</label>
                                 </object>
                             </object>
                             <object class="sizeritem">
-                                <flag>wxALIGN_RIGHT</flag>
+                                <flag>wxEXPAND</flag>
                                 <border>0</border>
-                                <option>1</option>
+                                <option>0</option>
                                 <object class="wxChoice" name="choice_baudrate" base="EditChoice">
                                     <selection>0</selection>
                                     <choices>
@@ -79,123 +71,81 @@
                 <flag>wxEXPAND</flag>
                 <border>0</border>
                 <option>0</option>
-                <object class="wxStaticBoxSizer" name="sizer_format" base="EditStaticBoxSizer">
-                    <orient>wxVERTICAL</orient>
-                    <label>Data Format</label>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxBoxSizer" name="sizer_6" base="EditBoxSizer">
-                            <orient>wxHORIZONTAL</orient>
-                            <object class="sizeritem">
-                                <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                                <border>4</border>
-                                <option>1</option>
-                                <object class="wxStaticText" name="label_3" base="EditStaticText">
-                                    <attribute>1</attribute>
-                                    <label>Data Bits</label>
+                <object class="wxPanel" name="panel_format" base="EditPanel">
+                    <style>wxTAB_TRAVERSAL</style>
+                    <object class="wxStaticBoxSizer" name="sizer_format" base="EditStaticBoxSizer">
+                        <orient>wxVERTICAL</orient>
+                        <label>Data Format</label>
+                        <object class="sizeritem">
+                            <flag>wxEXPAND</flag>
+                            <border>0</border>
+                            <option>1</option>
+                            <object class="wxFlexGridSizer" name="grid_sizer_1" base="EditFlexGridSizer">
+                                <hgap>0</hgap>
+                                <rows>3</rows>
+                                <cols>2</cols>
+                                <vgap>0</vgap>
+                                <object class="sizeritem">
+                                    <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                                    <border>4</border>
+                                    <option>1</option>
+                                    <object class="wxStaticText" name="label_3" base="EditStaticText">
+                                        <attribute>1</attribute>
+                                        <label>Data Bits</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxEXPAND|wxALIGN_RIGHT</flag>
+                                    <border>0</border>
+                                    <option>1</option>
+                                    <object class="wxChoice" name="choice_databits" base="EditChoice">
+                                        <selection>0</selection>
+                                        <choices>
+                                            <choice>choice 1</choice>
+                                        </choices>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                                    <border>4</border>
+                                    <option>1</option>
+                                    <object class="wxStaticText" name="label_4" base="EditStaticText">
+                                        <attribute>1</attribute>
+                                        <label>Stop Bits</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxEXPAND|wxALIGN_RIGHT</flag>
+                                    <border>0</border>
+                                    <option>1</option>
+                                    <object class="wxChoice" name="choice_stopbits" base="EditChoice">
+                                        <selection>0</selection>
+                                        <choices>
+                                            <choice>choice 1</choice>
+                                        </choices>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                                    <border>4</border>
+                                    <option>1</option>
+                                    <object class="wxStaticText" name="label_5" base="EditStaticText">
+                                        <attribute>1</attribute>
+                                        <label>Parity</label>
+                                    </object>
+                                </object>
+                                <object class="sizeritem">
+                                    <flag>wxEXPAND|wxALIGN_RIGHT</flag>
+                                    <border>0</border>
+                                    <option>1</option>
+                                    <object class="wxChoice" name="choice_parity" base="EditChoice">
+                                        <selection>0</selection>
+                                        <choices>
+                                            <choice>choice 1</choice>
+                                        </choices>
+                                    </object>
                                 </object>
                             </object>
-                            <object class="sizeritem">
-                                <flag>wxALIGN_RIGHT</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxChoice" name="choice_databits" base="EditChoice">
-                                    <selection>0</selection>
-                                    <choices>
-                                        <choice>choice 1</choice>
-                                    </choices>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxBoxSizer" name="sizer_7" base="EditBoxSizer">
-                            <orient>wxHORIZONTAL</orient>
-                            <object class="sizeritem">
-                                <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                                <border>4</border>
-                                <option>1</option>
-                                <object class="wxStaticText" name="label_4" base="EditStaticText">
-                                    <attribute>1</attribute>
-                                    <label>Stop Bits</label>
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxALIGN_RIGHT</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxChoice" name="choice_stopbits" base="EditChoice">
-                                    <selection>0</selection>
-                                    <choices>
-                                        <choice>choice 1</choice>
-                                    </choices>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxBoxSizer" name="sizer_8" base="EditBoxSizer">
-                            <orient>wxHORIZONTAL</orient>
-                            <object class="sizeritem">
-                                <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                                <border>4</border>
-                                <option>1</option>
-                                <object class="wxStaticText" name="label_5" base="EditStaticText">
-                                    <attribute>1</attribute>
-                                    <label>Parity</label>
-                                </object>
-                            </object>
-                            <object class="sizeritem">
-                                <flag>wxALIGN_RIGHT</flag>
-                                <border>0</border>
-                                <option>1</option>
-                                <object class="wxChoice" name="choice_parity" base="EditChoice">
-                                    <selection>0</selection>
-                                    <choices>
-                                        <choice>choice 1</choice>
-                                    </choices>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                </object>
-            </object>
-            <object class="sizeritem">
-                <border>0</border>
-                <option>0</option>
-                <object class="wxStaticBoxSizer" name="sizer_timeout" base="EditStaticBoxSizer">
-                    <orient>wxHORIZONTAL</orient>
-                    <label>Timeout</label>
-                    <object class="sizeritem">
-                        <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                        <border>4</border>
-                        <option>0</option>
-                        <object class="wxCheckBox" name="checkbox_timeout" base="EditCheckBox">
-                            <label>Use Timeout</label>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <border>0</border>
-                        <option>0</option>
-                        <object class="wxTextCtrl" name="text_ctrl_timeout" base="EditTextCtrl">
-                            <disabled>1</disabled>
-                        </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                        <border>4</border>
-                        <option>0</option>
-                        <object class="wxStaticText" name="label_6" base="EditStaticText">
-                            <attribute>1</attribute>
-                            <label>seconds</label>
                         </object>
                     </object>
                 </object>
@@ -204,32 +154,71 @@
                 <flag>wxEXPAND</flag>
                 <border>0</border>
                 <option>0</option>
-                <object class="wxStaticBoxSizer" name="sizer_flow" base="EditStaticBoxSizer">
-                    <orient>wxHORIZONTAL</orient>
-                    <label>Flow Control</label>
-                    <object class="sizeritem">
-                        <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                        <border>4</border>
-                        <option>0</option>
-                        <object class="wxCheckBox" name="checkbox_rtscts" base="EditCheckBox">
-                            <label>RTS/CTS</label>
+                <object class="wxPanel" name="panel_timeout" base="EditPanel">
+                    <style>wxTAB_TRAVERSAL</style>
+                    <object class="wxStaticBoxSizer" name="sizer_timeout" base="EditStaticBoxSizer">
+                        <orient>wxHORIZONTAL</orient>
+                        <label>Timeout</label>
+                        <object class="sizeritem">
+                            <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                            <border>4</border>
+                            <option>0</option>
+                            <object class="wxCheckBox" name="checkbox_timeout" base="EditCheckBox">
+                                <label>Use Timeout</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <border>0</border>
+                            <option>0</option>
+                            <object class="wxTextCtrl" name="text_ctrl_timeout" base="EditTextCtrl">
+                                <disabled>1</disabled>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                            <border>4</border>
+                            <option>0</option>
+                            <object class="wxStaticText" name="label_6" base="EditStaticText">
+                                <attribute>1</attribute>
+                                <label>seconds</label>
+                            </object>
                         </object>
                     </object>
-                    <object class="sizeritem">
-                        <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
-                        <border>4</border>
-                        <option>0</option>
-                        <object class="wxCheckBox" name="checkbox_xonxoff" base="EditCheckBox">
-                            <label>Xon/Xoff</label>
+                </object>
+            </object>
+            <object class="sizeritem">
+                <flag>wxEXPAND</flag>
+                <border>0</border>
+                <option>0</option>
+                <object class="wxPanel" name="panel_flow" base="EditPanel">
+                    <style>wxTAB_TRAVERSAL</style>
+                    <object class="wxStaticBoxSizer" name="sizer_flow" base="EditStaticBoxSizer">
+                        <orient>wxHORIZONTAL</orient>
+                        <label>Flow Control</label>
+                        <object class="sizeritem">
+                            <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                            <border>4</border>
+                            <option>0</option>
+                            <object class="wxCheckBox" name="checkbox_rtscts" base="EditCheckBox">
+                                <label>RTS/CTS</label>
+                            </object>
                         </object>
-                    </object>
-                    <object class="sizeritem">
-                        <flag>wxEXPAND</flag>
-                        <border>0</border>
-                        <option>1</option>
-                        <object class="spacer" name="spacer" base="EditSpacer">
-                            <height>10</height>
-                            <width>10</width>
+                        <object class="sizeritem">
+                            <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+                            <border>4</border>
+                            <option>0</option>
+                            <object class="wxCheckBox" name="checkbox_xonxoff" base="EditCheckBox">
+                                <label>Xon/Xoff</label>
+                            </object>
+                        </object>
+                        <object class="sizeritem">
+                            <flag>wxEXPAND</flag>
+                            <border>0</border>
+                            <option>1</option>
+                            <object class="spacer" name="spacer" base="EditSpacer">
+                                <height>10</height>
+                                <width>10</width>
+                            </object>
                         </object>
                     </object>
                 </object>
@@ -244,15 +233,15 @@
                         <border>0</border>
                         <option>0</option>
                         <object class="wxButton" name="button_ok" base="EditButton">
+                            <stockitem>OK</stockitem>
                             <default>1</default>
-                            <label>OK</label>
                         </object>
                     </object>
                     <object class="sizeritem">
                         <border>0</border>
                         <option>0</option>
                         <object class="wxButton" name="button_cancel" base="EditButton">
-                            <label>Cancel</label>
+                            <stockitem>CANCEL</stockitem>
                         </object>
                     </object>
                 </object>
diff --git a/examples/wxTerminal.py b/examples/wxTerminal.py
index 47ee698..973b933 100755
--- a/examples/wxTerminal.py
+++ b/examples/wxTerminal.py
@@ -38,6 +38,8 @@
 ID_SETTINGS     = wx.NewId()
 ID_TERM         = wx.NewId()
 ID_EXIT         = wx.NewId()
+ID_RTS          = wx.NewId()
+ID_DTR          = wx.NewId()
 
 NEWLINE_CR      = 0
 NEWLINE_LF      = 1
@@ -63,6 +65,7 @@
         self.checkbox_echo = wx.CheckBox(self, -1, "Local Echo")
         self.checkbox_unprintable = wx.CheckBox(self, -1, "Show unprintable characters")
         self.radio_box_newline = wx.RadioBox(self, -1, "Newline Handling", choices=["CR only", "LF only", "CR+LF"], majorDimension=0, style=wx.RA_SPECIFY_ROWS)
+        self.sizer_4_staticbox = wx.StaticBox(self, -1, "Input/Output")
         self.button_ok = wx.Button(self, -1, "OK")
         self.button_cancel = wx.Button(self, -1, "Cancel")
 
@@ -85,18 +88,17 @@
         # begin wxGlade: TerminalSettingsDialog.__do_layout
         sizer_2 = wx.BoxSizer(wx.VERTICAL)
         sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
-        sizer_4 = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Input/Output"), wx.VERTICAL)
+        self.sizer_4_staticbox.Lower()
+        sizer_4 = wx.StaticBoxSizer(self.sizer_4_staticbox, wx.VERTICAL)
         sizer_4.Add(self.checkbox_echo, 0, wx.ALL, 4)
         sizer_4.Add(self.checkbox_unprintable, 0, wx.ALL, 4)
         sizer_4.Add(self.radio_box_newline, 0, 0, 0)
         sizer_2.Add(sizer_4, 0, wx.EXPAND, 0)
         sizer_3.Add(self.button_ok, 0, 0, 0)
         sizer_3.Add(self.button_cancel, 0, 0, 0)
-        sizer_2.Add(sizer_3, 0, wx.ALL|wx.ALIGN_RIGHT, 4)
-        self.SetAutoLayout(1)
+        sizer_2.Add(sizer_3, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
         self.SetSizer(sizer_2)
         sizer_2.Fit(self)
-        sizer_2.SetSizeHints(self)
         self.Layout()
         # end wxGlade
 
@@ -130,24 +132,36 @@
         # begin wxGlade: TerminalFrame.__init__
         kwds["style"] = wx.DEFAULT_FRAME_STYLE
         wx.Frame.__init__(self, *args, **kwds)
-        self.text_ctrl_output = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY)
-
+        
         # Menu Bar
         self.frame_terminal_menubar = wx.MenuBar()
-        self.SetMenuBar(self.frame_terminal_menubar)
         wxglade_tmp_menu = wx.Menu()
         wxglade_tmp_menu.Append(ID_CLEAR, "&Clear", "", wx.ITEM_NORMAL)
         wxglade_tmp_menu.Append(ID_SAVEAS, "&Save Text As...", "", wx.ITEM_NORMAL)
         wxglade_tmp_menu.AppendSeparator()
-        wxglade_tmp_menu.Append(ID_SETTINGS, "&Port Settings...", "", wx.ITEM_NORMAL)
         wxglade_tmp_menu.Append(ID_TERM, "&Terminal Settings...", "", wx.ITEM_NORMAL)
         wxglade_tmp_menu.AppendSeparator()
         wxglade_tmp_menu.Append(ID_EXIT, "&Exit", "", wx.ITEM_NORMAL)
         self.frame_terminal_menubar.Append(wxglade_tmp_menu, "&File")
+        wxglade_tmp_menu = wx.Menu()
+        wxglade_tmp_menu.Append(ID_RTS, "RTS", "", wx.ITEM_CHECK)
+        wxglade_tmp_menu.Append(ID_DTR, "&DTR", "", wx.ITEM_CHECK)
+        wxglade_tmp_menu.Append(ID_SETTINGS, "&Port Settings...", "", wx.ITEM_NORMAL)
+        self.frame_terminal_menubar.Append(wxglade_tmp_menu, "Serial Port")
+        self.SetMenuBar(self.frame_terminal_menubar)
         # Menu Bar end
+        self.text_ctrl_output = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE | wx.TE_READONLY)
 
         self.__set_properties()
         self.__do_layout()
+
+        self.Bind(wx.EVT_MENU, self.OnClear, id=ID_CLEAR)
+        self.Bind(wx.EVT_MENU, self.OnSaveAs, id=ID_SAVEAS)
+        self.Bind(wx.EVT_MENU, self.OnTermSettings, id=ID_TERM)
+        self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)
+        self.Bind(wx.EVT_MENU, self.OnRTS, id=ID_RTS)
+        self.Bind(wx.EVT_MENU, self.OnDTR, id=ID_DTR)
+        self.Bind(wx.EVT_MENU, self.OnPortSettings, id=ID_SETTINGS)
         # end wxGlade
         self.__attach_events()          #register events
         self.OnPortSettings(None)       #call setup dialog on startup, opens port
@@ -160,6 +174,10 @@
         self.thread.setDaemon(1)
         self.alive.set()
         self.thread.start()
+        self.serial.rts = True
+        self.serial.dtr = True
+        self.frame_terminal_menubar.Check(ID_RTS, self.serial.rts)
+        self.frame_terminal_menubar.Check(ID_DTR, self.serial.dtr)
 
     def StopThread(self):
         """Stop the receiver thread, wait util it's finished."""
@@ -172,13 +190,13 @@
         # begin wxGlade: TerminalFrame.__set_properties
         self.SetTitle("Serial Terminal")
         self.SetSize((546, 383))
+        self.text_ctrl_output.SetFont(wx.Font(9, wx.MODERN, wx.NORMAL, wx.NORMAL, 0, ""))
         # end wxGlade
 
     def __do_layout(self):
         # begin wxGlade: TerminalFrame.__do_layout
         sizer_1 = wx.BoxSizer(wx.VERTICAL)
         sizer_1.Add(self.text_ctrl_output, 1, wx.EXPAND, 0)
-        self.SetAutoLayout(1)
         self.SetSizer(sizer_1)
         self.Layout()
         # end wxGlade
@@ -194,102 +212,109 @@
         self.Bind(EVT_SERIALRX, self.OnSerialRead)
         self.Bind(wx.EVT_CLOSE, self.OnClose)
 
-    def OnExit(self, event):
+    def OnExit(self, event):  # wxGlade: TerminalFrame.<event_handler>
         """Menu point Exit"""
         self.Close()
 
     def OnClose(self, event):
         """Called on application shutdown."""
-        self.StopThread()               #stop reader thread
-        self.serial.close()             #cleanup
-        self.Destroy()                  #close windows, exit app
+        self.StopThread()               # stop reader thread
+        self.serial.close()             # cleanup
+        self.Destroy()                  # close windows, exit app
 
-    def OnSaveAs(self, event):
+    def OnSaveAs(self, event):  # wxGlade: TerminalFrame.<event_handler>
         """Save contents of output window."""
         filename = None
-        dlg = wx.FileDialog(None, "Save Text As...", ".", "", "Text File|*.txt|All Files|*",  wx.SAVE)
-        if dlg.ShowModal() ==  wx.ID_OK:
-            filename = dlg.GetPath()
-        dlg.Destroy()
+        with wx.FileDialog(
+                None,
+                "Save Text As...",
+                ".",
+                "",
+                "Text File|*.txt|All Files|*",
+                wx.SAVE) as dlg:
+            if dlg.ShowModal() == wx.ID_OK:
+                filename = dlg.GetPath()
         
         if filename is not None:
-            f = file(filename, 'w')
-            text = self.text_ctrl_output.GetValue()
-            if type(text) == unicode:
-                text = text.encode("latin1")    #hm, is that a good asumption?
-            f.write(text)
-            f.close()
+            with file(filename, 'w') as f:
+                text = self.text_ctrl_output.GetValue()
+                if type(text) == unicode:
+                    text = text.encode("latin1")    # hm, is that a good asumption?
+                f.write(text)
     
-    def OnClear(self, event):
+    def OnClear(self, event):  # wxGlade: TerminalFrame.<event_handler>
         """Clear contents of output window."""
         self.text_ctrl_output.Clear()
     
-    def OnPortSettings(self, event=None):
+    def OnPortSettings(self, event):  # wxGlade: TerminalFrame.<event_handler>
         """Show the portsettings dialog. The reader thread is stopped for the
            settings change."""
-        if event is not None:           #will be none when called on startup
+        if event is not None:           # will be none when called on startup
             self.StopThread()
             self.serial.close()
         ok = False
         while not ok:
-            dialog_serial_cfg = wxSerialConfigDialog.SerialConfigDialog(None, -1, "",
-                show=wxSerialConfigDialog.SHOW_BAUDRATE|wxSerialConfigDialog.SHOW_FORMAT|wxSerialConfigDialog.SHOW_FLOW,
-                serial=self.serial
-            )
-            result = dialog_serial_cfg.ShowModal()
-            dialog_serial_cfg.Destroy()
-            #open port if not called on startup, open it on startup and OK too
+            with wxSerialConfigDialog.SerialConfigDialog(
+                    None,
+                    -1,
+                    "",
+                    show=wxSerialConfigDialog.SHOW_BAUDRATE|wxSerialConfigDialog.SHOW_FORMAT|wxSerialConfigDialog.SHOW_FLOW,
+                    serial=self.serial) as dialog_serial_cfg:
+                result = dialog_serial_cfg.ShowModal()
+            # open port if not called on startup, open it on startup and OK too
             if result == wx.ID_OK or event is not None:
                 try:
                     self.serial.open()
                 except serial.SerialException as e:
-                    dlg = wx.MessageDialog(None, str(e), "Serial Port Error", wx.OK | wx.ICON_ERROR)
-                    dlg.ShowModal()
-                    dlg.Destroy()
+                    with wx.MessageDialog(None, str(e), "Serial Port Error", wx.OK | wx.ICON_ERROR)as dlg:
+                        dlg.ShowModal()
                 else:
                     self.StartThread()
                     self.SetTitle("Serial Terminal on %s [%s, %s%s%s%s%s]" % (
-                        self.serial.portstr,
-                        self.serial.baudrate,
-                        self.serial.bytesize,
-                        self.serial.parity,
-                        self.serial.stopbits,
-                        self.serial.rtscts and ' RTS/CTS' or '',
-                        self.serial.xonxoff and ' Xon/Xoff' or '',
-                        )
-                    )
+                            self.serial.portstr,
+                            self.serial.baudrate,
+                            self.serial.bytesize,
+                            self.serial.parity,
+                            self.serial.stopbits,
+                            ' RTS/CTS' if self.serial.rtscts else '',
+                            ' Xon/Xoff' if self.serial.xonxoff else '',
+                            ))
                     ok = True
             else:
-                #on startup, dialog aborted
+                # on startup, dialog aborted
                 self.alive.clear()
                 ok = True
 
-    def OnTermSettings(self, event):
-        """Menu point Terminal Settings. Show the settings dialog
-           with the current terminal settings"""
+    def OnTermSettings(self, event):  # wxGlade: TerminalFrame.<event_handler>
+        """\
+        Menu point Terminal Settings. Show the settings dialog
+        with the current terminal settings.
+        """
         dialog = TerminalSettingsDialog(None, -1, "", settings=self.settings)
         result = dialog.ShowModal()
         dialog.Destroy()
 
     def OnKey(self, event):
-        """Key event handler. if the key is in the ASCII range, write it to the serial port.
-           Newline handling and local echo is also done here."""
+        """\
+        Key event handler. if the key is in the ASCII range, write it to the
+        serial port. Newline handling and local echo is also done here.
+        """
         code = event.GetKeyCode()
-        if code < 256:                          #is it printable?
-            if code == 13:                      #is it a newline? (check for CR which is the RETURN key)
-                if self.settings.echo:          #do echo if needed
+        if code < 256:                          # is it printable?
+            if code == 13:                      # is it a newline? (check for CR which is the RETURN key)
+                if self.settings.echo:          # do echo if needed
                     self.text_ctrl_output.AppendText('\n')
                 if self.settings.newline == NEWLINE_CR:
-                    self.serial.write('\r')     #send CR
+                    self.serial.write('\r')     # send CR
                 elif self.settings.newline == NEWLINE_LF:
-                    self.serial.write('\n')     #send LF
+                    self.serial.write('\n')     # send LF
                 elif self.settings.newline == NEWLINE_CRLF:
-                    self.serial.write('\r\n')   #send CR+LF
+                    self.serial.write('\r\n')   # send CR+LF
             else:
                 char = chr(code)
-                if self.settings.echo:          #do echo if needed
+                if self.settings.echo:          # do echo if needed
                     self.text_ctrl_output.WriteText(char)
-                self.serial.write(char)         #send the charcater
+                self.serial.write(char)         # send the charcater
         else:
             print("Extra Key:", code)
 
@@ -301,24 +326,29 @@
         self.text_ctrl_output.AppendText(text)
 
     def ComPortThread(self):
-        """Thread that handles the incomming traffic. Does the basic input
-           transformation (newlines) and generates an SerialRxEvent"""
-        while self.alive.isSet():               #loop while alive event is true
-            text = self.serial.read(1)          #read one, with timout
-            if text:                            #check if not timeout
-                n = self.serial.inWaiting()     #look if there is more to read
-                if n:
-                    text = text + self.serial.read(n) #get it
-                #newline transformation
+        """\
+        Thread that handles the incomming traffic. Does the basic input
+        transformation (newlines) and generates an SerialRxEvent
+        """
+        while self.alive.isSet():
+            b = self.serial.read(self.serial.in_waiting or 1)
+            if b:
+                # newline transformation
                 if self.settings.newline == NEWLINE_CR:
-                    text = text.replace('\r', '\n')
+                    b = b.replace('\r', '\n')
                 elif self.settings.newline == NEWLINE_LF:
                     pass
                 elif self.settings.newline == NEWLINE_CRLF:
-                    text = text.replace('\r\n', '\n')
-                event = SerialRxEvent(self.GetId(), text)
+                    b = b.replace('\r\n', '\n')
+                event = SerialRxEvent(self.GetId(), b)
                 self.GetEventHandler().AddPendingEvent(event)
-                #~ self.OnSerialRead(text)         #output text in window
+                #~ self.OnSerialRead(text)         # output text in window
+
+    def OnRTS(self, event):  # wxGlade: TerminalFrame.<event_handler>
+        self.serial.rts = event.IsChecked()
+
+    def OnDTR(self, event):  # wxGlade: TerminalFrame.<event_handler>
+        self.serial.dtr = event.Checked()
 
 # end of class TerminalFrame
 
@@ -328,7 +358,7 @@
         wx.InitAllImageHandlers()
         frame_terminal = TerminalFrame(None, -1, "")
         self.SetTopWindow(frame_terminal)
-        frame_terminal.Show(1)
+        frame_terminal.Show(True)
         return 1
 
 # end of class MyApp
diff --git a/examples/wxTerminal.wxg b/examples/wxTerminal.wxg
index 183f876..b74bb31 100644
--- a/examples/wxTerminal.wxg
+++ b/examples/wxTerminal.wxg
@@ -1,33 +1,24 @@
 <?xml version="1.0"?>
-<!-- generated by wxGlade 0.3.1 on Sat Oct 04 02:41:48 2003 -->
+<!-- generated by wxGlade 0.6.5 on Sat Sep 12 02:36:17 2015 -->
 
-<application path="D:\prog\python\pyserial_sf\pyserial\examples\wxTerminal.py" name="app" class="MyApp" option="0" language="python" top_window="frame_terminal" encoding="ISO-8859-1" use_gettext="0" overwrite="0">
+<application path="wxTerminal.py" name="app" class="MyApp" option="0" language="python" top_window="frame_terminal" encoding="ISO-8859-1" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0" indent_amount="4" indent_symbol="space" source_extension=".cpp" header_extension=".h">
     <object class="TerminalFrame" name="frame_terminal" base="EditFrame">
         <style>wxDEFAULT_FRAME_STYLE</style>
         <title>Serial Terminal</title>
         <menubar>1</menubar>
         <size>546, 383</size>
-        <object class="wxBoxSizer" name="sizer_1" base="EditBoxSizer">
-            <orient>wxVERTICAL</orient>
-            <object class="sizeritem">
-                <flag>wxEXPAND</flag>
-                <border>0</border>
-                <option>1</option>
-                <object class="wxTextCtrl" name="text_ctrl_output" base="EditTextCtrl">
-                    <style>wxTE_MULTILINE|wxTE_READONLY</style>
-                </object>
-            </object>
-        </object>
         <object class="wxMenuBar" name="frame_terminal_menubar" base="EditMenuBar">
             <menus>
                 <menu name="" label="&amp;File">
                     <item>
                         <label>&amp;Clear</label>
                         <id>ID_CLEAR</id>
+                        <handler>OnClear</handler>
                     </item>
                     <item>
                         <label>&amp;Save Text As...</label>
                         <id>ID_SAVEAS</id>
+                        <handler>OnSaveAs</handler>
                     </item>
                     <item>
                         <label>---</label>
@@ -35,12 +26,9 @@
                         <name>---</name>
                     </item>
                     <item>
-                        <label>&amp;Port Settings...</label>
-                        <id>ID_SETTINGS</id>
-                    </item>
-                    <item>
                         <label>&amp;Terminal Settings...</label>
                         <id>ID_TERM</id>
+                        <handler>OnTermSettings</handler>
                     </item>
                     <item>
                         <label>---</label>
@@ -49,10 +37,49 @@
                     <item>
                         <label>&amp;Exit</label>
                         <id>ID_EXIT</id>
+                        <handler>OnExit</handler>
+                    </item>
+                </menu>
+                <menu name="" label="Serial Port">
+                    <item>
+                        <label>RTS</label>
+                        <id>ID_RTS</id>
+                        <checkable>1</checkable>
+                        <handler>OnRTS</handler>
+                    </item>
+                    <item>
+                        <label>&amp;DTR</label>
+                        <id>ID_DTR</id>
+                        <checkable>1</checkable>
+                        <handler>OnDTR</handler>
+                    </item>
+                    <item>
+                        <label>&amp;Port Settings...</label>
+                        <id>ID_SETTINGS</id>
+                        <handler>OnPortSettings</handler>
                     </item>
                 </menu>
             </menus>
         </object>
+        <object class="wxBoxSizer" name="sizer_1" base="EditBoxSizer">
+            <orient>wxVERTICAL</orient>
+            <object class="sizeritem">
+                <flag>wxEXPAND</flag>
+                <border>0</border>
+                <option>1</option>
+                <object class="wxTextCtrl" name="text_ctrl_output" base="EditTextCtrl">
+                    <style>wxTE_MULTILINE|wxTE_READONLY</style>
+                    <font>
+                        <size>9</size>
+                        <family>modern</family>
+                        <style>normal</style>
+                        <weight>normal</weight>
+                        <underlined>0</underlined>
+                        <face></face>
+                    </font>
+                </object>
+            </object>
+        </object>
     </object>
     <object class="TerminalSettingsDialog" name="dialog_terminal_Settings" base="EditDialog">
         <style>wxDEFAULT_DIALOG_STYLE</style>
