Cleaning code for using only wxPython 2.6 class naming
authorlbessard
Tue, 07 Aug 2007 17:38:48 +0200
changeset 64 dd6f693e46a1
parent 63 04a02b4b2a57
child 65 cb6bed0720f0
Cleaning code for using only wxPython 2.6 class naming
Adding sizers to all dialogs
Dialogs.py
LDViewer.py
PLCOpenEditor.py
RessourceEditor.py
SFCViewer.py
TextViewer.py
Viewer.py
graphics/FBD_Objects.py
graphics/GraphicCommons.py
graphics/LD_Objects.py
graphics/SFC_Objects.py
--- a/Dialogs.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/Dialogs.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,9 +22,8 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
-from wxPython.grid import *
 import wx
+import wx.grid
 
 from graphics import *
 
@@ -32,66 +31,51 @@
 #                          Create New Block Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_BLOCKPROPERTIESDIALOG, wxID_BLOCKPROPERTIESDIALOGNAME, 
- wxID_BLOCKPROPERTIESDIALOGTYPETREE, wxID_BLOCKPROPERTIESDIALOGTYPEDESC, 
- wxID_BLOCKPROPERTIESDIALOGINPUTS, wxID_BLOCKPROPERTIESDIALOGPREVIEW, 
- wxID_BLOCKPROPERTIESDIALOGSTATICTEXT1, wxID_BLOCKPROPERTIESDIALOGSTATICTEXT2, 
- wxID_BLOCKPROPERTIESDIALOGSTATICTEXT3, wxID_BLOCKPROPERTIESDIALOGSTATICTEXT4, 
+[ID_BLOCKPROPERTIESDIALOG, ID_BLOCKPROPERTIESDIALOGNAME, 
+ ID_BLOCKPROPERTIESDIALOGTYPETREE, ID_BLOCKPROPERTIESDIALOGTYPEDESC, 
+ ID_BLOCKPROPERTIESDIALOGINPUTS, ID_BLOCKPROPERTIESDIALOGPREVIEW, 
+ ID_BLOCKPROPERTIESDIALOGSTATICTEXT1, ID_BLOCKPROPERTIESDIALOGSTATICTEXT2, 
+ ID_BLOCKPROPERTIESDIALOGSTATICTEXT3, ID_BLOCKPROPERTIESDIALOGSTATICTEXT4, 
 ] = [wx.NewId() for _init_ctrls in range(10)]
 
 [CATEGORY, BLOCK] = range(2)
 
 class BlockPropertiesDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.MainSizer, 0, border=20, flag=wxGROW|wxTOP|wxLEFT|wxRIGHT)
-        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
 
     def _init_coll_flexGridSizer1_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
 
     def _init_coll_MainSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.LeftBoxSizer, 1, border=5, flag=wxGROW|wxRIGHT)
-        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wxGROW|wxLEFT)
+        parent.AddSizer(self.LeftBoxSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
 
     def _init_coll_LeftBoxSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.TypeTree, 3, border=5, flag=wxGROW|wxBOTTOM)
-        parent.AddWindow(self.TypeDesc, 1, border=0, flag=wxGROW)
+        parent.AddWindow(self.TypeTree, 3, border=5, flag=wx.GROW|wx.BOTTOM)
+        parent.AddWindow(self.TypeDesc, 1, border=0, flag=wx.GROW)
 
     def _init_coll_RightGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.RightUpGridSizer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText4, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Preview, 0, border=0, flag=wxGROW)
+        parent.AddSizer(self.RightUpGridSizer, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
 
     def _init_coll_RightGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(2)
 
     def _init_coll_RightUpGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxGROW|wxALIGN_BOTTOM)
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wxGROW|wxALIGN_BOTTOM)
-        parent.AddWindow(self.Name, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Inputs, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW|wx.ALIGN_BOTTOM)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW|wx.ALIGN_BOTTOM)
+        parent.AddWindow(self.Name, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Inputs, 0, border=0, flag=wx.GROW)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
-        self.MainSizer = wx.BoxSizer(wxHORIZONTAL)
-        self.LeftBoxSizer = wx.StaticBoxSizer(self.staticbox1, wxVERTICAL)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.LeftBoxSizer = wx.StaticBoxSizer(self.staticbox1, wx.VERTICAL)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
         self.RightUpGridSizer = wx.GridSizer(cols=2, hgap=5, rows=2, vgap=5)
         
@@ -106,55 +90,58 @@
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_BLOCKPROPERTIESDIALOG,
+        wx.Dialog.__init__(self, id=ID_BLOCKPROPERTIESDIALOG,
               name='BlockPropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
-              size=wx.Size(600, 360), style=wx.DEFAULT_DIALOG_STYLE|wxRESIZE_BORDER,
+              size=wx.Size(600, 360), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
               title='Block Properties')
         self.SetClientSize(wx.Size(600, 360))
 
-        self.staticbox1 = wx.StaticBox(id=wxID_BLOCKPROPERTIESDIALOGSTATICTEXT1,
+        self.staticbox1 = wx.StaticBox(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT1,
               label='Type:', name='staticBox1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 0), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
               label='Name:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText3 = wx.StaticText(id=wxID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
+        self.staticText3 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
               label='Inputs:', name='staticText4', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText4 = wx.StaticText(id=wxID_BLOCKPROPERTIESDIALOGSTATICTEXT4,
+        self.staticText4 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT4,
               label='Preview:', name='staticText4', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.TypeTree = wx.TreeCtrl(id=wxID_BLOCKPROPERTIESDIALOGTYPETREE,
+        self.TypeTree = wx.TreeCtrl(id=ID_BLOCKPROPERTIESDIALOGTYPETREE,
               name='TypeTree', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TR_HAS_BUTTONS|wx.TR_HIDE_ROOT|wx.TR_SINGLE|wx.SUNKEN_BORDER)
-        EVT_TREE_SEL_CHANGED(self, wxID_BLOCKPROPERTIESDIALOGTYPETREE, self.OnTypeTreeItemSelected)
-
-        self.TypeDesc = wx.TextCtrl(id=wxID_BLOCKPROPERTIESDIALOGTYPEDESC,
+        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnTypeTreeItemSelected,
+              id=ID_BLOCKPROPERTIESDIALOGTYPETREE)
+
+        self.TypeDesc = wx.TextCtrl(id=ID_BLOCKPROPERTIESDIALOGTYPEDESC,
               name='TypeDesc', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TE_READONLY|wx.TE_MULTILINE)
 
-        self.Name = wx.TextCtrl(id=wxID_BLOCKPROPERTIESDIALOGNAME, value='',
+        self.Name = wx.TextCtrl(id=ID_BLOCKPROPERTIESDIALOGNAME, value='',
               name='Name', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=0)
-        EVT_TEXT(self, wxID_BLOCKPROPERTIESDIALOGNAME, self.OnNameChanged)
-
-        self.Inputs = wx.SpinCtrl(id=wxID_BLOCKPROPERTIESDIALOGINPUTS,
+        self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_BLOCKPROPERTIESDIALOGNAME)
+
+        self.Inputs = wx.SpinCtrl(id=ID_BLOCKPROPERTIESDIALOGINPUTS,
               name='Inputs', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(0, 24), style=wxSP_ARROW_KEYS, min=2, max=20)
-        EVT_SPINCTRL(self, wxID_BLOCKPROPERTIESDIALOGINPUTS, self.OnInputsChanged)
-
-        self.Preview = wx.Panel(id=wxID_BLOCKPROPERTIESDIALOGPREVIEW,
+              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=2, max=20)
+        self.Bind(wx.EVT_SPINCTRL, self.OnInputsChanged, id=ID_BLOCKPROPERTIESDIALOGINPUTS)
+
+        self.Preview = wx.Panel(id=ID_BLOCKPROPERTIESDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
         
         self._init_sizers()
 
@@ -165,9 +152,6 @@
         self.Inputs.Enable(False)
         self.Block = None
         self.MinBlockSize = None
-        
-        EVT_PAINT(self, self.OnPaint)
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
     
     def FindTreeItem(self, root, name, inputs = None):
         if root.IsOk():
@@ -191,15 +175,15 @@
         error = []
         selected = self.TypeTree.GetSelection()
         if not selected.IsOk() or self.TypeTree.GetItemParent(selected) == self.TypeTree.GetRootItem() or selected == self.TypeTree.GetRootItem():
-            message = wxMessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif self.Name.IsEnabled() and self.Name.GetValue() == "":
-            message = wxMessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def SetBlockList(self, blocktypes):
         root = self.TypeTree.AddRoot("")
@@ -251,19 +235,19 @@
                 self.Inputs.Enable(blocktype["extensible"])
                 self.Name.Enable(blocktype["type"] != "function")
                 self.TypeDesc.SetValue(blocktype["comment"])
-                wxCallAfter(self.RefreshPreview)
+                wx.CallAfter(self.RefreshPreview)
             else:
                 self.Name.Enable(False)
                 self.Inputs.Enable(False)
                 self.Inputs.SetValue(2)
                 self.TypeDesc.SetValue("")
-                wxCallAfter(self.ErasePreview)
+                wx.CallAfter(self.ErasePreview)
         else:
             self.Name.Enable(False)
             self.Inputs.Enable(False)
             self.Inputs.SetValue(2)
             self.TypeDesc.SetValue("")
-            wxCallAfter(self.ErasePreview)
+            wx.CallAfter(self.ErasePreview)
         event.Skip()
 
     def OnNameChanged(self, event):
@@ -277,12 +261,12 @@
         event.Skip()
     
     def ErasePreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         self.Block = None
         
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         item = self.TypeTree.GetSelection()
         pydata = self.TypeTree.GetPyData(item)
@@ -313,77 +297,58 @@
 #                          Create New Variable Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_VARIABLEPROPERTIESDIALOG, wxID_VARIABLEPROPERTIESDIALOGSPACER, 
- wxID_VARIABLEPROPERTIESDIALOGNAME, wxID_VARIABLEPROPERTIESDIALOGCLASS, 
- wxID_VARIABLEPROPERTIESDIALOGPREVIEW, wxID_VARIABLEPROPERTIESDIALOGEXPRESSION,
- wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT1, wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
- wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT3, wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
+[ID_VARIABLEPROPERTIESDIALOG, ID_VARIABLEPROPERTIESDIALOGSPACER, 
+ ID_VARIABLEPROPERTIESDIALOGNAME, ID_VARIABLEPROPERTIESDIALOGCLASS, 
+ ID_VARIABLEPROPERTIESDIALOGPREVIEW, ID_VARIABLEPROPERTIESDIALOGEXPRESSION,
+ ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
+ ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
 ] = [wx.NewId() for _init_ctrls in range(10)]
 
 class VariablePropertiesDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.MainSizer, 0, border=20, flag=wxGROW|wxTOP|wxLEFT|wxRIGHT)
-        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
         
     def _init_coll_flexGridSizer1_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_MainSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.TopSizer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText4, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Preview, 0, border=0, flag=wxGROW)
+        parent.AddSizer(self.TopSizer, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
         
     def _init_coll_MainSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(2)
     
     def _init_coll_TopSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wxGROW|wxRIGHT)
-        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wxGROW|wxLEFT)
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
     
     def _init_coll_LeftGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Class, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Spacer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Expression, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Class, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Expression, 0, border=0, flag=wx.GROW)
     
     def _init_coll_LeftGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(2)
             
     def _init_coll_RightGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Name, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Name, 0, border=0, flag=wx.GROW)
         
     def _init_coll_RightGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
         
     def _init_sizers(self):
-        # generated method, don't edit
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
-        self.TopSizer = wx.BoxSizer(wxHORIZONTAL)
+        self.TopSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=5, vgap=5)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
@@ -400,55 +365,56 @@
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_VARIABLEPROPERTIESDIALOG,
+        wx.Dialog.__init__(self, id=ID_VARIABLEPROPERTIESDIALOG,
               name='VariablePropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(400, 380), style=wx.DEFAULT_DIALOG_STYLE,
               title='Variable Properties')
         self.SetClientSize(wx.Size(400, 380))
 
-        self.staticText1 = wx.StaticText(id=wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1,
               label='Class:', name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
               label='Expression:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText3 = wx.StaticText(id=wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT3,
+        self.staticText3 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3,
               label='Name:', name='staticText3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText4 = wx.StaticText(id=wxID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
+        self.staticText4 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
               label='Preview:', name='staticText4', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.Class = wx.Choice(id=wxID_VARIABLEPROPERTIESDIALOGCLASS,
+        self.Class = wx.Choice(id=ID_VARIABLEPROPERTIESDIALOGCLASS,
               name='Class', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=0)
-        EVT_CHOICE(self, wxID_VARIABLEPROPERTIESDIALOGCLASS, self.OnClassChanged)
-        
-        self.Name = wx.ListBox(id=wxID_VARIABLEPROPERTIESDIALOGNAME,
+        self.Bind(wx.EVT_CHOICE, self.OnClassChanged, id=ID_VARIABLEPROPERTIESDIALOGCLASS)
+        
+        self.Name = wx.ListBox(id=ID_VARIABLEPROPERTIESDIALOGNAME,
               name='Name', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 90), style=wx.LB_SINGLE)
-        EVT_LISTBOX(self, wxID_VARIABLEPROPERTIESDIALOGNAME, self.OnNameChanged)
-
-        self.Expression = wx.TextCtrl(id=wxID_VARIABLEPROPERTIESDIALOGEXPRESSION,
+        self.Bind(wx.EVT_LISTBOX, self.OnNameChanged, id=ID_VARIABLEPROPERTIESDIALOGNAME)
+
+        self.Expression = wx.TextCtrl(id=ID_VARIABLEPROPERTIESDIALOGEXPRESSION,
               name='Expression', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=0)
-        EVT_TEXT(self, wxID_VARIABLEPROPERTIESDIALOGEXPRESSION, self.OnExpressionChanged)
-
-        self.Spacer = wx.Panel(id=wxID_VARIABLEPROPERTIESDIALOGSPACER,
+        self.Bind(wx.EVT_TEXT, self.OnExpressionChanged, id=ID_VARIABLEPROPERTIESDIALOGEXPRESSION)
+
+        self.Spacer = wx.Panel(id=ID_VARIABLEPROPERTIESDIALOGSPACER,
               name='Spacer', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
-        self.Preview = wx.Panel(id=wxID_VARIABLEPROPERTIESDIALOGPREVIEW,
+        self.Preview = wx.Panel(id=ID_VARIABLEPROPERTIESDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
 
         self._init_sizers()
 
@@ -462,8 +428,6 @@
         for choice in ["Input", "Output", "InOut"]:
             self.Class.Append(choice)
         self.Class.SetStringSelection("Input")
-        
-        EVT_PAINT(self, self.OnPaint)
 
     def RefreshNameList(self):
         selected = self.Name.GetStringSelection()
@@ -478,7 +442,7 @@
                 self.Name.Append(name)
             elif var_type == "InOut" and self.Class.GetStringSelection() == "InOut":
                 self.Name.Append(name)
-        if self.Name.FindString(selected) != wxNOT_FOUND:
+        if self.Name.FindString(selected) != wx.NOT_FOUND:
             self.Name.SetStringSelection(selected)
         else:
             self.Name.SetStringSelection("")
@@ -503,7 +467,7 @@
                 self.Class.SetStringSelection("InOut")
             self.RefreshNameList()
         if value_name:
-            if self.Name.FindString(value_name) != wxNOT_FOUND:
+            if self.Name.FindString(value_name) != wx.NOT_FOUND:
                 self.Name.SetStringSelection(value_name)
                 self.Expression.Enable(False)
             else:
@@ -558,7 +522,7 @@
         event.Skip()
     
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         expression = self.Expression.GetValue()
         if self.Expression.IsEnabled() and expression != "":
@@ -593,64 +557,49 @@
 #                          Create New Connection Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_CONNECTIONPROPERTIESDIALOG, wxID_CONNECTIONPROPERTIESDIALOGSPACER, 
- wxID_CONNECTIONPROPERTIESDIALOGNAME, wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1, 
- wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2, wxID_CONNECTIONPROPERTIESDIALOGPREVIEW,
- wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1, wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2, 
- wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3, 
+[ID_CONNECTIONPROPERTIESDIALOG, ID_CONNECTIONPROPERTIESDIALOGSPACER, 
+ ID_CONNECTIONPROPERTIESDIALOGNAME, ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1, 
+ ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2, ID_CONNECTIONPROPERTIESDIALOGPREVIEW,
+ ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1, ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2, 
+ ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3, 
 ] = [wx.NewId() for _init_ctrls in range(9)]
 
 class ConnectionPropertiesDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.MainSizer, 0, border=20, flag=wxGROW|wxTOP|wxLEFT|wxRIGHT)
-        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
         
     def _init_coll_flexGridSizer1_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_MainSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wxGROW|wxRIGHT)
-        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wxGROW|wxLEFT)
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
     
     def _init_coll_LeftGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Spacer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Name, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Name, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
     
     def _init_coll_LeftGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
-        parent.AddGrowableCol(0)
-        parent.AddGrowableRow(3)
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(5)
             
     def _init_coll_RightGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Preview, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
         
     def _init_coll_RightGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
-        self.MainSizer = wx.BoxSizer(wxHORIZONTAL)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
@@ -665,53 +614,54 @@
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_CONNECTIONPROPERTIESDIALOG,
+        wx.Dialog.__init__(self, id=ID_CONNECTIONPROPERTIESDIALOG,
               name='ConnectionPropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(350, 220), style=wx.DEFAULT_DIALOG_STYLE,
               title='Connection Properties')
         self.SetClientSize(wx.Size(350, 220))
 
-        self.staticText1 = wx.StaticText(id=wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1,
               label='Type:', name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2,
               label='Name:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText3 = wx.StaticText(id=wxID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3,
+        self.staticText3 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3,
               label='Preview:', name='staticText3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.radioButton1 = wx.RadioButton(id=wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1,
+        self.radioButton1 = wx.RadioButton(id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1,
               label='Connector', name='radioButton1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1, self.OnTypeChanged)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1)
         self.radioButton1.SetValue(True)
 
-        self.radioButton2 = wx.RadioButton(id=wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2,
+        self.radioButton2 = wx.RadioButton(id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2,
               label='Continuation', name='radioButton2', parent=self, 
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2, self.OnTypeChanged)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2)
         self.radioButton2.SetValue(False)
         
-        self.Name = wx.TextCtrl(id=wxID_CONNECTIONPROPERTIESDIALOGNAME,
+        self.Name = wx.TextCtrl(id=ID_CONNECTIONPROPERTIESDIALOGNAME,
               name='Name', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=0)
-        EVT_TEXT(self, wxID_CONNECTIONPROPERTIESDIALOGNAME, self.OnNameChanged)
-
-        self.Preview = wx.Panel(id=wxID_CONNECTIONPROPERTIESDIALOGPREVIEW,
+        self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_CONNECTIONPROPERTIESDIALOGNAME)
+
+        self.Preview = wx.Panel(id=ID_CONNECTIONPROPERTIESDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
-        self.Spacer = wx.Panel(id=wxID_CONNECTIONPROPERTIESDIALOGSPACER,
+        self.Spacer = wx.Panel(id=ID_CONNECTIONPROPERTIESDIALOGSPACER,
               name='Spacer', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
         
         self._init_sizers()
 
@@ -719,8 +669,6 @@
         self._init_ctrls(parent)
         self.Connection = None
         self.MinConnectionSize = None
-        
-        EVT_PAINT(self, self.OnPaint)
             
     def SetMinConnectionSize(self, size):
         self.MinConnectionSize = size
@@ -755,7 +703,7 @@
         event.Skip()
         
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         if self.radioButton1.GetValue():
             self.Connection = FBD_Connector(self.Preview, CONNECTOR, self.Name.GetValue())
@@ -780,67 +728,52 @@
 #-------------------------------------------------------------------------------
 
 
-[wxID_LDELEMENTDIALOG, wxID_LDELEMENTDIALOGSPACER, 
- wxID_LDELEMENTDIALOGNAME, wxID_LDELEMENTDIALOGRADIOBUTTON1, 
- wxID_LDELEMENTDIALOGRADIOBUTTON2, wxID_LDELEMENTDIALOGRADIOBUTTON3,
- wxID_LDELEMENTDIALOGRADIOBUTTON4, wxID_LDELEMENTDIALOGPREVIEW,
- wxID_LDELEMENTDIALOGSTATICTEXT1, wxID_LDELEMENTDIALOGSTATICTEXT2, 
- wxID_LDELEMENTDIALOGSTATICTEXT3, 
+[ID_LDELEMENTDIALOG, ID_LDELEMENTDIALOGSPACER, 
+ ID_LDELEMENTDIALOGNAME, ID_LDELEMENTDIALOGRADIOBUTTON1, 
+ ID_LDELEMENTDIALOGRADIOBUTTON2, ID_LDELEMENTDIALOGRADIOBUTTON3,
+ ID_LDELEMENTDIALOGRADIOBUTTON4, ID_LDELEMENTDIALOGPREVIEW,
+ ID_LDELEMENTDIALOGSTATICTEXT1, ID_LDELEMENTDIALOGSTATICTEXT2, 
+ ID_LDELEMENTDIALOGSTATICTEXT3, 
 ] = [wx.NewId() for _init_ctrls in range(11)]
 
 class LDElementDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.MainSizer, 0, border=20, flag=wxGROW|wxTOP|wxLEFT|wxRIGHT)
-        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
         
     def _init_coll_flexGridSizer1_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_MainSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wxGROW|wxRIGHT)
-        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wxGROW|wxLEFT)
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
     
     def _init_coll_LeftGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton3, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton4, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Spacer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Name, 0, border=0, flag=wxGROW)
-    
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Name, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
+        
     def _init_coll_LeftGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
-        parent.AddGrowableCol(0)
-        parent.AddGrowableRow(5)
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(7)
             
     def _init_coll_RightGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Preview, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
         
     def _init_coll_RightGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
-        self.MainSizer = wx.BoxSizer(wxHORIZONTAL)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=8, vgap=5)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
@@ -855,63 +788,64 @@
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt, title, labels):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_LDELEMENTDIALOG,
+        wx.Dialog.__init__(self, id=ID_LDELEMENTDIALOG,
               name='VariablePropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
               title=title)
         self.SetClientSize(wx.Size(350, 260))
 
-        self.staticText1 = wx.StaticText(id=wxID_LDELEMENTDIALOGSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT1,
               label='Modifier:', name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_LDELEMENTDIALOGSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT2,
               label='Name:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText3 = wx.StaticText(id=wxID_LDELEMENTDIALOGSTATICTEXT3,
+        self.staticText3 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT3,
               label='Preview:', name='staticText3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.radioButton1 = wx.RadioButton(id=wxID_LDELEMENTDIALOGRADIOBUTTON1,
+        self.radioButton1 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON1,
               label=labels[0], name='radioButton1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDELEMENTDIALOGRADIOBUTTON1, self.OnTypeChanged)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON1)
         self.radioButton1.SetValue(True)
 
-        self.radioButton2 = wx.RadioButton(id=wxID_LDELEMENTDIALOGRADIOBUTTON2,
+        self.radioButton2 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON2,
               label=labels[1], name='radioButton2', parent=self, 
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDELEMENTDIALOGRADIOBUTTON2, self.OnTypeChanged)
-
-        self.radioButton3 = wx.RadioButton(id=wxID_LDELEMENTDIALOGRADIOBUTTON3,
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON2)
+
+        self.radioButton3 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON3,
               label=labels[2], name='radioButton3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDELEMENTDIALOGRADIOBUTTON3, self.OnTypeChanged)
-
-        self.radioButton4 = wx.RadioButton(id=wxID_LDELEMENTDIALOGRADIOBUTTON4,
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON3)
+
+        self.radioButton4 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON4,
               label=labels[3], name='radioButton4', parent=self, 
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDELEMENTDIALOGRADIOBUTTON4, self.OnTypeChanged)
-
-        self.Name = wx.Choice(id=wxID_LDELEMENTDIALOGNAME,
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON4)
+
+        self.Name = wx.Choice(id=ID_LDELEMENTDIALOGNAME,
               name='Name', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 24), style=0)
-        EVT_CHOICE(self, wxID_LDELEMENTDIALOGNAME, self.OnNameChanged)
-
-        self.Preview = wx.Panel(id=wxID_LDELEMENTDIALOGPREVIEW,
+        self.Bind(wx.EVT_CHOICE, self.OnNameChanged, id=ID_LDELEMENTDIALOGNAME)
+
+        self.Preview = wx.Panel(id=ID_LDELEMENTDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
-        self.Spacer = wx.Panel(id=wxID_LDELEMENTDIALOGSPACER,
+        self.Spacer = wx.Panel(id=ID_LDELEMENTDIALOGSPACER,
               name='Spacer', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        
         self._init_sizers()
 
     def __init__(self, parent, type):
@@ -922,16 +856,12 @@
         elif type == "coil":
             self._init_ctrls(parent, "Edit Coil Values", ['Normal','Negate','Set','Reset'])
             self.Element = LD_Coil(self.Preview, COIL_NORMAL, "")
-        self.Element.SetPosition((150 - LD_ELEMENT_SIZE[0]) / 2, (150 - LD_ELEMENT_SIZE[1]) / 2)
-
-        EVT_PAINT(self, self.OnPaint)
-
+        
     def SetElementSize(self, size):
         min_width, min_height = self.Element.GetMinSize()
         width, height = max(min_width, size[0]), max(min_height, size[1])
         self.Element.SetSize(width, height)
-        self.Element.SetPosition((150 - width) / 2, (150 - height) / 2)
-
+        
     def SetVariables(self, vars):
         self.Name.Clear()
         for name in vars:
@@ -999,7 +929,7 @@
         event.Skip()
 
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         clientsize = self.Preview.GetClientSize()
         width, height = self.Element.GetSize()
@@ -1016,64 +946,49 @@
 #-------------------------------------------------------------------------------
 
 
-[wxID_LDPOWERRAILDIALOG, wxID_LDPOWERRAILDIALOGSPACER, 
- wxID_LDPOWERRAILDIALOGTYPE, wxID_LDPOWERRAILDIALOGRADIOBUTTON1, 
- wxID_LDPOWERRAILDIALOGRADIOBUTTON2, wxID_LDPOWERRAILDIALOGPREVIEW,
- wxID_LDPOWERRAILDIALOGSTATICTEXT1, wxID_LDPOWERRAILDIALOGSTATICTEXT2, 
- wxID_LDPOWERRAILDIALOGSTATICTEXT3, wxID_LDPOWERRAILDIALOGPINNUMBER,
+[ID_LDPOWERRAILDIALOG, ID_LDPOWERRAILDIALOGSPACER, 
+ ID_LDPOWERRAILDIALOGTYPE, ID_LDPOWERRAILDIALOGRADIOBUTTON1, 
+ ID_LDPOWERRAILDIALOGRADIOBUTTON2, ID_LDPOWERRAILDIALOGPREVIEW,
+ ID_LDPOWERRAILDIALOGSTATICTEXT1, ID_LDPOWERRAILDIALOGSTATICTEXT2, 
+ ID_LDPOWERRAILDIALOGSTATICTEXT3, ID_LDPOWERRAILDIALOGPINNUMBER,
 ] = [wx.NewId() for _init_ctrls in range(10)]
 
 class LDPowerRailDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.MainSizer, 0, border=20, flag=wxGROW|wxTOP|wxLEFT|wxRIGHT)
-        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
         
     def _init_coll_flexGridSizer1_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_MainSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wxGROW|wxRIGHT)
-        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wxGROW|wxLEFT)
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
     
     def _init_coll_LeftGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton1, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.radioButton2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Spacer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.PinNumber, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.PinNumber, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
     
     def _init_coll_LeftGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
-        parent.AddGrowableCol(0)
-        parent.AddGrowableRow(3)
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(5)
             
     def _init_coll_RightGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText3, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.Preview, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
         
     def _init_coll_RightGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
-        self.MainSizer = wx.BoxSizer(wxHORIZONTAL)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
         self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5)
         self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
@@ -1088,53 +1003,54 @@
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_LDPOWERRAILDIALOG,
+        wx.Dialog.__init__(self, id=ID_LDPOWERRAILDIALOG,
               name='PowerRailDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
               title='Power Rail Properties')
         self.SetClientSize(wx.Size(350, 260))
 
-        self.staticText1 = wx.StaticText(id=wxID_LDPOWERRAILDIALOGSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT1,
               label='Type:', name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_LDPOWERRAILDIALOGSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT2,
               label='Pin number:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.staticText3 = wx.StaticText(id=wxID_LDPOWERRAILDIALOGSTATICTEXT3,
+        self.staticText3 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT3,
               label='Preview:', name='staticText3', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
 
-        self.radioButton1 = wx.RadioButton(id=wxID_LDPOWERRAILDIALOGRADIOBUTTON1,
+        self.radioButton1 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON1,
               label='Left PowerRail', name='radioButton1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDPOWERRAILDIALOGRADIOBUTTON1, self.OnTypeChanged)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON1)
         self.radioButton1.SetValue(True)
 
-        self.radioButton2 = wx.RadioButton(id=wxID_LDPOWERRAILDIALOGRADIOBUTTON2,
+        self.radioButton2 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON2,
               label='Right PowerRail', name='radioButton2', parent=self, 
               pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_LDPOWERRAILDIALOGRADIOBUTTON2, self.OnTypeChanged)
-
-        self.PinNumber = wx.SpinCtrl(id=wxID_LDPOWERRAILDIALOGPINNUMBER,
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON2)
+
+        self.PinNumber = wx.SpinCtrl(id=ID_LDPOWERRAILDIALOGPINNUMBER,
               name='PinNumber', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(0, 24), style=wxSP_ARROW_KEYS, min=1, max=20)
-        EVT_SPINCTRL(self, wxID_LDPOWERRAILDIALOGPINNUMBER, self.OnPinNumberChanged)
-
-        self.Preview = wx.Panel(id=wxID_LDPOWERRAILDIALOGPREVIEW,
+              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=1, max=20)
+        self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, id=ID_LDPOWERRAILDIALOGPINNUMBER)
+
+        self.Preview = wx.Panel(id=ID_LDPOWERRAILDIALOGPREVIEW,
               name='Preview', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
-        self.Spacer = wx.Panel(id=wxID_LDELEMENTDIALOGSPACER,
+        self.Spacer = wx.Panel(id=ID_LDELEMENTDIALOGSPACER,
               name='Spacer', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
 
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        
         self._init_sizers()
 
     def __init__(self, parent, type = LEFTRAIL, number = 1):
@@ -1149,8 +1065,6 @@
         self.PowerRailMinSize = (0, 0)
         self.PowerRail = None
 
-        EVT_PAINT(self, self.OnPaint)
-
     def SetMinSize(self, size):
         self.PowerRailMinSize = size
         self.RefreshPreview()    
@@ -1175,7 +1089,7 @@
         event.Skip()
 
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         self.PowerRail = LD_PowerRail(self.Preview, self.Type, connectors = [True for i in xrange(self.PinNumber.GetValue())])
         min_width, min_height = self.PowerRail.GetMinSize()
@@ -1194,66 +1108,138 @@
 #                          Edit Transition Content Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_TRANSITIONCONTENTDIALOG, wxID_TRANSITIONCONTENTDIALOGMAINPANEL, 
- wxID_TRANSITIONCONTENTDIALOGREFERENCE, wxID_TRANSITIONCONTENTDIALOGINLINE, 
- wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON1, wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON2, 
-] = [wx.NewId() for _init_ctrls in range(6)]
+[ID_TRANSITIONCONTENTDIALOG, ID_TRANSITIONCONTENTDIALOGSPACER, 
+ ID_TRANSITIONCONTENTDIALOGREFERENCE, ID_TRANSITIONCONTENTDIALOGINLINE, 
+ ID_TRANSITIONCONTENTDIALOGPREVIEW, ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1, 
+ ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2, ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3, 
+ ID_TRANSITIONCONTENTDIALOGSTATICTEXT1, ID_TRANSITIONCONTENTDIALOGSTATICTEXT2, 
+] = [wx.NewId() for _init_ctrls in range(10)]
 
 class TransitionContentDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
+    
+    def _init_coll_LeftGridSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Reference, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Inline, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
+    
+    def _init_coll_LeftGridSizer_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(6)
+            
+    def _init_coll_RightGridSizer_Items(self, parent):
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_RightGridSizer_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5)
+        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
+        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
+        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
+        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
 
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_TRANSITIONCONTENTDIALOG,
+        wx.Dialog.__init__(self, id=ID_TRANSITIONCONTENTDIALOG,
               name='ProjectDialog', parent=prnt, pos=wx.Point(376, 223),
-              size=wx.Size(300, 200), style=wx.DEFAULT_DIALOG_STYLE,
+              size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
               title='Edit transition')
-        self.SetClientSize(wx.Size(300, 200))
-
-        self.MainPanel = wx.Panel(id=wxID_TRANSITIONCONTENTDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(300, 200), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.radioButton1 = wx.RadioButton(id=wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON1,
-              label='Reference', name='radioButton1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(114, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON1, self.OnTypeChanged)
+        self.SetClientSize(wx.Size(350, 260))
+
+        self.staticText1 = wx.StaticText(id=ID_TRANSITIONCONTENTDIALOGSTATICTEXT1,
+              label='Type:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.staticText2 = wx.StaticText(id=ID_TRANSITIONCONTENTDIALOGSTATICTEXT2,
+              label='Preview:', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.radioButton1 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1,
+              label='Reference', name='radioButton1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1)
         self.radioButton1.SetValue(True)
 
-        self.Reference = wx.Choice(id=wxID_TRANSITIONCONTENTDIALOGREFERENCE,
-              name='Reference', parent=self.MainPanel, pos=wx.Point(48, 48), 
-              size=wx.Size(200, 24), style=0)
-
-        self.radioButton2 = wx.RadioButton(id=wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON2,
-              label='Inline', name='radioButton2', parent=self.MainPanel,
-              pos=wx.Point(24, 72), size=wx.Size(114, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_TRANSITIONCONTENTDIALOGRADIOBUTTON2, self.OnTypeChanged)
+        self.Reference = wx.Choice(id=ID_TRANSITIONCONTENTDIALOGREFERENCE,
+              name='Reference', parent=self, pos=wx.Point(0, 0), 
+              size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_CHOICE, self.OnReferenceChanged, id=ID_TRANSITIONCONTENTDIALOGREFERENCE)
+
+        self.radioButton2 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2,
+              label='Inline', name='radioButton2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2)
         self.radioButton2.SetValue(False)
 
-        self.Inline = wx.TextCtrl(id=wxID_TRANSITIONCONTENTDIALOGINLINE,
-              name='Inline', parent=self.MainPanel, pos=wx.Point(48, 96),
-              size=wx.Size(200, 24), style=0)
-
+        self.Inline = wx.TextCtrl(id=ID_TRANSITIONCONTENTDIALOGINLINE,
+              name='Inline', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_TEXT, self.OnInlineChanged, id=ID_TRANSITIONCONTENTDIALOGINLINE)
+
+        self.radioButton3 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3,
+              label='Connection', name='radioButton3', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3)
+        self.radioButton3.SetValue(False)
+        if not self.Connection:
+            self.radioButton3.Hide()
+
+        self.Preview = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGPREVIEW,
+              name='Preview', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
+        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
+        setattr(self.Preview, "RefreshTransitionModel", lambda x:None)
+
+        self.Spacer = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGSPACER,
+              name='Spacer', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        
         self._init_sizers()
 
-    def __init__(self, parent):
+    def __init__(self, parent, connection):
+        self.Connection = connection
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
-        
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
+        self.Transition = None
+        self.MinTransitionSize = None
+        
+        self.Element = SFC_Transition(self.Preview)
+        
+    def SetElementSize(self, size):
+        min_width, min_height = self.Element.GetMinSize()
+        width, height = max(min_width, size[0]), max(min_height, size[1])
+        self.Element.SetSize(width, height)
     
     def OnOK(self, event):
         error = []
@@ -1270,22 +1256,40 @@
                     text += " and %s"%item
                 else:
                     text += ", %s"%item 
-            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def OnTypeChanged(self, event):
         if self.radioButton1.GetValue():
+            self.Element.SetType("reference", self.Reference.GetStringSelection())
             self.Reference.Enable(True)
             self.Inline.Enable(False)
-        else:
+        elif self.radioButton2.GetValue():
+            self.Element.SetType("inline", self.Inline.GetValue())
             self.Reference.Enable(False)
             self.Inline.Enable(True)
+        else:
+            self.Element.SetType("connection")
+            self.Reference.Enable(False)
+            self.Inline.Enable(False)
+        self.RefreshPreview()
+        event.Skip()
+
+    def OnReferenceChanged(self, event):
+        self.Element.SetType("reference", self.Reference.GetStringSelection())
+        self.RefreshPreview()
+        event.Skip()
+
+    def OnInlineChanged(self, event):
+        self.Element.SetType("inline", self.Inline.GetValue())
+        self.RefreshPreview()
         event.Skip()
 
     def SetTransitions(self, transitions):
+        self.Reference.Append("")
         for transition in transitions:
             self.Reference.Append(transition)
 
@@ -1293,124 +1297,187 @@
         if values["type"] == "reference":
             self.radioButton1.SetValue(True)
             self.radioButton2.SetValue(False)
+            self.radioButton3.SetValue(False)
             self.Reference.Enable(True)
             self.Inline.Enable(False)
             self.Reference.SetStringSelection(values["value"])
+            self.Element.SetType("reference", values["value"])
         elif values["type"] == "inline":
             self.radioButton1.SetValue(False)
             self.radioButton2.SetValue(True)
+            self.radioButton3.SetValue(False)
             self.Reference.Enable(False)
             self.Inline.Enable(True)
             self.Inline.SetValue(values["value"])
-                
+            self.Element.SetType("inline", values["value"])
+        elif values["type"] == "connection" and self.Connection:
+            self.radioButton1.SetValue(False)
+            self.radioButton2.SetValue(False)
+            self.radioButton3.SetValue(True)
+            self.Reference.Enable(False)
+            self.Inline.Enable(False)
+            self.Element.SetType("connection")
+        self.RefreshPreview()
+        
     def GetValues(self):
         values = {}
         if self.radioButton1.GetValue():
             values["type"] = "reference"
             values["value"] = self.Reference.GetStringSelection()
-        else:
+        elif self.radioButton2.GetValue():
             values["type"] = "inline"
             values["value"] = self.Inline.GetValue()
+        else:
+            values["type"] = "connection"
+            values["value"] = None
         return values
 
+    def RefreshPreview(self):
+        dc = wx.ClientDC(self.Preview)
+        dc.Clear()
+        clientsize = self.Preview.GetClientSize()
+        posx, posy = self.Element.GetPosition()
+        rect = self.Element.GetBoundingBox()
+        diffx, diffy = posx - rect.x, posy - rect.y
+        self.Element.SetPosition((clientsize.width - rect.width) / 2 + diffx, (clientsize.height - rect.height) / 2 + diffy)
+        self.Element.Draw(dc)
+
+    def OnPaint(self, event):
+        self.RefreshPreview()
+
 #-------------------------------------------------------------------------------
 #                         Create New Divergence Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_DIVERGENCECREATEDIALOG, wxID_DIVERGENCECREATEDIALOGMAINPANEL, 
- wxID_DIVERGENCECREATEDIALOGRADIOBUTTON1, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
- wxID_DIVERGENCECREATEDIALOGRADIOBUTTON3, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON4, 
- wxID_DIVERGENCECREATEDIALOGSEQUENCES, wxID_DIVERGENCECREATEDIALOGPREVIEW, 
- wxID_DIVERGENCECREATEDIALOGSTATICTEXT1, wxID_DIVERGENCECREATEDIALOGSTATICTEXT2, 
- wxID_DIVERGENCECREATEDIALOGSTATICTEXT3,  
+[ID_DIVERGENCECREATEDIALOG, ID_DIVERGENCECREATEDIALOGSPACER, 
+ ID_DIVERGENCECREATEDIALOGRADIOBUTTON1, ID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
+ ID_DIVERGENCECREATEDIALOGRADIOBUTTON3, ID_DIVERGENCECREATEDIALOGRADIOBUTTON4, 
+ ID_DIVERGENCECREATEDIALOGSEQUENCES, ID_DIVERGENCECREATEDIALOGPREVIEW, 
+ ID_DIVERGENCECREATEDIALOGSTATICTEXT1, ID_DIVERGENCECREATEDIALOGSTATICTEXT2, 
+ ID_DIVERGENCECREATEDIALOGSTATICTEXT3,  
 ] = [wx.NewId() for _init_ctrls in range(11)]
 
 class DivergenceCreateDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
+        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
+    
+    def _init_coll_LeftGridSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.radioButton4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Sequences, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
+    
+    def _init_coll_LeftGridSizer_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(7)
+            
+    def _init_coll_RightGridSizer_Items(self, parent):
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_RightGridSizer_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=8, vgap=5)
+        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
+        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
+        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
+        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
 
         self.SetSizer(self.flexGridSizer1)
-
+    
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_DIVERGENCECREATEDIALOG,
+        wx.Dialog.__init__(self, id=ID_DIVERGENCECREATEDIALOG,
               name='DivergencePropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE,
               title='Create a new divergence or convergence')
-        self.SetClientSize(wx.Size(500, 260))
-
-        self.MainPanel = wx.Panel(id=wxID_DIVERGENCECREATEDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(600, 220), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_DIVERGENCECREATEDIALOGSTATICTEXT1,
-              label='Type:', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(200, 17), style=0)
-
-        self.radioButton1 = wx.RadioButton(id=wxID_DIVERGENCECREATEDIALOGRADIOBUTTON1,
-              label='Selection Divergence', name='radioButton1', parent=self.MainPanel,
-              pos=wx.Point(24, 48), size=wx.Size(200, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON1, self.OnTypeChanged)
+        self.SetClientSize(wx.Size(500, 300))
+
+        self.staticText1 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT1,
+              label='Type:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.radioButton1 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON1,
+              label='Selection Divergence', name='radioButton1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON1)
         self.radioButton1.SetValue(True)
 
-        self.radioButton2 = wx.RadioButton(id=wxID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
-              label='Selection Convergence', name='radioButton2', parent=self.MainPanel, 
-              pos=wx.Point(24, 72), size=wx.Size(200, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON2, self.OnTypeChanged)
+        self.radioButton2 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
+              label='Selection Convergence', name='radioButton2', parent=self, 
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON2)
         self.radioButton2.SetValue(False)
 
-        self.radioButton3 = wx.RadioButton(id=wxID_DIVERGENCECREATEDIALOGRADIOBUTTON3,
-              label='Simultaneous Divergence', name='radioButton3', parent=self.MainPanel,
-              pos=wx.Point(24, 96), size=wx.Size(200, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON3, self.OnTypeChanged)
+        self.radioButton3 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON3,
+              label='Simultaneous Divergence', name='radioButton3', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON3)
         self.radioButton3.SetValue(False)
 
-        self.radioButton4 = wx.RadioButton(id=wxID_DIVERGENCECREATEDIALOGRADIOBUTTON4,
-              label='Simultaneous Convergence', name='radioButton4', parent=self.MainPanel, 
-              pos=wx.Point(24, 120), size=wx.Size(200, 24), style=0)
-        EVT_RADIOBUTTON(self, wxID_DIVERGENCECREATEDIALOGRADIOBUTTON4, self.OnTypeChanged)
+        self.radioButton4 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON4,
+              label='Simultaneous Convergence', name='radioButton4', parent=self, 
+              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON4)
         self.radioButton4.SetValue(False)
 
-        self.staticText2 = wx.StaticText(id=wxID_DIVERGENCECREATEDIALOGSTATICTEXT2,
-              label='Number of sequences:', name='staticText2', parent=self.MainPanel,
-              pos=wx.Point(24, 150), size=wx.Size(200, 17), style=0)
-
-        self.Sequences = wx.SpinCtrl(id=wxID_DIVERGENCECREATEDIALOGSEQUENCES,
-              name='Sequences', parent=self.MainPanel, pos=wx.Point(24, 174),
-              size=wx.Size(200, 24), style=0, min=2, max=20)
-        EVT_SPINCTRL(self, wxID_DIVERGENCECREATEDIALOGSEQUENCES, self.OnSequencesChanged)
-
-        self.staticText3 = wx.StaticText(id=wxID_DIVERGENCECREATEDIALOGSTATICTEXT3,
-              label='Preview:', name='staticText3', parent=self.MainPanel,
-              pos=wx.Point(250, 24), size=wx.Size(100, 17), style=0)
-
-        self.Preview = wx.Panel(id=wxID_DIVERGENCECREATEDIALOGPREVIEW,
-              name='Preview', parent=self.MainPanel, pos=wx.Point(250, 48),
-              size=wx.Size(225, 150), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
-        self.Preview.SetBackgroundColour(wxColour(255,255,255))
+        self.staticText2 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT2,
+              label='Number of sequences:', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.Sequences = wx.SpinCtrl(id=ID_DIVERGENCECREATEDIALOGSEQUENCES,
+              name='Sequences', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0, min=2, max=20)
+        self.Bind(wx.EVT_SPINCTRL, self.OnSequencesChanged, id=ID_DIVERGENCECREATEDIALOGSEQUENCES)
+
+        self.staticText3 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT3,
+              label='Preview:', name='staticText3', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.Preview = wx.Panel(id=ID_DIVERGENCECREATEDIALOGPREVIEW,
+              name='Preview', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
+        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
         setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
 
+        self.Spacer = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGSPACER,
+              name='Spacer', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
+
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
         
         self.Divergence = None
         self.MinSize = (0, 0)
         
-        EVT_PAINT(self, self.OnPaint)
-
     def GetValues(self):
         values = {}
         if self.radioButton1.GetValue():
@@ -1436,7 +1503,7 @@
         event.Skip()
         
     def RefreshPreview(self):
-        dc = wxClientDC(self.Preview)
+        dc = wx.ClientDC(self.Preview)
         dc.Clear()
         if self.radioButton1.GetValue():
             self.Divergence = SFC_Divergence(self.Preview, SELECTION_DIVERGENCE, self.Sequences.GetValue())
@@ -1463,14 +1530,14 @@
 #                            Action Block Dialog
 #-------------------------------------------------------------------------------
 
-class ActionTable(wxPyGridTableBase):
+class ActionTable(wx.grid.PyGridTableBase):
     
     """
-    A custom wxGrid Table using user supplied data
+    A custom wx.Grid Table using user supplied data
     """
     def __init__(self, parent, data, colnames):
         # The base class must be initialized *first*
-        wxPyGridTableBase.__init__(self)
+        wx.grid.PyGridTableBase.__init__(self)
         self.data = data
         self.colnames = colnames
         self.Parent = parent
@@ -1507,19 +1574,19 @@
         
     def ResetView(self, grid):
         """
-        (wxGrid) -> Reset the grid view.   Call this to
+        (wx.Grid) -> Reset the grid view.   Call this to
         update the grid if rows and columns have been added or deleted
         """
         grid.BeginBatch()
         for current, new, delmsg, addmsg in [
-            (self._rows, self.GetNumberRows(), wxGRIDTABLE_NOTIFY_ROWS_DELETED, wxGRIDTABLE_NOTIFY_ROWS_APPENDED),
-            (self._cols, self.GetNumberCols(), wxGRIDTABLE_NOTIFY_COLS_DELETED, wxGRIDTABLE_NOTIFY_COLS_APPENDED),
+            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
+            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
         ]:
             if new < current:
-                msg = wxGridTableMessage(self,delmsg,new,current-new)
+                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
                 grid.ProcessTableMessage(msg)
             elif new > current:
-                msg = wxGridTableMessage(self,addmsg,new-current)
+                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
                 grid.ProcessTableMessage(msg)
                 self.UpdateValues(grid)
         grid.EndBatch()
@@ -1536,20 +1603,20 @@
     def UpdateValues(self, grid):
         """Update all displayed values"""
         # This sends an event to the grid table to update all of the values
-        msg = wxGridTableMessage(self, wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
+        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
         grid.ProcessTableMessage(msg)
 
     def _updateColAttrs(self, grid):
         """
-        wxGrid -> update the column attributes to add the
+        wx.Grid -> update the column attributes to add the
         appropriate renderer given the column name.
 
         Otherwise default to the default renderer.
         """
         
         for col in range(self.GetNumberCols()):
-            attr = wxGridCellAttr()
-            attr.SetAlignment(self.Parent.ColAlignements[col], wxALIGN_CENTRE)
+            attr = wx.grid.GridCellAttr()
+            attr.SetAlignment(self.Parent.ColAlignements[col], wx.ALIGN_CENTRE)
             grid.SetColAttr(col, attr)
             grid.SetColSize(col, self.Parent.ColSizes[col])
         
@@ -1562,39 +1629,39 @@
                 readonly = False
                 colname = self.GetColLabelValue(col)
                 if colname == "Qualifier":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.QualifierList)
                 if colname == "Duration":
-                    editor = wxGridCellTextEditor()
-                    renderer = wxGridCellStringRenderer()
+                    editor = wx.grid.GridCellTextEditor()
+                    renderer = wx.grid.GridCellStringRenderer()
                     if self.Parent.DurationList[self.data[row]["Qualifier"]]:
                         readonly = False
                     else:
                         readonly = True
                         self.data[row]["Duration"] = ""
                 elif colname == "Type":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.TypeList)
                 elif colname == "Value":
                     type = self.data[row]["Type"]
                     if type == "Action":
-                        editor = wxGridCellChoiceEditor()
+                        editor = wx.grid.GridCellChoiceEditor()
                         editor.SetParameters(self.Parent.ActionList)
                     elif type == "Variable":
-                        editor = wxGridCellChoiceEditor()
+                        editor = wx.grid.GridCellChoiceEditor()
                         editor.SetParameters(self.Parent.VariableList)
                     elif type == "Inline":
-                        editor = wxGridCellTextEditor()
-                        renderer = wxGridCellStringRenderer()
+                        editor = wx.grid.GridCellTextEditor()
+                        renderer = wx.grid.GridCellStringRenderer()
                 elif colname == "Indicator":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.VariableList)
                     
                 grid.SetCellEditor(row, col, editor)
                 grid.SetCellRenderer(row, col, renderer)
                 grid.SetReadOnly(row, col, readonly)
                 
-                grid.SetCellBackgroundColour(row, col, wxWHITE)
+                grid.SetCellBackgroundColour(row, col, wx.WHITE)
     
     def SetData(self, data):
         self.data = data
@@ -1624,86 +1691,103 @@
         self.data = []
         self.editors = []
 
-[wxID_ACTIONBLOCKDIALOG, wxID_ACTIONBLOCKDIALOGMAINPANEL, 
- wxID_ACTIONBLOCKDIALOGVARIABLESGRID, wxID_ACTIONBLOCKDIALOGSTATICTEXT1, 
- wxID_ACTIONBLOCKDIALOGADDBUTTON,wxID_ACTIONBLOCKDIALOGDELETEBUTTON, 
- wxID_ACTIONBLOCKDIALOGUPBUTTON, wxID_ACTIONBLOCKDIALOGDOWNBUTTON, 
-] = [wx.NewId() for _init_ctrls in range(8)]
+[ID_ACTIONBLOCKDIALOG, ID_ACTIONBLOCKDIALOGVARIABLESGRID, 
+ ID_ACTIONBLOCKDIALOGSTATICTEXT1, ID_ACTIONBLOCKDIALOGADDBUTTON,
+ ID_ACTIONBLOCKDIALOGDELETEBUTTON, ID_ACTIONBLOCKDIALOGUPBUTTON, 
+ ID_ACTIONBLOCKDIALOGDOWNBUTTON, 
+] = [wx.NewId() for _init_ctrls in range(7)]
 
 class ActionBlockDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
+        parent.AddSizer(self.TopSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.GridButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+        
+    def _init_coll_TopSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ActionsGrid, 0, border=0, flag=wx.GROW)
+    
+    def _init_coll_TopSizer_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(1)
+
+    def _init_coll_GridButtonSizer_Items(self, parent):
+        parent.AddWindow(self.AddButton, 0, border=10, flag=wx.GROW|wx.LEFT)
+        parent.AddWindow(self.DeleteButton, 0, border=10, flag=wx.GROW|wx.LEFT)
+        parent.AddWindow(self.UpButton, 0, border=10, flag=wx.GROW|wx.LEFT)
+        parent.AddWindow(self.DownButton, 0, border=10, flag=wx.GROW|wx.LEFT)
 
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
-
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10)
+        self.TopSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
+        self.GridButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
+        
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
-
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_TopSizer_Items(self.TopSizer)
+        self._init_coll_TopSizer_Growables(self.TopSizer)
+        self._init_coll_GridButtonSizer_Items(self.GridButtonSizer)
+        
         self.SetSizer(self.flexGridSizer1)
-
+    
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_ACTIONBLOCKDIALOG,
+        wx.Dialog.__init__(self, id=ID_ACTIONBLOCKDIALOG,
               name='ActionBlockDialog', parent=prnt, pos=wx.Point(376, 223),
-              size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE,
+              size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
               title='Edit action block properties')
         self.SetClientSize(wx.Size(500, 300))
 
-        self.MainPanel = wx.Panel(id=wxID_ACTIONBLOCKDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_ACTIONBLOCKDIALOGSTATICTEXT1,
-              label='Actions:', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(95, 17), style=0)
-
-        self.ActionsGrid = wx.grid.Grid(id=wxID_ACTIONBLOCKDIALOGVARIABLESGRID,
-              name='ActionsGrid', parent=self.MainPanel, pos=wx.Point(24, 44), 
-              size=wx.Size(450, 150), style=wxVSCROLL)
+        self.staticText1 = wx.StaticText(id=ID_ACTIONBLOCKDIALOGSTATICTEXT1,
+              label='Actions:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
+
+        self.ActionsGrid = wx.grid.Grid(id=ID_ACTIONBLOCKDIALOGVARIABLESGRID,
+              name='ActionsGrid', parent=self, pos=wx.Point(0, 0), 
+              size=wx.Size(0, 0), style=wx.VSCROLL)
         self.ActionsGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
               'Sans'))
         self.ActionsGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
               False, 'Sans'))
         self.ActionsGrid.DisableDragGridSize()
         self.ActionsGrid.EnableScrolling(False, True)
-        EVT_GRID_CELL_CHANGE(self.ActionsGrid, self.OnActionsGridCellChange)
-
-        self.AddButton = wx.Button(id=wxID_ACTIONBLOCKDIALOGADDBUTTON, label='Add',
-              name='AddButton', parent=self.MainPanel, pos=wx.Point(245, 204),
+        self.ActionsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnActionsGridCellChange)
+
+        self.AddButton = wx.Button(id=ID_ACTIONBLOCKDIALOGADDBUTTON, label='Add',
+              name='AddButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(72, 32), style=0)
-        EVT_BUTTON(self, wxID_ACTIONBLOCKDIALOGADDBUTTON, self.OnAddButton)
-
-        self.DeleteButton = wx.Button(id=wxID_ACTIONBLOCKDIALOGDELETEBUTTON, label='Delete',
-              name='DeleteButton', parent=self.MainPanel, pos=wx.Point(325, 204),
+        self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_ACTIONBLOCKDIALOGADDBUTTON)
+
+        self.DeleteButton = wx.Button(id=ID_ACTIONBLOCKDIALOGDELETEBUTTON, label='Delete',
+              name='DeleteButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(72, 32), style=0)
-        EVT_BUTTON(self, wxID_ACTIONBLOCKDIALOGDELETEBUTTON, self.OnDeleteButton)
-
-        self.UpButton = wx.Button(id=wxID_ACTIONBLOCKDIALOGUPBUTTON, label='^',
-              name='UpButton', parent=self.MainPanel, pos=wx.Point(405, 204),
+        self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_ACTIONBLOCKDIALOGDELETEBUTTON)
+
+        self.UpButton = wx.Button(id=ID_ACTIONBLOCKDIALOGUPBUTTON, label='^',
+              name='UpButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_ACTIONBLOCKDIALOGUPBUTTON, self.OnUpButton)
-
-        self.DownButton = wx.Button(id=wxID_ACTIONBLOCKDIALOGDOWNBUTTON, label='v',
-              name='DownButton', parent=self.MainPanel, pos=wx.Point(445, 204),
+        self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_ACTIONBLOCKDIALOGUPBUTTON)
+
+        self.DownButton = wx.Button(id=ID_ACTIONBLOCKDIALOGDOWNBUTTON, label='v',
+              name='DownButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_ACTIONBLOCKDIALOGDOWNBUTTON, self.OnDownButton)
+        self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_ACTIONBLOCKDIALOGDOWNBUTTON)
+
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
 
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
         
         self.DefaultValue = {"Qualifier" : "N", "Duration" : "", "Type" : "Action", "Value" : "", "Indicator" : ""}
         self.Table = ActionTable(self, [], ["Qualifier","Duration","Type","Value","Indicator"])
         self.TypeList = "Action,Variable,Inline"
         self.ColSizes = [60, 90, 80, 110, 80]
-        self.ColAlignements = [wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT]
+        self.ColAlignements = [wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
         
         self.ActionsGrid.SetTable(self.Table)
         self.ActionsGrid.SetRowLabelSize(0)
@@ -1802,46 +1886,46 @@
 #                          Edit Step Name Dialog
 #-------------------------------------------------------------------------------
 
-class StepNameDialog(wxTextEntryDialog):
+class StepNameDialog(wx.TextEntryDialog):
 
     def __init__(self, parent, message, caption = "Please enter text", defaultValue = "", 
-                       style = wxOK|wxCANCEL|wxCENTRE, pos = wxDefaultPosition):
+                       style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
         wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
         
         self.PouNames = []
         self.Variables = []
         self.StepNames = []
         
-        EVT_BUTTON(self, self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId(), self.OnOK)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
         
     def OnOK(self, event):
         step_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
         if step_name == "":
-            message = wxMessageDialog(self, "You must type a name!", "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif not TestIdentifier(step_name):
-            message = wxMessageDialog(self, "\"%s\" is not a valid identifier!"%step_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif step_name.upper() in IEC_KEYWORDS:
-            message = wxMessageDialog(self, "\"%s\" is a keyword. It can't be used!"%step_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif step_name.upper() in self.PouNames:
-            message = wxMessageDialog(self, "A pou with \"%s\" as name exists!"%step_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "A pou with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif step_name.upper() in self.Variables:
-            message = wxMessageDialog(self, "A variable with \"%s\" as name exists!"%step_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "A variable with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif step_name.upper() in self.StepNames:
-            message = wxMessageDialog(self, "\"%s\" step already exists!"%step_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" step already exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def SetPouNames(self, pou_names):
         self.PouNames = [pou_name.upper() for pou_name in pou_names]
--- a/LDViewer.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/LDViewer.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 from types import *
 
@@ -348,7 +347,7 @@
                             element.SetSelectedSegment(result[0])
                     else:
                         element.OnLeftUp(event, dc, self.Scaling)
-            wxCallAfter(self.SetCursor, wxNullCursor)
+            wx.CallAfter(self.SetCursor, wx.NullCursor)
             self.ReleaseMouse()
             self.Refresh()
         event.Skip()
@@ -369,7 +368,7 @@
                 else:
                     self.SelectedElement.SetSelected(True)
                     self.SelectedElement.OnRightUp(event, dc, self.Scaling)
-                wxCallAfter(self.SetCursor, wxNullCursor)
+                wx.CallAfter(self.SetCursor, wx.NullCursor)
                 self.ReleaseMouse()
                 self.Refresh()
         event.Skip()
@@ -397,8 +396,11 @@
         if self.GetDrawingMode() == FREEDRAWING_MODE:
             Viewer.OnChar(self, event)
         else:
+            xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL)
+            xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL)
+            ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL)
             keycode = event.GetKeyCode()
-            if keycode == WXK_DELETE and self.SelectedElement:
+            if keycode == wx.WXK_DELETE and self.SelectedElement:
                 if self.IsBlock(self.SelectedElement):
                     self.SelectedElement.Delete()
                 elif self.IsWire(self.SelectedElement):
@@ -414,22 +416,22 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-            elif keycode == WXK_LEFT:
+            elif keycode == wx.WXK_LEFT:
                 if event.ControlDown() and event.ShiftDown():
                     self.Scroll(0, ypos)
                 elif event.ControlDown():
                     self.Scroll(max(0, xpos - 1), ypos)
-            elif keycode == WXK_RIGHT:
+            elif keycode == wx.WXK_RIGHT:
                 if event.ControlDown() and event.ShiftDown():
                     self.Scroll(xmax, ypos)
                 elif event.ControlDown():
                     self.Scroll(min(xpos + 1, xmax), ypos)
-            elif keycode == WXK_UP:
+            elif keycode == wx.WXK_UP:
                 if event.ControlDown() and event.ShiftDown():
                     self.Scroll(xpos, 0)
                 elif event.ControlDown():
                     self.Scroll(xpos, max(0, ypos - 1))
-            elif keycode == WXK_DOWN:
+            elif keycode == wx.WXK_DOWN:
                 if event.ControlDown() and event.ShiftDown():
                     self.Scroll(xpos, ymax)
                 elif event.ControlDown():
@@ -453,7 +455,7 @@
             varlist.append(self.Controler.GetCurrentElementEditingName())
         dialog.SetVariables(varlist)
         dialog.SetValues({"name":"","type":COIL_NORMAL})
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             startx, starty = LD_OFFSET[0], 0
             if len(self.Rungs) > 0:
@@ -539,7 +541,7 @@
                         varlist.append(var["Name"])
             dialog.SetVariables(varlist)
             dialog.SetValues({"name":"","type":CONTACT_NORMAL})
-            if dialog.ShowModal() == wxID_OK:
+            if dialog.ShowModal() == wx.ID_OK:
                 values = dialog.GetValues()
                 points = wires[0].GetSelectedSegmentPoints()
                 id = self.GetNewId()
@@ -612,7 +614,7 @@
                 self.RefreshScrollBars()
                 self.Refresh()
         else:
-            message = wxMessageDialog(self, "You must select the wire where a contact should be added!", "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "You must select the wire where a contact should be added!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
 
@@ -763,7 +765,7 @@
                             varlist.append(self.Controler.GetCurrentElementEditingName())
                         dialog.SetVariables(varlist)
                         dialog.SetValues({"name":"","type":COIL_NORMAL})
-                        if dialog.ShowModal() == wxID_OK:
+                        if dialog.ShowModal() == wx.ID_OK:
                             values = dialog.GetValues()
                             powerrail = right_elements[0].GetParentBlock()
                             index = 0
@@ -833,16 +835,16 @@
                 self.RefreshScrollBars()
                 self.Refresh()
             else:
-                message = wxMessageDialog(self, "The group of block must be coherent!", "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "The group of block must be coherent!", "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
         else:
-            message = wxMessageDialog(self, "You must select the block or group of blocks around which a branch should be added!", "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "You must select the block or group of blocks around which a branch should be added!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
 
     def AddLadderBlock(self):
-        message = wxMessageDialog(self, "This option isn't available yet!", "Warning", wxOK|wxICON_EXCLAMATION)
+        message = wx.MessageDialog(self, "This option isn't available yet!", "Warning", wx.OK|wx.ICON_EXCLAMATION)
         message.ShowModal()
         message.Destroy()
 
@@ -1113,10 +1115,10 @@
                 if block in block_list:
                     wires = wire.EndConnected.GetWires()
                     endmiddlepoint = wires[0][0].StartConnected.GetPosition(False)[0] - LD_WIRE_SIZE
-                    points = [startpoint, wxPoint(middlepoint, startpoint.y),
-                              wxPoint(middlepoint, startpoint.y + offset),
-                              wxPoint(endmiddlepoint, startpoint.y + offset),
-                              wxPoint(endmiddlepoint, endpoint.y), endpoint]
+                    points = [startpoint, wx.Point(middlepoint, startpoint.y),
+                              wx.Point(middlepoint, startpoint.y + offset),
+                              wx.Point(endmiddlepoint, startpoint.y + offset),
+                              wx.Point(endmiddlepoint, endpoint.y), endpoint]
                 else:
                     if startpoint.y + offset != endpoint.y:
                         if isinstance(element, LD_PowerRail):
@@ -1140,8 +1142,8 @@
                             self.RefreshPosition(block, False)
                         endpoint = wire.EndConnected.GetPosition(False)
                     if not onlyone[i]:
-                        points = [startpoint, wxPoint(middlepoint, startpoint.y),
-                                  wxPoint(middlepoint, endpoint.y), endpoint]
+                        points = [startpoint, wx.Point(middlepoint, startpoint.y),
+                                  wx.Point(middlepoint, endpoint.y), endpoint]
                     else:
                         points = [startpoint, endpoint]
                 wire.SetPoints(points)
@@ -1181,7 +1183,7 @@
                         varlist.append(var["Name"])
             dialog.SetVariables(varlist)
             dialog.SetValues({"name":contact.GetName(),"type":contact.GetType()})
-            if dialog.ShowModal() == wxID_OK:
+            if dialog.ShowModal() == wx.ID_OK:
                 values = dialog.GetValues()
                 contact.SetName(values["name"])
                 contact.SetType(values["type"])
@@ -1207,7 +1209,7 @@
                 varlist.append(self.Controler.GetCurrentElementEditingName())
             dialog.SetVariables(varlist)
             dialog.SetValues({"name":coil.GetName(),"type":coil.GetType()})
-            if dialog.ShowModal() == wxID_OK:
+            if dialog.ShowModal() == wx.ID_OK:
                 values = dialog.GetValues()
                 coil.SetName(values["name"])
                 coil.SetType(values["type"])
--- a/PLCOpenEditor.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/PLCOpenEditor.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,11 +22,10 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
-from wxPython.grid import *
 from time import localtime
 from datetime import datetime
 import wx
+import wx.grid
 
 from SFCViewer import *
 from LDViewer import *
@@ -70,43 +69,43 @@
     if os.path.isfile(os.path.join(path, "PLCOpenEditor.py")):
         CWD = path
 
-[wxID_PLCOPENEDITOR, wxID_PLCOPENEDITORPROJECTTREE, 
- wxID_PLCOPENEDITORSPLITTERWINDOW1, wxID_PLCOPENEDITOREDITORPANEL,
- wxID_PLCOPENEDITORTABSOPENED, wxID_PLCOPENEDITORTOOLBAR,
- wxID_PLCOPENEDITORDEFAULTTOOLBAR, wxID_PLCOPENEDITORSFCTOOLBAR, 
- wxID_PLCOPENEDITORFBDTOOLBAR, wxID_PLCOPENEDITORLDTOOLBAR,
+[ID_PLCOPENEDITOR, ID_PLCOPENEDITORPROJECTTREE, 
+ ID_PLCOPENEDITORSPLITTERWINDOW1, ID_PLCOPENEDITOREDITORPANEL,
+ ID_PLCOPENEDITORTABSOPENED, ID_PLCOPENEDITORTOOLBAR,
+ ID_PLCOPENEDITORDEFAULTTOOLBAR, ID_PLCOPENEDITORSFCTOOLBAR, 
+ ID_PLCOPENEDITORFBDTOOLBAR, ID_PLCOPENEDITORLDTOOLBAR,
 ] = [wx.NewId() for _init_ctrls in range(10)]
 
-[wxID_PLCOPENEDITORFILEMENUITEMS0, wxID_PLCOPENEDITORFILEMENUITEMS1, 
- wxID_PLCOPENEDITORFILEMENUITEMS2, wxID_PLCOPENEDITORFILEMENUITEMS3, 
- wxID_PLCOPENEDITORFILEMENUITEMS5, wxID_PLCOPENEDITORFILEMENUITEMS6, 
- wxID_PLCOPENEDITORFILEMENUITEMS7, wxID_PLCOPENEDITORFILEMENUITEMS9, 
- wxID_PLCOPENEDITORFILEMENUITEMS11,
+[ID_PLCOPENEDITORFILEMENUITEMS0, ID_PLCOPENEDITORFILEMENUITEMS1, 
+ ID_PLCOPENEDITORFILEMENUITEMS2, ID_PLCOPENEDITORFILEMENUITEMS3, 
+ ID_PLCOPENEDITORFILEMENUITEMS5, ID_PLCOPENEDITORFILEMENUITEMS6, 
+ ID_PLCOPENEDITORFILEMENUITEMS7, ID_PLCOPENEDITORFILEMENUITEMS9, 
+ ID_PLCOPENEDITORFILEMENUITEMS11,
 ] = [wx.NewId() for _init_coll_FileMenu_Items in range(9)]
 
-[wxID_PLCOPENEDITORHELPMENUITEMS0, wxID_PLCOPENEDITORHELPMENUITEMS1, 
- wxID_PLCOPENEDITORHELPMENUITEMS2, wxID_PLCOPENEDITORHELPMENUITEMS3, 
+[ID_PLCOPENEDITORHELPMENUITEMS0, ID_PLCOPENEDITORHELPMENUITEMS1, 
+ ID_PLCOPENEDITORHELPMENUITEMS2, ID_PLCOPENEDITORHELPMENUITEMS3, 
 ] = [wx.NewId() for _init_coll_HelpMenu_Items in range(4)]
 
-[wxID_PLCOPENEDITORSFCMENUITEMS0, wxID_PLCOPENEDITORSFCMENUITEMS1, 
- wxID_PLCOPENEDITORSFCMENUITEMS2, wxID_PLCOPENEDITORSFCMENUITEMS3,
+[ID_PLCOPENEDITORSFCMENUITEMS0, ID_PLCOPENEDITORSFCMENUITEMS1, 
+ ID_PLCOPENEDITORSFCMENUITEMS2, ID_PLCOPENEDITORSFCMENUITEMS3,
 ] = [wx.NewId() for _init_coll_HelpMenu_Items in range(4)]
 
-[wxID_PLCOPENEDITORCONFIGMENUITEMS0, wxID_PLCOPENEDITORCONFIGMENUITEMS1, 
+[ID_PLCOPENEDITORCONFIGMENUITEMS0, ID_PLCOPENEDITORCONFIGMENUITEMS1, 
 ] = [wx.NewId() for _init_coll_HelpMenu_Items in range(2)]
 
-[wxID_PLCOPENEDITOREDITMENUITEMS0, wxID_PLCOPENEDITOREDITMENUITEMS1, 
- wxID_PLCOPENEDITOREDITMENUITEMS11, wxID_PLCOPENEDITOREDITMENUITEMS12, 
- wxID_PLCOPENEDITOREDITMENUITEMS2, wxID_PLCOPENEDITOREDITMENUITEMS4, 
- wxID_PLCOPENEDITOREDITMENUITEMS5, wxID_PLCOPENEDITOREDITMENUITEMS6, 
- wxID_PLCOPENEDITOREDITMENUITEMS8, wxID_PLCOPENEDITOREDITMENUITEMS9, 
+[ID_PLCOPENEDITOREDITMENUITEMS0, ID_PLCOPENEDITOREDITMENUITEMS1, 
+ ID_PLCOPENEDITOREDITMENUITEMS11, ID_PLCOPENEDITOREDITMENUITEMS12, 
+ ID_PLCOPENEDITOREDITMENUITEMS2, ID_PLCOPENEDITOREDITMENUITEMS4, 
+ ID_PLCOPENEDITOREDITMENUITEMS5, ID_PLCOPENEDITOREDITMENUITEMS6, 
+ ID_PLCOPENEDITOREDITMENUITEMS8, ID_PLCOPENEDITOREDITMENUITEMS9, 
 ] = [wx.NewId() for _init_coll_EditMenu_Items in range(10)]
 
-[wxID_PLCOPENEDITORSFCMENUITEMS0, wxID_PLCOPENEDITORSFCMENUITEMS1, 
- wxID_PLCOPENEDITORSFCMENUITEMS2, wxID_PLCOPENEDITORSFCMENUITEMS3, 
+[ID_PLCOPENEDITORSFCMENUITEMS0, ID_PLCOPENEDITORSFCMENUITEMS1, 
+ ID_PLCOPENEDITORSFCMENUITEMS2, ID_PLCOPENEDITORSFCMENUITEMS3, 
 ] = [wx.NewId() for _init_coll_SFCMenu_Items in range(4)]
 
-[wxID_PLCOPENEDITORCONFIGMENUITEMS0, wxID_PLCOPENEDITORCONFIGMENUITEMS1, 
+[ID_PLCOPENEDITORCONFIGMENUITEMS0, ID_PLCOPENEDITORCONFIGMENUITEMS1, 
 ] = [wx.NewId() for _init_coll_ConfigMenu_Items in range(2)]
 
 
@@ -115,46 +114,46 @@
 #-------------------------------------------------------------------------------
 
 
-[wxID_PLCOPENEDITORTOOLBARSELECTION, wxID_PLCOPENEDITORTOOLBARCOMMENT,
- wxID_PLCOPENEDITORTOOLBARVARIABLE, wxID_PLCOPENEDITORTOOLBARBLOCK,
- wxID_PLCOPENEDITORTOOLBARCONNECTION, wxID_PLCOPENEDITORTOOLBARWIRE,
- wxID_PLCOPENEDITORTOOLBARPOWERRAIL, wxID_PLCOPENEDITORTOOLBARRUNG,
- wxID_PLCOPENEDITORTOOLBARCOIL, wxID_PLCOPENEDITORTOOLBARCONTACT,
- wxID_PLCOPENEDITORTOOLBARBRANCH, wxID_PLCOPENEDITORTOOLBARINITIALSTEP,
- wxID_PLCOPENEDITORTOOLBARSTEP, wxID_PLCOPENEDITORTOOLBARTRANSITION,
- wxID_PLCOPENEDITORTOOLBARACTIONBLOCK, wxID_PLCOPENEDITORTOOLBARDIVERGENCE,
- wxID_PLCOPENEDITORTOOLBARJUMP,
+[ID_PLCOPENEDITORTOOLBARSELECTION, ID_PLCOPENEDITORTOOLBARCOMMENT,
+ ID_PLCOPENEDITORTOOLBARVARIABLE, ID_PLCOPENEDITORTOOLBARBLOCK,
+ ID_PLCOPENEDITORTOOLBARCONNECTION, ID_PLCOPENEDITORTOOLBARWIRE,
+ ID_PLCOPENEDITORTOOLBARPOWERRAIL, ID_PLCOPENEDITORTOOLBARRUNG,
+ ID_PLCOPENEDITORTOOLBARCOIL, ID_PLCOPENEDITORTOOLBARCONTACT,
+ ID_PLCOPENEDITORTOOLBARBRANCH, ID_PLCOPENEDITORTOOLBARINITIALSTEP,
+ ID_PLCOPENEDITORTOOLBARSTEP, ID_PLCOPENEDITORTOOLBARTRANSITION,
+ ID_PLCOPENEDITORTOOLBARACTIONBLOCK, ID_PLCOPENEDITORTOOLBARDIVERGENCE,
+ ID_PLCOPENEDITORTOOLBARJUMP,
 ] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)]
 
 ToolBarItems = {
-    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
-    "LD" :  [(True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
-             (False, DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
-             (False, DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
-    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
-             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "Images/initial_step.png", "Create a new initial step"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "Images/step.png", "Create a new step"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "Images/transition.png", "Create a new transition"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "Images/action.png", "Create a new action block"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "Images/divergence.png", "Create a new divergence"),
-             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "Images/jump.png", "Create a new jump"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
-             (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+    "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+    "LD" :  [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
+             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
+             (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+    "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+             (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "Images/initial_step.png", "Create a new initial step"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "Images/step.png", "Create a new step"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "Images/transition.png", "Create a new transition"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "Images/action.png", "Create a new action block"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "Images/divergence.png", "Create a new divergence"),
+             (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "Images/jump.png", "Create a new jump"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
+             (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
     "ST" : [],
     "IL" : []
 }
@@ -163,152 +162,139 @@
     _custom_classes = {'wx.SashWindow' : ['Viewer']}
     
     def _init_coll_EditMenu_Items(self, parent):
-        # generated method, don't edit
-
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS0,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS0,
               kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS1,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS1,
               kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS2,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS2,
               kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS4,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS4,
               kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS5,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS5,
               kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS6,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS6,
               kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS8,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS8,
               kind=wx.ITEM_NORMAL, text=u'Add POU')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS9,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS9,
               kind=wx.ITEM_NORMAL, text=u'Remove POU')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS11,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS11,
               kind=wx.ITEM_NORMAL, text=u'Add Configuration')
-        parent.Append(help='', id=wxID_PLCOPENEDITOREDITMENUITEMS12,
+        parent.Append(help='', id=ID_PLCOPENEDITOREDITMENUITEMS12,
               kind=wx.ITEM_NORMAL, text=u'Remove Configuration')
         self.Bind(wx.EVT_MENU, self.OnRefreshMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS0)
+              id=ID_PLCOPENEDITOREDITMENUITEMS0)
         self.Bind(wx.EVT_MENU, self.OnUndoMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS1)
+              id=ID_PLCOPENEDITOREDITMENUITEMS1)
         self.Bind(wx.EVT_MENU, self.OnRedoMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS2)
+              id=ID_PLCOPENEDITOREDITMENUITEMS2)
         self.Bind(wx.EVT_MENU, self.OnCutMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS4)
+              id=ID_PLCOPENEDITOREDITMENUITEMS4)
         self.Bind(wx.EVT_MENU, self.OnCopyMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS5)
+              id=ID_PLCOPENEDITOREDITMENUITEMS5)
         self.Bind(wx.EVT_MENU, self.OnPasteMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS6)
+              id=ID_PLCOPENEDITOREDITMENUITEMS6)
         self.Bind(wx.EVT_MENU, self.OnAddPouMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS8)
+              id=ID_PLCOPENEDITOREDITMENUITEMS8)
         self.Bind(wx.EVT_MENU, self.OnRemovePouMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS9)
+              id=ID_PLCOPENEDITOREDITMENUITEMS9)
         self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS11)
+              id=ID_PLCOPENEDITOREDITMENUITEMS11)
         self.Bind(wx.EVT_MENU, self.OnRemoveConfigurationMenu,
-              id=wxID_PLCOPENEDITOREDITMENUITEMS12)
+              id=ID_PLCOPENEDITOREDITMENUITEMS12)
 
     def _init_coll_menuBar1_Menus(self, parent):
-        # generated method, don't edit
-        
         if self.ModeSolo:
             parent.Append(menu=self.FileMenu, title=u'File')
         parent.Append(menu=self.EditMenu, title=u'Edit')
         parent.Append(menu=self.HelpMenu, title=u'Help')
 
     def _init_coll_ConfigMenu_Items(self, parent):
-        # generated method, don't edit
-
-        parent.Append(help='', id=wxID_PLCOPENEDITORCONFIGMENUITEMS0,
+        parent.Append(help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS0,
               kind=wx.ITEM_NORMAL, text=u'Add Resource')
-        parent.Append(help='', id=wxID_PLCOPENEDITORCONFIGMENUITEMS1,
+        parent.Append(help='', id=ID_PLCOPENEDITORCONFIGMENUITEMS1,
               kind=wx.ITEM_NORMAL, text=u'Remove Resource')
         self.Bind(wx.EVT_MENU, self.OnAddResourceMenu,
-              id=wxID_PLCOPENEDITORCONFIGMENUITEMS0)
+              id=ID_PLCOPENEDITORCONFIGMENUITEMS0)
         self.Bind(wx.EVT_MENU, self.OnRemoveResourceMenu,
-              id=wxID_PLCOPENEDITORCONFIGMENUITEMS1)
+              id=ID_PLCOPENEDITORCONFIGMENUITEMS1)
 
     def _init_coll_HelpMenu_Items(self, parent):
-        # generated method, don't edit
-
-        parent.Append(help='', id=wxID_PLCOPENEDITORHELPMENUITEMS0,
+        parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS0,
               kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1')
-        parent.Append(help='', id=wxID_PLCOPENEDITORHELPMENUITEMS1,
+        parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS1,
               kind=wx.ITEM_NORMAL, text=u'PLCOpen\tF2')
-        parent.Append(help='', id=wxID_PLCOPENEDITORHELPMENUITEMS2,
+        parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS2,
               kind=wx.ITEM_NORMAL, text=u'IEC 61131-3\tF3')
         if self.ModeSolo:
-            parent.Append(help='', id=wxID_PLCOPENEDITORHELPMENUITEMS3,
+            parent.Append(help='', id=ID_PLCOPENEDITORHELPMENUITEMS3,
                   kind=wx.ITEM_NORMAL, text=u'About')
         self.Bind(wx.EVT_MENU, self.OnPLCOpenMenu,
-              id=wxID_PLCOPENEDITORHELPMENUITEMS1)
+              id=ID_PLCOPENEDITORHELPMENUITEMS1)
 
     def _init_coll_FileMenu_Items(self, parent):
-        # generated method, don't edit
-
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS0,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS0,
               kind=wx.ITEM_NORMAL, text=u'New\tCTRL+N')
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS1,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS1,
               kind=wx.ITEM_NORMAL, text=u'Open\tCTRL+O')
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS2,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS2,
               kind=wx.ITEM_NORMAL, text=u'Close Tab\tCTRL+W')
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS3,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS3,
               kind=wx.ITEM_NORMAL, text=u'Close Project')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS5,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS5,
               kind=wx.ITEM_NORMAL, text=u'Save\tCTRL+S')
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS6,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS6,
               kind=wx.ITEM_NORMAL, text=u'Save As...\tCTRL+SHIFT+S')
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS7,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS7,
               kind=wx.ITEM_NORMAL, text=u'Generate Program\tCTRL+G')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS9,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS9,
               kind=wx.ITEM_NORMAL, text=u'Properties')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_PLCOPENEDITORFILEMENUITEMS11,
+        parent.Append(help='', id=ID_PLCOPENEDITORFILEMENUITEMS11,
               kind=wx.ITEM_NORMAL, text=u'Quit\tCTRL+Q')
         self.Bind(wx.EVT_MENU, self.OnNewProjectMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS0)
+              id=ID_PLCOPENEDITORFILEMENUITEMS0)
         self.Bind(wx.EVT_MENU, self.OnOpenProjectMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS1)
+              id=ID_PLCOPENEDITORFILEMENUITEMS1)
         self.Bind(wx.EVT_MENU, self.OnCloseTabMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS2)
+              id=ID_PLCOPENEDITORFILEMENUITEMS2)
         self.Bind(wx.EVT_MENU, self.OnCloseProjectMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS3)
+              id=ID_PLCOPENEDITORFILEMENUITEMS3)
         self.Bind(wx.EVT_MENU, self.OnSaveProjectMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS5)
+              id=ID_PLCOPENEDITORFILEMENUITEMS5)
         self.Bind(wx.EVT_MENU, self.OnSaveProjectAsMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS6)
+              id=ID_PLCOPENEDITORFILEMENUITEMS6)
         self.Bind(wx.EVT_MENU, self.OnGenerateProgramMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS7)
+              id=ID_PLCOPENEDITORFILEMENUITEMS7)
         self.Bind(wx.EVT_MENU, self.OnPropertiesMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS9)
+              id=ID_PLCOPENEDITORFILEMENUITEMS9)
         self.Bind(wx.EVT_MENU, self.OnQuitMenu,
-              id=wxID_PLCOPENEDITORFILEMENUITEMS11)
+              id=ID_PLCOPENEDITORFILEMENUITEMS11)
 
     def _init_coll_SFCMenu_Items(self, parent):
-        # generated method, don't edit
-
-        parent.Append(help='', id=wxID_PLCOPENEDITORSFCMENUITEMS0,
+        parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS0,
               kind=wx.ITEM_NORMAL, text=u'Add Transition')
-        parent.Append(help='', id=wxID_PLCOPENEDITORSFCMENUITEMS1,
+        parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS1,
               kind=wx.ITEM_NORMAL, text=u'Add Action')
-        parent.Append(help='', id=wxID_PLCOPENEDITORSFCMENUITEMS2,
+        parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS2,
               kind=wx.ITEM_NORMAL, text=u'Remove Transition')
-        parent.Append(help='', id=wxID_PLCOPENEDITORSFCMENUITEMS3,
+        parent.Append(help='', id=ID_PLCOPENEDITORSFCMENUITEMS3,
               kind=wx.ITEM_NORMAL, text=u'Remove Action')
         self.Bind(wx.EVT_MENU, self.OnAddPouTransitionMenu,
-              id=wxID_PLCOPENEDITORSFCMENUITEMS0)
+              id=ID_PLCOPENEDITORSFCMENUITEMS0)
         self.Bind(wx.EVT_MENU, self.OnAddPouActionMenu,
-              id=wxID_PLCOPENEDITORSFCMENUITEMS1)
+              id=ID_PLCOPENEDITORSFCMENUITEMS1)
         self.Bind(wx.EVT_MENU, self.OnRemovePouTransitionMenu,
-              id=wxID_PLCOPENEDITORSFCMENUITEMS2)
+              id=ID_PLCOPENEDITORSFCMENUITEMS2)
         self.Bind(wx.EVT_MENU, self.OnRemovePouActionMenu,
-              id=wxID_PLCOPENEDITORSFCMENUITEMS3)
+              id=ID_PLCOPENEDITORSFCMENUITEMS3)
 
     def _init_utils(self):
-        # generated method, don't edit
         self.menuBar1 = wx.MenuBar()
 
         if self.ModeSolo:
@@ -333,32 +319,22 @@
         self._init_coll_ConfigMenu_Items(self.ConfigMenu)
 
     def _init_coll_MainGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.splitterWindow1, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.splitterWindow1, 0, border=0, flag=wx.GROW)
 
     def _init_coll_EditorGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.ToolBar, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.TabsOpened, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW)
 
     def _init_coll_MainGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
 
     def _init_coll_EditorGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0)
-
         self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
 
         self._init_coll_MainGridSizer_Growables(self.MainGridSizer)
@@ -370,54 +346,53 @@
         self.EditorPanel.SetSizer(self.EditorGridSizer)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Frame.__init__(self, id=wxID_PLCOPENEDITOR, name=u'PLCOpenEditor',
+        wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor',
               parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600),
               style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor')
         self._init_utils()
         self.SetClientSize(wx.Size(1000, 600))
         self.SetMenuBar(self.menuBar1)
-        self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=wxID_PLCOPENEDITOR)
-        
-        self.splitterWindow1 = wx.SplitterWindow(id=wxID_PLCOPENEDITORSPLITTERWINDOW1,
+        self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=ID_PLCOPENEDITOR)
+        
+        self.splitterWindow1 = wx.SplitterWindow(id=ID_PLCOPENEDITORSPLITTERWINDOW1,
               name='splitterWindow1', parent=self, point=wx.Point(0, 0),
               size=wx.Size(-1, -1), style=wx.SP_3D)
         self.splitterWindow1.SetNeedUpdating(True)
         self.splitterWindow1.SetMinimumPaneSize(1)
 
-        self.EditorPanel = wx.Panel(id=wxID_PLCOPENEDITOREDITORPANEL, 
+        self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, 
               name='TabPanel', parent=self.splitterWindow1, pos=wx.Point(0, 0),
               size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL)
         
-        self.TabsOpened = wx.Notebook(id=wxID_PLCOPENEDITORTABSOPENED,
+        self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
               name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0,
               0), size=wx.Size(-1, -1), style=0)
         self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED,
-              self.OnPouSelectedChanged, id=wxID_PLCOPENEDITORTABSOPENED)
-
-        self.ToolBar = wxToolBar(id=wxID_PLCOPENEDITORTOOLBAR, name='ToolBar',
+              self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED)
+
+        self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
               parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
-              style=wxTB_HORIZONTAL | wxNO_BORDER)
-        self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORTOOLBARSELECTION, 
-              wxBitmap(os.path.join(CWD, 'Images/select.png')), wxNullBitmap, "Select an object")
+              style=wx.TB_HORIZONTAL | wx.NO_BORDER)
+        self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, 
+              wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object")
         self.Bind(wx.EVT_TOOL, self.OnSelectionTool, 
-              id=wxID_PLCOPENEDITORTOOLBARSELECTION)
-        
-        self.ProjectTree = wx.TreeCtrl(id=wxID_PLCOPENEDITORPROJECTTREE,
+              id=ID_PLCOPENEDITORTOOLBARSELECTION)
+        
+        self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE,
               name='treeCtrl1', parent=self.splitterWindow1, pos=wx.Point(0, 0),
               size=wx.Size(-1, -1),
               style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
         self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
         self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
-              id=wxID_PLCOPENEDITORPROJECTTREE)
+              id=ID_PLCOPENEDITORPROJECTTREE)
         self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
-              id=wxID_PLCOPENEDITORPROJECTTREE)
+              id=ID_PLCOPENEDITORPROJECTTREE)
         self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit,
-              id=wxID_PLCOPENEDITORPROJECTTREE)
+              id=ID_PLCOPENEDITORPROJECTTREE)
         self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated,
-              id=wxID_PLCOPENEDITORPROJECTTREE)
+              id=ID_PLCOPENEDITORPROJECTTREE)
         self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected,
-              id=wxID_PLCOPENEDITORPROJECTTREE)
+              id=ID_PLCOPENEDITORPROJECTTREE)
         self.splitterWindow1.SplitVertically(self.ProjectTree, self.EditorPanel,
               200)
         
@@ -427,9 +402,9 @@
         self.ModeSolo = controler == None
         self._init_ctrls(parent)
         
-        self.TreeImageList = wxImageList(16, 16)
+        self.TreeImageList = wx.ImageList(16, 16)
         for language in LANGUAGES:
-            self.TreeImageList.Add(wxBitmap(os.path.join(CWD, 'Images/%s.png'%language)))
+            self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images/%s.png'%language)))
         self.ProjectTree.SetImageList(self.TreeImageList)
         
         if self.ModeSolo:
@@ -443,8 +418,8 @@
         
         self.CurrentToolBar = []
         self.CurrentLanguage = ""
-        #self.DrawingMode = FREEDRAWING_MODE
-        self.DrawingMode = DRIVENDRAWING_MODE
+        self.DrawingMode = FREEDRAWING_MODE
+        #self.DrawingMode = DRIVENDRAWING_MODE
         
         self.RefreshFileMenu()
         self.RefreshEditMenu()
@@ -484,11 +459,11 @@
         if self.EditMenu:
             if self.Controler.HasOpenedProject():
                 undo, redo = self.Controler.GetBufferState()
-                self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS1, undo)
-                self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS2, redo)
+                self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS1, undo)
+                self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS2, redo)
             else:
-                self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS1, False)
-                self.EditMenu.Enable(wxID_PLCOPENEDITOREDITMENUITEMS2, False)
+                self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS1, False)
+                self.EditMenu.Enable(ID_PLCOPENEDITOREDITMENUITEMS2, False)
             if self.Controler.HasOpenedProject():
                 if self.TabsOpened.GetPageCount() > 0:
                     self.EditMenu.FindItemByPosition(0).Enable(True)
@@ -514,7 +489,7 @@
         old_values = self.Controler.GetProjectProperties()
         dialog = ProjectDialog(self)
         dialog.SetValues(old_values)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             new_values = dialog.GetValues()
             projectname = new_values.pop("projectName")
             new_values["creationDateTime"] = old_values["creationDateTime"]
@@ -524,20 +499,20 @@
 
     def OnCloseFrame(self, event):
         if not self.Controler.ProjectIsSaved():
-            dialog = wxMessageDialog(self, "There are changes, do you want to save?",  "Close Application", wxYES_NO|wxCANCEL|wxICON_QUESTION)
+            dialog = wx.MessageDialog(self, "There are changes, do you want to save?",  "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
             answer = dialog.ShowModal()
             dialog.Destroy()
-            if answer == wxID_YES:
+            if answer == wx.ID_YES:
                 self.SaveProject()
                 event.Skip()
-            elif answer == wxID_NO:
+            elif answer == wx.ID_NO:
                 event.Skip()
         else:
             event.Skip()
 
     def OnNewProjectMenu(self, event):
         dialog = ProjectDialog(self)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             projectname = values.pop("projectName")
             values["creationDateTime"] = datetime(*localtime()[:6])
@@ -555,8 +530,8 @@
             directory = os.path.dirname(filepath)
         else:
             directory = os.getcwd()
-        dialog = wxFileDialog(self, "Choose a file", directory, "",  "PLCOpen files (*.xml)|*.xml|All files|*.*", wxOPEN)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.FileDialog(self, "Choose a file", directory, "",  "PLCOpen files (*.xml)|*.xml|All files|*.*", wx.OPEN)
+        if dialog.ShowModal() == wx.ID_OK:
             filepath = dialog.GetPath()
             if os.path.isfile(filepath):
                 self.Controler.OpenXMLFile(filepath)
@@ -601,17 +576,17 @@
         event.Skip()
 
     def OnGenerateProgramMenu(self, event):
-        dialog = wxFileDialog(self, "Choose a file", os.getcwd(), self.Controler.GetProgramFilePath(),  "ST files (*.st)|*.st|All files|*.*", wxSAVE|wxCHANGE_DIR)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.FileDialog(self, "Choose a file", os.getcwd(), self.Controler.GetProgramFilePath(),  "ST files (*.st)|*.st|All files|*.*", wx.SAVE|wx.CHANGE_DIR)
+        if dialog.ShowModal() == wx.ID_OK:
             filepath = dialog.GetPath()
             if os.path.isdir(os.path.dirname(filepath)):
                 result = self.Controler.GenerateProgram(filepath)
                 if not result:
-                    message = wxMessageDialog(self, "Can't generate program to file %s!"%filepath, "Error", wxOK|wxICON_ERROR)
+                    message = wx.MessageDialog(self, "Can't generate program to file %s!"%filepath, "Error", wx.OK|wx.ICON_ERROR)
                     message.ShowModal()
                     message.Destroy()
             else:
-                message = wxMessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
         dialog.Destroy()
@@ -630,17 +605,17 @@
             directory, filename = os.path.split(filepath)
         else:
             directory, filename = os.getcwd(), "%(projectName)s.xml"%self.Controler.GetProjectProperties()
-        dialog = wxFileDialog(self, "Choose a file", directory, filename,  "PLCOpen files (*.xml)|*.xml|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.FileDialog(self, "Choose a file", directory, filename,  "PLCOpen files (*.xml)|*.xml|All files|*.*", wx.SAVE|wx.OVERWRITE_PROMPT)
+        if dialog.ShowModal() == wx.ID_OK:
             filepath = dialog.GetPath()
             if os.path.isdir(os.path.dirname(filepath)):
                 result = self.Controler.SaveXMLFile(filepath)
                 if not result:
-                    message = wxMessageDialog(self, "Can't save project to file %s!"%filepath, "Error", wxOK|wxICON_ERROR)
+                    message = wx.MessageDialog(self, "Can't save project to file %s!"%filepath, "Error", wx.OK|wx.ICON_ERROR)
                     message.ShowModal()
                     message.Destroy()
             else:
-                message = wxMessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "%s is not a valid folder!"%os.path.dirname(filepath), "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
             self.RefreshTitle()
@@ -661,7 +636,7 @@
         if selected != -1:
             window = self.TabsOpened.GetPage(selected)
             window.SetMode(MODE_SELECTION)
-        self.ToolBar.ToggleTool(wxID_PLCOPENEDITORTOOLBARSELECTION, True)
+        self.ToolBar.ToggleTool(ID_PLCOPENEDITORTOOLBARSELECTION, True)
 
     def ResetToolToggle(self, id):
         tool = self.ToolBar.FindById(id)
@@ -674,14 +649,14 @@
         event.Skip()
     
     def OnCommentTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCOMMENT)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOMMENT)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_COMMENT)
         event.Skip()
     
     def OnVariableTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARVARIABLE)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARVARIABLE)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_VARIABLE)
@@ -694,21 +669,21 @@
         event.Skip()
         
     def OnConnectionTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCONNECTION)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONNECTION)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_CONNECTION)
         event.Skip()
 
     def OnWireTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARWIRE)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARWIRE)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_WIRE)
         event.Skip()
 
     def OnPowerRailTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARPOWERRAIL)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARPOWERRAIL)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_POWERRAIL)
@@ -721,7 +696,7 @@
         event.Skip()
     
     def OnCoilTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCOIL)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOIL)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_COIL)
@@ -729,7 +704,7 @@
     
     def OnContactTool(self, event):
         if self.DrawingMode == FREEDRAWING_MODE:
-            self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCONTACT)
+            self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONTACT)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             if self.DrawingMode == FREEDRAWING_MODE:
@@ -745,7 +720,7 @@
         event.Skip()    
     
     def OnInitialStepTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARINITIALSTEP)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARINITIALSTEP)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_INITIALSTEP)
@@ -753,7 +728,7 @@
     
     def OnStepTool(self, event):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
-            self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARSTEP)
+            self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARSTEP)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             if self.GetDrawingMode() == FREEDRAWING_MODE:
@@ -764,7 +739,7 @@
 
     def OnActionBlockTool(self, event):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
-            self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARACTIONBLOCK)
+            self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARACTIONBLOCK)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             if self.GetDrawingMode() == FREEDRAWING_MODE:
@@ -774,7 +749,7 @@
         event.Skip()
 
     def OnTransitionTool(self, event):
-        self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARTRANSITION)
+        self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARTRANSITION)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             self.TabsOpened.GetPage(selected).SetMode(MODE_TRANSITION)
@@ -782,7 +757,7 @@
 
     def OnDivergenceTool(self, event):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
-            self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARDIVERGENCE)
+            self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARDIVERGENCE)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             if self.GetDrawingMode() == FREEDRAWING_MODE:
@@ -793,7 +768,7 @@
     
     def OnJumpTool(self, event):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
-            self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARJUMP)
+            self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARJUMP)
         selected = self.TabsOpened.GetSelection()
         if selected != -1:
             if self.GetDrawingMode() == FREEDRAWING_MODE:
@@ -829,8 +804,8 @@
             block_name = self.ProjectTree.GetItemText(item)
             block_type = self.Controler.GetPouType(block_name)
             if block_type != "program":
-                data = wxTextDataObject(str((block_name, block_type, "")))
-                dragSource = wxDropSource(self.ProjectTree)
+                data = wx.TextDataObject(str((block_name, block_type, "")))
+                dragSource = wx.DropSource(self.ProjectTree)
                 dragSource.SetData(data)
                 dragSource.DoDragDrop()
 
@@ -853,8 +828,8 @@
                         message = "\"%s\" pou already exists!"%new_name
                         abort = True
                     elif new_name.upper() in self.Controler.GetProjectPouVariables():
-                        messageDialog = wxMessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wxYES_NO|wxICON_QUESTION)
-                        if messageDialog.ShowModal() == wxID_NO:
+                        messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
+                        if messageDialog.ShowModal() == wx.ID_NO:
                             abort = True
                         messageDialog.Destroy()
                     if not abort:
@@ -901,14 +876,14 @@
                         self.RefreshTabsOpenedTitles()
             if message or abort:
                 if message:
-                    messageDialog = wxMessageDialog(self, message, "Error", wxOK|wxICON_ERROR)
+                    messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR)
                     messageDialog.ShowModal()
                     messageDialog.Destroy()
                 item = event.GetItem()
-                wxCallAfter(self.ProjectTree.EditLabel, item)
+                wx.CallAfter(self.ProjectTree.EditLabel, item)
                 event.Veto()
             else:
-                wxCallAfter(self.RefreshProjectTree)
+                wx.CallAfter(self.RefreshProjectTree)
                 event.Skip()
 
     def OnProjectTreeItemBeginEdit(self, event):
@@ -942,7 +917,7 @@
 ##                values["returnType"] = self.Controler.GetPouInterfaceReturnTypeByName(item_name)
 ##                values["data"] = self.Controler.GetPouInterfaceVarsByName(item_name)
 ##                dialog.SetValues(values)
-##                if dialog.ShowModal() == wxID_OK:
+##                if dialog.ShowModal() == wx.ID_OK:
 ##                    new_values = dialog.GetValues()
 ##                    if "returnType" in new_values:
 ##                        self.Controler.SetPouInterfaceReturnType(item_name, new_values["returnType"])
@@ -964,7 +939,7 @@
 ##                dialog.SetPouNames(self.Controler.GetProjectPouNames())
 ##                values = {"data" : self.Controler.GetConfigurationGlobalVars(item_name)}
 ##                dialog.SetValues(values)
-##                if dialog.ShowModal() == wxID_OK:
+##                if dialog.ShowModal() == wx.ID_OK:
 ##                    new_values = dialog.GetValues()
 ##                    self.Controler.SetConfigurationGlobalVars(item_name, new_values["data"])
 ##                dialog.Destroy()
@@ -980,7 +955,7 @@
 ##                    dialog = EditVariableDialog(self, item_name, None, False, name)
 ##                    values = {"data" : self.Controler.GetConfigurationResourceGlobalVars(config_name, item_name)}
 ##                    dialog.SetValues(values)
-##                    if dialog.ShowModal() == wxID_OK:
+##                    if dialog.ShowModal() == wx.ID_OK:
 ##                        new_values = dialog.GetValues()
 ##                        self.Controler.SetConfigurationResourceGlobalVars(config_name, item_name, new_values["data"])
 ##                    dialog.Destroy()
@@ -1223,9 +1198,9 @@
             for radio, modes, id, method, picture, help in ToolBarItems[language]:
                 if modes & self.DrawingMode:
                     if radio or self.DrawingMode == FREEDRAWING_MODE:
-                        self.ToolBar.AddRadioTool(id, wxBitmap(os.path.join(CWD, picture)), wxNullBitmap, help)
+                        self.ToolBar.AddRadioTool(id, wx.Bitmap(os.path.join(CWD, picture)), wx.NullBitmap, help)
                     else:
-                        self.ToolBar.AddSimpleTool(id, wxBitmap(os.path.join(CWD, picture)), help)
+                        self.ToolBar.AddSimpleTool(id, wx.Bitmap(os.path.join(CWD, picture)), help)
                     self.Bind(wx.EVT_TOOL, getattr(self, method), id=id)
                     self.CurrentToolBar.append(id)
         self.ResetCurrentMode()
@@ -1292,7 +1267,7 @@
     def OnAddPouMenu(self, event):
         dialog = PouDialog(self)
         dialog.SetPouNames(self.Controler.GetProjectPouNames())
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"])
             self.RefreshProjectTree()
@@ -1301,8 +1276,8 @@
 
     def OnRemovePouMenu(self, event):
         pous = self.Controler.GetProjectPouNames()
-        dialog = wxSingleChoiceDialog(self, "Select POU to remove:", "POU Remove", pous, wxOK|wxCANCEL)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.SingleChoiceDialog(self, "Select POU to remove:", "POU Remove", pous, wx.OK|wx.CANCEL)
+        if dialog.ShowModal() == wx.ID_OK:
             selected = dialog.GetStringSelection()
             if not self.Controler.PouIsUsed(selected):
                 self.Controler.ProjectRemovePou(selected)
@@ -1315,14 +1290,14 @@
                 self.RefreshProjectTree()
                 self.RefreshToolBar()
             else:
-                message = wxMessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
         event.Skip()
 
     def OnAddConfigurationMenu(self, event):
-        dialog = wxTextEntryDialog(self, "Enter configuration name:", "Create new configuration", "", wxOK|wxCANCEL)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.TextEntryDialog(self, "Enter configuration name:", "Create new configuration", "", wx.OK|wx.CANCEL)
+        if dialog.ShowModal() == wx.ID_OK:
             value = dialog.GetValue()
             self.Controler.ProjectAddConfiguration(value)
             self.RefreshProjectTree()
@@ -1331,8 +1306,8 @@
 
     def OnRemoveConfigurationMenu(self, event):
         configs = self.Controler.GetProjectConfigNames()
-        dialog = wxSingleChoiceDialog(self, "Select Configuration to remove:", "Remove configuration", configs, wxOK|wxCANCEL)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.SingleChoiceDialog(self, "Select Configuration to remove:", "Remove configuration", configs, wx.OK|wx.CANCEL)
+        if dialog.ShowModal() == wx.ID_OK:
             selected = dialog.GetStringSelection()
             self.Controler.ProjectRemoveConfiguration(selected)
             self.RefreshProjectTree()
@@ -1344,7 +1319,7 @@
             pouname = self.ProjectTree.GetItemText(selected)
             if self.Controler.GetPouBodyType(pouname) == "SFC":
                 dialog = PouTransitionDialog(self)
-                if dialog.ShowModal() == wxID_OK: 
+                if dialog.ShowModal() == wx.ID_OK: 
                     values = dialog.GetValues()
                     self.Controler.ProjectAddPouTransition(pouname, values["transitionName"], values["language"])
                     self.RefreshProjectTree()
@@ -1357,8 +1332,8 @@
             pouname = self.ProjectTree.GetItemText(selected)
             if self.Controler.GetPouBodyType(pouname) == "SFC":
                 transitions = self.Controler.GetPouTransitions(pouname)
-                dialog = wxSingleChoiceDialog(self, "Select Transition to remove:", "Remove transition", transitions, wxOK|wxCANCEL)
-                if dialog.ShowModal() == wxID_OK: 
+                dialog = wx.SingleChoiceDialog(self, "Select Transition to remove:", "Remove transition", transitions, wx.OK|wx.CANCEL)
+                if dialog.ShowModal() == wx.ID_OK: 
                     selected = dialog.GetStringSelection()
                     self.Controler.ProjectRemovePouTransition(pouname, selected)
                     self.RefreshProjectTree()
@@ -1371,7 +1346,7 @@
             pouname = self.ProjectTree.GetItemText(selected)
             if self.Controler.GetPouBodyType(pouname) == "SFC":
                 dialog = PouActionDialog(self)
-                if dialog.ShowModal() == wxID_OK:
+                if dialog.ShowModal() == wx.ID_OK:
                     values = dialog.GetValues()
                     self.Controler.ProjectAddPouAction(pouname, values["actionName"], values["language"])
                     self.RefreshProjectTree()
@@ -1384,8 +1359,8 @@
             pouname = self.ProjectTree.GetItemText(selected)
             if self.Controler.GetPouBodyType(pouname) == "SFC":
                 actions = self.Controler.GetPouActions(pouname)
-                dialog = wxSingleChoiceDialog(self, "Select Action to remove:", "Remove action", actions, wxOK|wxCANCEL)
-                if dialog.ShowModal() == wxID_OK: 
+                dialog = wx.SingleChoiceDialog(self, "Select Action to remove:", "Remove action", actions, wx.OK|wx.CANCEL)
+                if dialog.ShowModal() == wx.ID_OK: 
                     selected = dialog.GetStringSelection()
                     self.Controler.ProjectRemovePouAction(pouname, selected)
                     self.RefreshProjectTree()
@@ -1396,8 +1371,8 @@
         selected = self.ProjectTree.GetSelection()
         if self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION:
             config_name = self.ProjectTree.GetItemText(selected)
-            dialog = wxTextEntryDialog(self, "Enter Resource name:", "Create new Resource", "", wxOK|wxCANCEL)
-            if dialog.ShowModal() == wxID_OK:
+            dialog = wx.TextEntryDialog(self, "Enter Resource name:", "Create new Resource", "", wx.OK|wx.CANCEL)
+            if dialog.ShowModal() == wx.ID_OK:
                 value = dialog.GetValue()
                 self.Controler.ProjectAddConfigurationResource(config_name, value)
                 self.RefreshProjectTree()
@@ -1413,8 +1388,8 @@
             for config in infos["configs"]:
                 if config["name"] == config_name:
                     resources = config["resources"]
-            dialog = wxSingleChoiceDialog(self, "Select Resource to remove:", "Remove resource", resources, wxOK|wxCANCEL)
-            if dialog.ShowModal() == wxID_OK:
+            dialog = wx.SingleChoiceDialog(self, "Select Resource to remove:", "Remove resource", resources, wx.OK|wx.CANCEL)
+            if dialog.ShowModal() == wx.ID_OK:
                 resource = dialog.GetStringSelection()
                 self.Controler.ProjectRemoveConfigurationResource(config_name, resource)
                 self.RefreshProjectTree()
@@ -1424,7 +1399,7 @@
     def OnPLCOpenMenu(self, event):
         result = OpenPDFDoc()
         if type(result) == StringType:
-            message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, result, "ERROR", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         event.Skip()
@@ -1439,108 +1414,127 @@
 #                            Create Project Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_PROJECTDIALOG, wxID_PROJECTDIALOGMAINPANEL, 
- wxID_PROJECTDIALOGPROJECTNAME, wxID_PROJECTDIALOGCOMPANYNAME, 
- wxID_PROJECTDIALOGCOMPANYURL, wxID_PROJECTDIALOGPRODUCTNAME, 
- wxID_PROJECTDIALOGPRODUCTVERSION, wxID_PROJECTDIALOGPRODUCTRELEASE, 
- wxID_PROJECTDIALOGCONTENTDESCRIPTION, wxID_PROJECTDIALOGSTATICTEXT1,
- wxID_PROJECTDIALOGSTATICTEXT2, wxID_PROJECTDIALOGSTATICTEXT3, 
- wxID_PROJECTDIALOGSTATICTEXT4, wxID_PROJECTDIALOGSTATICTEXT5, 
- wxID_PROJECTDIALOGSTATICTEXT6, wxID_PROJECTDIALOGSTATICTEXT7, 
-] = [wx.NewId() for _init_ctrls in range(16)]
+[ID_PROJECTDIALOG, ID_PROJECTDIALOGPROJECTNAME, 
+ ID_PROJECTDIALOGCOMPANYNAME, ID_PROJECTDIALOGCOMPANYURL, 
+ ID_PROJECTDIALOGPRODUCTNAME, ID_PROJECTDIALOGPRODUCTVERSION, 
+ ID_PROJECTDIALOGPRODUCTRELEASE, ID_PROJECTDIALOGCONTENTDESCRIPTION, 
+ ID_PROJECTDIALOGSTATICTEXT1, ID_PROJECTDIALOGSTATICTEXT2, 
+ ID_PROJECTDIALOGSTATICTEXT3, ID_PROJECTDIALOGSTATICTEXT4, 
+ ID_PROJECTDIALOGSTATICTEXT5, ID_PROJECTDIALOGSTATICTEXT6, 
+ ID_PROJECTDIALOGSTATICTEXT7, 
+] = [wx.NewId() for _init_ctrls in range(15)]
         
 class ProjectDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
-
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ProjectName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.CompanyName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.CompanyURL, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ProductName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ProductVersion, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText6, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ProductRelease, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText7, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ContentDescription, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_MainSizer_Growables(self, parent):
+        parent.AddGrowableCol(1)
+        parent.AddGrowableRow(6)
+        
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=7, vgap=15)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_MainSizer_Growables(self.MainSizer)
 
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_PROJECTDIALOG,
+        wx.Dialog.__init__(self, id=ID_PROJECTDIALOG,
               name='ProjectDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(550, 450), style=wx.DEFAULT_DIALOG_STYLE,
               title='Create a new project')
         self.SetClientSize(wx.Size(550, 450))
 
-        self.MainPanel = wx.Panel(id=wxID_PROJECTDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(450, 400), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT1,
-              label='Project Name (required):', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(215, 17), style=0)
-
-        self.ProjectName = wx.TextCtrl(id=wxID_PROJECTDIALOGPROJECTNAME,
-              name='ProjectName', parent=self.MainPanel, pos=wx.Point(224, 24), 
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText2 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT2,
-              label='Company Name (required):', name='staticText2', parent=self.MainPanel,
-              pos=wx.Point(24, 64), size=wx.Size(215, 17), style=0)
-
-        self.CompanyName = wx.TextCtrl(id=wxID_PROJECTDIALOGCOMPANYNAME,
-              name='CompanyName', parent=self.MainPanel, pos=wx.Point(224, 64),
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText3 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT3,
-              label='Company URL (optional):', name='staticText3', parent=self.MainPanel,
-              pos=wx.Point(24, 104), size=wx.Size(215, 17), style=0)
-
-        self.CompanyURL = wx.TextCtrl(id=wxID_PROJECTDIALOGCOMPANYURL,
-              name='CompanyURL', parent=self.MainPanel, pos=wx.Point(224, 104),
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText4 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT4,
-              label='Product Name (required):', name='staticText4', parent=self.MainPanel,
-              pos=wx.Point(24, 144), size=wx.Size(215, 17), style=0)
-
-        self.ProductName = wx.TextCtrl(id=wxID_PROJECTDIALOGPRODUCTNAME,
-              name='ProductName', parent=self.MainPanel, pos=wx.Point(224, 144),
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText5 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT5,
-              label='Product Version (required):', name='staticText5', parent=self.MainPanel,
-              pos=wx.Point(24, 184), size=wx.Size(215, 17), style=0)
-
-        self.ProductVersion = wx.TextCtrl(id=wxID_PROJECTDIALOGPRODUCTVERSION,
-              name='ProductVersion', parent=self.MainPanel, pos=wx.Point(224, 184),
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText6 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT6,
-              label='Product Release (optional):', name='staticText6', parent=self.MainPanel,
-              pos=wx.Point(24, 224), size=wx.Size(215, 17), style=0)
-
-        self.ProductRelease = wx.TextCtrl(id=wxID_PROJECTDIALOGPRODUCTRELEASE,
-              name='ProductRelease', parent=self.MainPanel, pos=wx.Point(224, 224),
-              size=wx.Size(295, 24), style=0)
-
-        self.staticText7 = wx.StaticText(id=wxID_PROJECTDIALOGSTATICTEXT7,
-              label='Content Description (optional):', name='staticText7', parent=self.MainPanel,
-              pos=wx.Point(24, 264), size=wx.Size(215, 17), style=0)
-
-        self.ContentDescription = wx.TextCtrl(id=wxID_PROJECTDIALOGCONTENTDESCRIPTION,
-              name='ProductRelease', parent=self.MainPanel, pos=wx.Point(224, 264),
-              size=wx.Size(295, 120), style=wxTE_MULTILINE)
-
+        self.staticText1 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT1,
+              label='Project Name (required):', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.ProjectName = wx.TextCtrl(id=ID_PROJECTDIALOGPROJECTNAME,
+              name='ProjectName', parent=self, pos=wx.Point(0, 0), 
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText2 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT2,
+              label='Company Name (required):', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.CompanyName = wx.TextCtrl(id=ID_PROJECTDIALOGCOMPANYNAME,
+              name='CompanyName', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText3 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT3,
+              label='Company URL (optional):', name='staticText3', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.CompanyURL = wx.TextCtrl(id=ID_PROJECTDIALOGCOMPANYURL,
+              name='CompanyURL', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText4 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT4,
+              label='Product Name (required):', name='staticText4', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.ProductName = wx.TextCtrl(id=ID_PROJECTDIALOGPRODUCTNAME,
+              name='ProductName', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText5 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT5,
+              label='Product Version (required):', name='staticText5', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.ProductVersion = wx.TextCtrl(id=ID_PROJECTDIALOGPRODUCTVERSION,
+              name='ProductVersion', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText6 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT6,
+              label='Product Release (optional):', name='staticText6', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.ProductRelease = wx.TextCtrl(id=ID_PROJECTDIALOGPRODUCTRELEASE,
+              name='ProductRelease', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText7 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT7,
+              label='Content Description (optional):', name='staticText7', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(200, 17), style=0)
+
+        self.ContentDescription = wx.TextCtrl(id=ID_PROJECTDIALOGCONTENTDESCRIPTION,
+              name='ProductRelease', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 120), style=wx.TE_MULTILINE)
+
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+        
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
-        
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
-    
+        
     def OnOK(self, event):
         error = []
         if self.ProjectName.GetValue() == "":
@@ -1560,11 +1554,11 @@
                     text += " and %s"%item
                 else:
                     text += ", %s"%item 
-            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def SetValues(self, values):
         for item, value in values.items():
@@ -1601,69 +1595,81 @@
 #                            Create Pou Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_POUDIALOG, wxID_POUDIALOGMAINPANEL, wxID_POUDIALOGPOUNAME, 
- wxID_POUDIALOGPOUTYPE, wxID_POUDIALOGLANGUAGE, wxID_POUDIALOGSTATICTEXT1,
- wxID_POUDIALOGSTATICTEXT2, wxID_POUDIALOGSTATICTEXT3, 
-] = [wx.NewId() for _init_ctrls in range(8)]
+[ID_POUDIALOG, ID_POUDIALOGPOUNAME, 
+ ID_POUDIALOGPOUTYPE, ID_POUDIALOGLANGUAGE, ID_POUDIALOGSTATICTEXT1,
+ ID_POUDIALOGSTATICTEXT2, ID_POUDIALOGSTATICTEXT3, 
+] = [wx.NewId() for _init_ctrls in range(7)]
 
 class PouDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
-
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.PouName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.PouType, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_MainSizer_Growables(self, parent):
+        parent.AddGrowableCol(1)
+        
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=3, vgap=15)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_MainSizer_Growables(self.MainSizer)
 
         self.SetSizer(self.flexGridSizer1)
-
+        
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_POUDIALOG,
+        wx.Dialog.__init__(self, id=ID_POUDIALOG,
               name='PouDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(300, 200), style=wx.DEFAULT_DIALOG_STYLE,
               title='Create a new POU')
         self.SetClientSize(wx.Size(300, 200))
 
-        self.MainPanel = wx.Panel(id=wxID_POUDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(300, 200), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_POUDIALOGSTATICTEXT1,
-              label='POU Name:', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(95, 17), style=0)
-
-        self.PouName = wx.TextCtrl(id=wxID_POUDIALOGPOUNAME,
-              name='POUName', parent=self.MainPanel, pos=wx.Point(104, 24), 
-              size=wx.Size(150, 24), style=0)
-
-        self.staticText2 = wx.StaticText(id=wxID_POUDIALOGSTATICTEXT2,
-              label='POU Type:', name='staticText2', parent=self.MainPanel,
-              pos=wx.Point(24, 64), size=wx.Size(95, 17), style=0)
-
-        self.PouType = wx.Choice(id=wxID_POUDIALOGPOUTYPE,
-              name='POUType', parent=self.MainPanel, pos=wx.Point(104, 64),
-              size=wx.Size(150, 24), style=0)
-        EVT_CHOICE(self, wxID_POUDIALOGPOUTYPE, self.OnTypeChanged)
-
-        self.staticText3 = wx.StaticText(id=wxID_POUDIALOGSTATICTEXT3,
-              label='Language:', name='staticText3', parent=self.MainPanel,
-              pos=wx.Point(24, 104), size=wx.Size(95, 17), style=0)
-
-        self.Language = wx.Choice(id=wxID_POUDIALOGLANGUAGE,
-              name='Language', parent=self.MainPanel, pos=wx.Point(104, 104),
-              size=wx.Size(150, 24), style=0)
-
+        self.staticText1 = wx.StaticText(id=ID_POUDIALOGSTATICTEXT1,
+              label='POU Name:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
+
+        self.PouName = wx.TextCtrl(id=ID_POUDIALOGPOUNAME,
+              name='POUName', parent=self, pos=wx.Point(0, 0), 
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText2 = wx.StaticText(id=ID_POUDIALOGSTATICTEXT2,
+              label='POU Type:', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
+
+        self.PouType = wx.Choice(id=ID_POUDIALOGPOUTYPE,
+              name='POUType', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+        self.Bind(wx.EVT_CHOICE, self.OnTypeChanged, id=ID_POUDIALOGPOUTYPE)
+
+        self.staticText3 = wx.StaticText(id=ID_POUDIALOGSTATICTEXT3,
+              label='Language:', name='staticText3', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
+
+        self.Language = wx.Choice(id=ID_POUDIALOGLANGUAGE,
+              name='Language', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+        
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+            
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
         
         for option in ["function","functionBlock","program"]:
             self.PouType.Append(option)
@@ -1671,8 +1677,6 @@
 
         self.PouNames = []
 
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
-    
     def OnOK(self, event):
         error = []
         pou_name = self.PouName.GetValue()
@@ -1691,31 +1695,31 @@
                     text += " and %s"%item
                 else:
                     text += ", %s"%item 
-            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif not TestIdentifier(pou_name):
-            message = wxMessageDialog(self, "\"%s\" is not a valid identifier!"%pou_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%pou_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif pou_name.upper() in IEC_KEYWORDS:
-            message = wxMessageDialog(self, "\"%s\" is a keyword. It can't be used!"%pou_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%pou_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         elif pou_name.upper() in self.PouNames:
-            message = wxMessageDialog(self, "\"%s\" pou already exists!"%pou_name, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "\"%s\" pou already exists!"%pou_name, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def RefreshLanguage(self):
         selection = self.Language.GetStringSelection()
         self.Language.Clear()
         for option in ["IL","ST","LD","FBD","SFC"]:
-            if option != "SFC" or self.PouType.GetStringSelection() == "program":
+            if option != "SFC" or self.PouType.GetStringSelection() != "function":
                 self.Language.Append(option)
-        if self.Language.FindString(selection) != wxNOT_FOUND:
+        if self.Language.FindString(selection) != wx.NOT_FOUND:
             self.Language.SetStringSelection(selection)
 
     def OnTypeChanged(self, event):
@@ -1746,66 +1750,74 @@
 #                          Create Pou Transition Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_POUTRANSITIONDIALOG, wxID_POUTRANSITIONDIALOGMAINPANEL, 
- wxID_POUTRANSITIONDIALOGTRANSITIONNAME, wxID_POUTRANSITIONDIALOGLANGUAGE, 
- wxID_POUTRANSITIONDIALOGSTATICTEXT1, wxID_POUTRANSITIONDIALOGSTATICTEXT2,
-] = [wx.NewId() for _init_ctrls in range(6)]
+[ID_POUTRANSITIONDIALOG, ID_POUTRANSITIONDIALOGTRANSITIONNAME, 
+ ID_POUTRANSITIONDIALOGLANGUAGE, ID_POUTRANSITIONDIALOGSTATICTEXT1, 
+ ID_POUTRANSITIONDIALOGSTATICTEXT2,
+] = [wx.NewId() for _init_ctrls in range(5)]
 
 class PouTransitionDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
-
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.TransitionName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_MainSizer_Growables(self, parent):
+        parent.AddGrowableCol(1)
+        
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=2, vgap=15)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_MainSizer_Growables(self.MainSizer)
 
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_POUTRANSITIONDIALOG,
+        wx.Dialog.__init__(self, id=ID_POUTRANSITIONDIALOG,
               name='PouTransitionDialog', parent=prnt, pos=wx.Point(376, 223),
               size=wx.Size(350, 200), style=wx.DEFAULT_DIALOG_STYLE,
               title='Create a new transition')
         self.SetClientSize(wx.Size(350, 160))
 
-        self.MainPanel = wx.Panel(id=wxID_POUTRANSITIONDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(350, 200), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_POUTRANSITIONDIALOGSTATICTEXT1,
-              label='Transition Name:', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(145, 17), style=0)
-
-        self.TransitionName = wx.TextCtrl(id=wxID_POUTRANSITIONDIALOGTRANSITIONNAME,
-              name='TransitionName', parent=self.MainPanel, pos=wx.Point(154, 24),
-              size=wx.Size(150, 24), style=0)
-
-        self.staticText2 = wx.StaticText(id=wxID_POUTRANSITIONDIALOGSTATICTEXT2,
-              label='Language:', name='staticText2', parent=self.MainPanel,
-              pos=wx.Point(24, 64), size=wx.Size(145, 17), style=0)
-
-        self.Language = wx.Choice(id=wxID_POUTRANSITIONDIALOGLANGUAGE,
-              name='Language', parent=self.MainPanel, pos=wx.Point(154, 64),
-              size=wx.Size(150, 24), style=0)
-
+        self.staticText1 = wx.StaticText(id=ID_POUTRANSITIONDIALOGSTATICTEXT1,
+              label='Transition Name:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(120, 17), style=0)
+
+        self.TransitionName = wx.TextCtrl(id=ID_POUTRANSITIONDIALOGTRANSITIONNAME,
+              name='TransitionName', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText2 = wx.StaticText(id=ID_POUTRANSITIONDIALOGSTATICTEXT2,
+              label='Language:', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(120, 17), style=0)
+
+        self.Language = wx.Choice(id=ID_POUTRANSITIONDIALOGLANGUAGE,
+              name='Language', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+        
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+        
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
         
         for option in ["IL","ST","LD","FBD"]:
             self.Language.Append(option)
         
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
-    
     def OnOK(self, event):
         error = []
         if self.TransitionName.GetValue() == "":
@@ -1821,11 +1833,11 @@
                     text += " and %s"%item
                 else:
                     text += ", %s"%item 
-            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def SetValues(self, values):
         for item, value in values.items():
@@ -1844,66 +1856,74 @@
 #                          Create Pou Action Dialog
 #-------------------------------------------------------------------------------
 
-[wxID_POUACTIONDIALOG, wxID_POUACTIONDIALOGMAINPANEL, 
- wxID_POUACTIONDIALOGACTIONNAME, wxID_POUACTIONDIALOGLANGUAGE, 
- wxID_POUACTIONDIALOGSTATICTEXT1, wxID_POUACTIONDIALOGSTATICTEXT2, 
-] = [wx.NewId() for _init_ctrls in range(6)]
+[ID_POUACTIONDIALOG, ID_POUACTIONDIALOGACTIONNAME, 
+ ID_POUACTIONDIALOGLANGUAGE, ID_POUACTIONDIALOGSTATICTEXT1, 
+ ID_POUACTIONDIALOGSTATICTEXT2, 
+] = [wx.NewId() for _init_ctrls in range(5)]
 
 class PouActionDialog(wx.Dialog):
     def _init_coll_flexGridSizer1_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
-
+        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
+        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
+        
+    def _init_coll_flexGridSizer1_Growables(self, parent):
+        parent.AddGrowableCol(0)
+        parent.AddGrowableRow(0)
+    
+    def _init_coll_MainSizer_Items(self, parent):
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.ActionName, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
+        
+    def _init_coll_MainSizer_Growables(self, parent):
+        parent.AddGrowableCol(1)
+        
     def _init_sizers(self):
-        # generated method, don't edit
-        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
+        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
+        self.MainSizer = wx.FlexGridSizer(cols=2, hgap=0, rows=2, vgap=15)
 
         self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
+        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
+        self._init_coll_MainSizer_Items(self.MainSizer)
+        self._init_coll_MainSizer_Growables(self.MainSizer)
 
         self.SetSizer(self.flexGridSizer1)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Dialog.__init__(self, id=wxID_POUACTIONDIALOG,
+        wx.Dialog.__init__(self, id=ID_POUACTIONDIALOG,
               name='PouActionDialog', parent=prnt, pos=wx.Point(376, 223),
-              size=wx.Size(320, 200), style=wx.DEFAULT_DIALOG_STYLE,
+              size=wx.Size(320, 200), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
               title='Create a new action')
         self.SetClientSize(wx.Size(320, 160))
 
-        self.MainPanel = wx.Panel(id=wxID_POUACTIONDIALOGMAINPANEL,
-              name='MainPanel', parent=self, pos=wx.Point(0, 0),
-              size=wx.Size(350, 200), style=wx.TAB_TRAVERSAL)
-        self.MainPanel.SetAutoLayout(True)
-
-        self.staticText1 = wx.StaticText(id=wxID_POUACTIONDIALOGSTATICTEXT1,
-              label='Action Name:', name='staticText1', parent=self.MainPanel,
-              pos=wx.Point(24, 24), size=wx.Size(145, 17), style=0)
-
-        self.ActionName = wx.TextCtrl(id=wxID_POUACTIONDIALOGACTIONNAME,
-              name='ActionName', parent=self.MainPanel, pos=wx.Point(124, 24),
-              size=wx.Size(150, 24), style=0)
-
-        self.staticText3 = wx.StaticText(id=wxID_POUACTIONDIALOGSTATICTEXT2,
-              label='Language:', name='staticText2', parent=self.MainPanel,
-              pos=wx.Point(24, 64), size=wx.Size(145, 17), style=0)
-
-        self.Language = wx.Choice(id=wxID_POUACTIONDIALOGLANGUAGE,
-              name='Language', parent=self.MainPanel, pos=wx.Point(124, 64),
-              size=wx.Size(150, 24), style=0)
-
+        self.staticText1 = wx.StaticText(id=ID_POUACTIONDIALOGSTATICTEXT1,
+              label='Action Name:', name='staticText1', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
+
+        self.ActionName = wx.TextCtrl(id=ID_POUACTIONDIALOGACTIONNAME,
+              name='ActionName', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+
+        self.staticText2 = wx.StaticText(id=ID_POUACTIONDIALOGSTATICTEXT2,
+              label='Language:', name='staticText2', parent=self,
+              pos=wx.Point(0, 0), size=wx.Size(100, 17), style=0)
+
+        self.Language = wx.Choice(id=ID_POUACTIONDIALOGLANGUAGE,
+              name='Language', parent=self, pos=wx.Point(0, 0),
+              size=wx.Size(0, 24), style=0)
+        
+        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
+        
         self._init_sizers()
 
     def __init__(self, parent):
         self._init_ctrls(parent)
-        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
         
         for option in ["IL","ST","LD","FBD"]:
             self.Language.Append(option)
         
-        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
-    
     def OnOK(self, event):
         error = []
         if self.ActionName.GetValue() == "":
@@ -1919,11 +1939,11 @@
                     text += " and %s"%item
                 else:
                     text += ", %s"%item 
-            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
         else:
-            self.EndModal(wxID_OK)
+            self.EndModal(wx.ID_OK)
 
     def SetValues(self, values):
         for item, value in values.items():
@@ -1942,14 +1962,14 @@
 #                            Pou Interface Dialog
 #-------------------------------------------------------------------------------
 
-class VariableTable(wxPyGridTableBase):
+class VariableTable(wx.grid.PyGridTableBase):
     
     """
-    A custom wxGrid Table using user supplied data
+    A custom wx.grid.Grid Table using user supplied data
     """
     def __init__(self, parent, data, colnames):
         # The base class must be initialized *first*
-        wxPyGridTableBase.__init__(self)
+        wx.grid.PyGridTableBase.__init__(self)
         self.data = data
         self.old_value = None
         self.colnames = colnames
@@ -1995,19 +2015,19 @@
     
     def ResetView(self, grid):
         """
-        (wxGrid) -> Reset the grid view.   Call this to
+        (wx.grid.Grid) -> Reset the grid view.   Call this to
         update the grid if rows and columns have been added or deleted
         """
         grid.BeginBatch()
         for current, new, delmsg, addmsg in [
-            (self._rows, self.GetNumberRows(), wxGRIDTABLE_NOTIFY_ROWS_DELETED, wxGRIDTABLE_NOTIFY_ROWS_APPENDED),
-            (self._cols, self.GetNumberCols(), wxGRIDTABLE_NOTIFY_COLS_DELETED, wxGRIDTABLE_NOTIFY_COLS_APPENDED),
+            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
+            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
         ]:
             if new < current:
-                msg = wxGridTableMessage(self,delmsg,new,current-new)
+                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
                 grid.ProcessTableMessage(msg)
             elif new > current:
-                msg = wxGridTableMessage(self,addmsg,new-current)
+                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
                 grid.ProcessTableMessage(msg)
                 self.UpdateValues(grid)
         grid.EndBatch()
@@ -2024,20 +2044,20 @@
     def UpdateValues(self, grid):
         """Update all displayed values"""
         # This sends an event to the grid table to update all of the values
-        msg = wxGridTableMessage(self, wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
+        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
         grid.ProcessTableMessage(msg)
 
     def _updateColAttrs(self, grid):
         """
-        wxGrid -> update the column attributes to add the
+        wx.grid.Grid -> update the column attributes to add the
         appropriate renderer given the column name.
 
         Otherwise default to the default renderer.
         """
         
         for col in range(self.GetNumberCols()):
-            attr = wxGridCellAttr()
-            attr.SetAlignment(self.Parent.ColAlignements[col], wxALIGN_CENTRE)
+            attr = wx.grid.GridCellAttr()
+            attr.SetAlignment(self.Parent.ColAlignements[col], wx.ALIGN_CENTRE)
             grid.SetColAttr(col, attr)
             grid.SetColSize(col, self.Parent.ColSizes[col])
         
@@ -2055,16 +2075,16 @@
                     if self.Parent.PouIsUsed and self.GetValueByName(row, "Class") in ["Input", "Output", "InOut"]:
                         grid.SetReadOnly(row, col, True)
                     else:
-                        editor = wxGridCellTextEditor()
-                        renderer = wxGridCellStringRenderer()
+                        editor = wx.grid.GridCellTextEditor()
+                        renderer = wx.grid.GridCellStringRenderer()
                 elif colname in ["Initial Value","Location"]:
-                    editor = wxGridCellTextEditor()
-                    renderer = wxGridCellStringRenderer()
+                    editor = wx.grid.GridCellTextEditor()
+                    renderer = wx.grid.GridCellStringRenderer()
                 elif colname == "Class":
                     if len(self.Parent.ClassList) == 1 or self.Parent.PouIsUsed and self.GetValueByName(row, "Class") in ["Input", "Output", "InOut"]:
                         grid.SetReadOnly(row, col, True)
                     else:
-                        editor = wxGridCellChoiceEditor()
+                        editor = wx.grid.GridCellChoiceEditor()
                         excluded = []
                         if self.Parent.PouIsUsed:
                             excluded.extend(["Input","Output","InOut"])    
@@ -2073,16 +2093,16 @@
                     if self.Parent.PouIsUsed and self.GetValueByName(row, "Class") in ["Input", "Output", "InOut"]:
                         grid.SetReadOnly(row, col, True)
                     else:
-                        editor = wxGridCellChoiceEditor()
+                        editor = wx.grid.GridCellChoiceEditor()
                         editor.SetParameters(self.Parent.TypeList)
                 elif colname in ["Retain", "Constant"]:
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.OptionList)
                     
                 grid.SetCellEditor(row, col, editor)
                 grid.SetCellRenderer(row, col, renderer)
                 
-                grid.SetCellBackgroundColour(row, col, wxWHITE)
+                grid.SetCellBackgroundColour(row, col, wx.WHITE)
     
     def SetData(self, data):
         self.data = data
@@ -2118,7 +2138,7 @@
     def OnDropText(self, x, y, data):
         col = self.Parent.VariablesGrid.XToCol(x)
         row = self.Parent.VariablesGrid.YToRow(y)
-        if col != wxNOT_FOUND and row != wxNOT_FOUND:
+        if col != wx.NOT_FOUND and row != wx.NOT_FOUND:
             if self.Parent.Table.GetColLabelValue(col) != "Location":
                 return
             try:
@@ -2126,8 +2146,8 @@
             except:
                 values = None
             if values and values[1] == "location":
-                dialog = wxSingleChoiceDialog(self.Parent, "Select a variable class:", "Variable class", ["Input", "Output", "Memory"], wxOK|wxCANCEL)
-                if dialog.ShowModal() == wxID_OK:
+                dialog = wx.SingleChoiceDialog(self.Parent, "Select a variable class:", "Variable class", ["Input", "Output", "Memory"], wx.OK|wx.CANCEL)
+                if dialog.ShowModal() == wx.ID_OK:
                     selected = dialog.GetSelection()
                     if selected == 0:
                         location = "%I" + values[0]
@@ -2140,71 +2160,53 @@
                     self.Parent.SaveValues()
                 dialog.Destroy()    
 
-[wxID_POUEDITORPANEL, wxID_POUEDITORPANELVIEWER, 
- wxID_POUEDITORPANELVARIABLESGRID, wxID_POUEDITORPANELRETURNTYPE, 
- wxID_POUEDITORPANELCLASSFILTER, wxID_POUEDITORPANELADDBUTTON,
- wxID_POUEDITORPANELDELETEBUTTON, wxID_POUEDITORPANELUPBUTTON, 
- wxID_POUEDITORPANELDOWNBUTTON, wxID_POUEDITORPANELSTATICTEXT1, 
- wxID_POUEDITORPANELSTATICTEXT2, wxID_POUEDITORPANELSTATICTEXT3,
+[ID_POUEDITORPANEL, ID_POUEDITORPANELVIEWER, 
+ ID_POUEDITORPANELVARIABLESGRID, ID_POUEDITORPANELRETURNTYPE, 
+ ID_POUEDITORPANELCLASSFILTER, ID_POUEDITORPANELADDBUTTON,
+ ID_POUEDITORPANELDELETEBUTTON, ID_POUEDITORPANELUPBUTTON, 
+ ID_POUEDITORPANELDOWNBUTTON, ID_POUEDITORPANELSTATICTEXT1, 
+ ID_POUEDITORPANELSTATICTEXT2, ID_POUEDITORPANELSTATICTEXT3,
 ] = [wx.NewId() for _init_ctrls in range(12)]
 
 class PouEditorPanel(wx.Panel):
     def _init_coll_MainPanelSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.Viewer, 0, border=0, flag=wxGROW)
-        parent.AddSizer(self.VariablePanelSizer, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.Viewer, 0, border=0, flag=wx.GROW)
+        parent.AddSizer(self.VariablePanelSizer, 0, border=0, flag=wx.GROW)
 
     def _init_coll_MainPanelSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_VariablePanelSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.VariablesGrid, 0, border=0, flag=wxGROW)
-        parent.AddSizer(self.ControlPanelSizer, 0, border=0, flag=wxGROW)
+        parent.AddWindow(self.VariablesGrid, 0, border=0, flag=wx.GROW)
+        parent.AddSizer(self.ControlPanelSizer, 0, border=0, flag=wx.GROW)
     
     def _init_coll_VariablePanelSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
     
     def _init_coll_ControlPanelSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.ChoicePanelSizer, 0, border=0, flag=wxGROW)
-        parent.AddSizer(self.ButtonPanelSizer, 0, border=0, flag=wxALIGN_CENTER)
+        parent.AddSizer(self.ChoicePanelSizer, 0, border=0, flag=wx.GROW)
+        parent.AddSizer(self.ButtonPanelSizer, 0, border=0, flag=wx.ALIGN_CENTER)
 
     def _init_coll_ControlPanelSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
         parent.AddGrowableRow(1)
 
     def _init_coll_ChoicePanelSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxALIGN_BOTTOM)
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.ALIGN_BOTTOM)
         parent.AddWindow(self.ReturnType, 0, border=0, flag=0)
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxALIGN_BOTTOM)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.ALIGN_BOTTOM)
         parent.AddWindow(self.ClassFilter, 0, border=0, flag=0)
 
     def _init_coll_ButtonPanelSizer_Items(self, parent):
-        # generated method, don't edit
-
         parent.AddWindow(self.UpButton, 0, border=0, flag=0)
         parent.AddWindow(self.AddButton, 0, border=0, flag=0)
         parent.AddWindow(self.DownButton, 0, border=0, flag=0)
         parent.AddWindow(self.DeleteButton, 0, border=0, flag=0)
         
     def _init_coll_ButtonPanelSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableCol(1)
         parent.AddGrowableCol(2)
@@ -2212,15 +2214,10 @@
         parent.AddGrowableRow(0)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.MainPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
-        
         self.VariablePanelSizer = wx.FlexGridSizer(cols=2, hgap=10, rows=1, vgap=0)
-        
         self.ControlPanelSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
-        
         self.ChoicePanelSizer = wx.GridSizer(cols=1, hgap=5, rows=4, vgap=5)
-        
         self.ButtonPanelSizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=0)
         
         self._init_coll_MainPanelSizer_Items(self.MainPanelSizer)
@@ -2236,13 +2233,12 @@
         self.SetSizer(self.MainPanelSizer)
 
     def _init_ctrls(self, prnt, element_type):
-        # generated method, don't edit
-        wx.Panel.__init__(self, id=wxID_POUEDITORPANEL,
+        wx.Panel.__init__(self, id=ID_POUEDITORPANEL,
               name='EditVariablePanel', parent=prnt, pos=wx.Point(0, 0),
               size=wx.Size(-1, -1), style=0)
         
         if element_type == "config":
-            self.Viewer = wx.Panel(id=wxID_POUEDITORPANELVIEWER,
+            self.Viewer = wx.Panel(id=ID_POUEDITORPANELVIEWER,
               name='ConfigPanel', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL)
             self.Viewer.ResetBuffer = lambda: None
@@ -2263,26 +2259,26 @@
             else:
                 self.Viewer.SetKeywords(ST_KEYWORDS)
         
-        self.staticText1 = wx.StaticText(id=wxID_POUEDITORPANELSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_POUEDITORPANELSTATICTEXT1,
               label='Return Type:', name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
 
-        self.ReturnType = wx.Choice(id=wxID_POUEDITORPANELRETURNTYPE,
+        self.ReturnType = wx.Choice(id=ID_POUEDITORPANELRETURNTYPE,
               name='ReturnType', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(145, 24), style=0)
 
-        self.staticText2 = wx.StaticText(id=wxID_POUEDITORPANELSTATICTEXT2,
+        self.staticText2 = wx.StaticText(id=ID_POUEDITORPANELSTATICTEXT2,
               label='Class Filter:', name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.Size(95, 17), style=0)
 
-        self.ClassFilter = wx.Choice(id=wxID_POUEDITORPANELCLASSFILTER,
+        self.ClassFilter = wx.Choice(id=ID_POUEDITORPANELCLASSFILTER,
               name='ClassFilter', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(145, 24), style=0)
-        EVT_CHOICE(self, wxID_POUEDITORPANELCLASSFILTER, self.OnClassFilter)
-
-        self.VariablesGrid = wx.grid.Grid(id=wxID_POUEDITORPANELVARIABLESGRID,
+        self.Bind(wx.EVT_CHOICE, self.OnClassFilter, id=ID_POUEDITORPANELCLASSFILTER)
+
+        self.VariablesGrid = wx.grid.Grid(id=ID_POUEDITORPANELVARIABLESGRID,
               name='VariablesGrid', parent=self, pos=wx.Point(0, 0), 
-              size=wx.Size(0, 150), style=wxVSCROLL)
+              size=wx.Size(0, 150), style=wx.VSCROLL)
         self.VariablesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
               'Sans'))
         self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
@@ -2293,25 +2289,25 @@
         
         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
         
-        self.AddButton = wx.Button(id=wxID_POUEDITORPANELADDBUTTON, label='Add',
+        self.AddButton = wx.Button(id=ID_POUEDITORPANELADDBUTTON, label='Add',
               name='AddButton', parent=self, pos=wx.Point(345, 340),
               size=wx.Size(72, 32), style=0)
-        EVT_BUTTON(self, wxID_POUEDITORPANELADDBUTTON, self.OnAddButton)
-
-        self.DeleteButton = wx.Button(id=wxID_POUEDITORPANELDELETEBUTTON, label='Delete',
+        self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_POUEDITORPANELADDBUTTON)
+
+        self.DeleteButton = wx.Button(id=ID_POUEDITORPANELDELETEBUTTON, label='Delete',
               name='DeleteButton', parent=self, pos=wx.Point(425, 340),
               size=wx.Size(72, 32), style=0)
-        EVT_BUTTON(self, wxID_POUEDITORPANELDELETEBUTTON, self.OnDeleteButton)
-
-        self.UpButton = wx.Button(id=wxID_POUEDITORPANELUPBUTTON, label='^',
+        self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_POUEDITORPANELDELETEBUTTON)
+
+        self.UpButton = wx.Button(id=ID_POUEDITORPANELUPBUTTON, label='^',
               name='UpButton', parent=self, pos=wx.Point(505, 340),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_POUEDITORPANELUPBUTTON, self.OnUpButton)
-
-        self.DownButton = wx.Button(id=wxID_POUEDITORPANELDOWNBUTTON, label='v',
+        self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_POUEDITORPANELUPBUTTON)
+
+        self.DownButton = wx.Button(id=ID_POUEDITORPANELDOWNBUTTON, label='v',
               name='DownButton', parent=self, pos=wx.Point(545, 340),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_POUEDITORPANELDOWNBUTTON, self.OnDownButton)
+        self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_POUEDITORPANELDOWNBUTTON)
 
         self._init_sizers()
 
@@ -2360,12 +2356,12 @@
             else:
                 self.FilterChoices = ["All","Global","Access"]
             self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70]
-            self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
+            self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
         else:
             self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant"])
             self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
             self.ColSizes = [40, 120, 70, 80, 120, 60, 70]
-            self.ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
+            self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
         for choice in self.FilterChoices:
             self.ClassFilter.Append(choice)
         reverse_transfer = {}
@@ -2502,22 +2498,22 @@
         value = self.Table.GetValue(row, col)
         if colname == "Name":
             if not TestIdentifier(value):
-                message = wxMessageDialog(self, "\"%s\" is not a valid identifier!"%value, "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%value, "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
             elif value.upper() in IEC_KEYWORDS:
-                message = wxMessageDialog(self, "\"%s\" is a keyword. It can't be used!"%value, "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%value, "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
             elif value.upper() in self.PouNames:
-                message = wxMessageDialog(self, "A pou with \"%s\" as name exists!"%value, "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "A pou with \"%s\" as name exists!"%value, "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
             elif value.upper() in [var["Name"].upper() for var in self.Values if var != self.Table.data[row]]:
-                message = wxMessageDialog(self, "A variable with \"%s\" as name exists in this pou!"%value, "Error", wxOK|wxICON_ERROR)
+                message = wx.MessageDialog(self, "A variable with \"%s\" as name exists in this pou!"%value, "Error", wx.OK|wx.ICON_ERROR)
                 message.ShowModal()
                 message.Destroy()
                 event.Veto()
@@ -2541,14 +2537,14 @@
             var_name = self.Table.GetValueByName(row, "Name")
             var_class = self.Table.GetValueByName(row, "Class")
             var_type = self.Table.GetValueByName(row, "Type")
-            data = wxTextDataObject(str((var_name, var_class, var_type)))
-            dragSource = wxDropSource(self.VariablesGrid)
+            data = wx.TextDataObject(str((var_name, var_class, var_type)))
+            dragSource = wx.DropSource(self.VariablesGrid)
             dragSource.SetData(data)
             dragSource.DoDragDrop()
         event.Skip()
     
     def OnVariablesGridSelectCell(self, event):
-        wxCallAfter(self.RefreshButtons)
+        wx.CallAfter(self.RefreshButtons)
         event.Skip()
 
     def MoveValue(self, value_index, move):
@@ -2585,22 +2581,20 @@
             self.Parent.RefreshTitle()
             self.Parent.RefreshEditMenu()
 
-##[wxID_EDITVARIABLEDIALOG, wxID_EDITVARIABLEDIALOGMAINPANEL, 
-## wxID_EDITVARIABLEDIALOGVARIABLESGRID, wxID_EDITVARIABLEDIALOGRETURNTYPE, 
-## wxID_EDITVARIABLEDIALOGCLASSFILTER, wxID_EDITVARIABLEDIALOGADDBUTTON,
-## wxID_EDITVARIABLEDIALOGDELETEBUTTON, wxID_EDITVARIABLEDIALOGUPBUTTON, 
-## wxID_EDITVARIABLEDIALOGDOWNBUTTON, wxID_EDITVARIABLEDIALOGSTATICTEXT1, 
-## wxID_EDITVARIABLEDIALOGSTATICTEXT2, wxID_EDITVARIABLEDIALOGSTATICTEXT3,
+##[ID_EDITVARIABLEDIALOG, ID_EDITVARIABLEDIALOGMAINPANEL, 
+## ID_EDITVARIABLEDIALOGVARIABLESGRID, ID_EDITVARIABLEDIALOGRETURNTYPE, 
+## ID_EDITVARIABLEDIALOGCLASSFILTER, ID_EDITVARIABLEDIALOGADDBUTTON,
+## ID_EDITVARIABLEDIALOGDELETEBUTTON, ID_EDITVARIABLEDIALOGUPBUTTON, 
+## ID_EDITVARIABLEDIALOGDOWNBUTTON, ID_EDITVARIABLEDIALOGSTATICTEXT1, 
+## ID_EDITVARIABLEDIALOGSTATICTEXT2, ID_EDITVARIABLEDIALOGSTATICTEXT3,
 ##] = [wx.NewId() for _init_ctrls in range(12)]
 ##
 ##class EditVariableDialog(wx.Dialog):
 ##    def _init_coll_flexGridSizer1_Items(self, parent):
-##        # generated method, don't edit
-##
 ##        parent.AddWindow(self.MainPanel, 0, border=0, flag=0)
+##        parent.AddWindow(self.ButtonSizer, 0, border=0, flag=wx.ALIGN_RIGHT)
 ##
 ##    def _init_sizers(self):
-##        # generated method, don't edit
 ##        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0)
 ##
 ##        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
@@ -2608,42 +2602,41 @@
 ##        self.SetSizer(self.flexGridSizer1)
 ##
 ##    def _init_ctrls(self, prnt, name):
-##        # generated method, don't edit
-##        wx.Dialog.__init__(self, id=wxID_EDITVARIABLEDIALOG,
+##        wx.Dialog.__init__(self, id=ID_EDITVARIABLEDIALOG,
 ##              name='EditVariableDialog', parent=prnt, pos=wx.Point(376, 223),
 ##              size=wx.Size(600, 440), style=wx.DEFAULT_DIALOG_STYLE,
 ##              title='Edit variables of %s'%name)
 ##        self.SetClientSize(wx.Size(600, 440))
 ##
-##        self.MainPanel = wx.Panel(id=wxID_EDITVARIABLEDIALOGMAINPANEL,
+##        self.MainPanel = wx.Panel(id=ID_EDITVARIABLEDIALOGMAINPANEL,
 ##              name='MainPanel', parent=self, pos=wx.Point(0, 0),
 ##              size=wx.Size(600, 440), style=wx.TAB_TRAVERSAL)
 ##        self.MainPanel.SetAutoLayout(True)
 ##
-##        self.staticText1 = wx.StaticText(id=wxID_EDITVARIABLEDIALOGSTATICTEXT1,
+##        self.staticText1 = wx.StaticText(id=ID_EDITVARIABLEDIALOGSTATICTEXT1,
 ##              label='Return Type:', name='staticText1', parent=self.MainPanel,
 ##              pos=wx.Point(24, 29), size=wx.Size(95, 17), style=0)
 ##
-##        self.ReturnType = wx.Choice(id=wxID_EDITVARIABLEDIALOGRETURNTYPE,
+##        self.ReturnType = wx.Choice(id=ID_EDITVARIABLEDIALOGRETURNTYPE,
 ##              name='ReturnType', parent=self.MainPanel, pos=wx.Point(124, 24),
 ##              size=wx.Size(145, 24), style=0)
 ##
-##        self.staticText2 = wx.StaticText(id=wxID_EDITVARIABLEDIALOGSTATICTEXT2,
+##        self.staticText2 = wx.StaticText(id=ID_EDITVARIABLEDIALOGSTATICTEXT2,
 ##              label='Class Filter:', name='staticText2', parent=self.MainPanel,
 ##              pos=wx.Point(324, 29), size=wx.Size(95, 17), style=0)
 ##
-##        self.ClassFilter = wx.Choice(id=wxID_EDITVARIABLEDIALOGCLASSFILTER,
+##        self.ClassFilter = wx.Choice(id=ID_EDITVARIABLEDIALOGCLASSFILTER,
 ##              name='ClassFilter', parent=self.MainPanel, pos=wx.Point(424, 24),
 ##              size=wx.Size(145, 24), style=0)
-##        EVT_CHOICE(self, wxID_EDITVARIABLEDIALOGCLASSFILTER, self.OnClassFilter)
-##
-##        self.staticText3 = wx.StaticText(id=wxID_EDITVARIABLEDIALOGSTATICTEXT3,
+##        self.Bind(wx.EVT_CHOICE, self.OnClassFilter, id=ID_EDITVARIABLEDIALOGCLASSFILTER)
+##
+##        self.staticText3 = wx.StaticText(id=ID_EDITVARIABLEDIALOGSTATICTEXT3,
 ##              label='Variables:', name='staticText3', parent=self.MainPanel,
 ##              pos=wx.Point(24, 60), size=wx.Size(95, 17), style=0)
 ##
-##        self.VariablesGrid = wx.grid.Grid(id=wxID_EDITVARIABLEDIALOGVARIABLESGRID,
+##        self.VariablesGrid = wx.grid.Grid(id=ID_EDITVARIABLEDIALOGVARIABLESGRID,
 ##              name='VariablesGrid', parent=self.MainPanel, pos=wx.Point(24, 80), 
-##              size=wx.Size(550, 250), style=wxVSCROLL)
+##              size=wx.Size(550, 250), style=wx.VSCROLL)
 ##        self.VariablesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
 ##              'Sans'))
 ##        self.VariablesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
@@ -2653,32 +2646,34 @@
 ##        self.VariablesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnVariablesGridCellChange)
 ##        self.VariablesGrid.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnVariablesGridSelectCell)
 ##
-##        self.AddButton = wx.Button(id=wxID_EDITVARIABLEDIALOGADDBUTTON, label='Add',
+##        self.AddButton = wx.Button(id=ID_EDITVARIABLEDIALOGADDBUTTON, label='Add',
 ##              name='AddButton', parent=self.MainPanel, pos=wx.Point(345, 340),
 ##              size=wx.Size(72, 32), style=0)
-##        EVT_BUTTON(self, wxID_EDITVARIABLEDIALOGADDBUTTON, self.OnAddButton)
-##
-##        self.DeleteButton = wx.Button(id=wxID_EDITVARIABLEDIALOGDELETEBUTTON, label='Delete',
+##        self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_EDITVARIABLEDIALOGADDBUTTON)
+##
+##        self.DeleteButton = wx.Button(id=ID_EDITVARIABLEDIALOGDELETEBUTTON, label='Delete',
 ##              name='DeleteButton', parent=self.MainPanel, pos=wx.Point(425, 340),
 ##              size=wx.Size(72, 32), style=0)
-##        EVT_BUTTON(self, wxID_EDITVARIABLEDIALOGDELETEBUTTON, self.OnDeleteButton)
-##
-##        self.UpButton = wx.Button(id=wxID_EDITVARIABLEDIALOGUPBUTTON, label='^',
+##        self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_EDITVARIABLEDIALOGDELETEBUTTON)
+##
+##        self.UpButton = wx.Button(id=ID_EDITVARIABLEDIALOGUPBUTTON, label='^',
 ##              name='UpButton', parent=self.MainPanel, pos=wx.Point(505, 340),
 ##              size=wx.Size(32, 32), style=0)
-##        EVT_BUTTON(self, wxID_EDITVARIABLEDIALOGUPBUTTON, self.OnUpButton)
-##
-##        self.DownButton = wx.Button(id=wxID_EDITVARIABLEDIALOGDOWNBUTTON, label='v',
+##        self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_EDITVARIABLEDIALOGUPBUTTON)
+##
+##        self.DownButton = wx.Button(id=ID_EDITVARIABLEDIALOGDOWNBUTTON, label='v',
 ##              name='DownButton', parent=self.MainPanel, pos=wx.Point(545, 340),
 ##              size=wx.Size(32, 32), style=0)
-##        EVT_BUTTON(self, wxID_EDITVARIABLEDIALOGDOWNBUTTON, self.OnDownButton)
+##        self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_EDITVARIABLEDIALOGDOWNBUTTON)
+##
+##        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
+##        self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())       
 ##
 ##        self._init_sizers()
 ##
 ##    def __init__(self, parent, name, pou_type, pou_is_used, filter = "All"):
 ##        self._init_ctrls(parent, name)
-##        self.ButtonSizer = self.CreateButtonSizer(wxOK|wxCANCEL|wxCENTRE)
-##        self.flexGridSizer1.Add(self.ButtonSizer, 1, wxALIGN_RIGHT)
+##
 ##        self.Filter = filter
 ##        self.PouIsUsed = pou_is_used
 ##        self.FilterChoices = []
@@ -2700,12 +2695,12 @@
 ##            else:
 ##                self.FilterChoices = ["All","Global","Access"]
 ##            self.ColSizes = [80, 70, 80, 80, 80, 60, 70]
-##            self.ColAlignements = [wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
+##            self.ColAlignements = [wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
 ##        else:
 ##            self.Table = VariableTable(self, [], ["Name", "Class", "Type", "Initial Value", "Retain", "Constant"])
 ##            self.FilterChoices = ["All","Interface","   Input","   Output","   InOut","   External","Variables","   Local","   Temp"]
 ##            self.ColSizes = [120, 70, 80, 120, 60, 70]
-##            self.ColAlignements = [wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_CENTER]
+##            self.ColAlignements = [wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER]
 ##        for choice in self.FilterChoices:
 ##            self.ClassFilter.Append(choice)
 ##        reverse_transfer = {}
@@ -2736,12 +2731,10 @@
 ##        self.PouNames = []
 ##
 ##        if self.PouIsUsed:
-##            wxCallAfter(self.WarningMessage, name)
-##
-##        EVT_BUTTON(self, self.ButtonSizer.GetAffirmativeButton().GetId(), self.OnOK)
+##            wx.CallAfter(self.WarningMessage, name)
 ##    
 ##    def WarningMessage(self, name):
-##        message = wxMessageDialog(self, "\"%s\" is used by one or more POUs. Its interface can't be changed!"%name, "WARNING", wxOK|wxICON_EXCLAMATION)
+##        message = wx.MessageDialog(self, "\"%s\" is used by one or more POUs. Its interface can't be changed!"%name, "WARNING", wx.OK|wx.ICON_EXCLAMATION)
 ##        message.ShowModal()
 ##        message.Destroy()
 ##    
@@ -2759,11 +2752,11 @@
 ##                    text += " and %s"%item
 ##                else:
 ##                    text += ", %s"%item 
-##            message = wxMessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wxOK|wxICON_ERROR)
+##            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
 ##            message.ShowModal()
 ##            message.Destroy()
 ##        else:
-##            self.EndModal(wxID_OK)
+##            self.EndModal(wx.ID_OK)
 ##
 ##    def OnClassFilter(self, event):
 ##        self.Filter = self.FilterChoiceTransfer[self.ClassFilter.GetStringSelection()]
@@ -2827,22 +2820,22 @@
 ##        value = self.Table.GetValue(row, col)
 ##        if colname == "Name":
 ##            if not TestIdentifier(value):
-##                message = wxMessageDialog(self, "\"%s\" is not a valid identifier!"%value, "Error", wxOK|wxICON_ERROR)
+##                message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%value, "Error", wx.OK|wx.ICON_ERROR)
 ##                message.ShowModal()
 ##                message.Destroy()
 ##                event.Veto()
 ##            elif value.upper() in IEC_KEYWORDS:
-##                message = wxMessageDialog(self, "\"%s\" is a keyword. It can't be used!"%value, "Error", wxOK|wxICON_ERROR)
+##                message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%value, "Error", wx.OK|wx.ICON_ERROR)
 ##                message.ShowModal()
 ##                message.Destroy()
 ##                event.Veto()
 ##            elif value.upper() in self.PouNames:
-##                message = wxMessageDialog(self, "A pou with \"%s\" as name exists!"%value, "Error", wxOK|wxICON_ERROR)
+##                message = wx.MessageDialog(self, "A pou with \"%s\" as name exists!"%value, "Error", wx.OK|wx.ICON_ERROR)
 ##                message.ShowModal()
 ##                message.Destroy()
 ##                event.Veto()
 ##            elif value.upper() in [var["Name"].upper() for var in self.Values if var != self.Table.data[row]]:
-##                message = wxMessageDialog(self, "A variable with \"%s\" as name exists in this pou!"%value, "Error", wxOK|wxICON_ERROR)
+##                message = wx.MessageDialog(self, "A variable with \"%s\" as name exists in this pou!"%value, "Error", wx.OK|wx.ICON_ERROR)
 ##                message.ShowModal()
 ##                message.Destroy()
 ##                event.Veto()
@@ -2852,7 +2845,7 @@
 ##            event.Skip()
 ##
 ##    def OnVariablesGridSelectCell(self, event):
-##        wxCallAfter(self.RefreshButtons)
+##        wx.CallAfter(self.RefreshButtons)
 ##        event.Skip()
 ##
 ##    def SetPouNames(self, pou_names):
@@ -2938,7 +2931,7 @@
     return res
 
 def Display_Error_Dialog(e_value):
-    message = wxMessageDialog(None, str(e_value), "Error", wxOK|wxICON_ERROR)
+    message = wx.MessageDialog(None, str(e_value), "Error", wx.OK|wx.ICON_ERROR)
     message.ShowModal()
     message.Destroy()
 
@@ -2996,8 +2989,8 @@
     sys.excepthook = handle_exception
 
 if __name__ == '__main__':
-    app = wxPySimpleApp()
-    wxInitAllImageHandlers()
+    app = wx.PySimpleApp()
+    wx.InitAllImageHandlers()
     
     # Install a exception handle for bug reports
     wxAddExceptHook(os.getcwd(),__version__)
--- a/RessourceEditor.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/RessourceEditor.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,22 +22,21 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
-from wxPython.grid import *
 import wx
+import wx.grid
 
 #-------------------------------------------------------------------------------
 #                            Resource Editor class
 #-------------------------------------------------------------------------------
 
-class ResourceTable(wxPyGridTableBase):
+class ResourceTable(wx.grid.PyGridTableBase):
     
     """
-    A custom wxGrid Table using user supplied data
+    A custom wx.grid.Grid Table using user supplied data
     """
     def __init__(self, parent, data, colnames):
         # The base class must be initialized *first*
-        wxPyGridTableBase.__init__(self)
+        wx.grid.PyGridTableBase.__init__(self)
         self.data = data
         self.colnames = colnames
         self.Parent = parent
@@ -93,19 +92,19 @@
     
     def ResetView(self, grid):
         """
-        (wxGrid) -> Reset the grid view.   Call this to
+        (wx.grid.Grid) -> Reset the grid view.   Call this to
         update the grid if rows and columns have been added or deleted
         """
         grid.BeginBatch()
         for current, new, delmsg, addmsg in [
-            (self._rows, self.GetNumberRows(), wxGRIDTABLE_NOTIFY_ROWS_DELETED, wxGRIDTABLE_NOTIFY_ROWS_APPENDED),
-            (self._cols, self.GetNumberCols(), wxGRIDTABLE_NOTIFY_COLS_DELETED, wxGRIDTABLE_NOTIFY_COLS_APPENDED),
+            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
+            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
         ]:
             if new < current:
-                msg = wxGridTableMessage(self,delmsg,new,current-new)
+                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
                 grid.ProcessTableMessage(msg)
             elif new > current:
-                msg = wxGridTableMessage(self,addmsg,new-current)
+                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
                 grid.ProcessTableMessage(msg)
                 self.UpdateValues(grid)
         grid.EndBatch()
@@ -122,20 +121,20 @@
     def UpdateValues(self, grid):
         """Update all displayed values"""
         # This sends an event to the grid table to update all of the values
-        msg = wxGridTableMessage(self, wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
+        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
         grid.ProcessTableMessage(msg)
 
     def _updateColAttrs(self, grid):
         """
-        wxGrid -> update the column attributes to add the
+        wx.grid.Grid -> update the column attributes to add the
         appropriate renderer given the column name.
 
         Otherwise default to the default renderer.
         """
         
         for col in range(self.GetNumberCols()):
-            attr = wxGridCellAttr()
-            attr.SetAlignment(self.ColAlignements[col], wxALIGN_CENTRE)
+            attr = wx.grid.GridCellAttr()
+            attr.SetAlignment(self.ColAlignements[col], wx.ALIGN_CENTRE)
             grid.SetColAttr(col, attr)
             grid.SetColSize(col, self.ColSizes[col])
         
@@ -146,29 +145,29 @@
                 colname = self.GetColLabelValue(col)
                 grid.SetReadOnly(row, col, False)
                 if colname in ["Name","Interval"]:
-                    editor = wxGridCellTextEditor()
-                    renderer = wxGridCellStringRenderer()
+                    editor = wx.grid.GridCellTextEditor()
+                    renderer = wx.grid.GridCellStringRenderer()
                     if colname == "Interval" and self.GetValueByName(row, "Single") != "":
                         grid.SetReadOnly(row, col, True)
                 elif colname == "Single":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.VariableList)
                     if self.GetValueByName(row, "Interval") != "":
                         grid.SetReadOnly(row, col, True)
                 elif colname == "Type":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.TypeList)
                 elif colname == "Priority":
-                    editor = wxGridCellNumberEditor()
+                    editor = wx.grid.GridCellNumberEditor()
                     editor.SetParameters("0,65535")
                 elif colname == "Task":
-                    editor = wxGridCellChoiceEditor()
+                    editor = wx.grid.GridCellChoiceEditor()
                     editor.SetParameters(self.Parent.TaskList)
                     
                 grid.SetCellEditor(row, col, editor)
                 grid.SetCellRenderer(row, col, renderer)
                 
-                grid.SetCellBackgroundColour(row, col, wxWHITE)
+                grid.SetCellBackgroundColour(row, col, wx.WHITE)
     
     def SetData(self, data):
         self.data = data
@@ -199,94 +198,69 @@
         self.editors = []
 
 
-[wxID_RESOURCEEDITOR, wxID_RESOURCEEDITORSTATICTEXT1,
- wxID_RESOURCEEDITORSTATICTEXT2, wxID_RESOURCEEDITORINSTANCESGRID,
- wxID_RESOURCEEDITORTASKSGRID, wxID_RESOURCEEDITORADDINSTANCEBUTTON,
- wxID_RESOURCEEDITORDELETEINSTANCEBUTTON, wxID_RESOURCEEDITORUPINSTANCEBUTTON,
- wxID_RESOURCEEDITORDOWNINSTANCEBUTTON, wxID_RESOURCEEDITORADDTASKBUTTON,
- wxID_RESOURCEEDITORDELETETASKBUTTON, wxID_RESOURCEEDITORUPTASKBUTTON,
- wxID_RESOURCEEDITORDOWNTASKBUTTON,
+[ID_RESOURCEEDITOR, ID_RESOURCEEDITORSTATICTEXT1,
+ ID_RESOURCEEDITORSTATICTEXT2, ID_RESOURCEEDITORINSTANCESGRID,
+ ID_RESOURCEEDITORTASKSGRID, ID_RESOURCEEDITORADDINSTANCEBUTTON,
+ ID_RESOURCEEDITORDELETEINSTANCEBUTTON, ID_RESOURCEEDITORUPINSTANCEBUTTON,
+ ID_RESOURCEEDITORDOWNINSTANCEBUTTON, ID_RESOURCEEDITORADDTASKBUTTON,
+ ID_RESOURCEEDITORDELETETASKBUTTON, ID_RESOURCEEDITORUPTASKBUTTON,
+ ID_RESOURCEEDITORDOWNTASKBUTTON,
 ] = [wx.NewId() for _init_ctrls in range(13)]
 
 class ResourceEditor(wx.Panel):
     
     def _init_coll_InstancesSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_coll_InstancesSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.InstancesButtonsSizer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.InstancesGrid, 0, border=0, flag=wxGROW)
+        parent.AddSizer(self.InstancesButtonsSizer, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.InstancesGrid, 0, border=0, flag=wx.GROW)
 
     def _init_coll_InstancesButtonsSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
 
     def _init_coll_InstancesButtonsSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText2, 0, border=0, flag=wxALIGN_BOTTOM)
+        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.ALIGN_BOTTOM)
         parent.AddWindow(self.AddInstanceButton, 0, border=0, flag=0)
         parent.AddWindow(self.DeleteInstanceButton, 0, border=0, flag=0)
         parent.AddWindow(self.UpInstanceButton, 0, border=0, flag=0)
         parent.AddWindow(self.DownInstanceButton, 0, border=0, flag=0)
 
     def _init_coll_TasksSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(1)
 
     def _init_coll_TasksSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.TasksButtonsSizer, 0, border=0, flag=wxGROW)
-        parent.AddWindow(self.TasksGrid, 0, border=0, flag=wxGROW)
+        parent.AddSizer(self.TasksButtonsSizer, 0, border=0, flag=wx.GROW)
+        parent.AddWindow(self.TasksGrid, 0, border=0, flag=wx.GROW)
 
     def _init_coll_TasksButtonsSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
 
     def _init_coll_TasksButtonsSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddWindow(self.staticText1, 0, border=0, flag=wxALIGN_BOTTOM)
+        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.ALIGN_BOTTOM)
         parent.AddWindow(self.AddTaskButton, 0, border=0, flag=0)
         parent.AddWindow(self.DeleteTaskButton, 0, border=0, flag=0)
         parent.AddWindow(self.UpTaskButton, 0, border=0, flag=0)
         parent.AddWindow(self.DownTaskButton, 0, border=0, flag=0)
 
     def _init_coll_MainGridSizer_Items(self, parent):
-        # generated method, don't edit
-
-        parent.AddSizer(self.TasksSizer, 0, border=0, flag=wxGROW)
-        parent.AddSizer(self.InstancesSizer, 0, border=0, flag=wxGROW)
+        parent.AddSizer(self.TasksSizer, 0, border=0, flag=wx.GROW)
+        parent.AddSizer(self.InstancesSizer, 0, border=0, flag=wx.GROW)
 
     def _init_coll_MainGridSizer_Growables(self, parent):
-        # generated method, don't edit
-
         parent.AddGrowableCol(0)
         parent.AddGrowableRow(0)
         parent.AddGrowableRow(1)
 
     def _init_sizers(self):
-        # generated method, don't edit
         self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
-
         self.InstancesSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
-
         self.InstancesButtonsSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
-
         self.TasksSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
-
         self.TasksButtonsSizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0)
 
         self._init_coll_MainGridSizer_Growables(self.MainGridSizer)
@@ -303,76 +277,75 @@
         self.SetSizer(self.MainGridSizer)
 
     def _init_ctrls(self, prnt):
-        # generated method, don't edit
-        wx.Panel.__init__(self, id=wxID_RESOURCEEDITOR, name='', parent=prnt,
+        wx.Panel.__init__(self, id=ID_RESOURCEEDITOR, name='', parent=prnt,
               pos=wx.Point(0, 0), size=wx.Size(-1, -1),
               style=wx.SUNKEN_BORDER)
         
-        self.staticText1 = wx.StaticText(id=wxID_RESOURCEEDITORSTATICTEXT1,
+        self.staticText1 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT1,
               label=u'Tasks:', name='staticText2', parent=self, pos=wx.Point(0,
-              0), size=wx.Size(60, 17), style=wxALIGN_CENTER)
-
-        self.TasksGrid = wx.grid.Grid(id=wxID_RESOURCEEDITORTASKSGRID,
+              0), size=wx.Size(60, 17), style=wx.ALIGN_CENTER)
+
+        self.TasksGrid = wx.grid.Grid(id=ID_RESOURCEEDITORTASKSGRID,
               name='TasksGrid', parent=self, pos=wx.Point(0, 0), 
-              size=wx.Size(-1, -1), style=wxVSCROLL)
+              size=wx.Size(-1, -1), style=wx.VSCROLL)
         self.TasksGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
               'Sans'))
         self.TasksGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
               False, 'Sans'))
-        EVT_GRID_CELL_CHANGE(self.TasksGrid, self.OnTasksGridCellChange)
-
-        self.AddTaskButton = wx.Button(id=wxID_RESOURCEEDITORADDTASKBUTTON, label='Add Task',
+        self.TasksGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnTasksGridCellChange)
+
+        self.AddTaskButton = wx.Button(id=ID_RESOURCEEDITORADDTASKBUTTON, label='Add Task',
               name='AddTaskButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(102, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORADDTASKBUTTON, self.OnAddTaskButton)
-
-        self.DeleteTaskButton = wx.Button(id=wxID_RESOURCEEDITORDELETETASKBUTTON, label='Delete Task',
+        self.Bind(wx.EVT_BUTTON, self.OnAddTaskButton, id=ID_RESOURCEEDITORADDTASKBUTTON)
+
+        self.DeleteTaskButton = wx.Button(id=ID_RESOURCEEDITORDELETETASKBUTTON, label='Delete Task',
               name='DeleteTaskButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(102, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORDELETETASKBUTTON, self.OnDeleteTaskButton)
-
-        self.UpTaskButton = wx.Button(id=wxID_RESOURCEEDITORUPTASKBUTTON, label='^',
+        self.Bind(wx.EVT_BUTTON, self.OnDeleteTaskButton, id=ID_RESOURCEEDITORDELETETASKBUTTON)
+
+        self.UpTaskButton = wx.Button(id=ID_RESOURCEEDITORUPTASKBUTTON, label='^',
               name='UpTaskButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORUPTASKBUTTON, self.OnUpTaskButton)
-
-        self.DownTaskButton = wx.Button(id=wxID_RESOURCEEDITORDOWNTASKBUTTON, label='v',
+        self.Bind(wx.EVT_BUTTON, self.OnUpTaskButton, id=ID_RESOURCEEDITORUPTASKBUTTON)
+
+        self.DownTaskButton = wx.Button(id=ID_RESOURCEEDITORDOWNTASKBUTTON, label='v',
               name='DownTaskButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORDOWNTASKBUTTON, self.OnDownTaskButton)
-
-        self.staticText2 = wx.StaticText(id=wxID_RESOURCEEDITORSTATICTEXT2,
+        self.Bind(wx.EVT_BUTTON, self.OnDownTaskButton, id=ID_RESOURCEEDITORDOWNTASKBUTTON)
+
+        self.staticText2 = wx.StaticText(id=ID_RESOURCEEDITORSTATICTEXT2,
               label=u'Instances:', name='staticText1', parent=self,
-              pos=wx.Point(0, 0), size=wx.Size(85, 17), style=wxALIGN_CENTER)
-
-        self.InstancesGrid = wx.grid.Grid(id=wxID_RESOURCEEDITORINSTANCESGRID,
+              pos=wx.Point(0, 0), size=wx.Size(85, 17), style=wx.ALIGN_CENTER)
+
+        self.InstancesGrid = wx.grid.Grid(id=ID_RESOURCEEDITORINSTANCESGRID,
               name='InstancesGrid', parent=self, pos=wx.Point(0, 0), 
-              size=wx.Size(-1, -1), style=wxVSCROLL)
+              size=wx.Size(-1, -1), style=wx.VSCROLL)
         self.InstancesGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
               'Sans'))
         self.InstancesGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
               False, 'Sans'))
-        EVT_GRID_CELL_CHANGE(self.InstancesGrid, self.OnInstancesGridCellChange)
-
-        self.AddInstanceButton = wx.Button(id=wxID_RESOURCEEDITORADDINSTANCEBUTTON, label='Add Instance',
+        self.InstancesGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnInstancesGridCellChange)
+
+        self.AddInstanceButton = wx.Button(id=ID_RESOURCEEDITORADDINSTANCEBUTTON, label='Add Instance',
               name='AddInstanceButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(122, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORADDINSTANCEBUTTON, self.OnAddInstanceButton)
-
-        self.DeleteInstanceButton = wx.Button(id=wxID_RESOURCEEDITORDELETEINSTANCEBUTTON, label='Delete Instance',
+        self.Bind(wx.EVT_BUTTON, self.OnAddInstanceButton, id=ID_RESOURCEEDITORADDINSTANCEBUTTON)
+
+        self.DeleteInstanceButton = wx.Button(id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON, label='Delete Instance',
               name='DeleteInstanceButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(122, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORDELETEINSTANCEBUTTON, self.OnDeleteInstanceButton)
-
-        self.UpInstanceButton = wx.Button(id=wxID_RESOURCEEDITORUPINSTANCEBUTTON, label='^',
+        self.Bind(wx.EVT_BUTTON, self.OnDeleteInstanceButton, id=ID_RESOURCEEDITORDELETEINSTANCEBUTTON)
+
+        self.UpInstanceButton = wx.Button(id=ID_RESOURCEEDITORUPINSTANCEBUTTON, label='^',
               name='UpInstanceButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORUPINSTANCEBUTTON, self.OnUpInstanceButton)
-
-        self.DownInstanceButton = wx.Button(id=wxID_RESOURCEEDITORDOWNINSTANCEBUTTON, label='v',
+        self.Bind(wx.EVT_BUTTON, self.OnUpInstanceButton, id=ID_RESOURCEEDITORUPINSTANCEBUTTON)
+
+        self.DownInstanceButton = wx.Button(id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON, label='v',
               name='DownInstanceButton', parent=self, pos=wx.Point(0, 0),
               size=wx.Size(32, 32), style=0)
-        EVT_BUTTON(self, wxID_RESOURCEEDITORDOWNINSTANCEBUTTON, self.OnDownInstanceButton)
+        self.Bind(wx.EVT_BUTTON, self.OnDownInstanceButton, id=ID_RESOURCEEDITORDOWNINSTANCEBUTTON)
 
         self._init_sizers()
 
@@ -384,7 +357,7 @@
         
         self.TasksDefaultValue = {"Name" : "", "Single" : "", "Interval" : "", "Priority" : 0}
         self.TasksTable = ResourceTable(self, [], ["Name", "Single", "Interval", "Priority"])
-        self.TasksTable.SetColAlignements([wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_RIGHT, wxALIGN_RIGHT])
+        self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT])
         self.TasksTable.SetColSizes([200, 100, 100, 100])
         self.TasksGrid.SetTable(self.TasksTable)
         self.TasksGrid.SetRowLabelSize(0)
@@ -392,7 +365,7 @@
 
         self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""}
         self.InstancesTable = ResourceTable(self, [], ["Name", "Type", "Task"])
-        self.InstancesTable.SetColAlignements([wxALIGN_LEFT, wxALIGN_LEFT, wxALIGN_LEFT])
+        self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT])
         self.InstancesTable.SetColSizes([200, 150, 150])
         self.InstancesGrid.SetTable(self.InstancesTable)
         self.InstancesGrid.SetRowLabelSize(0)
--- a/SFCViewer.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/SFCViewer.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 from types import *
 
@@ -56,7 +55,7 @@
             previous.RefreshConnectedPosition(connector)
         else:
             previous.RefreshOutputPosition()
-        wire.SetPoints([wxPoint(pos.x, pos.y + GetWireSize(previous)), wxPoint(pos.x, pos.y)])
+        wire.SetPoints([wx.Point(pos.x, pos.y + GetWireSize(previous)), wx.Point(pos.x, pos.y)])
         self.AddBlock(transition)
         self.Controler.AddCurrentElementEditingTransition(id)
         self.RefreshTransitionModel(transition)
@@ -66,7 +65,7 @@
             next_block = next.GetParentBlock()
             next_pos = next.GetPosition(False)
             transition.RefreshOutputPosition((0, pos.y + SFC_WIRE_MIN_SIZE - next_pos.y))
-            wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+            wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
             if isinstance(next_block, SFC_Divergence):
                 next_block.RefreshPosition()
             transition.RefreshOutputModel(True)
@@ -110,7 +109,7 @@
             previous.RefreshConnectedPosition(connector)
         else:
             previous.RefreshOutputPosition()
-        wire.SetPoints([wxPoint(pos.x, pos.y + GetWireSize(previous)), wxPoint(pos.x, pos.y)])
+        wire.SetPoints([wx.Point(pos.x, pos.y + GetWireSize(previous)), wx.Point(pos.x, pos.y)])
         self.AddBlock(step)
         self.Controler.AddCurrentElementEditingStep(id)
         self.RefreshStepModel(step)
@@ -120,7 +119,7 @@
             next_block = next.GetParentBlock()
             next_pos = next.GetPosition(False)
             step.RefreshOutputPosition((0, pos.y + SFC_WIRE_MIN_SIZE - next_pos.y))
-            wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+            wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
             if isinstance(next_block, SFC_Divergence):
                 next_block.RefreshPosition()
             step.RefreshOutputModel(True)
@@ -207,7 +206,7 @@
             self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
         elif self.Mode == MODE_WIRE:
             pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling)
-            wire = Wire(self, [wxPoint(pos.x, pos.y), SOUTH], [wxPoint(pos.x, pos.y), NORTH])
+            wire = Wire(self, [wx.Point(pos.x, pos.y), SOUTH], [wx.Point(pos.x, pos.y), NORTH])
             wire.oldPos = pos
             wire.Handle = (HANDLE_POINT, 0)
             wire.ProcessDragging(0, 0)
@@ -234,15 +233,15 @@
             elif self.Mode == MODE_COMMENT:
                 bbox = self.rubberBand.GetCurrentExtent()
                 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
-                wxCallAfter(self.AddComment, bbox)
+                wx.CallAfter(self.AddComment, bbox)
         elif self.Mode == MODE_INITIALSTEP:
-            wxCallAfter(self.AddInitialStep, GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling))
+            wx.CallAfter(self.AddInitialStep, GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling))
         elif self.Mode == MODE_SELECTION and self.SelectedElement:
             if self.IsWire(self.SelectedElement):
                 self.SelectedElement.SetSelectedSegment(0)
             else:
                 self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
-            wxCallAfter(self.SetCursor, wxNullCursor)
+            wx.CallAfter(self.SetCursor, wx.NullCursor)
             self.ReleaseMouse()
             self.Refresh()
         elif self.Mode == MODE_WIRE and self.SelectedElement:
@@ -270,7 +269,7 @@
                 else:
                     self.SelectedElement.SetSelected(True)
                     self.SelectedElement.OnRightUp(event, dc, self.Scaling)
-                wxCallAfter(self.SetCursor, wxNullCursor)
+                wx.CallAfter(self.SetCursor, wx.NullCursor)
                 self.ReleaseMouse()
                 self.Refresh()
         event.Skip()
@@ -305,18 +304,21 @@
 #-------------------------------------------------------------------------------
 
     def OnChar(self, event):
+        xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL)
+        xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL)
+        ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL)
         keycode = event.GetKeyCode()
         if self.Scaling:
             scaling = self.Scaling
         else:
             scaling = (8, 8)
-        if keycode == WXK_DELETE and self.SelectedElement:
+        if keycode == wx.WXK_DELETE and self.SelectedElement:
             self.SelectedElement.Delete()
             self.SelectedElement = None
             self.RefreshBuffer()
             self.RefreshScrollBars()
             self.Refresh()
-        elif keycode == WXK_LEFT:
+        elif keycode == wx.WXK_LEFT:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(0, ypos)
             elif event.ControlDown():
@@ -326,7 +328,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_RIGHT:
+        elif keycode == wx.WXK_RIGHT:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xmax, ypos)
             elif event.ControlDown():
@@ -336,7 +338,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_UP:
+        elif keycode == wx.WXK_UP:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xpos, 0)
             elif event.ControlDown():
@@ -346,7 +348,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_DOWN:
+        elif keycode == wx.WXK_DOWN:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xpos, ymax)
             elif event.ControlDown():
@@ -362,11 +364,11 @@
 #-------------------------------------------------------------------------------
 
     def AddInitialStep(self, pos):
-        dialog = StepNameDialog(self.Parent, "Add a new initial step", "Please enter step name", "", wxOK|wxCANCEL)
+        dialog = StepNameDialog(self.Parent, "Add a new initial step", "Please enter step name", "", wx.OK|wx.CANCEL)
         dialog.SetPouNames(self.Controler.GetProjectPouNames())
         dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             name = dialog.GetValue()
             step = SFC_Step(self, name, True, id)
@@ -385,11 +387,11 @@
 
     def AddStep(self):
         if self.SelectedElement in self.Wires or isinstance(self.SelectedElement, SFC_Step):
-            dialog = StepNameDialog(self.Parent, "Add a new step", "Please enter step name", "", wxOK|wxCANCEL)
+            dialog = StepNameDialog(self.Parent, "Add a new step", "Please enter step name", "", wx.OK|wx.CANCEL)
             dialog.SetPouNames(self.Controler.GetProjectPouNames())
             dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
             dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
-            if dialog.ShowModal() == wxID_OK:
+            if dialog.ShowModal() == wx.ID_OK:
                 name = dialog.GetValue()
                 if self.IsWire(self.SelectedElement):
                     self.SelectedElement.SetSelectedSegment(None)
@@ -446,7 +448,7 @@
                 dialog.SetQualifierList(self.Controler.GetQualifierTypes())
                 dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
                 dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
-                if dialog.ShowModal() == wxID_OK:
+                if dialog.ShowModal() == wx.ID_OK:
                     actions = dialog.GetValues()
                     self.SelectedElement.AddAction()
                     self.RefreshStepModel(self.SelectedElement)
@@ -457,7 +459,7 @@
                     actionblock.SetPosition(pos.x + SFC_WIRE_MIN_SIZE, pos.y - SFC_STEP_DEFAULT_SIZE[1] / 2)
                     actionblock_connector = actionblock.GetConnector()
                     wire = self.ConnectConnectors(actionblock_connector, connectors["action"])
-                    wire.SetPoints([wxPoint(pos.x + SFC_WIRE_MIN_SIZE, pos.y), wxPoint(pos.x, pos.y)])
+                    wire.SetPoints([wx.Point(pos.x + SFC_WIRE_MIN_SIZE, pos.y), wx.Point(pos.x, pos.y)])
                     actionblock.SetActions(actions)
                     self.AddBlock(actionblock)
                     self.Controler.AddCurrentElementEditingActionBlock(id)
@@ -470,7 +472,7 @@
     def AddDivergence(self):
         if self.SelectedElement in self.Wires or isinstance(self.SelectedElement, Graphic_Group) or isinstance(self.SelectedElement, SFC_Step):        
             dialog = DivergenceCreateDialog(self.Parent)
-            if dialog.ShowModal() == wxID_OK:
+            if dialog.ShowModal() == wx.ID_OK:
                 value = dialog.GetValues()
                 if value["type"] == SELECTION_DIVERGENCE:
                     if self.SelectedElement in self.Wires and isinstance(self.SelectedElement.EndConnected.GetParentBlock(), SFC_Step):
@@ -508,7 +510,7 @@
                     divergence_connectors = divergence.GetConnectors()
                     wire = self.ConnectConnectors(divergence_connectors["inputs"][0], previous)
                     previous_block.RefreshOutputPosition()
-                    wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
+                    wire.SetPoints([wx.Point(pos.x, pos.y + wire_size), wx.Point(pos.x, pos.y)])
                     self.AddBlock(divergence)
                     self.Controler.AddCurrentElementEditingDivergence(id, value["type"])
                     self.RefreshDivergenceModel(divergence)
@@ -520,7 +522,7 @@
                             next_block = next.GetParentBlock()
                             divergence.RefreshOutputPosition((0, pos.y + SFC_WIRE_MIN_SIZE - next_pos.y))
                             divergence.RefreshConnectedPosition(connector)
-                            wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+                            wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
                             next_block.RefreshModel()
                             next = None
                         else:
@@ -566,7 +568,7 @@
                     divergence_connectors = divergence.GetConnectors()
                     wire = self.ConnectConnectors(divergence_connectors["inputs"][0], previous)
                     previous_block.RefreshOutputPosition()
-                    wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
+                    wire.SetPoints([wx.Point(pos.x, pos.y + wire_size), wx.Point(pos.x, pos.y)])
                     self.AddBlock(divergence)
                     self.Controler.AddCurrentElementEditingDivergence(id, value["type"])
                     self.RefreshDivergenceModel(divergence)
@@ -578,7 +580,7 @@
                             next_block = next.GetParentBlock()
                             divergence.RefreshOutputPosition((0, pos.y + SFC_WIRE_MIN_SIZE - next_pos.y))
                             divergence.RefreshConnectedPosition(connector)
-                            wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+                            wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
                             next_block.RefreshModel()
                             next = None
                         else:
@@ -632,7 +634,7 @@
                         pos = input.GetPosition(False)
                         wire = self.ConnectConnectors(divergence_connectors["inputs"][i], input)
                         wire_size = GetWireSize(input)
-                        wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
+                        wire.SetPoints([wx.Point(pos.x, pos.y + wire_size), wx.Point(pos.x, pos.y)])
                         input_block = input.GetParentBlock()
                         input_block.RefreshOutputPosition()
                     divergence.RefreshPosition()
@@ -648,7 +650,7 @@
                         next_block = next.GetParentBlock()
                         divergence.RefreshOutputPosition((0, pos.y + SFC_WIRE_MIN_SIZE - next_pos.y))
                         divergence.RefreshConnectedPosition(divergence_connectors["outputs"][0])
-                        wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+                        wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
                         next_block.RefreshModel()
                     else:
                         if value["type"] == SELECTION_CONVERGENCE:
@@ -686,8 +688,8 @@
             for block in self.Blocks:
                 if isinstance(block, SFC_Step):
                     choices.append(block.GetName())
-            dialog = wxSingleChoiceDialog(self.Parent, "Add a new jump", "Please choose a target", choices, wxOK|wxCANCEL)
-            if dialog.ShowModal() == wxID_OK:
+            dialog = wx.SingleChoiceDialog(self.Parent, "Add a new jump", "Please choose a target", choices, wx.OK|wx.CANCEL)
+            if dialog.ShowModal() == wx.ID_OK:
                 value = dialog.GetStringSelection()
                 self.SelectedElement.AddOutput()
                 self.RefreshStepModel(self.SelectedElement)
@@ -703,7 +705,7 @@
                 jump_connector = jump.GetConnector()
                 wire = self.ConnectConnectors(jump_connector, transition_connectors["output"])
                 transition.RefreshOutputPosition()
-                wire.SetPoints([wxPoint(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wxPoint(pos.x, pos.y)])
+                wire.SetPoints([wx.Point(pos.x, pos.y + SFC_WIRE_MIN_SIZE), wx.Point(pos.x, pos.y)])
                 self.RefreshJumpModel(jump)
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
@@ -711,11 +713,11 @@
             dialog.Destroy()
 
     def EditStepContent(self, step):
-        dialog = StepNameDialog(self.Parent, "Edit step name", "Please enter step name", step.GetName(), wxOK|wxCANCEL)
+        dialog = StepNameDialog(self.Parent, "Edit step name", "Please enter step name", step.GetName(), wx.OK|wx.CANCEL)
         dialog.SetPouNames(self.Controler.GetProjectPouNames())
         dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()])
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             value = dialog.GetValue()
             step.SetName(value)
             min_size = step.GetMinSize()
@@ -727,52 +729,6 @@
             self.Refresh()
         dialog.Destroy()
 
-    def EditTransitionContent(self, transition):
-        dialog = TransitionContentDialog(self.Parent)
-        dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
-        dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition()})
-        if dialog.ShowModal() == wxID_OK:
-            values = dialog.GetValues()
-            transition.SetType(values["type"])
-            transition.SetCondition(values["value"])
-            transition.RefreshModel()
-            self.RefreshBuffer()
-            self.RefreshScrollBars()
-            self.Refresh()
-        dialog.Destroy()
-
-    def EditJumpContent(self, jump):
-        choices = []
-        for block in self.Blocks:
-            if isinstance(block, SFC_Step):
-                choices.append(block.GetName())
-        dialog = wxSingleChoiceDialog(self.Parent, "Edit jump target", "Please choose a target", choices, wxOK|wxCANCEL)
-        dialog.SetSelection(choices.index(jump.GetTarget()))
-        if dialog.ShowModal() == wxID_OK:
-            value = dialog.GetStringSelection()
-            jump.SetTarget(value)
-            jump.RefreshModel()
-            self.RefreshBuffer()
-            self.RefreshScrollBars()
-            self.Refresh()
-        dialog.Destroy()
-
-    def EditActionBlockContent(self, actionblock):
-        dialog = ActionBlockDialog(self.Parent)
-        dialog.SetQualifierList(self.Controler.GetQualifierTypes())
-        dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
-        dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
-        dialog.SetValues(actionblock.GetActions())
-        if dialog.ShowModal() == wxID_OK:
-            actions = dialog.GetValues()
-            actionblock.SetActions(actions)
-            actionblock.RefreshModel()
-            self.RefreshBuffer()
-            self.RefreshScrollBars()
-            self.Refresh()
-        dialog.Destroy()
-        
-
 #-------------------------------------------------------------------------------
 #                          Delete element functions
 #-------------------------------------------------------------------------------
@@ -828,7 +784,7 @@
                         next_pos = next.GetPosition(False)
                         wire_size = GetWireSize(previous_block)
                         previous_block.RefreshOutputPosition((0, pos.y + wire_size - next_pos.y))
-                        wire.SetPoints([wxPoint(pos.x, pos.y + wire_size), wxPoint(pos.x, pos.y)])
+                        wire.SetPoints([wx.Point(pos.x, pos.y + wire_size), wx.Point(pos.x, pos.y)])
                         if isinstance(next_block, SFC_Divergence):
                             next_block.RefreshPosition()
                         previous_block.RefreshOutputModel(True)
@@ -941,8 +897,8 @@
                     next_pos = next.GetPosition(False)
                     wire_size = GetWireSize(previous_block)
                     previous_block.RefreshOutputPosition((0, previous_pos.y + wire_size - next_pos.y))
-                    wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size), 
-                        wxPoint(previous_pos.x, previous_pos.y)])
+                    wire.SetPoints([wx.Point(previous_pos.x, previous_pos.y + wire_size), 
+                        wx.Point(previous_pos.x, previous_pos.y)])
                     if isinstance(next_block, SFC_Divergence):
                         next_block.RefreshPosition()
                     previous_block.RefreshOutputModel(True)
@@ -971,8 +927,8 @@
                 next_pos = next.GetPosition(False)
                 wire_size = GetWireSize(previous_block)
                 previous_block.RefreshOutputPosition((previous_pos.x - next_pos.x, previous_pos.y + wire_size - next_pos.y))
-                wire.SetPoints([wxPoint(previous_pos.x, previous_pos.y + wire_size), 
-                    wxPoint(previous_pos.x, previous_pos.y)])
+                wire.SetPoints([wx.Point(previous_pos.x, previous_pos.y + wire_size), 
+                    wx.Point(previous_pos.x, previous_pos.y)])
                 if isinstance(next_block, SFC_Divergence):
                     next_block.RefreshPosition()
                 previous_block.RefreshOutputModel(True)
--- a/TextViewer.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/TextViewer.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,9 +22,8 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
-from wxPython.stc import * 
 import wx
+import wx.stc
 from types import *
 
 import re
@@ -41,11 +40,11 @@
     LETTERS.append(chr(ord('a') + i))
     LETTERS.append(chr(ord('A') + i))
 
-[wxSTC_PLC_WORD, wxSTC_PLC_COMMENT, wxSTC_PLC_NUMBER, wxSTC_PLC_VARIABLE, 
- wxSTC_PLC_FUNCTION, wxSTC_PLC_JUMP] = range(6)
+[STC_PLC_WORD, STC_PLC_COMMENT, STC_PLC_NUMBER, STC_PLC_VARIABLE, 
+ STC_PLC_FUNCTION, STC_PLC_JUMP] = range(6)
 [SPACE, WORD, NUMBER, COMMENT] = range(4)
 
-[wxID_TEXTVIEWER,
+[ID_TEXTVIEWER,
 ] = [wx.NewId() for _init_ctrls in range(1)]
 
 if wx.Platform == '__WXMSW__':
@@ -90,39 +89,39 @@
     else:
         return None
 
-class TextViewer(wxStyledTextCtrl):
+class TextViewer(wx.stc.StyledTextCtrl):
     
     def __init__(self, parent, window, controler):
-        wxStyledTextCtrl.__init__(self, parent, wxID_TEXTVIEWER, style=0)
-        
-        self.CmdKeyAssign(ord('+'), wxSTC_SCMOD_CTRL, wxSTC_CMD_ZOOMIN)
-        self.CmdKeyAssign(ord('-'), wxSTC_SCMOD_CTRL, wxSTC_CMD_ZOOMOUT)
+        wx.stc.StyledTextCtrl.__init__(self, parent, ID_TEXTVIEWER, style=0)
+        
+        self.CmdKeyAssign(ord('+'), wx.stc.STC_SCMOD_CTRL, wx.stc.STC_CMD_ZOOMIN)
+        self.CmdKeyAssign(ord('-'), wx.stc.STC_SCMOD_CTRL, wx.stc.STC_CMD_ZOOMOUT)
         
         self.SetViewWhiteSpace(False)
         
-        self.SetLexer(wxSTC_LEX_CONTAINER)
+        self.SetLexer(wx.stc.STC_LEX_CONTAINER)
         
         # Global default styles for all languages
-        self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d" % faces)
+        self.StyleSetSpec(wx.stc.STC_STYLE_DEFAULT, "face:%(mono)s,size:%(size)d" % faces)
         self.StyleClearAll()  # Reset all to be like the default
         
-        self.StyleSetSpec(wxSTC_STYLE_LINENUMBER,  "back:#C0C0C0,size:%(size)d" % faces)
+        self.StyleSetSpec(wx.stc.STC_STYLE_LINENUMBER,  "back:#C0C0C0,size:%(size)d" % faces)
         self.SetSelBackground(1, "#E0E0E0")
         
         # Highlighting styles
-        self.StyleSetSpec(wxSTC_PLC_WORD, "fore:#00007F,bold,size:%(size)d" % faces)
-        self.StyleSetSpec(wxSTC_PLC_VARIABLE, "fore:#7F0000,size:%(size)d" % faces)
-        self.StyleSetSpec(wxSTC_PLC_FUNCTION, "fore:#7F7F00,size:%(size)d" % faces)
-        self.StyleSetSpec(wxSTC_PLC_COMMENT, "fore:#7F7F7F,size:%(size)d" % faces)
-        self.StyleSetSpec(wxSTC_PLC_NUMBER, "fore:#007F7F,size:%(size)d" % faces)
-        self.StyleSetSpec(wxSTC_PLC_JUMP, "fore:#007F00,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_WORD, "fore:#00007F,bold,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_VARIABLE, "fore:#7F0000,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_FUNCTION, "fore:#7F7F00,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_COMMENT, "fore:#7F7F7F,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_NUMBER, "fore:#007F7F,size:%(size)d" % faces)
+        self.StyleSetSpec(STC_PLC_JUMP, "fore:#007F00,size:%(size)d" % faces)
         
         # Indicators styles
-        self.IndicatorSetStyle(0, wxSTC_INDIC_SQUIGGLE)
-        self.IndicatorSetForeground(0, wxRED)
+        self.IndicatorSetStyle(0, wx.stc.STC_INDIC_SQUIGGLE)
+        self.IndicatorSetForeground(0, wx.RED)
         
         # Line numbers in the margin
-        self.SetMarginType(1, wxSTC_MARGIN_NUMBER)
+        self.SetMarginType(1, wx.stc.STC_MARGIN_NUMBER)
         self.SetMarginWidth(1, 50)
         
         # Indentation size
@@ -141,26 +140,26 @@
         self.Parent = window
         self.Controler = controler
 
-        self.SetModEventMask(wxSTC_MOD_BEFOREINSERT|wxSTC_MOD_BEFOREDELETE)
-
-        EVT_KEY_DOWN(self, self.OnKeyDown)
-        EVT_STC_STYLENEEDED(self, wxID_TEXTVIEWER, self.OnStyleNeeded)
-        EVT_STC_DO_DROP(self, wxID_TEXTVIEWER, self.OnDoDrop)
-        EVT_KILL_FOCUS(self, self.OnKillFocus)
-        EVT_STC_MODIFIED(self, wxID_TEXTVIEWER, self.OnModification)
+        self.SetModEventMask(wx.stc.STC_MOD_BEFOREINSERT|wx.stc.STC_MOD_BEFOREDELETE)
+
+        self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
+        self.Bind(wx.stc.EVT_STC_STYLENEEDED, self.OnStyleNeeded, id=ID_TEXTVIEWER)
+        self.Bind(wx.stc.EVT_STC_DO_DROP, self.OnDoDrop, id=ID_TEXTVIEWER)
+        self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
+        self.Bind(wx.stc.EVT_STC_MODIFIED, self.OnModification, id=ID_TEXTVIEWER)
     
     def OnModification(self, event):
         if not self.DisableEvents:
             mod_type = event.GetModificationType()
-            if not (mod_type&wxSTC_PERFORMED_UNDO or mod_type&wxSTC_PERFORMED_REDO):
-                if mod_type&wxSTC_MOD_BEFOREINSERT:
+            if not (mod_type&wx.stc.STC_PERFORMED_UNDO or mod_type&wx.stc.STC_PERFORMED_REDO):
+                if mod_type&wx.stc.STC_MOD_BEFOREINSERT:
                     if self.CurrentAction == None:
                         self.StartBuffering()
                     elif self.CurrentAction[0] != "Add" or self.CurrentAction[1] != event.GetPosition() - 1:
                         self.Controler.EndBuffering()
                         self.StartBuffering()
                     self.CurrentAction = ("Add", event.GetPosition())
-                elif mod_type&wxSTC_MOD_BEFOREDELETE:
+                elif mod_type&wx.stc.STC_MOD_BEFOREDELETE:
                     if self.CurrentAction == None:
                         self.StartBuffering()
                     elif self.CurrentAction[0] != "Delete" or self.CurrentAction[1] != event.GetPosition() + 1:
@@ -256,23 +255,23 @@
             line += char
             if char == NEWLINE:
                 if state == COMMENT:
-                    self.SetStyling(i - start_pos + 1, wxSTC_PLC_COMMENT)
+                    self.SetStyling(i - start_pos + 1, STC_PLC_COMMENT)
                 elif state == NUMBER:
-                    self.SetStyling(i - start_pos, wxSTC_PLC_NUMBER)
+                    self.SetStyling(i - start_pos, STC_PLC_NUMBER)
                 elif state == WORD:
                     if word in self.Keywords:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_WORD)
+                        self.SetStyling(i - start_pos, STC_PLC_WORD)
                     elif word in self.Variables:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_VARIABLE)
+                        self.SetStyling(i - start_pos, STC_PLC_VARIABLE)
                     elif word in self.Functions:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_FUNCTION)
+                        self.SetStyling(i - start_pos, STC_PLC_FUNCTION)
                     elif word in self.Jumps:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_JUMP)
+                        self.SetStyling(i - start_pos, STC_PLC_JUMP)
                     else:
                         self.SetStyling(i - start_pos, 31)
                         if self.GetCurrentPos() < start_pos or self.GetCurrentPos() > i:
-                            self.StartStyling(start_pos, wxSTC_INDICS_MASK)
-                            self.SetStyling(i - start_pos, wxSTC_INDIC0_MASK)
+                            self.StartStyling(start_pos, wx.stc.STC_INDICS_MASK)
+                            self.SetStyling(i - start_pos, wx.stc.STC_INDIC0_MASK)
                             self.StartStyling(i, 0xff)    
                 else:
                     self.SetStyling(i - start_pos, 31)
@@ -285,7 +284,7 @@
                 state = COMMENT
             elif state == COMMENT:
                 if line.endswith("*)"):
-                    self.SetStyling(i - start_pos + 2, wxSTC_PLC_COMMENT)
+                    self.SetStyling(i - start_pos + 2, STC_PLC_COMMENT)
                     start_pos = i + 1
                     state = SPACE
             elif char in LETTERS:
@@ -309,40 +308,40 @@
             else:
                 if state == WORD:
                     if word in self.Keywords:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_WORD)
+                        self.SetStyling(i - start_pos, STC_PLC_WORD)
                     elif word in self.Variables:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_VARIABLE)
+                        self.SetStyling(i - start_pos, STC_PLC_VARIABLE)
                     elif word in self.Functions:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_FUNCTION)
+                        self.SetStyling(i - start_pos, STC_PLC_FUNCTION)
                     elif word in self.Jumps:
-                        self.SetStyling(i - start_pos, wxSTC_PLC_JUMP)
+                        self.SetStyling(i - start_pos, STC_PLC_JUMP)
                     else:
                         self.SetStyling(i - start_pos, 31)
                         if self.GetCurrentPos() < start_pos or self.GetCurrentPos() > i:
-                            self.StartStyling(start_pos, wxSTC_INDICS_MASK)
-                            self.SetStyling(i - start_pos, wxSTC_INDIC0_MASK)
+                            self.StartStyling(start_pos, wx.stc.STC_INDICS_MASK)
+                            self.SetStyling(i - start_pos, wx.stc.STC_INDIC0_MASK)
                             self.StartStyling(i, 0xff)
                     word = ""
                     start_pos = i
                     state = SPACE
                 elif state == NUMBER:
-                    self.SetStyling(i - start_pos, wxSTC_PLC_NUMBER)
+                    self.SetStyling(i - start_pos, STC_PLC_NUMBER)
                     start_pos = i
                     state = SPACE
             i += 1
         if state == COMMENT:
-            self.SetStyling(i - start_pos + 2, wxSTC_PLC_COMMENT)
+            self.SetStyling(i - start_pos + 2, STC_PLC_COMMENT)
         elif state == NUMBER:
-            self.SetStyling(i - start_pos, wxSTC_PLC_NUMBER)
+            self.SetStyling(i - start_pos, STC_PLC_NUMBER)
         elif state == WORD:
             if word in self.Keywords:
-                self.SetStyling(i - start_pos, wxSTC_PLC_WORD)
+                self.SetStyling(i - start_pos, STC_PLC_WORD)
             elif word in self.Variables:
-                self.SetStyling(i - start_pos, wxSTC_PLC_VARIABLE)
+                self.SetStyling(i - start_pos, STC_PLC_VARIABLE)
             elif word in self.Functions:
-                self.SetStyling(i - start_pos, wxSTC_PLC_FUNCTION)
+                self.SetStyling(i - start_pos, STC_PLC_FUNCTION)
             elif word in self.Jumps:
-                self.SetStyling(i - start_pos, wxSTC_PLC_JUMP)
+                self.SetStyling(i - start_pos, STC_PLC_JUMP)
             else:
                 self.SetStyling(i - start_pos, 31)
         else:
@@ -351,15 +350,15 @@
     
     def Cut(self):
         self.ResetBuffer()
-        self.CmdKeyExecute(wxSTC_CMD_CUT)
+        self.CmdKeyExecute(wx.stc.STC_CMD_CUT)
         self.RefreshBuffer()
     
     def Copy(self):
-        self.CmdKeyExecute(wxSTC_CMD_COPY)
+        self.CmdKeyExecute(wx.stc.STC_CMD_COPY)
     
     def Paste(self):
         self.ResetBuffer()
-        self.CmdKeyExecute(wxSTC_CMD_PASTE)
+        self.CmdKeyExecute(wx.stc.STC_CMD_PASTE)
         self.RefreshBuffer()
     
     def RefreshModel(self):
@@ -373,7 +372,7 @@
         key = event.KeyCode()
 
         # Code completion
-        if key == WXK_SPACE and event.ControlDown():
+        if key == wx.WXK_SPACE and event.ControlDown():
             
             line = self.GetCurrentLine()
             if line == 0:
@@ -406,7 +405,7 @@
                 self.AutoCompShow(len(words[-1]), " ".join(kw))
         else:
             self.TextChanged = False
-            wxCallAfter(self.RefreshModel)
+            wx.CallAfter(self.RefreshModel)
             event.Skip()
 
     def OnKillFocus(self, event):
--- a/Viewer.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/Viewer.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 
 from plcopen.structures import *
@@ -38,11 +37,11 @@
 #-------------------------------------------------------------------------------
 
 # ID Constants for menu items
-[wxID_FBDVIEWERCONTEXTUALMENUITEMS0, wxID_FBDVIEWERCONTEXTUALMENUITEMS1,
- wxID_FBDVIEWERCONTEXTUALMENUITEMS2, wxID_FBDVIEWERCONTEXTUALMENUITEMS3,
- wxID_FBDVIEWERCONTEXTUALMENUITEMS5, wxID_FBDVIEWERCONTEXTUALMENUITEMS6,
- wxID_FBDVIEWERCONTEXTUALMENUITEMS8, wxID_FBDVIEWERCONTEXTUALMENUITEMS9,
- wxID_FBDVIEWERCONTEXTUALMENUITEMS11,
+[ID_FBDVIEWERCONTEXTUALMENUITEMS0, ID_FBDVIEWERCONTEXTUALMENUITEMS1,
+ ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3,
+ ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6,
+ ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9,
+ ID_FBDVIEWERCONTEXTUALMENUITEMS11,
 ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)]
 
 
@@ -85,7 +84,7 @@
             
 
 """
-Class that implements a Viewer based on a wxScrolledWindow for drawing and 
+Class that implements a Viewer based on a wx.ScrolledWindow for drawing and 
 manipulating graphic elements
 """
 
@@ -94,46 +93,46 @@
     # Create Contextual Menu items
     def _init_coll_ContextualMenu_Items(self, parent):
         # Create menu items
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS0,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS0,
               kind=wx.ITEM_RADIO, text=u'No Modifier')
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS1,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS1,
               kind=wx.ITEM_RADIO, text=u'Negated')
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS2,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS2,
               kind=wx.ITEM_RADIO, text=u'Rising Edge')
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS3,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS3,
               kind=wx.ITEM_RADIO, text=u'Falling Edge')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS5,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS5,
               kind=wx.ITEM_NORMAL, text=u'Add Wire Segment')
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS6,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS6,
               kind=wx.ITEM_NORMAL, text=u'Delete Wire Segment')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS8,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS8,
               kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch')
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS9,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9,
               kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch')
         parent.AppendSeparator()
-        parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS11,
+        parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11,
               kind=wx.ITEM_NORMAL, text=u'Delete')
         # Link menu event to corresponding called functions
         self.Bind(wx.EVT_MENU, self.OnNoModifierMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS0)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS0)
         self.Bind(wx.EVT_MENU, self.OnNegatedMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS1)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS1)
         self.Bind(wx.EVT_MENU, self.OnRisingEdgeMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS2)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS2)
         self.Bind(wx.EVT_MENU, self.OnFallingEdgeMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS3)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS3)
         self.Bind(wx.EVT_MENU, self.OnAddSegmentMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS5)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS5)
         self.Bind(wx.EVT_MENU, self.OnDeleteSegmentMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS6)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS6)
         self.Bind(wx.EVT_MENU, self.OnAddBranchMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS8)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS8)
         self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS9)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS9)
         self.Bind(wx.EVT_MENU, self.OnDeleteMenu,
-              id=wxID_FBDVIEWERCONTEXTUALMENUITEMS11)
+              id=ID_FBDVIEWERCONTEXTUALMENUITEMS11)
     
     # Create and initialize Contextual Menu
     def _init_menus(self):
@@ -147,7 +146,7 @@
         self._init_menus()
         # Adding a rubberband to Viewer
         self.rubberBand = RubberBand(drawingSurface=self)
-        self.SetBackgroundColour(wxColour(255,255,255))
+        self.SetBackgroundColour(wx.Colour(255,255,255))
         self.ResetView()
         self.Scaling = None
         #self.Scaling = (8, 8)
@@ -167,15 +166,15 @@
         self.SetDropTarget(ViewerDropTarget(self))
         
         # Link Viewer event to corresponding methods
-        EVT_PAINT(self, self.OnPaint)
-        EVT_LEFT_DOWN(self, self.OnViewerLeftDown)
-        EVT_LEFT_UP(self, self.OnViewerLeftUp)
-        EVT_LEFT_DCLICK(self, self.OnViewerLeftDClick)
-        EVT_RIGHT_UP(self, self.OnViewerRightUp)
-        EVT_MOTION(self, self.OnViewerMotion)
-        EVT_CHAR(self, self.OnChar)
-        EVT_SCROLLWIN(self, self.OnMoveWindow)
-        EVT_SIZE(self, self.OnMoveWindow)
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown)
+        self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp)
+        self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick)
+        self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp)
+        self.Bind(wx.EVT_MOTION, self.OnViewerMotion)
+        self.Bind(wx.EVT_CHAR, self.OnChar)
+        self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow)
+        self.Bind(wx.EVT_SIZE, self.OnMoveWindow)
     
     # Returns a new id
     def GetNewId(self):
@@ -187,7 +186,7 @@
         self.ResetView()
 
     def GetLogicalDC(self):
-        dc = wxClientDC(self)
+        dc = wx.ClientDC(self)
         self.DoPrepareDC(dc)
         return dc
 
@@ -328,7 +327,7 @@
             variable.SetSize(instance["width"], instance["height"])
             self.AddBlock(variable)
             connectors = variable.GetConnectors()
-            connectors["output"].SetPosition(wxPoint(*instance["connector"]["position"]))
+            connectors["output"].SetPosition(wx.Point(*instance["connector"]["position"]))
             if instance["connector"]["negated"]:
                 connectors["output"].SetNegated(True)
             if instance["connector"]["edge"]:
@@ -339,7 +338,7 @@
             variable.SetSize(instance["width"], instance["height"])
             self.AddBlock(variable)
             connectors = variable.GetConnectors()
-            connectors["input"].SetPosition(wxPoint(*instance["connector"]["position"]))
+            connectors["input"].SetPosition(wx.Point(*instance["connector"]["position"]))
             if instance["connector"]["negated"]:
                 connectors["input"].SetNegated(True)
             if instance["connector"]["edge"]:
@@ -351,8 +350,8 @@
             variable.SetSize(instance["width"], instance["height"])
             self.AddBlock(variable)
             connectors = variable.GetConnectors()
-            connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"]))
-            connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"]))
+            connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"]))
+            connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"]))
             if instance["connectors"]["output"]["negated"]:
                 connectors["output"].SetNegated(True)
             if instance["connectors"]["output"]["edge"]:
@@ -368,14 +367,14 @@
             connection.SetSize(instance["width"], instance["height"])
             self.AddBlock(connection)
             connector = connection.GetConnector()
-            connector.SetPosition(wxPoint(*instance["connector"]["position"]))
+            connector.SetPosition(wx.Point(*instance["connector"]["position"]))
         elif instance["type"] == "connection":
             connection = FBD_Connector(self, CONNECTOR, instance["name"], instance["id"])
             connection.SetPosition(instance["x"], instance["y"])
             connection.SetSize(instance["width"], instance["height"])
             self.AddBlock(connection)
             connector = connection.GetConnector()
-            connector.SetPosition(wxPoint(*instance["connector"]["position"]))
+            connector.SetPosition(wx.Point(*instance["connector"]["position"]))
             self.CreateWires(connector, instance["connector"]["links"], ids)
         elif instance["type"] == "comment":
             comment = Comment(self, instance["content"], instance["id"])
@@ -388,14 +387,14 @@
             self.AddBlock(leftpowerrail)
             connectors = leftpowerrail.GetConnectors()
             for i, connector in enumerate(instance["connectors"]):
-                connectors[i].SetPosition(wxPoint(*connector["position"]))
+                connectors[i].SetPosition(wx.Point(*connector["position"]))
         elif instance["type"] == "rightPowerRail":
             rightpowerrail = LD_PowerRail(self, RIGHTRAIL, instance["id"], [True for i in range(len(instance["connectors"]))])
             rightpowerrail.SetPosition(instance["x"], instance["y"])
             self.AddBlock(rightpowerrail)
             connectors = rightpowerrail.GetConnectors()
             for i, connector in enumerate(instance["connectors"]):
-                connectors[i].SetPosition(wxPoint(*connector["position"]))
+                connectors[i].SetPosition(wx.Point(*connector["position"]))
                 self.CreateWires(connectors[i], connector["links"], ids)
         elif instance["type"] == "contact":
             if instance["negated"]:
@@ -418,9 +417,9 @@
             contact.SetPosition(instance["x"], instance["y"])
             self.AddBlock(contact)
             connectors = contact.GetConnectors()
-            connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"]))
+            connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"]))
             self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids)
-            connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"]))
+            connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"]))
         elif instance["type"] == "coil":
             if instance["negated"]:
                 negated = instance["negated"]
@@ -442,9 +441,9 @@
             coil.SetPosition(instance["x"], instance["y"])
             self.AddBlock(coil)
             connectors = coil.GetConnectors()
-            connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"]))
+            connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"]))
             self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids)
-            connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"]))
+            connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"]))
         elif instance["type"] == "step":
             if instance["initial"]:
                 initial = instance["initial"]
@@ -460,20 +459,22 @@
                 step.AddAction()
             connectors = step.GetConnectors()
             if connectors["input"]:
-                connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"]))
+                connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"]))
                 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids)
             if connectors["output"]:
-                connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"]))
+                connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"]))
             if connectors["action"]:
-                connectors["action"].SetPosition(wxPoint(*instance["connectors"]["action"]["position"]))
+                connectors["action"].SetPosition(wx.Point(*instance["connectors"]["action"]["position"]))
         elif instance["type"] == "transition":
             transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["id"])
             transition.SetPosition(instance["x"], instance["y"])
             self.AddBlock(transition)
             connectors = transition.GetConnectors()
-            connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"]))
+            connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"]))
             self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids)
-            connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"]))
+            connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"]))
+            if instance["condition_type"] == "connection":
+                self.CreateWires(connectors["connection"], instance["connectors"]["connection"]["links"], ids)
         elif instance["type"] in ["selectionDivergence", "selectionConvergence", "simultaneousDivergence", "simultaneousConvergence"]:
             if instance["type"] == "selectionDivergence":
                 divergence = SFC_Divergence(self, SELECTION_DIVERGENCE, 
@@ -493,17 +494,17 @@
             connectors = divergence.GetConnectors()
             for i, input_connector in enumerate(instance["connectors"]["inputs"]):
                 connector = connectors["inputs"][i]
-                connector.SetPosition(wxPoint(*input_connector["position"]))
+                connector.SetPosition(wx.Point(*input_connector["position"]))
                 self.CreateWires(connector, input_connector["links"], ids)
             for i, output_connector in enumerate(instance["connectors"]["outputs"]):
                 connector = connectors["outputs"][i]
-                connector.SetPosition(wxPoint(*output_connector["position"]))
+                connector.SetPosition(wx.Point(*output_connector["position"]))
         elif instance["type"] == "jump":
             jump = SFC_Jump(self, instance["target"], instance["id"])
             jump.SetPosition(instance["x"], instance["y"])
             self.AddBlock(jump)
             connector = jump.GetConnector()
-            connector.SetPosition(wxPoint(*instance["connector"]["position"]))
+            connector.SetPosition(wx.Point(*instance["connector"]["position"]))
             self.CreateWires(connector, instance["connector"]["links"], ids)
         elif instance["type"] == "actionBlock":
             actionBlock = SFC_ActionBlock(self, instance["actions"], instance["id"])
@@ -511,7 +512,7 @@
             actionBlock.SetSize(instance["width"], instance["height"])
             self.AddBlock(actionBlock)
             connector = actionBlock.GetConnector()
-            connector.SetPosition(wxPoint(*instance["connector"]["position"]))
+            connector.SetPosition(wx.Point(*instance["connector"]["position"]))
             self.CreateWires(connector, instance["connector"]["links"], ids)
         else:
             if instance["name"] != None:
@@ -524,7 +525,7 @@
             connectors = block.GetConnectors()
             for i, input_connector in enumerate(instance["connectors"]["inputs"]):
                 connector = connectors["inputs"][i]
-                connector.SetPosition(wxPoint(*input_connector["position"]))
+                connector.SetPosition(wx.Point(*input_connector["position"]))
                 if input_connector["negated"]:
                     connector.SetNegated(True)
                 if input_connector["edge"]:
@@ -536,7 +537,7 @@
                     connector.SetNegated(True)
                 if output_connector["edge"]:
                     connector.SetEdge(output_connector["edge"])
-                connector.SetPosition(wxPoint(*output_connector["position"]))
+                connector.SetPosition(wx.Point(*output_connector["position"]))
     
     def CreateWires(self, start_connector, links, ids):
         for link in links:
@@ -549,7 +550,7 @@
                 connected = self.FindElementById(refLocalId)
                 if connected:
                     points = link["points"]
-                    end_connector = connected.GetConnector(wxPoint(points[-1][0], points[-1][1]), link["formalParameter"])
+                    end_connector = connected.GetConnector(wx.Point(points[-1][0], points[-1][1]), link["formalParameter"])
                     if end_connector:
                         wire = Wire(self)
                         wire.SetPoints(points)
@@ -682,8 +683,8 @@
         self.PopupMenu(self.ContextualMenu)
 
     def EditCommentContent(self, comment):
-        dialog = wxTextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wxOK|wxCANCEL|wxTE_MULTILINE)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.TextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE)
+        if dialog.ShowModal() == wx.ID_OK:
             value = dialog.GetValue()
             comment.SetContent(value)
             infos = {"content" : value}
@@ -790,9 +791,9 @@
             connector = self.FindBlockConnector(pos)
             if connector:
                 if (connector.GetDirection() == EAST):
-                    wire = Wire(self, [wxPoint(pos.x, pos.y), EAST], [wxPoint(pos.x, pos.y), WEST])
+                    wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST])
                 else:
-                    wire = Wire(self, [wxPoint(pos.x, pos.y), WEST], [wxPoint(pos.x, pos.y), EAST])
+                    wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST])
                 wire.oldPos = pos
                 wire.Handle = (HANDLE_POINT, 0)
                 wire.ProcessDragging(0, 0)
@@ -821,34 +822,34 @@
                 bbox = self.rubberBand.GetCurrentExtent()
                 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)                
                 if self.Mode == MODE_BLOCK:
-                    wxCallAfter(self.AddNewBlock, bbox)
+                    wx.CallAfter(self.AddNewBlock, bbox)
                 elif self.Mode == MODE_VARIABLE:
-                    wxCallAfter(self.AddNewVariable, bbox)
+                    wx.CallAfter(self.AddNewVariable, bbox)
                 elif self.Mode == MODE_CONNECTION:
-                    wxCallAfter(self.AddNewConnection, bbox)
+                    wx.CallAfter(self.AddNewConnection, bbox)
                 elif self.Mode == MODE_COMMENT:
-                    wxCallAfter(self.AddNewComment, bbox)
+                    wx.CallAfter(self.AddNewComment, bbox)
                 elif self.Mode == MODE_CONTACT:
-                    wxCallAfter(self.AddNewContact, bbox)
+                    wx.CallAfter(self.AddNewContact, bbox)
                 elif self.Mode == MODE_COIL:
-                    wxCallAfter(self.AddNewContact, bbox)
+                    wx.CallAfter(self.AddNewContact, bbox)
                 elif self.Mode == MODE_POWERRAIL:
-                    wxCallAfter(self.AddNewPowerRail, bbox)
+                    wx.CallAfter(self.AddNewPowerRail, bbox)
                 elif self.Mode == MODE_INITIALSTEP:
-                    wxCallAfter(self.AddNewInitialStep, bbox)
+                    wx.CallAfter(self.AddNewInitialStep, bbox)
                 elif self.Mode == MODE_STEP:
-                    wxCallAfter(self.AddNewStep, bbox)
+                    wx.CallAfter(self.AddNewStep, bbox)
                 elif self.Mode == MODE_TRANSITION:
-                    wxCallAfter(self.AddNewTransition, bbox)
+                    wx.CallAfter(self.AddNewTransition, bbox)
                 elif self.Mode == MODE_DIVERGENCE:
-                    wxCallAfter(self.AddNewDivergence, bbox)
+                    wx.CallAfter(self.AddNewDivergence, bbox)
                 elif self.Mode == MODE_JUMP:
-                    wxCallAfter(self.AddNewJump, bbox)
+                    wx.CallAfter(self.AddNewJump, bbox)
                 elif self.Mode == MODE_ACTION:
-                    wxCallAfter(self.AddNewActionBlock, bbox)
+                    wx.CallAfter(self.AddNewActionBlock, bbox)
         elif self.Mode == MODE_SELECTION and self.SelectedElement:
             self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
-            wxCallAfter(self.SetCursor, wxNullCursor)
+            wx.CallAfter(self.SetCursor, wx.NullCursor)
             self.ReleaseMouse()
             self.Refresh()
         elif self.Mode == MODE_WIRE and self.SelectedElement:
@@ -864,7 +865,7 @@
                 self.SelectedElement = None
             self.Refresh()
         if not self.SavedMode:
-            wxCallAfter(self.Parent.ResetCurrentMode)
+            wx.CallAfter(self.Parent.ResetCurrentMode)
         event.Skip()
     
     def OnViewerRightUp(self, event):
@@ -876,7 +877,7 @@
             self.SelectedElement = element
             self.SelectedElement.SetSelected(True)
             self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
-            wxCallAfter(self.SetCursor, wxNullCursor)
+            wx.CallAfter(self.SetCursor, wx.NullCursor)
             self.ReleaseMouse()
             self.Refresh()
         event.Skip()
@@ -904,7 +905,7 @@
                 self.Refresh()
         if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown():
             position = event.GetPosition()
-            move_window = wxPoint()
+            move_window = wx.Point()
             window_size = self.GetClientSize()
             xstart, ystart = self.GetViewStart()
             if position.x < SCROLL_ZONE and xstart > 0:
@@ -925,22 +926,22 @@
 #-------------------------------------------------------------------------------
 
     def OnChar(self, event):
-        xpos, ypos = self.GetScrollPos(wxHORIZONTAL), self.GetScrollPos(wxVERTICAL)
-        xmax = self.GetScrollRange(wxHORIZONTAL) - self.GetScrollThumb(wxHORIZONTAL)
-        ymax = self.GetScrollRange(wxVERTICAL) - self.GetScrollThumb(wxVERTICAL)
+        xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL)
+        xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL)
+        ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL)
         keycode = event.GetKeyCode()
         if self.Scaling:
             scaling = self.Scaling
         else:
             scaling = (8, 8)
-        if keycode == WXK_DELETE and self.SelectedElement:
+        if keycode == wx.WXK_DELETE and self.SelectedElement:
             self.SelectedElement.Clean()
             self.SelectedElement.Delete()
             self.SelectedElement = None
             self.RefreshBuffer()
             self.RefreshScrollBars()
             self.Refresh()
-        elif keycode == WXK_LEFT:
+        elif keycode == wx.WXK_LEFT:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(0, ypos)
             elif event.ControlDown():
@@ -950,7 +951,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_RIGHT:
+        elif keycode == wx.WXK_RIGHT:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xmax, ypos)
             elif event.ControlDown():
@@ -960,7 +961,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_UP:
+        elif keycode == wx.WXK_UP:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xpos, 0)
             elif event.ControlDown():
@@ -970,7 +971,7 @@
                 self.RefreshBuffer()
                 self.RefreshScrollBars()
                 self.Refresh()
-        elif keycode == WXK_DOWN:
+        elif keycode == wx.WXK_DOWN:
             if event.ControlDown() and event.ShiftDown():
                 self.Scroll(xpos, ymax)
             elif event.ControlDown():
@@ -989,7 +990,7 @@
         dialog = BlockPropertiesDialog(self.Parent)
         dialog.SetBlockList(self.Controler.GetBlockTypes())
         dialog.SetMinBlockSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             if "name" in values:
@@ -1018,7 +1019,7 @@
         if returntype:
             varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype))
         dialog.SetVariables(varlist)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id)
@@ -1035,7 +1036,7 @@
     def AddNewConnection(self, bbox):
         dialog = ConnectionPropertiesDialog(self.Parent)
         dialog.SetMinConnectionSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             connection = FBD_Connector(self, values["type"], values["name"], id)
@@ -1050,8 +1051,8 @@
         dialog.Destroy()
 
     def AddNewComment(self, bbox):
-        dialog = wxTextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wxOK|wxCANCEL|wxTE_MULTILINE)
-        if dialog.ShowModal() == wxID_OK:
+        dialog = wx.TextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE)
+        if dialog.ShowModal() == wx.ID_OK:
             value = dialog.GetValue()
             id = self.GetNewId()
             comment = Comment(self, value, id)
@@ -1077,7 +1078,7 @@
         dialog.SetVariables(varlist)
         dialog.SetValues({"name":"","type":CONTACT_NORMAL})
         dialog.SetElementSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             contact = LD_Contact(self, values["type"], values["name"], id)
@@ -1105,7 +1106,7 @@
         dialog.SetVariables(varlist)
         dialog.SetValues({"name":"","type":COIL_NORMAL})
         dialog.SetElementSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             coil = LD_Coil(self, values["type"], values["name"], id)
@@ -1122,7 +1123,7 @@
     def AddNewPowerRail(self, bbox):
         dialog = LDPowerRailDialog(self.Parent)
         dialog.SetMinSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])])
@@ -1139,7 +1140,7 @@
     def AddNewTransition(self, bbox):
         dialog = TransitionContentDialog(self.Parent)
         dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             transition = SFC_Transition(self, values["type"], values["value"], id)
@@ -1157,7 +1158,7 @@
     def AddNewDivergence(self, bbox):
         dialog = DivergenceCreateDialog(self.Parent)
         dialog.SetMinSize((bbox.width, bbox.height))
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             id = self.GetNewId()
             values = dialog.GetValues()
             divergence = SFC_Divergence(self, values["type"], values["number"], id)
@@ -1184,7 +1185,7 @@
         values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()}
         values["extension"] = block.GetExtension()
         dialog.SetValues(values)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             if "name" in values:
                 block.SetName(values["name"])
@@ -1210,7 +1211,7 @@
         dialog.SetVariables(varlist)
         values = {"name" : variable.GetName(), "type" : variable.GetType()}
         dialog.SetValues(values)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             old_type = variable.GetType()
             values = dialog.GetValues()
             variable.SetName(values["name"])
@@ -1231,7 +1232,7 @@
         dialog.SetMinConnectionSize(connection.GetSize())
         values = {"name" : connection.GetName(), "type" : connection.GetType()}
         dialog.SetValues(values)
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             old_type = connection.GetType()
             values = dialog.GetValues()
             connection.SetName(values["name"])
@@ -1259,7 +1260,7 @@
         values = {"name" : contact.GetName(), "type" : contact.GetType()}
         dialog.SetValues(values)
         dialog.SetElementSize(contact.GetSize())
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             contact.SetName(values["name"])
             contact.SetType(values["type"])
@@ -1285,12 +1286,12 @@
         values = {"name" : coil.GetName(), "type" : coil.GetType()}
         dialog.SetValues(values)
         dialog.SetElementSize(coil.GetSize())
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             values = dialog.GetValues()
             coil.SetName(values["name"])
             coil.SetType(values["type"])
             coil.SetSize(values["width"], values["height"])
-            self.RefreshContactModel(coil)
+            self.RefreshCoilModel(coil)
             self.RefreshBuffer()
             self.RefreshScrollBars()
             self.Refresh()
@@ -1299,7 +1300,7 @@
     def EditPowerRailContent(self, powerrail):
         dialog = LDPowerRailDialog(self.Parent, powerrail.GetType(), len(powerrail.GetConnectors()))
         dialog.SetMinSize(powerrail.GetSize())
-        if dialog.ShowModal() == wxID_OK:
+        if dialog.ShowModal() == wx.ID_OK:
             old_type = powerrail.GetType()
             values = dialog.GetValues()
             powerrail.SetType(values["type"], [True for i in xrange(values["number"])])
@@ -1313,43 +1314,52 @@
             self.RefreshScrollBars()
             self.Refresh()
         dialog.Destroy()
-##
-##
-##    def AddNewTransition(self, bbox):
-##        dialog = TransitionContentDialog(self.Parent)
-##        dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
-##        if dialog.ShowModal() == wxID_OK:
-##            id = self.GetNewId()
-##            values = dialog.GetValues()
-##            transition = SFC_Transition(self, values["type"], values["value"], id)
-##            transition.SetPosition(bbox.x, bbox.y)
-##            min_width, min_height = transition.GetMinSize()
-##            transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
-##            self.Blocks.append(transition)
-##            self.Elements.append(transition)
-##            self.Controler.AddCurrentElementEditingTransition(id)
-##            self.RefreshTransitionModel(transition)
-##            self.RefreshScrollBars()
-##            self.Refresh()
-##        dialog.Destroy()
-##
-##    def AddNewDivergence(self, bbox):
-##        dialog = DivergenceCreateDialog(self.Parent)
-##        dialog.SetMinSize((bbox.width, bbox.height))
-##        if dialog.ShowModal() == wxID_OK:
-##            id = self.GetNewId()
-##            values = dialog.GetValues()
-##            divergence = SFC_Divergence(self, values["type"], values["number"], id)
-##            divergence.SetPosition(bbox.x, bbox.y)
-##            min_width, min_height = divergence.GetMinSize()
-##            divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
-##            self.Blocks.append(divergence)
-##            self.Elements.append(divergence)
-##            self.Controler.AddCurrentElementEditingDivergence(id, values["type"])
-##            self.RefreshDivergenceModel(divergence)
-##            self.RefreshScrollBars()
-##            self.Refresh()
-##        dialog.Destroy()
+
+
+    def EditTransitionContent(self, transition):
+        dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE)
+        dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
+        dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition()})
+        dialog.SetElementSize(transition.GetSize())
+        if dialog.ShowModal() == wx.ID_OK:
+            values = dialog.GetValues()
+            transition.SetType(values["type"],values["value"])
+            transition.RefreshModel()
+            self.RefreshBuffer()
+            self.RefreshScrollBars()
+            self.Refresh()
+        dialog.Destroy()
+
+    def EditJumpContent(self, jump):
+        choices = []
+        for block in self.Blocks:
+            if isinstance(block, SFC_Step):
+                choices.append(block.GetName())
+        dialog = wx.SingleChoiceDialog(self.Parent, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL)
+        dialog.SetSelection(choices.index(jump.GetTarget()))
+        if dialog.ShowModal() == wx.ID_OK:
+            value = dialog.GetStringSelection()
+            jump.SetTarget(value)
+            jump.RefreshModel()
+            self.RefreshBuffer()
+            self.RefreshScrollBars()
+            self.Refresh()
+        dialog.Destroy()
+
+    def EditActionBlockContent(self, actionblock):
+        dialog = ActionBlockDialog(self.Parent)
+        dialog.SetQualifierList(self.Controler.GetQualifierTypes())
+        dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
+        dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
+        dialog.SetValues(actionblock.GetActions())
+        if dialog.ShowModal() == wx.ID_OK:
+            actions = dialog.GetValues()
+            actionblock.SetActions(actions)
+            actionblock.RefreshModel()
+            self.RefreshBuffer()
+            self.RefreshScrollBars()
+            self.Refresh()
+        dialog.Destroy()
 
 #-------------------------------------------------------------------------------
 #                          Model update functions
@@ -1627,7 +1637,7 @@
     def OnPaint(self, event):
         dc = self.GetLogicalDC()
         dc.Clear()
-        dc.SetPen(wxPen(wxColour(230, 230, 230)))
+        dc.SetPen(wx.Pen(wx.Colour(230, 230, 230)))
         if self.Scaling and self.DrawGrid:
             width, height = dc.GetSize()
             for i in xrange(1, width / self.Scaling[0] + 1):
--- a/graphics/FBD_Objects.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/graphics/FBD_Objects.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 
 from GraphicCommons import *
@@ -69,7 +68,7 @@
     
     # Refresh the size of text for name
     def RefreshNameSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         self.NameSize = dc.GetTextExtent(self.Name)
     
     # Refresh the block bounding box
@@ -85,7 +84,7 @@
         else:
             bbx_y = self.Pos.y
             bbx_height = self.Size[1]
-        self.BoundingBox = wxRect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
+        self.BoundingBox = wx.Rect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
     
     # Refresh the positions of the block connectors
     def RefreshConnectors(self):
@@ -95,12 +94,12 @@
         # Update inputs positions
         position = BLOCK_LINE_SIZE + linesize / 2
         for input in self.Inputs:
-            input.SetPosition(wxPoint(0, position))
+            input.SetPosition(wx.Point(0, position))
             position += linesize
         # Update outputs positions
         position = BLOCK_LINE_SIZE + linesize / 2
         for output in self.Outputs:
-            output.SetPosition(wxPoint(self.Size[0], position))
+            output.SetPosition(wx.Point(self.Size[0], position))
             position += linesize
         self.RefreshConnected()
     
@@ -158,7 +157,7 @@
         if type != self.Type or self.Extension != extension: 
             if type != self.Type:
                 self.Type = type
-                dc = wxClientDC(self.Parent)
+                dc = wx.ClientDC(self.Parent)
                 self.TypeSize = dc.GetTextExtent(self.Type)
             self.Extension = extension
             # Find the block definition from type given and create the corresponding
@@ -178,7 +177,7 @@
             # Extract the inputs properties and create the corresponding connector
             self.Inputs = []
             for input_name, input_type, input_modifier in inputs:
-                connector = Connector(self, input_name, input_type, wxPoint(0, 0), WEST, onlyone = True)
+                connector = Connector(self, input_name, input_type, wx.Point(0, 0), WEST, onlyone = True)
                 if input_modifier == "negated":
                     connector.SetNegated(True)
                 elif input_modifier != "none":
@@ -187,7 +186,7 @@
             # Extract the outputs properties and create the corresponding connector
             self.Outputs = []
             for output_name, output_type, output_modifier in outputs:
-                connector = Connector(self, output_name, output_type, wxPoint(0, 0), EAST)
+                connector = Connector(self, output_name, output_type, wx.Point(0, 0), EAST)
                 if output_modifier == "negated":
                     connector.SetNegated(True)
                 elif output_modifier != "none":
@@ -278,8 +277,8 @@
     
     # Draws block
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         # Draw a rectangle with the block size
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         # Draw block name and block type
@@ -335,7 +334,7 @@
     
     # Refresh the size of text for name
     def RefreshNameSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         self.NameSize = dc.GetTextExtent(self.Name)
     
     # Refresh the variable bounding box
@@ -348,14 +347,14 @@
             bbx_width = self.Size[0] + 2 * CONNECTOR_SIZE
         else:
             bbx_width = self.Size[0] + CONNECTOR_SIZE
-        self.BoundingBox = wxRect(bbx_x, self.Pos.y, bbx_width + 1, self.Size[1] + 1)
+        self.BoundingBox = wx.Rect(bbx_x, self.Pos.y, bbx_width + 1, self.Size[1] + 1)
     
     # Refresh the position of the variable connector
     def RefreshConnectors(self):
         if self.Input:
-            self.Input.SetPosition(wxPoint(0, self.Size[1] / 2))
+            self.Input.SetPosition(wx.Point(0, self.Size[1] / 2))
         if self.Output:
-            self.Output.SetPosition(wxPoint(self.Size[0], self.Size[1] / 2))
+            self.Output.SetPosition(wx.Point(self.Size[0], self.Size[1] / 2))
         self.RefreshConnected()
     
     # Refresh the position of wires connected to connector
@@ -414,9 +413,9 @@
             self.Output = None
             # Create an input or output connector according to variable type
             if self.Type != INPUT:
-                self.Input = Connector(self, "", value_type, wxPoint(0, 0), WEST, onlyone = True)
+                self.Input = Connector(self, "", value_type, wx.Point(0, 0), WEST, onlyone = True)
             if self.Type != OUTPUT:
-                self.Output = Connector(self, "", value_type, wxPoint(0, 0), EAST)
+                self.Output = Connector(self, "", value_type, wx.Point(0, 0), EAST)
             self.RefreshConnectors()
         elif value_type != self.ValueType:
             if self.Input:
@@ -469,8 +468,8 @@
     
     # Draws variable
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         # Draw a rectangle with the variable size
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         # Draw variable name
@@ -500,13 +499,13 @@
         self.Type = type
         self.Name = name
         self.Id = id
-        self.Pos = wxPoint(0, 0)
-        self.Size = wxSize(0, 0)
+        self.Pos = wx.Point(0, 0)
+        self.Size = wx.Size(0, 0)
         # Create an input or output connector according to connection type
         if self.Type == CONNECTOR:
-            self.Connector = Connector(self, "", "ANY", wxPoint(0, 0), WEST, onlyone = True)
-        else:
-            self.Connector = Connector(self, "", "ANY", wxPoint(0, 0), EAST)
+            self.Connector = Connector(self, "", "ANY", wx.Point(0, 0), WEST, onlyone = True)
+        else:
+            self.Connector = Connector(self, "", "ANY", wx.Point(0, 0), EAST)
         self.RefreshConnectors()
         self.RefreshNameSize()
     
@@ -525,7 +524,7 @@
     
     # Refresh the size of text for name
     def RefreshNameSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         self.NameSize = dc.GetTextExtent(self.Name)
     
     # Refresh the connection bounding box
@@ -535,14 +534,14 @@
         else:
             bbx_x = self.Pos.x
         bbx_width = self.Size[0] + CONNECTOR_SIZE
-        self.BoundingBox = wxRect(bbx_x, self.Pos.y, bbx_width, self.Size[1])
+        self.BoundingBox = wx.Rect(bbx_x, self.Pos.y, bbx_width, self.Size[1])
     
     # Refresh the position of the connection connector
     def RefreshConnectors(self):
         if self.Type == CONNECTOR:
-            self.Connector.SetPosition(wxPoint(0, self.Size[1] / 2))
-        else:
-            self.Connector.SetPosition(wxPoint(self.Size[0], self.Size[1] / 2))
+            self.Connector.SetPosition(wx.Point(0, self.Size[1] / 2))
+        else:
+            self.Connector.SetPosition(wx.Point(self.Size[0], self.Size[1] / 2))
         self.RefreshConnected()
     
     # Refresh the position of wires connected to connector
@@ -567,9 +566,9 @@
             self.Clean()
             # Create an input or output connector according to connection type
             if self.Type == CONNECTOR:
-                self.Connector = Connector(self, "", "ANY", wxPoint(0, 0), WEST, onlyone = True)
+                self.Connector = Connector(self, "", "ANY", wx.Point(0, 0), WEST, onlyone = True)
             else:
-                self.Connector = Connector(self, "", "ANY", wxPoint(0, 0), EAST)
+                self.Connector = Connector(self, "", "ANY", wx.Point(0, 0), EAST)
             self.RefreshConnectors()
     
     # Returns the connection type
@@ -613,8 +612,8 @@
     
     # Draws connection
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         # Draw a rectangle with the connection size with arrows in 
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         arrowsize = min(self.Size[1] / 2, (self.Size[0] - self.NameSize[0] - 10) / 2)
--- a/graphics/GraphicCommons.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/graphics/GraphicCommons.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 from math import *
 
@@ -91,12 +90,12 @@
 def ResetCursors():
     global CURSORS
     if CURSORS == None:
-        CURSORS = [wxNullCursor, 
-                   wxStockCursor(wxCURSOR_HAND),
-                   wxStockCursor(wxCURSOR_SIZENWSE),
-                   wxStockCursor(wxCURSOR_SIZENESW),
-                   wxStockCursor(wxCURSOR_SIZEWE),
-                   wxStockCursor(wxCURSOR_SIZENS)]
+        CURSORS = [wx.NullCursor, 
+                   wx.StockCursor(wx.CURSOR_HAND),
+                   wx.StockCursor(wx.CURSOR_SIZENWSE),
+                   wx.StockCursor(wx.CURSOR_SIZENESW),
+                   wx.StockCursor(wx.CURSOR_SIZEWE),
+                   wx.StockCursor(wx.CURSOR_SIZENS)]
            
 HANDLE_CURSORS = {
     (1, 1) : 2,
@@ -197,15 +196,15 @@
         pos = GetScaledEventPosition(event, dc, scaling)
         # Save the point for calculate the box position and size
         self.startPoint = pos
-        self.currentBox = wxRect(pos.x, pos.y, 0, 0)
-        self.drawingSurface.SetCursor(wxStockCursor(wxCURSOR_CROSS))
+        self.currentBox = wx.Rect(pos.x, pos.y, 0, 0)
+        self.drawingSurface.SetCursor(wx.StockCursor(wx.CURSOR_CROSS))
         self.Redraw()
     
     # Method called when dragging with a box edited
     def OnMotion(self, event, dc, scaling):
         pos = GetScaledEventPosition(event, dc, scaling)
         # Save the last position and size of the box for erasing it
-        self.lastBox = wxRect(self.currentBox.x, self.currentBox.y, self.currentBox.width,
+        self.lastBox = wx.Rect(self.currentBox.x, self.currentBox.y, self.currentBox.width,
             self.currentBox.height)
         # Calculate new position and size of the box 
         if pos.x >= self.startPoint.x:
@@ -224,7 +223,7 @@
     
     # Method called when dragging is stopped
     def OnLeftUp(self, event, dc, scaling):
-        self.drawingSurface.SetCursor(wxNullCursor)
+        self.drawingSurface.SetCursor(wx.NullCursor)
         self.lastBox = self.currentBox
         self.currentBox = None
         self.Redraw()
@@ -232,9 +231,9 @@
     # Method that erase the last box and draw the new box
     def Redraw(self):
         dc = self.drawingSurface.GetLogicalDC()
-        dc.SetPen(wxPen(wxWHITE, 1, wxDOT))
-        dc.SetBrush(wxTRANSPARENT_BRUSH)
-        dc.SetLogicalFunction(wxXOR)
+        dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
+        dc.SetBrush(wx.TRANSPARENT_BRUSH)
+        dc.SetLogicalFunction(wx.XOR)
         if self.lastBox:
             # Erase last box
             dc.DrawRectangle(self.lastBox.x, self.lastBox.y, self.lastBox.width,
@@ -247,9 +246,9 @@
     # Erase last box
     def Erase(self):
         dc = self.drawingSurface.GetLogicalDC()
-        dc.SetPen(wxPen(wxWHITE, 1, wxDOT))
-        dc.SetBrush(wxTRANSPARENT_BRUSH)
-        dc.SetLogicalFunction(wxXOR)
+        dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
+        dc.SetBrush(wx.TRANSPARENT_BRUSH)
+        dc.SetLogicalFunction(wx.XOR)
         if self.lastBox:
             dc.DrawRectangle(self.lastBox.x, self.lastBox.y, self.lastBox.width,
                 self.lastBox.height)
@@ -257,9 +256,9 @@
     # Draw current box
     def Draw(self):
         dc = self.drawingSurface.GetLogicalDC()
-        dc.SetPen(wxPen(wxWHITE, 1, wxDOT))
-        dc.SetBrush(wxTRANSPARENT_BRUSH)
-        dc.SetLogicalFunction(wxXOR)
+        dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
+        dc.SetBrush(wx.TRANSPARENT_BRUSH)
+        dc.SetLogicalFunction(wx.XOR)
         if self.currentBox:
             # Draw current box
             dc.DrawRectangle(self.currentBox.x, self.currentBox.y, self.currentBox.width,
@@ -284,9 +283,9 @@
         self.Handle = False
         self.Dragging = False
         self.Selected = False
-        self.Pos = wxPoint(0, 0)
-        self.Size = wxSize(0, 0)
-        self.BoundingBox = wxRect(0, 0, 0, 0)
+        self.Pos = wx.Point(0, 0)
+        self.Size = wx.Size(0, 0)
+        self.BoundingBox = wx.Rect(0, 0, 0, 0)
         self.CurrentCursor = 0
         ResetCursors()
     
@@ -318,7 +317,7 @@
     
     # Refresh the element Bounding Box
     def RefreshBoundingBox(self):
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1])
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1])
     
     # Refresh the element connectors position
     def RefreshConnectors(self):
@@ -363,9 +362,9 @@
     
     # Test if the point is on a handle of this element
     def TestHandle(self, pt):
-        extern_rect = wxRect(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y - HANDLE_SIZE - 2, 
+        extern_rect = wx.Rect(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y - HANDLE_SIZE - 2, 
             self.BoundingBox.width + 2 * HANDLE_SIZE + 4, self.BoundingBox.height + 2 * HANDLE_SIZE + 4)
-        intern_rect = wxRect(self.BoundingBox.x - 2, self.BoundingBox.y - 2, 
+        intern_rect = wx.Rect(self.BoundingBox.x - 2, self.BoundingBox.y - 2, 
             self.BoundingBox.width + 4, self.BoundingBox.height + 4)
         # Verify that this element is selected
         if self.Selected and extern_rect.InsideXY(pt.x, pt.y) and not intern_rect.InsideXY(pt.x, pt.y):
@@ -507,8 +506,8 @@
     # Draws the handles of this element if it is selected
     def Draw(self, dc):
         if self.Selected:
-            dc.SetPen(wxBLACK_PEN)
-            dc.SetBrush(wxBLACK_BRUSH)
+            dc.SetPen(wx.BLACK_PEN)
+            dc.SetBrush(wx.BLACK_BRUSH)
             dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE)
             dc.DrawRectangle(self.BoundingBox.x + (self.BoundingBox.width - HANDLE_SIZE) / 2,
                 self.BoundingBox.y - HANDLE_SIZE - 2, HANDLE_SIZE, HANDLE_SIZE)
@@ -522,7 +521,7 @@
                 self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE)
             dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + self.BoundingBox.height + 2, HANDLE_SIZE, HANDLE_SIZE)
             dc.DrawRectangle(self.BoundingBox.x - HANDLE_SIZE - 2, self.BoundingBox.y + (self.BoundingBox.height - HANDLE_SIZE) / 2, HANDLE_SIZE, HANDLE_SIZE)
-            dc.SetBrush(wxWHITE_BRUSH)
+            dc.SetBrush(wx.WHITE_BRUSH)
 
 
 #-------------------------------------------------------------------------------
@@ -632,9 +631,9 @@
                 miny = min(miny, bbox.y)
                 maxx = max(maxx, bbox.x + bbox.width)
                 maxy = max(maxy, bbox.y + bbox.height)
-            self.BoundingBox = wxRect(minx, miny, maxx - minx, maxy - miny)
+            self.BoundingBox = wx.Rect(minx, miny, maxx - minx, maxy - miny)
         else:
-            self.BoundingBox = wxRect(0, 0, 0, 0)
+            self.BoundingBox = wx.Rect(0, 0, 0, 0)
 
     # Forbids to change the group position
     def SetPosition(x, y):
@@ -684,7 +683,7 @@
         self.Negated = negated
         self.Edge = edge
         self.OneConnected = onlyone
-        self.Pen = wxBLACK_PEN
+        self.Pen = wx.BLACK_PEN
         self.RefreshNameSize()
     
     # Change the connector pen
@@ -693,7 +692,7 @@
     
     # Make a clone of the connector
     def Clone(self):
-        return Connector(self.ParentBlock, self.Name, self.Type, wxPoint(self.Pos[0], self.Pos[1]),
+        return Connector(self.ParentBlock, self.Name, self.Type, wx.Point(self.Pos[0], self.Pos[1]),
                 self.Direction, self.Negated)
     
     # Returns the connector parent block
@@ -720,7 +719,7 @@
     # Changes the connector name size
     def RefreshNameSize(self):
         if self.Name != "":
-            dc = wxClientDC(self.ParentBlock.Parent)
+            dc = wx.ClientDC(self.ParentBlock.Parent)
             self.NameSize = dc.GetTextExtent(self.Name)
         else:
             self.NameSize = 0, 0
@@ -751,7 +750,7 @@
         else:
             x = parent_pos[0] + self.Pos.x
             y = parent_pos[1] + self.Pos.y
-        return wxPoint(x, y)
+        return wx.Point(x, y)
     
     # Change the connector relative position
     def SetPosition(self, pos):
@@ -820,9 +819,9 @@
             for wire, index in self.Wires:
                 if wire not in exclude:
                     if index == 0:
-                        wire.MoveStartPoint(wxPoint(x, y))
+                        wire.MoveStartPoint(wx.Point(x, y))
                     else:
-                        wire.MoveEndPoint(wxPoint(x, y))
+                        wire.MoveEndPoint(wx.Point(x, y))
     
     # Refreshes the model of all the wires connected
     def RefreshWires(self):
@@ -839,9 +838,9 @@
         for wire, handle in self.Wires:
             # Get other connector connected to each wire
             if handle == 0:
-                connector = blocks.GetEndConnected()
+                connector = wire.GetEndConnected()
             else:
-                connector = blocks.GetStartConnected()
+                connector = wire.GetStartConnected()
             # Get parent block for this connector
             if connector:
                 block = connector.GetParentBlock()
@@ -876,14 +875,14 @@
             y = parent_pos[1] + self.Pos.y + self.Direction[1] * CONNECTOR_SIZE - ANCHOR_DISTANCE
             width = ANCHOR_DISTANCE * 2 + abs(self.Direction[0]) * CONNECTOR_SIZE
             height = ANCHOR_DISTANCE * 2 + abs(self.Direction[1]) * CONNECTOR_SIZE
-            rect = wxRect(x, y, width, height)
+            rect = wx.Rect(x, y, width, height)
             return rect.InsideXY(pt.x, pt.y)
         return False
     
     # Draws the connector
     def Draw(self, dc):
         dc.SetPen(self.Pen)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetBrush(wx.WHITE_BRUSH)
         parent_pos = self.ParentBlock.GetPosition()
         if self.Negated:
             # If connector is negated, draw a circle
@@ -988,25 +987,25 @@
         # The selected segment is reinitialised
         if segment == None:
             if self.StartConnected:
-                self.StartConnected.SetPen(wxBLACK_PEN)
+                self.StartConnected.SetPen(wx.BLACK_PEN)
             if self.EndConnected:
-                self.EndConnected.SetPen(wxBLACK_PEN)
+                self.EndConnected.SetPen(wx.BLACK_PEN)
         # The segment selected is the first
         elif segment == 0:
             if self.StartConnected:
-                self.StartConnected.SetPen(wxRED_PEN)
+                self.StartConnected.SetPen(wx.RED_PEN)
             if self.EndConnected:
                 # There is only one segment
                 if len(self.Segments) == 1:
-                    self.EndConnected.SetPen(wxRED_PEN)
+                    self.EndConnected.SetPen(wx.RED_PEN)
                 else:
-                    self.EndConnected.SetPen(wxBLACK_PEN)
+                    self.EndConnected.SetPen(wx.BLACK_PEN)
         # The segment selected is the last
         elif segment == len(self.Segments) - 1:
             if self.StartConnected:
-                self.StartConnected.SetPen(wxBLACK_PEN)
+                self.StartConnected.SetPen(wx.BLACK_PEN)
             if self.EndConnected:
-                self.EndConnected.SetPen(wxRED_PEN)
+                self.EndConnected.SetPen(wx.RED_PEN)
         self.SelectedSegment = segment
     
     # Reinitialize the wire points
@@ -1043,9 +1042,9 @@
                 maxx, maxbbxx = max(maxx, self.Points[-1].x), max(maxbbxx, self.Points[-1].x + end_radius)
                 miny, minbbxy = min(miny, self.Points[-1].y), min(minbbxy, self.Points[-1].y - end_radius)
                 maxy, maxbbxy = max(maxy, self.Points[-1].y), max(maxbbxy, self.Points[-1].y + end_radius)
-            self.Pos = wxPoint(minx, miny)
-            self.Size = wxSize(maxx -minx + 1, maxy - miny + 1)
-            self.BoundingBox = wxRect(minbbxx, minbbxy, maxbbxx - minbbxx + 1, maxbbxy - minbbxy + 1)
+            self.Pos = wx.Point(minx, miny)
+            self.Size = wx.Size(maxx -minx + 1, maxy - miny + 1)
+            self.BoundingBox = wx.Rect(minbbxx, minbbxy, maxbbxx - minbbxx + 1, maxbbxy - minbbxy + 1)
     
     # Refresh the realpoints that permits to keep the proportionality in wire during resizing
     def RefreshRealPoints(self):
@@ -1082,11 +1081,11 @@
     def HitTest(self, pt):
         test = False
         for i in xrange(len(self.Points) - 1):
-            rect = wxRect(0, 0, 0, 0)
+            rect = wx.Rect(0, 0, 0, 0)
             x1, y1 = self.Points[i].x, self.Points[i].y
             x2, y2 = self.Points[i + 1].x, self.Points[i + 1].y
             # Calculate a rectangle around the segment
-            rect = wxRect(min(x1, x2) - ANCHOR_DISTANCE, min(y1, y2) - ANCHOR_DISTANCE,
+            rect = wx.Rect(min(x1, x2) - ANCHOR_DISTANCE, min(y1, y2) - ANCHOR_DISTANCE,
                 abs(x1 - x2) + 2 * ANCHOR_DISTANCE, abs(y1 - y2) + 2 * ANCHOR_DISTANCE)
             test |= rect.InsideXY(pt.x, pt.y) 
         return test
@@ -1094,13 +1093,13 @@
     # Returns the wire start or end point if the point given is on one of them 
     def TestPoint(self, pt):
         # Test the wire start point
-        rect = wxRect(self.Points[0].x - ANCHOR_DISTANCE, self.Points[0].y - ANCHOR_DISTANCE,
+        rect = wx.Rect(self.Points[0].x - ANCHOR_DISTANCE, self.Points[0].y - ANCHOR_DISTANCE,
             2 * ANCHOR_DISTANCE, 2 * ANCHOR_DISTANCE)
         if rect.InsideXY(pt.x, pt.y):
             return 0
         # Test the wire end point
         if len(self.Points) > 1:
-            rect = wxRect(self.Points[-1].x - ANCHOR_DISTANCE, self.Points[-1].y - ANCHOR_DISTANCE,
+            rect = wx.Rect(self.Points[-1].x - ANCHOR_DISTANCE, self.Points[-1].y - ANCHOR_DISTANCE,
                 2 * ANCHOR_DISTANCE, 2 * ANCHOR_DISTANCE)
             if rect.InsideXY(pt.x, pt.y):
                 return -1
@@ -1114,7 +1113,7 @@
                 x1, y1 = self.Points[i].x, self.Points[i].y
                 x2, y2 = self.Points[i + 1].x, self.Points[i + 1].y
                 # Calculate a rectangle around the segment
-                rect = wxRect(min(x1, x2) - ANCHOR_DISTANCE, min(y1, y2) - ANCHOR_DISTANCE,
+                rect = wx.Rect(min(x1, x2) - ANCHOR_DISTANCE, min(y1, y2) - ANCHOR_DISTANCE,
                     abs(x1 - x2) + 2 * ANCHOR_DISTANCE, abs(y1 - y2) + 2 * ANCHOR_DISTANCE)
                 if rect.InsideXY(pt.x, pt.y):
                     return i, self.Segments[i]
@@ -1123,14 +1122,14 @@
     # Define the wire points
     def SetPoints(self, points):
         if len(points) > 1:
-            self.Points = [wxPoint(x, y) for x, y in points]
+            self.Points = [wx.Point(x, y) for x, y in points]
             # Calculate the start and end directions
             self.StartPoint = [None, vector(self.Points[0], self.Points[1])]
             self.EndPoint = [None, vector(self.Points[-1], self.Points[-2])]
             # Calculate the start and end points
-            self.StartPoint[0] = wxPoint(self.Points[0].x + CONNECTOR_SIZE * self.StartPoint[1][0], 
+            self.StartPoint[0] = wx.Point(self.Points[0].x + CONNECTOR_SIZE * self.StartPoint[1][0], 
                 self.Points[0].y + CONNECTOR_SIZE * self.StartPoint[1][1])
-            self.EndPoint[0] = wxPoint(self.Points[-1].x + CONNECTOR_SIZE * self.EndPoint[1][0], 
+            self.EndPoint[0] = wx.Point(self.Points[-1].x + CONNECTOR_SIZE * self.EndPoint[1][0], 
                 self.Points[-1].y + CONNECTOR_SIZE * self.EndPoint[1][1])
             self.Points[0] = self.StartPoint[0]
             self.Points[-1] = self.EndPoint[0]
@@ -1150,9 +1149,9 @@
     # Returns a list of the position of all wire points
     def GetPoints(self, invert = False):
         points = self.VerifyPoints()
-        points[0] = wxPoint(points[0].x - CONNECTOR_SIZE * self.StartPoint[1][0], 
+        points[0] = wx.Point(points[0].x - CONNECTOR_SIZE * self.StartPoint[1][0], 
                 points[0].y - CONNECTOR_SIZE * self.StartPoint[1][1])
-        points[-1] = wxPoint(points[-1].x - CONNECTOR_SIZE * self.EndPoint[1][0], 
+        points[-1] = wx.Point(points[-1].x - CONNECTOR_SIZE * self.EndPoint[1][0], 
                 points[-1].y - CONNECTOR_SIZE * self.EndPoint[1][1])
         # An inversion of the list is asked
         if invert:
@@ -1192,9 +1191,9 @@
     def GeneratePoints(self, realpoints = True):
         i = 0
         # Calculate the start enad end points with the minimum segment size in the right direction
-        end = wxPoint(self.EndPoint[0].x + self.EndPoint[1][0] * MIN_SEGMENT_SIZE,
+        end = wx.Point(self.EndPoint[0].x + self.EndPoint[1][0] * MIN_SEGMENT_SIZE,
             self.EndPoint[0].y + self.EndPoint[1][1] * MIN_SEGMENT_SIZE)
-        start = wxPoint(self.StartPoint[0].x + self.StartPoint[1][0] * MIN_SEGMENT_SIZE, 
+        start = wx.Point(self.StartPoint[0].x + self.StartPoint[1][0] * MIN_SEGMENT_SIZE, 
             self.StartPoint[0].y + self.StartPoint[1][1] * MIN_SEGMENT_SIZE)
         # Evaluate the point till it's the last
         while i < len(self.Points) - 1:
@@ -1206,14 +1205,14 @@
                 if i == 0:
                     # If the end point is not in the start direction, a point is added
                     if v_end != self.Segments[0] or v_end == self.EndPoint[1]:
-                        self.Points.insert(1, wxPoint(start.x, start.y))
+                        self.Points.insert(1, wx.Point(start.x, start.y))
                         self.Segments.insert(1, DirectionChoice((self.Segments[0][1], 
                             self.Segments[0][0]), v_end, self.EndPoint[1]))
                 # The current point is the second
                 elif i == 1:
                     # The previous direction and the target direction are mainly opposed, a point is added
                     if product(v_end, self.Segments[0]) < 0:
-                        self.Points.insert(2, wxPoint(self.Points[1].x, self.Points[1].y))
+                        self.Points.insert(2, wx.Point(self.Points[1].x, self.Points[1].y))
                         self.Segments.insert(2, DirectionChoice((self.Segments[1][1], 
                             self.Segments[1][0]), v_end, self.EndPoint[1]))
                     # The previous direction and the end direction are the same or they are
@@ -1226,7 +1225,7 @@
                             self.Points[1].y = end.y
                         # If the previous direction and the end direction are the same, a point is added
                         if product(self.Segments[0], self.EndPoint[1]) > 0:
-                            self.Points.insert(2, wxPoint(self.Points[1].x, self.Points[1].y))
+                            self.Points.insert(2, wx.Point(self.Points[1].x, self.Points[1].y))
                             self.Segments.insert(2, DirectionChoice((self.Segments[1][1], 
                                 self.Segments[1][0]), v_end, self.EndPoint[1]))
                     else:
@@ -1236,7 +1235,7 @@
                             self.Points[1].x = (end.x + start.x) / 2
                         if self.Segments[0][1] != 0:
                             self.Points[1].y = (end.y + start.y) / 2
-                        self.Points.insert(2, wxPoint(self.Points[1].x, self.Points[1].y))
+                        self.Points.insert(2, wx.Point(self.Points[1].x, self.Points[1].y))
                         self.Segments.insert(2, DirectionChoice((self.Segments[1][1], 
                             self.Segments[1][0]), v_end, self.EndPoint[1]))
                 else:
@@ -1257,12 +1256,13 @@
                             # If the current point is the third, test if the second 
                             # point can be aligned with the end point
                             if i == 2:
-                                test_point = wxPoint(self.Points[1].x, self.Points[1].y)
+                                test_point = wx.Point(self.Points[1].x, self.Points[1].y)
                                 if self.Segments[1][0] != 0:
                                     test_point.y = end.y
                                 if self.Segments[1][1] != 0:
                                     test_point.x = end.x
-                                test = norm(vector(self.Points[0], test_point, False)) > MIN_SEGMENT_SIZE
+                                vector_test = vector(self.Points[0], test_point, False)
+                                test = norm(vector_test) > MIN_SEGMENT_SIZE and product(self.Segments[0], vector_test) > 0
                             # The previous point can be aligned
                             if test:
                                 self.Points[i].x, self.Points[i].y = end.x, end.y
@@ -1278,7 +1278,7 @@
                                     self.Points[2].x = (self.Points[1].x + end.x) / 2
                                 if self.Segments[1][1] != 0:
                                     self.Points[2].y = (self.Points[1].y + end.y) / 2
-                                self.Points.insert(3, wxPoint(self.Points[2].x, self.Points[2].y))
+                                self.Points.insert(3, wx.Point(self.Points[2].x, self.Points[2].y))
                                 self.Segments.insert(3, DirectionChoice((self.Segments[2][1], 
                                     self.Segments[2][0]), v_end, self.EndPoint[1]))
                     else:
@@ -1299,7 +1299,7 @@
                             if self.Segments[i - 1][1] != 0:
                                 self.Points[i].y = (end.y + self.Points[i - 1].y) / 2
                         # A point is added
-                        self.Points.insert(i + 1, wxPoint(self.Points[i].x, self.Points[i].y))
+                        self.Points.insert(i + 1, wx.Point(self.Points[i].x, self.Points[i].y))
                         self.Segments.insert(i + 1, DirectionChoice((self.Segments[i][1], 
                                 self.Segments[i][0]), v_end, self.EndPoint[1]))
             else:
@@ -1307,7 +1307,7 @@
                 if i == 0 and product(vector(start, self.Points[1]), self.Segments[0]) < 0:
                     # If first and second directions aren't perpendiculars, a point is added 
                     if product(self.Segments[0], self.Segments[1]) != 0:
-                        self.Points.insert(1, wxPoint(start.x, start.y))
+                        self.Points.insert(1, wx.Point(start.x, start.y))
                         self.Segments.insert(1, DirectionChoice((self.Segments[0][1], 
                             self.Segments[0][0]), vector(start, self.Points[1]), self.Segments[1]))
                     else:
@@ -1375,7 +1375,7 @@
                             width - dir[0] * MIN_SEGMENT_SIZE - 1))
                     pointy = max(-dir[1] * MIN_SEGMENT_SIZE, min(int(round(point[1] * (height - 1) / float(lastheight - 1))),
                             height - dir[1] * MIN_SEGMENT_SIZE - 1))
-                    self.Points[i] = wxPoint(minx + x + pointx, miny + y + pointy)
+                    self.Points[i] = wx.Point(minx + x + pointx, miny + y + pointy)
             self.StartPoint[0] = self.Points[0]
             self.EndPoint[0] = self.Points[-1]
             self.GeneratePoints(False)
@@ -1410,7 +1410,7 @@
                             width - dir[0] * MIN_SEGMENT_SIZE - 1))
                     realpointy = max(-dir[1] * MIN_SEGMENT_SIZE, min(int(round(point[1])),
                             height - dir[1] * MIN_SEGMENT_SIZE - 1))
-                    self.Points[i] = wxPoint(minx + x + realpointx, miny + y + realpointy)
+                    self.Points[i] = wx.Point(minx + x + realpointx, miny + y + realpointy)
             self.StartPoint[0] = self.Points[0]
             self.EndPoint[0] = self.Points[-1]
             self.GeneratePoints(False)
@@ -1504,9 +1504,9 @@
                 pointx = (self.Points[segment].x + self.Points[segment + 1].x) / 2
             if dir[1] != 0:
                 pointy = (self.Points[segment].y + self.Points[segment + 1].y) / 2
-            self.Points.insert(segment + 1, wxPoint(pointx, pointy))
+            self.Points.insert(segment + 1, wx.Point(pointx, pointy))
             self.Segments.insert(segment + 1, (dir[1], dir[0]))
-            self.Points.insert(segment + 2, wxPoint(pointx, pointy))
+            self.Points.insert(segment + 2, wx.Point(pointx, pointy))
             self.Segments.insert(segment + 2, dir)
             self.GeneratePoints()
     
@@ -1528,15 +1528,15 @@
         #result = self.TestPoint(pos)
         #if result != None:
         #    self.Handle = (HANDLE_POINT, result)
-        #    self.Parent.SetCursor(wxStockCursor(wxCURSOR_HAND))
+        #    self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
         #else:
         # Test if a segment have been handled
         result = self.TestSegment(pos)
         if result != None:
             if result[1] in (NORTH, SOUTH):
-                self.Parent.SetCursor(wxStockCursor(wxCURSOR_SIZEWE))
+                self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_SIZEWE))
             elif result[1] in (EAST, WEST):
-                self.Parent.SetCursor(wxStockCursor(wxCURSOR_SIZENS))
+                self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_SIZENS))
             self.Handle = (HANDLE_SEGMENT, result)
         # Execute the default method for a graphic element
         else:
@@ -1560,6 +1560,8 @@
     def OnLeftDClick(self, event, dc, scaling):
         self.ResetPoints()
         self.GeneratePoints()
+        self.RefreshModel()
+        self.Parent.RefreshBuffer()
         
     # Method called when a Motion event have been generated
     def OnMotion(self, event, dc, scaling):
@@ -1569,9 +1571,13 @@
             result = self.TestSegment(pos)
             if result:
                 if result[1] in (NORTH, SOUTH):
-                    wxCallAfter(self.Parent.SetCursor, wxStockCursor(wxCURSOR_SIZEWE))
+                    if self.CurrentCursor != 4:
+                        self.CurrentCursor = 4
+                        wx.CallAfter(self.Parent.SetCursor, CURSORS[4])
                 elif result[1] in (EAST, WEST):
-                    wxCallAfter(self.Parent.SetCursor, wxStockCursor(wxCURSOR_SIZENS))
+                    if self.CurrentCursor != 5:
+                        self.CurrentCursor = 5
+                        wx.CallAfter(self.Parent.SetCursor, CURSORS[5])
             else:
                 # Test if a point has been handled
                 #result = self.TestPoint(pos)
@@ -1595,7 +1601,7 @@
         # A point has been handled
         if handle_type == HANDLE_POINT:
             # Try to connect point to a connector
-            new_pos = wxPoint(self.Points[handle].x + movex, self.Points[handle].y + movey)
+            new_pos = wx.Point(self.Points[handle].x + movex, self.Points[handle].y + movey)
             connector = self.Parent.FindBlockConnector(new_pos)
             if connector:
                 if handle == 0 and self.EndConnected != connector:
@@ -1639,8 +1645,8 @@
     
     # Draws the wire lines and points
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw the start and end points if they are not connected or the mouse is over them
         if len(self.Points) > 0 and (not self.StartConnected or self.OverStart):
             dc.DrawCircle(self.Points[0].x, self.Points[0].y, POINT_RADIUS)
@@ -1651,7 +1657,7 @@
         dc.DrawPoint(self.Points[-1].x, self.Points[-1].y)
         # Draw the segment selected in red
         if self.SelectedSegment != None:
-            dc.SetPen(wxRED_PEN)
+            dc.SetPen(wx.RED_PEN)
             dc.DrawLine(self.Points[self.SelectedSegment].x, self.Points[self.SelectedSegment].y,
                         self.Points[self.SelectedSegment + 1].x, self.Points[self.SelectedSegment + 1].y)
             if self.SelectedSegment == len(self.Segments) - 1:
@@ -1674,8 +1680,8 @@
         Graphic_Element.__init__(self, parent)
         self.Id = id
         self.Content = content
-        self.Pos = wxPoint(0, 0)
-        self.Size = wxSize(0, 0)
+        self.Pos = wx.Point(0, 0)
+        self.Size = wx.Size(0, 0)
     
     # Method for keeping compatibility with others
     def Clean(self):
@@ -1687,7 +1693,7 @@
     
     # Refresh the comment bounding box
     def RefreshBoundingBox(self):
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
     
     # Changes the comment size
     def SetSize(self, width, height):
@@ -1701,7 +1707,7 @@
     
     # Returns the comment minimum size
     def GetMinSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         min_width = 0
         min_height = 0
         # The comment minimum size is the maximum size of words in the content
@@ -1761,18 +1767,18 @@
     
     # Draws the comment and its content
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         # Draws the comment shape
-        polygon = [wxPoint(self.Pos.x, self.Pos.y), 
-                   wxPoint(self.Pos.x + self.Size[0] - 10, self.Pos.y),
-                   wxPoint(self.Pos.x + self.Size[0], self.Pos.y + 10),
-                   wxPoint(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] + 1),
-                   wxPoint(self.Pos.x, self.Pos.y + self.Size[1] + 1)]
+        polygon = [wx.Point(self.Pos.x, self.Pos.y), 
+                   wx.Point(self.Pos.x + self.Size[0] - 10, self.Pos.y),
+                   wx.Point(self.Pos.x + self.Size[0], self.Pos.y + 10),
+                   wx.Point(self.Pos.x + self.Size[0], self.Pos.y + self.Size[1] + 1),
+                   wx.Point(self.Pos.x, self.Pos.y + self.Size[1] + 1)]
         dc.DrawPolygon(polygon)
-        lines = [wxPoint(self.Pos.x + self.Size[0] - 10, self.Pos.y),
-                 wxPoint(self.Pos.x + self.Size[0] - 10, self.Pos.y + 10),
-                 wxPoint(self.Pos.x + self.Size[0], self.Pos.y + 10)]
+        lines = [wx.Point(self.Pos.x + self.Size[0] - 10, self.Pos.y),
+                 wx.Point(self.Pos.x + self.Size[0] - 10, self.Pos.y + 10),
+                 wx.Point(self.Pos.x + self.Size[0], self.Pos.y + 10)]
         dc.DrawLines(lines)
         # Draws the comment content
         y = self.Pos.y + 10
--- a/graphics/LD_Objects.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/graphics/LD_Objects.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 
 from GraphicCommons import *
@@ -83,12 +82,12 @@
                 
     # Refresh the power rail bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1] + 1)
+        dc = wx.ClientDC(self.Parent)
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1] + 1)
     
     # Refresh the power rail size
     def RefreshSize(self):
-        self.Size = wxSize(2, LD_LINE_SIZE * len(self.Connectors))
+        self.Size = wx.Size(2, LD_LINE_SIZE * len(self.Connectors))
         self.RefreshBoundingBox()
     
     # Returns the block minimum size
@@ -103,9 +102,9 @@
     def InsertConnector(self, idx, connector = True):
         if connector:
             if self.Type == LEFTRAIL:
-                connector = Connector(self, "", "BOOL", wxPoint(2, 0), EAST)
+                connector = Connector(self, "", "BOOL", wx.Point(2, 0), EAST)
             elif self.Type == RIGHTRAIL:
-                connector = Connector(self, "", "BOOL", wxPoint(0, 0), WEST)
+                connector = Connector(self, "", "BOOL", wx.Point(0, 0), WEST)
             self.Connectors.insert(idx, connector)
         else:
             self.Connectors.insert(idx, None)
@@ -115,7 +114,7 @@
     # Moves the divergence connector given
     def MoveConnector(self, connector, movey):
         position = connector.GetRelPosition()
-        connector.SetPosition(wxPoint(position.x, position.y + movey))
+        connector.SetPosition(wx.Point(position.x, position.y + movey))
         miny = self.Size[1]
         maxy = 0
         for connect in self.Connectors:
@@ -127,7 +126,7 @@
         if min_pos == self.Pos.y:
             for connect in self.Connectors:
                 connect_pos = connect.GetRelPosition()
-                connect.SetPosition(wxPoint(connect_pos.x, connect_pos.y - miny + self.Extensions[0]))
+                connect.SetPosition(wx.Point(connect_pos.x, connect_pos.y - miny + self.Extensions[0]))
         self.Size[1] = max(maxy - miny + self.Extensions[0] + self.Extensions[1], self.Size[1])
         connector.MoveConnected()
         self.RefreshBoundingBox()
@@ -156,9 +155,9 @@
         for connector in self.Connectors:
             if connector:
                 if self.Type == LEFTRAIL:
-                    connector.SetPosition(wxPoint(self.Size[0], position))
+                    connector.SetPosition(wx.Point(self.Size[0], position))
                 elif self.Type == RIGHTRAIL:
-                    connector.SetPosition(wxPoint(0, position))
+                    connector.SetPosition(wx.Point(0, position))
             position += LD_LINE_SIZE
         self.RefreshConnected()
     
@@ -217,7 +216,7 @@
         connector = self.TestConnector(pos, False)
         if connector:
             self.Handle = (HANDLE_CONNECTOR, connector)
-            self.Parent.SetCursor(wxStockCursor(wxCURSOR_HAND))
+            self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
             self.Selected = False
             # Initializes the last position
             self.oldPos = GetScaledEventPosition(event, dc, scaling)
@@ -284,8 +283,8 @@
     
     # Draws power rail
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw a rectangle with the power rail size
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         # Draw connectors
@@ -311,10 +310,10 @@
         self.Type = type
         self.Name = name
         self.Id = id
-        self.Size = wxSize(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
+        self.Size = wx.Size(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
         # Create an input and output connector
-        self.Input = Connector(self, "", "BOOL", wxPoint(0, self.Size[1] / 2 + 1), WEST)
-        self.Output = Connector(self, "", "BOOL", wxPoint(self.Size[0], self.Size[1] / 2 + 1), EAST)
+        self.Input = Connector(self, "", "BOOL", wx.Point(0, self.Size[1] / 2 + 1), WEST)
+        self.Output = Connector(self, "", "BOOL", wx.Point(self.Size[0], self.Size[1] / 2 + 1), EAST)
         self.RefreshNameSize()
         self.RefreshTypeSize()
     
@@ -340,7 +339,7 @@
     
     # Refresh the size of text for name
     def RefreshNameSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         if self.Name != "":
             self.NameSize = dc.GetTextExtent(self.Name)
         else:
@@ -348,7 +347,7 @@
     
     # Refresh the size of text for type
     def RefreshTypeSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         typetext = ""
         if self.Type == CONTACT_REVERSE:
             typetext = "/"
@@ -363,7 +362,7 @@
     
     # Refresh the contact bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         # Calculate the size of the name outside the contact
         text_width, text_height = dc.GetTextExtent(self.Name)
         # Calculate the bounding box size
@@ -377,7 +376,7 @@
             bbx_width = self.Size[0]
             bbx_y = self.Pos.y
             bbx_height = self.Size[1]
-        self.BoundingBox = wxRect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
+        self.BoundingBox = wx.Rect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
     
     # Returns the block minimum size
     def GetMinSize(self):
@@ -423,8 +422,8 @@
 
     # Refresh the positions of the block connectors
     def RefreshConnectors(self):
-        self.Input.SetPosition(wxPoint(0, self.Size[1] / 2 + 1))
-        self.Output.SetPosition(wxPoint(self.Size[0], self.Size[1] / 2 + 1))
+        self.Input.SetPosition(wx.Point(0, self.Size[1] / 2 + 1))
+        self.Output.SetPosition(wx.Point(self.Size[0], self.Size[1] / 2 + 1))
         self.RefreshConnected()
 
     # Changes the contact name
@@ -459,8 +458,8 @@
     
     # Draws contact
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw two rectangles for representing the contact
         dc.DrawRectangle(self.Pos.x, self.Pos.y, 2, self.Size[1] + 1)
         dc.DrawRectangle(self.Pos.x + self.Size[0] - 1, self.Pos.y, 2, self.Size[1] + 1)
@@ -500,10 +499,10 @@
         self.Type = type
         self.Name = name
         self.Id = id
-        self.Size = wxSize(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
+        self.Size = wx.Size(LD_ELEMENT_SIZE[0], LD_ELEMENT_SIZE[1])
         # Create an input and output connector
-        self.Input = Connector(self, "", "BOOL", wxPoint(0, self.Size[1] / 2 + 1), WEST)
-        self.Output = Connector(self, "", "BOOL", wxPoint(self.Size[0], self.Size[1] / 2 + 1), EAST)
+        self.Input = Connector(self, "", "BOOL", wx.Point(0, self.Size[1] / 2 + 1), WEST)
+        self.Output = Connector(self, "", "BOOL", wx.Point(self.Size[0], self.Size[1] / 2 + 1), EAST)
         self.RefreshNameSize()
         self.RefreshTypeSize()
         
@@ -529,7 +528,7 @@
                 
     # Refresh the size of text for name
     def RefreshNameSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         if self.Name != "":
             self.NameSize = dc.GetTextExtent(self.Name)
         else:
@@ -537,7 +536,7 @@
     
     # Refresh the size of text for type
     def RefreshTypeSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         typetext = ""
         if self.Type == COIL_REVERSE:
             typetext = "/"
@@ -552,7 +551,7 @@
     
     # Refresh the coil bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         # Calculate the size of the name outside the coil
         text_width, text_height = dc.GetTextExtent(self.Name)
         # Calculate the bounding box size
@@ -566,7 +565,7 @@
             bbx_width = self.Size[0]
             bbx_y = self.Pos.y
             bbx_height = self.Size[1]
-        self.BoundingBox = wxRect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
+        self.BoundingBox = wx.Rect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
         
     # Returns the block minimum size
     def GetMinSize(self):
@@ -612,8 +611,8 @@
     
     # Refresh the positions of the block connectors
     def RefreshConnectors(self):
-        self.Input.SetPosition(wxPoint(0, self.Size[1] / 2 + 1))
-        self.Output.SetPosition(wxPoint(self.Size[0], self.Size[1] / 2 + 1))
+        self.Input.SetPosition(wx.Point(0, self.Size[1] / 2 + 1))
+        self.Output.SetPosition(wx.Point(self.Size[0], self.Size[1] / 2 + 1))
         self.RefreshConnected()
     
     # Changes the coil name
@@ -648,12 +647,12 @@
     
     # Draws coil
     def Draw(self, dc):
-        dc.SetPen(wxPen(wxBLACK, 2, wxSOLID))
-        dc.SetBrush(wxTRANSPARENT_BRUSH)
+        dc.SetPen(wx.Pen(wx.BLACK, 2, wx.SOLID))
+        dc.SetBrush(wx.TRANSPARENT_BRUSH)
         # Draw a two circle arcs for representing the coil
         dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, 135, 225)
         dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, -45, 45)
-        dc.SetPen(wxBLACK_PEN)
+        dc.SetPen(wx.BLACK_PEN)
         dc.DrawPoint(self.Pos.x + 1, self.Pos.y + self.Size[1] / 2 + 1)
         # Draw coil name
         dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
--- a/graphics/SFC_Objects.py	Tue Aug 07 17:37:38 2007 +0200
+++ b/graphics/SFC_Objects.py	Tue Aug 07 17:38:48 2007 +0200
@@ -22,7 +22,6 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from wxPython.wx import *
 import wx
 
 from GraphicCommons import *
@@ -50,10 +49,10 @@
         self.Name = name
         self.Initial = initial
         self.Id = id
-        self.Size = wxSize(SFC_STEP_DEFAULT_SIZE[0], SFC_STEP_DEFAULT_SIZE[1])
+        self.Size = wx.Size(SFC_STEP_DEFAULT_SIZE[0], SFC_STEP_DEFAULT_SIZE[1])
         # Create an input and output connector
         if not self.Initial:
-            self.Input = Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, 0), NORTH)
+            self.Input = Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, 0), NORTH)
         else:
             self.Input = None
         self.Output = None
@@ -72,16 +71,16 @@
     # Unconnect input and output
     def Clean(self):
         if self.Input:
-            self.Input.UnConnect()
+            self.Input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
         if self.Output:
-            self.Output.UnConnect()
+            self.Output.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
         if self.Action:
-            self.Action.UnConnect()
+            self.Action.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
     
     # Add output connector to step
     def AddOutput(self):
         if not self.Output:
-            self.Output = Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, self.Size[1]), SOUTH)
+            self.Output = Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, self.Size[1]), SOUTH)
             self.RefreshBoundingBox()
     
     # Remove output connector from step
@@ -94,7 +93,7 @@
     # Add action connector to step
     def AddAction(self):
         if not self.Action:
-            self.Action = Connector(self, "", "ANY", wxPoint(self.Size[0], self.Size[1] / 2), EAST)
+            self.Action = Connector(self, "", "ANY", wx.Point(self.Size[0], self.Size[1] / 2), EAST)
             self.RefreshBoundingBox()
     
     # Remove action connector from step
@@ -106,7 +105,7 @@
     
     # Refresh the step bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         # Calculate the bounding box size
         if self.Action:
             bbx_width = self.Size[0] + CONNECTOR_SIZE
@@ -122,20 +121,20 @@
             bbx_height = self.Size[1] + CONNECTOR_SIZE
             if self.Output:
                 bbx_height += CONNECTOR_SIZE
-        #self.BoundingBox = wxRect(self.Pos.x, bbx_y, bbx_width + 1, bbx_height + 1)
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
+        #self.BoundingBox = wx.Rect(self.Pos.x, bbx_y, bbx_width + 1, bbx_height + 1)
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         
     # Refresh the positions of the step connectors
     def RefreshConnectors(self):
         # Update input position if it exists
         if self.Input:
-            self.Input.SetPosition(wxPoint(self.Size[0] / 2, 0))
+            self.Input.SetPosition(wx.Point(self.Size[0] / 2, 0))
         # Update output position
         if self.Output:
-            self.Output.SetPosition(wxPoint(self.Size[0] / 2, self.Size[1]))
+            self.Output.SetPosition(wx.Point(self.Size[0] / 2, self.Size[1]))
         # Update action position if it exists
         if self.Action:
-            self.Action.SetPosition(wxPoint(self.Size[0], self.Size[1] / 2))
+            self.Action.SetPosition(wx.Point(self.Size[0], self.Size[1] / 2))
         self.RefreshConnected()
     
     # Refresh the position of wires connected to step
@@ -237,7 +236,7 @@
     
     # Returns the step minimum size
     def GetMinSize(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         text_width, text_height = dc.GetTextExtent(self.Name)
         if self.Initial:
             return text_width + 14, text_height + 14
@@ -285,8 +284,8 @@
             if diffy != 0:
                 if isinstance(output_block, SFC_Step):
                     output_block.MoveActionBlock((diffx, diffy))
-                wires[0][0].SetPoints([wxPoint(current_pos.x, current_pos.y + wire_size),
-                    wxPoint(current_pos.x, current_pos.y)])
+                wires[0][0].SetPoints([wx.Point(current_pos.x, current_pos.y + wire_size),
+                    wx.Point(current_pos.x, current_pos.y)])
                 if not isinstance(output_block, SFC_Divergence) or output_block.GetConnectors()["inputs"].index(output) == 0:
                     output_block.Move(diffx, diffy, self.Parent.Wires)
                     output_block.RefreshOutputPosition((diffx, diffy))
@@ -394,8 +393,8 @@
     
     # Draws step
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         # Draw two rectangles for representing the step
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         if self.Initial:
@@ -424,20 +423,22 @@
 class SFC_Transition(Graphic_Element):
     
     # Create a new transition
-    def __init__(self, parent, type = "reference", condition = "", id = None):
+    def __init__(self, parent, type = "reference", condition = None, id = None):
         Graphic_Element.__init__(self, parent)
-        self.Type = type
-        self.Condition = condition
+        self.Type = None
         self.Id = id
-        self.Size = wxSize(SFC_TRANSITION_SIZE[0], SFC_TRANSITION_SIZE[1])
+        self.Size = wx.Size(SFC_TRANSITION_SIZE[0], SFC_TRANSITION_SIZE[1])
         # Create an input and output connector
-        self.Input = Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, 0), NORTH)
-        self.Output = Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, self.Size[1]), SOUTH)
+        self.Input = Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, 0), NORTH)
+        self.Output = Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, self.Size[1]), SOUTH)
+        self.SetType(type, condition)
     
     # Destructor
     def __del__(self):
         self.Input = None
         self.Output = None
+        if self.Type == "connection":
+            self.Condition = None
     
     # Forbids to change the transition size
     def SetSize(self, width, height):
@@ -449,27 +450,42 @@
         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
             Graphic_Element.Resize(self, x, y, width, height)
     
+    # Refresh the size of text for name
+    def RefreshConditionSize(self):
+        if self.Type != "connection":
+            dc = wx.ClientDC(self.Parent)
+            if self.Condition != "":
+                self.ConditionSize = dc.GetTextExtent(self.Condition)
+            else:
+                self.ConditionSize = dc.GetTextExtent("Transition")
+    
     # Delete this transition by calling the appropriate method
     def Delete(self):
         self.Parent.DeleteTransition(self)
     
     # Unconnect input and output
     def Clean(self):
-        self.Input.UnConnect()
-        self.Output.UnConnect()
+        self.Input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
+        self.Output.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
+        if self.Type == "connection":
+            self.Condition.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
     
     # Refresh the transition bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
-        if self.Condition != "":
-            text_width, text_height = dc.GetTextExtent(self.Condition)
-        else:
-            text_width, text_height = dc.GetTextExtent("Transition")
-        # Calculate the bounding box size
-        bbx_width = self.Size[0] + 5 + text_width
-        bbx_y = self.Pos.y - max(0, (text_height - 5 - self.Size[1]) / 2)
-        bbx_height = max(self.Size[1], text_height)
-        self.BoundingBox = wxRect(self.Pos.x, bbx_y, bbx_width + 1, bbx_height - 4)
+        dc = wx.ClientDC(self.Parent)
+        if self.Type == "connection":
+            bbx_x = self.Pos.x - CONNECTOR_SIZE
+            bbx_width = self.Size[0] + CONNECTOR_SIZE
+            bbx_y = self.Pos.y
+            bbx_height = self.Size[1]
+        else:
+            text_width, text_height = self.ConditionSize
+            # Calculate the bounding box size
+            bbx_x = self.Pos.x
+            bbx_width = self.Size[0] + 5 + text_width
+            bbx_y = self.Pos.y - max(0, (text_height - 5 - self.Size[1]) / 2)
+            bbx_height = max(self.Size[1], text_height) - 5
+        self.BoundingBox = wx.Rect(bbx_x, bbx_y, bbx_width + 1, bbx_height + 1)
         
     # Returns the connector connected to input
     def GetPreviousConnector(self):
@@ -488,15 +504,19 @@
     # Refresh the positions of the transition connectors
     def RefreshConnectors(self):
         # Update input position
-        self.Input.SetPosition(wxPoint(self.Size[0] / 2, 0))
+        self.Input.SetPosition(wx.Point(self.Size[0] / 2, 0))
         # Update output position
-        self.Output.SetPosition(wxPoint(self.Size[0] / 2, self.Size[1]))
+        self.Output.SetPosition(wx.Point(self.Size[0] / 2, self.Size[1]))
+        if self.Type == "connection":
+            self.Condition.SetPosition(wx.Point(0, self.Size[1] / 2))
         self.RefreshConnected()
     
     # Refresh the position of the wires connected to transition
     def RefreshConnected(self, exclude = []):
         self.Input.MoveConnected(exclude)
         self.Output.MoveConnected(exclude)
+        if self.Type == "connection":
+            self.Condition.MoveConnected(exclude)
     
     # Returns the transition connector that starts with the point given if it exists 
     def GetConnector(self, position, name = None):
@@ -507,6 +527,8 @@
                 return self.Input
             if name == self.Output.GetName():
                 return self.Output
+            if self.Type == "connection" and name == self.Condition.GetName():
+                return self.Condition
         # Test input connector
         input_pos = self.Input.GetRelPosition()
         if position.x == self.Pos.x + input_pos.x and position.y == self.Pos.y + input_pos.y:
@@ -515,11 +537,19 @@
         output_pos = self.Output.GetRelPosition()
         if position.x == self.Pos.x + output_pos.x and position.y == self.Pos.y + output_pos.y:
             return self.Output
+        if self.Type == "connection":
+            # Test condition connector
+            condition_pos = self.Condition.GetRelPosition()
+            if position.x == self.Pos.x + condition_pos.x and position.y == self.Pos.y + condition_pos.y:
+                return self.Condition
         return None
     
     # Returns input and output transition connectors
     def GetConnectors(self):
-        return {"input":self.Input,"output":self.Output}
+        connectors = {"input":self.Input,"output":self.Output}
+        if self.Type == "connection":
+            connectors["connection"] = self.Condition
+        return connectors
     
     # Test if point given is on transition input or output connector
     def TestConnector(self, pt, exclude=True):
@@ -529,24 +559,40 @@
         # Test output connector
         if self.Output.TestPoint(pt, exclude):
             return self.Output
+        # Test condition connector
+        if self.Type == "connection" and self.Condition.TestPoint(pt, exclude):
+            return self.Condition
         return None
 
     # Changes the transition type
-    def SetType(self, type):
-        self.Type = type
+    def SetType(self, type, condition = None):
+        if self.Type != type:
+            if self.Type == "connection":
+               self.Condition.UnConnect() 
+            self.Type = type
+            if type == "connection":
+                self.Condition = Connector(self, "", "BOOL", wx.Point(0, self.Size[1] / 2), WEST)
+            else:
+                if condition == None:
+                    condition = ""
+                self.Condition = condition
+                self.RefreshConditionSize()
+        elif self.Type != "connection":
+            if condition == None:
+                condition = ""
+            self.Condition = condition
+            self.RefreshConditionSize()
+        self.RefreshBoundingBox()
         
     # Returns the transition type
     def GetType(self):
         return self.Type
 
-    # Changes the transition condition
-    def SetCondition(self, condition):
-        self.Condition = condition
-        self.RefreshBoundingBox()
-
     # Returns the transition condition
     def GetCondition(self):
-        return self.Condition
+        if self.Type != "connection":
+            return self.Condition
+        return None
         
     # Returns the transition minimum size
     def GetMinSize(self):
@@ -647,22 +693,24 @@
     
     # Draws transition
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw plain rectangle for representing the transition
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
         # Draw transition condition
-        if self.Condition != "":
-            text_width, text_height = dc.GetTextExtent(self.Condition)
-            condition = self.Condition
-        else:
-            text_width, text_height = dc.GetTextExtent("Transition")
-            condition = "Transition"
-        dc.DrawText(condition, self.Pos.x + self.Size[0] + 5,
-                    self.Pos.y + (self.Size[1] - text_height) / 2)
+        if self.Type != "connection":
+            text_width, text_height = self.ConditionSize
+            if self.Condition != "":
+                condition = self.Condition
+            else:
+                condition = "Transition"
+            dc.DrawText(condition, self.Pos.x + self.Size[0] + 5,
+                        self.Pos.y + (self.Size[1] - text_height) / 2)
         # Draw input and output connectors
         self.Input.Draw(dc)
         self.Output.Draw(dc)
+        if self.Type == "connection":
+            self.Condition.Draw(dc)
         Graphic_Element.Draw(self, dc)
 
 #-------------------------------------------------------------------------------
@@ -684,20 +732,20 @@
         self.RealConnectors = None
         number = max(2, number)
         if self.Type in [SELECTION_DIVERGENCE, SELECTION_CONVERGENCE]:
-            self.Size = wxSize((number - 1) * SFC_DEFAULT_SEQUENCE_INTERVAL, 1)
+            self.Size = wx.Size((number - 1) * SFC_DEFAULT_SEQUENCE_INTERVAL, 1)
         elif self.Type in [SIMULTANEOUS_DIVERGENCE, SIMULTANEOUS_CONVERGENCE]:
-            self.Size = wxSize((number - 1) * SFC_DEFAULT_SEQUENCE_INTERVAL, 3)
+            self.Size = wx.Size((number - 1) * SFC_DEFAULT_SEQUENCE_INTERVAL, 3)
         # Create an input and output connector
         if self.Type in [SELECTION_DIVERGENCE, SIMULTANEOUS_DIVERGENCE]:
-            self.Inputs = [Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, 0), NORTH)]
+            self.Inputs = [Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, 0), NORTH)]
             self.Outputs = []
             for i in xrange(number):
-                self.Outputs.append(Connector(self, "", "ANY", wxPoint(i * SFC_DEFAULT_SEQUENCE_INTERVAL, self.Size[1]), SOUTH))
+                self.Outputs.append(Connector(self, "", "ANY", wx.Point(i * SFC_DEFAULT_SEQUENCE_INTERVAL, self.Size[1]), SOUTH))
         elif self.Type in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
             self.Inputs = []
             for i in xrange(number):
-                self.Inputs.append(Connector(self, "", "ANY", wxPoint(i * SFC_DEFAULT_SEQUENCE_INTERVAL, 0), NORTH))
-            self.Outputs = [Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, self.Size[1]), SOUTH)]
+                self.Inputs.append(Connector(self, "", "ANY", wx.Point(i * SFC_DEFAULT_SEQUENCE_INTERVAL, 0), NORTH))
+            self.Outputs = [Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, self.Size[1]), SOUTH)]
     
     # Destructor
     def __del__(self):
@@ -720,9 +768,9 @@
     # Unconnect input and output
     def Clean(self):
         for input in self.Inputs:
-            input.UnConnect()
+            input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
         for output in self.Outputs:
-            output.UnConnect()
+            output.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
     
     # Add a branch to the divergence
     def AddBranch(self):
@@ -731,7 +779,7 @@
             for output in self.Outputs:
                 pos = output.GetRelPosition()
                 maxx = max(maxx, pos.x)
-            connector = Connector(self, "", "ANY", wxPoint(maxx + SFC_DEFAULT_SEQUENCE_INTERVAL, self.Size[1]), SOUTH)
+            connector = Connector(self, "", "ANY", wx.Point(maxx + SFC_DEFAULT_SEQUENCE_INTERVAL, self.Size[1]), SOUTH)
             self.Outputs.append(connector)
             self.MoveConnector(connector, 0)
         elif self.Type in [SELECTION_CONVERGENCE, SIMULTANEOUS_CONVERGENCE]:
@@ -739,7 +787,7 @@
             for input in self.Inputs:
                 pos = input.GetRelPosition()
                 maxx = max(maxx, pos.x)
-            connector = Connector(self, "", "ANY", wxPoint(maxx + SFC_DEFAULT_SEQUENCE_INTERVAL, 0), NORTH)
+            connector = Connector(self, "", "ANY", wx.Point(maxx + SFC_DEFAULT_SEQUENCE_INTERVAL, 0), NORTH)
             self.Inputs.append(connector)
             self.MoveConnector(connector, SFC_DEFAULT_SEQUENCE_INTERVAL)
     
@@ -769,10 +817,10 @@
     # Refresh the divergence bounding box
     def RefreshBoundingBox(self):
         if self.Type in [SELECTION_DIVERGENCE, SELECTION_CONVERGENCE]:
-            self.BoundingBox = wxRect(self.Pos.x, self.Pos.y - 2, 
+            self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y - 2, 
                 self.Size[0] + 1, self.Size[1] + 5)
         elif self.Type in [SIMULTANEOUS_DIVERGENCE, SIMULTANEOUS_CONVERGENCE]:
-            self.BoundingBox = wxRect(self.Pos.x - SFC_SIMULTANEOUS_SEQUENCE_EXTRA, self.Pos.y - 2, 
+            self.BoundingBox = wx.Rect(self.Pos.x - SFC_SIMULTANEOUS_SEQUENCE_EXTRA, self.Pos.y - 2, 
                 self.Size[0] + 2 * SFC_SIMULTANEOUS_SEQUENCE_EXTRA + 1, self.Size[1] + 5)
     
     # Refresh the position of wires connected to divergence
@@ -785,7 +833,7 @@
     # Moves the divergence connector given
     def MoveConnector(self, connector, movex):
         position = connector.GetRelPosition()
-        connector.SetPosition(wxPoint(position.x + movex, position.y))
+        connector.SetPosition(wx.Point(position.x + movex, position.y))
         minx = self.Size[0]
         maxx = 0
         for input in self.Inputs:
@@ -799,10 +847,10 @@
         if minx != 0:
             for input in self.Inputs:
                 input_pos = input.GetRelPosition()
-                input.SetPosition(wxPoint(input_pos.x - minx, input_pos.y))
+                input.SetPosition(wx.Point(input_pos.x - minx, input_pos.y))
             for output in self.Outputs:
                 output_pos = output.GetRelPosition()
-                output.SetPosition(wxPoint(output_pos.x - minx, output_pos.y))
+                output.SetPosition(wx.Point(output_pos.x - minx, output_pos.y))
         self.Pos.x += minx
         self.Size[0] = maxx - minx
         connector.MoveConnected()
@@ -852,18 +900,18 @@
         for i, input in enumerate(self.Inputs):
             position = input.GetRelPosition()
             if self.RealConnectors:
-                input.SetPosition(wxPoint(int(round(self.RealConnectors["Inputs"][i] * width)), 0))
+                input.SetPosition(wx.Point(int(round(self.RealConnectors["Inputs"][i] * width)), 0))
             else:
-                input.SetPosition(wxPoint(int(round(float(position.x)*float(width)/float(self.Size[0]))), 0))
+                input.SetPosition(wx.Point(int(round(float(position.x)*float(width)/float(self.Size[0]))), 0))
             input.MoveConnected()
         for i, output in enumerate(self.Outputs):
             position = output.GetRelPosition()
             if self.RealConnectors:
-                output.SetPosition(wxPoint(int(round(self.RealConnectors["Outputs"][i] * width)), self.Size[1]))
+                output.SetPosition(wx.Point(int(round(self.RealConnectors["Outputs"][i] * width)), self.Size[1]))
             else:
-                output.SetPosition(wxPoint(int(round(float(position.x)*float(width)/float(self.Size[0]))), self.Size[1]))
+                output.SetPosition(wx.Point(int(round(float(position.x)*float(width)/float(self.Size[0]))), self.Size[1]))
             output.MoveConnected()
-        self.Size = wxSize(width, height)
+        self.Size = wx.Size(width, height)
         self.RefreshBoundingBox()
     
     # Returns the divergence minimum size
@@ -939,7 +987,7 @@
         connector = self.TestConnector(pos, False)
         if connector:
             self.Handle = (HANDLE_CONNECTOR, connector)
-            self.Parent.SetCursor(wxStockCursor(wxCURSOR_HAND))
+            self.Parent.SetCursor(wx.StockCursor(wx.CURSOR_HAND))
             self.Selected = False
             # Initializes the last position
             self.oldPos = GetScaledEventPosition(event, dc, scaling)
@@ -1021,8 +1069,8 @@
     
     # Draws divergence
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw plain rectangle for representing the divergence
         if self.Type in [SELECTION_DIVERGENCE, SELECTION_CONVERGENCE]:
             dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
@@ -1053,9 +1101,9 @@
         Graphic_Element.__init__(self, parent)
         self.Target = target
         self.Id = id
-        self.Size = wxSize(SFC_JUMP_SIZE[0], SFC_JUMP_SIZE[1])
+        self.Size = wx.Size(SFC_JUMP_SIZE[0], SFC_JUMP_SIZE[1])
         # Create an input and output connector
-        self.Input = Connector(self, "", "ANY", wxPoint(self.Size[0] / 2, 0), NORTH)
+        self.Input = Connector(self, "", "ANY", wx.Point(self.Size[0] / 2, 0), NORTH)
         
     # Destructor
     def __del__(self):
@@ -1077,15 +1125,15 @@
     
     # Unconnect input
     def Clean(self):
-        self.Input.UnConnect()
+        self.Input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
     
     # Refresh the jump bounding box
     def RefreshBoundingBox(self):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         text_width, text_height = dc.GetTextExtent(self.Target)
         # Calculate the bounding box size
         bbx_width = self.Size[0] + 2 + text_width
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y - CONNECTOR_SIZE, 
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y - CONNECTOR_SIZE, 
                 bbx_width + 1, self.Size[1] + CONNECTOR_SIZE + 1)
     
     # Returns the connector connected to input
@@ -1097,7 +1145,7 @@
     
     # Refresh the element connectors position
     def RefreshConnectors(self):
-        self.Input.SetPosition(wxPoint(self.Size[0] / 2, 0))
+        self.Input.SetPosition(wx.Point(self.Size[0] / 2, 0))
         self.RefreshConnected()
     
     # Refresh the position of wires connected to jump
@@ -1191,14 +1239,14 @@
     
     # Draws divergence
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxBLACK_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.BLACK_BRUSH)
         # Draw plain rectangle for representing the divergence
         dc.DrawLine(self.Pos.x + self.Size[0] / 2, self.Pos.y, self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1])
-        points = [wxPoint(self.Pos.x, self.Pos.y),
-                  wxPoint(self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1] / 3),
-                  wxPoint(self.Pos.x + self.Size[0], self.Pos.y),
-                  wxPoint(self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1])]
+        points = [wx.Point(self.Pos.x, self.Pos.y),
+                  wx.Point(self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1] / 3),
+                  wx.Point(self.Pos.x + self.Size[0], self.Pos.y),
+                  wx.Point(self.Pos.x + self.Size[0] / 2, self.Pos.y + self.Size[1])]
         dc.DrawPolygon(points)
         text_width, text_height = dc.GetTextExtent(self.Target)
         dc.DrawText(self.Target, self.Pos.x + self.Size[0] + 2,
@@ -1223,9 +1271,9 @@
     def __init__(self, parent, actions = [], id = None):
         Graphic_Element.__init__(self, parent)
         self.Id = id
-        self.Size = wxSize(SFC_ACTION_MIN_SIZE[0], SFC_ACTION_MIN_SIZE[1])
+        self.Size = wx.Size(SFC_ACTION_MIN_SIZE[0], SFC_ACTION_MIN_SIZE[1])
         # Create an input and output connector
-        self.Input = Connector(self, "", "ANY", wxPoint(0, SFC_ACTION_MIN_SIZE[1] / 2), WEST)
+        self.Input = Connector(self, "", "ANY", wx.Point(0, SFC_ACTION_MIN_SIZE[1] / 2), WEST)
         self.SetActions(actions)
     
     # Destructor
@@ -1256,11 +1304,11 @@
     
     # Unconnect input and output
     def Clean(self):
-        self.Input.UnConnect()
+        self.Input.UnConnect(delete = self.Parent.GetDrawingMode() == FREEDRAWING_MODE)
         
     # Refresh the action block bounding box
     def RefreshBoundingBox(self):
-        self.BoundingBox = wxRect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1])
+        self.BoundingBox = wx.Rect(self.Pos.x, self.Pos.y, self.Size[0], self.Size[1])
     
     # Refresh the position of wires connected to action block
     def RefreshConnected(self, exclude = []):
@@ -1279,7 +1327,7 @@
     
     # Changes the action block actions
     def SetActions(self, actions):
-        dc = wxClientDC(self.Parent)
+        dc = wx.ClientDC(self.Parent)
         self.Actions = actions
         self.ColSize = [0, 0, 0]
         for action in self.Actions:
@@ -1295,9 +1343,9 @@
                 self.ColSize[2] = max(self.ColSize[2], width + 10)
         if self.Parent.GetDrawingMode() == FREEDRAWING_MODE:
             line_size = self.GetLineSize()
-            self.Size = wxSize(self.ColSize[0] + self.ColSize[1] + self.ColSize[2], len(self.Actions) * line_size)
-        else:
-            self.Size = wxSize(max(self.ColSize[0] + self.ColSize[1] + self.ColSize[2],
+            self.Size = wx.Size(self.ColSize[0] + self.ColSize[1] + self.ColSize[2], len(self.Actions) * line_size)
+        else:
+            self.Size = wx.Size(max(self.ColSize[0] + self.ColSize[1] + self.ColSize[2],
                 SFC_ACTION_MIN_SIZE[0]), len(self.Actions) * SFC_ACTION_MIN_SIZE[1])
         self.RefreshBoundingBox()
         if self.Input:
@@ -1343,8 +1391,8 @@
     
     # Draws divergence
     def Draw(self, dc):
-        dc.SetPen(wxBLACK_PEN)
-        dc.SetBrush(wxWHITE_BRUSH)
+        dc.SetPen(wx.BLACK_PEN)
+        dc.SetBrush(wx.WHITE_BRUSH)
         colsize = [self.ColSize[0], self.Size[0] - self.ColSize[0] - self.ColSize[2], self.ColSize[2]]
         # Draw plain rectangle for representing the action block
         dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)