Dialogs.py
author lbessard
Thu, 06 Dec 2007 18:05:29 +0100
changeset 125 394d9f168258
parent 123 62f93b8df816
child 128 d16a8df4d322
permissions -rw-r--r--
Adding support for execution order in PLCGenerator
Adding support for derived data types (struct not supported yet)
Fixed refresh bug with windows on Viewers
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     1
#!/usr/bin/env python
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     3
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     4
#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     5
#based on the plcopen standard. 
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     6
#
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
     7
#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     8
#
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
     9
#See COPYING file for copyrights details.
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    10
#
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    11
#This library is free software; you can redistribute it and/or
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    12
#modify it under the terms of the GNU General Public
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    13
#License as published by the Free Software Foundation; either
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    14
#version 2.1 of the License, or (at your option) any later version.
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    15
#
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    16
#This library is distributed in the hope that it will be useful,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    17
#but WITHOUT ANY WARRANTY; without even the implied warranty of
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    18
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    19
#General Public License for more details.
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    20
#
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    21
#You should have received a copy of the GNU General Public
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    22
#License along with this library; if not, write to the Free Software
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    23
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    24
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    25
import wx
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    26
import wx.grid
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    27
45
42637f721b5b Bugs fixed
lbessard
parents: 42
diff changeset
    28
from graphics import *
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    29
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    30
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    31
#                          Create New Block Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    32
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    33
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    34
[ID_BLOCKPROPERTIESDIALOG, ID_BLOCKPROPERTIESDIALOGNAME, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    35
 ID_BLOCKPROPERTIESDIALOGTYPETREE, ID_BLOCKPROPERTIESDIALOGTYPEDESC, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    36
 ID_BLOCKPROPERTIESDIALOGINPUTS, ID_BLOCKPROPERTIESDIALOGPREVIEW, 
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    37
 ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER, ID_BLOCKPROPERTIESDIALOGSTATICTEXT1, 
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    38
 ID_BLOCKPROPERTIESDIALOGSTATICTEXT2, ID_BLOCKPROPERTIESDIALOGSTATICTEXT3, 
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    39
 ID_BLOCKPROPERTIESDIALOGSTATICTEXT4, ID_BLOCKPROPERTIESDIALOGSTATICTEXT5, 
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    40
] = [wx.NewId() for _init_ctrls in range(12)]
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    41
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    42
[CATEGORY, BLOCK] = range(2)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    43
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    44
class BlockPropertiesDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    45
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    46
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    47
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    48
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    49
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    50
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    51
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
    52
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    53
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    54
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    55
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    56
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    57
    def _init_coll_flexGridSizer1_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    58
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    59
        parent.AddGrowableRow(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    60
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    61
    def _init_coll_MainSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    62
        parent.AddSizer(self.LeftBoxSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    63
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    64
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    65
    def _init_coll_LeftBoxSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    66
        parent.AddWindow(self.TypeTree, 3, border=5, flag=wx.GROW|wx.BOTTOM)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    67
        parent.AddWindow(self.TypeDesc, 1, border=0, flag=wx.GROW)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    68
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    69
    def _init_coll_RightGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    70
        parent.AddSizer(self.RightUpGridSizer, 0, border=0, flag=wx.GROW)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    71
        parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    72
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    73
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    74
    def _init_coll_RightGridSizer_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    75
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    76
        parent.AddGrowableRow(2)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    77
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    78
    def _init_coll_RightUpGridSizer_Items(self, parent):
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    79
        parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
    80
        parent.AddWindow(self.BlockName, 0, border=0, flag=wx.GROW)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    81
        parent.AddWindow(self.staticText3, 0, border=4, flag=wx.GROW|wx.TOP)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    82
        parent.AddWindow(self.Inputs, 0, border=0, flag=wx.GROW)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    83
        parent.AddWindow(self.staticText4, 0, border=4, flag=wx.GROW|wx.TOP)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    84
        parent.AddWindow(self.ExecutionOrder, 0, border=0, flag=wx.GROW)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    85
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    86
    def _init_sizers(self):
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    87
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    88
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
    89
        self.LeftBoxSizer = wx.StaticBoxSizer(self.staticbox1, wx.VERTICAL)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    90
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
    91
        self.RightUpGridSizer = wx.GridSizer(cols=2, hgap=5, rows=3, vgap=5)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    92
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
    93
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    94
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    95
        self._init_coll_MainSizer_Items(self.MainSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    96
        self._init_coll_LeftBoxSizer_Items(self.LeftBoxSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    97
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    98
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
    99
        self._init_coll_RightUpGridSizer_Items(self.RightUpGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   100
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   101
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   102
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   103
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   104
        wx.Dialog.__init__(self, id=ID_BLOCKPROPERTIESDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   105
              name='BlockPropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   106
              size=wx.Size(600, 380), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   107
              title='Block Properties')
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   108
        self.SetClientSize(wx.Size(600, 380))
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   109
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   110
        self.staticbox1 = wx.StaticBox(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT1,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   111
              label='Type:', name='staticBox1', parent=self,
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   112
              pos=wx.Point(0, 0), size=wx.Size(0, 0), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   113
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   114
        self.staticText2 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   115
              label='Name:', name='staticText2', parent=self,
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   116
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   117
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   118
        self.staticText3 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT2,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   119
              label='Inputs:', name='staticText4', parent=self,
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   120
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   121
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   122
        self.staticText4 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT4,
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   123
              label='Execution Order:', name='staticText4', parent=self,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   124
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   125
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   126
        self.staticText5 = wx.StaticText(id=ID_BLOCKPROPERTIESDIALOGSTATICTEXT5,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   127
              label='Preview:', name='staticText5', parent=self,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   128
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   129
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   130
        if wx.Platform == '__WXMSW__':
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   131
            treestyle = wx.TR_HAS_BUTTONS|wx.TR_SINGLE|wx.SUNKEN_BORDER
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   132
        else:
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   133
            treestyle = wx.TR_HAS_BUTTONS|wx.TR_HIDE_ROOT|wx.TR_SINGLE|wx.SUNKEN_BORDER
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   134
        self.TypeTree = wx.TreeCtrl(id=ID_BLOCKPROPERTIESDIALOGTYPETREE,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   135
              name='TypeTree', parent=self, pos=wx.Point(0, 0),
105
d8284a8f1934 Bug on linux in BlockPropertiesDialog (root visible) fixed
lbessard
parents: 101
diff changeset
   136
              size=wx.Size(0, 0), style=treestyle)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   137
        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnTypeTreeItemSelected,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   138
              id=ID_BLOCKPROPERTIESDIALOGTYPETREE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   139
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   140
        self.TypeDesc = wx.TextCtrl(id=ID_BLOCKPROPERTIESDIALOGTYPEDESC,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   141
              name='TypeDesc', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   142
              size=wx.Size(0, 0), style=wx.TE_READONLY|wx.TE_MULTILINE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   143
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   144
        self.BlockName = wx.TextCtrl(id=ID_BLOCKPROPERTIESDIALOGNAME, value='',
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   145
              name='BlockName', parent=self, pos=wx.Point(0, 0),
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   146
              size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   147
        self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_BLOCKPROPERTIESDIALOGNAME)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   148
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   149
        self.Inputs = wx.SpinCtrl(id=ID_BLOCKPROPERTIESDIALOGINPUTS,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   150
              name='Inputs', parent=self, pos=wx.Point(0, 0),
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   151
              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=2, max=20)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   152
        self.Bind(wx.EVT_SPINCTRL, self.OnInputsChanged, id=ID_BLOCKPROPERTIESDIALOGINPUTS)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   153
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   154
        self.ExecutionOrder = wx.SpinCtrl(id=ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   155
              name='ExecutionOrder', parent=self, pos=wx.Point(0, 0),
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   156
              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   157
        self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged, id=ID_BLOCKPROPERTIESDIALOGEXECUTIONORDER)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   158
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   159
        self.Preview = wx.Panel(id=ID_BLOCKPROPERTIESDIALOGPREVIEW,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   160
              name='Preview', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   161
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   162
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
   163
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   164
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   165
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   166
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   167
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   168
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   169
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   170
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   171
            wx.EVT_PAINT(self.Preview, self.OnPaint)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   172
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   173
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   174
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   175
    def __init__(self, parent):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   176
        self._init_ctrls(parent)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   177
        self.BlockName.SetValue("")
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   178
        self.BlockName.Enable(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   179
        self.Inputs.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   180
        self.Block = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   181
        self.MinBlockSize = None
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   182
        self.First = True
70
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   183
        
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   184
        self.PouNames = []
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   185
        self.PouElementNames = []
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   186
    
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   187
    def FindTreeItem(self, root, name, inputs = None):
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   188
        if root.IsOk():
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   189
            pydata = self.TypeTree.GetPyData(root)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   190
            if inputs and "inputs" in pydata:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   191
                same_inputs = pydata["inputs"] == inputs
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   192
            else:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   193
                same_inputs = True
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   194
            if self.TypeTree.GetItemText(root) == name and same_inputs:
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   195
                return root
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   196
            else:
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   197
                if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   198
                    item, root_cookie = self.TypeTree.GetFirstChild(root, 0)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   199
                else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   200
                    item, root_cookie = self.TypeTree.GetFirstChild(root)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   201
                while item.IsOk():
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   202
                    result = self.FindTreeItem(item, name, inputs)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   203
                    if result:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   204
                        return result
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   205
                    item, root_cookie = self.TypeTree.GetNextChild(root, root_cookie)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   206
        return None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   207
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   208
    def OnOK(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   209
        error = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   210
        selected = self.TypeTree.GetSelection()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   211
        block_name = self.BlockName.GetValue()
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   212
        name_enabled = self.BlockName.IsEnabled()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   213
        if not selected.IsOk() or self.TypeTree.GetItemParent(selected) == self.TypeTree.GetRootItem() or selected == self.TypeTree.GetRootItem():
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   214
            message = wx.MessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   215
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   216
            message.Destroy()
70
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   217
        elif name_enabled and block_name == "":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   218
            message = wx.MessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   219
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   220
            message.Destroy()
70
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   221
        elif name_enabled and not TestIdentifier(block_name):
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   222
            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   223
            message.ShowModal()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   224
            message.Destroy()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   225
        elif name_enabled and block_name.upper() in IEC_KEYWORDS:
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   226
            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   227
            message.ShowModal()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   228
            message.Destroy()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   229
        elif name_enabled and block_name.upper() in self.PouNames:
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   230
            message = wx.MessageDialog(self, "\"%s\" pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   231
            message.ShowModal()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   232
            message.Destroy()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   233
        elif name_enabled and block_name.upper() in self.PouElementNames:
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   234
            message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   235
            message.ShowModal()
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   236
            message.Destroy()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   237
        else:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   238
            self.EndModal(wx.ID_OK)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   239
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   240
    def SetBlockList(self, blocktypes):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   241
        if wx.Platform == '__WXMSW__':
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   242
            root = self.TypeTree.AddRoot("Block Types")
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   243
        else:
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   244
            root = self.TypeTree.AddRoot("")
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   245
        self.TypeTree.SetPyData(root, {"type" : CATEGORY})
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   246
        for category in blocktypes:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   247
            category_item = self.TypeTree.AppendItem(root, category["name"])
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   248
            self.TypeTree.SetPyData(category_item, {"type" : CATEGORY})
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   249
            for blocktype in category["list"]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   250
                blocktype_item = self.TypeTree.AppendItem(category_item, blocktype["name"])
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   251
                self.TypeTree.SetPyData(blocktype_item, {"type" : BLOCK, "inputs" : tuple([type for name, type, modifier in blocktype["inputs"]])})
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   252
        if wx.Platform == '__WXMSW__':
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   253
            self.TypeTree.Expand(root)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   254
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   255
    def SetMinBlockSize(self, size):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   256
        self.MinBlockSize = size
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   257
70
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   258
    def SetPouNames(self, pou_names):
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   259
        self.PouNames = [pou_name.upper() for pou_name in pou_names]
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   260
        
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   261
    def SetPouElementNames(self, element_names):
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   262
        self.PouElementNames = [element_name.upper() for element_name in element_names]
0e48629c1e6d Adding support for avoiding name conflicts
lbessard
parents: 64
diff changeset
   263
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   264
    def SetValues(self, values):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   265
        for name, value in values.items():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   266
            if name == "type":
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   267
                inputs = None
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   268
                if "inputs" in values:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   269
                    inputs = values["inputs"]
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   270
                item = self.FindTreeItem(self.TypeTree.GetRootItem(), value, inputs)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   271
                if item:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   272
                    self.TypeTree.SelectItem(item)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   273
            elif name == "name":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   274
                self.BlockName.SetValue(value)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   275
            elif name == "extension":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   276
                self.Inputs.SetValue(value)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   277
            elif name == "executionOrder":
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   278
                self.ExecutionOrder.SetValue(value)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   279
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   280
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   281
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   282
        values = {}
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   283
        item = self.TypeTree.GetSelection()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   284
        values["type"] = self.TypeTree.GetItemText(item)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   285
        values["inputs"] = self.TypeTree.GetPyData(item)["inputs"]
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   286
        if self.BlockName.GetValue() != "":
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   287
            values["name"] = self.BlockName.GetValue()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   288
        values["width"], values["height"] = self.Block.GetSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   289
        values["extension"] = self.Inputs.GetValue()
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   290
        values["executionOrder"] = self.ExecutionOrder.GetValue()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   291
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   292
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   293
    def OnTypeTreeItemSelected(self, event):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   294
        self.BlockName.SetValue("")
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   295
        selected = event.GetItem()
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   296
        pydata = self.TypeTree.GetPyData(selected)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   297
        if pydata["type"] != CATEGORY:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   298
            blocktype = GetBlockType(self.TypeTree.GetItemText(selected), pydata["inputs"])
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   299
            if blocktype:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   300
                self.Inputs.SetValue(len(blocktype["inputs"]))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   301
                self.Inputs.Enable(blocktype["extensible"])
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   302
                self.BlockName.Enable(blocktype["type"] != "function")
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   303
                self.TypeDesc.SetValue(blocktype["comment"])
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   304
                wx.CallAfter(self.RefreshPreview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   305
            else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   306
                self.BlockName.Enable(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   307
                self.Inputs.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   308
                self.Inputs.SetValue(2)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   309
                self.TypeDesc.SetValue("")
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   310
                wx.CallAfter(self.ErasePreview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   311
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   312
            self.BlockName.Enable(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   313
            self.Inputs.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   314
            self.Inputs.SetValue(2)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   315
            self.TypeDesc.SetValue("")
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   316
            wx.CallAfter(self.ErasePreview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   317
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   318
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   319
    def OnNameChanged(self, event):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   320
        if self.BlockName.IsEnabled():
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   321
            self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   322
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   323
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   324
    def OnInputsChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   325
        if self.Inputs.IsEnabled():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   326
            self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   327
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   328
    
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   329
    def OnExecutionOrderChanged(self, event):
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   330
        self.RefreshPreview()
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   331
        event.Skip()
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   332
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   333
    def ErasePreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   334
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   335
        dc.Clear()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   336
        self.Block = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   337
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   338
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   339
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   340
        dc.Clear()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   341
        item = self.TypeTree.GetSelection()
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   342
        if item.IsOk():
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   343
            pydata = self.TypeTree.GetPyData(item)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   344
            if pydata["type"] == CATEGORY:
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   345
                self.Block = None
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   346
            else:
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   347
                blocktype = self.TypeTree.GetItemText(item)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   348
                if blocktype:
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   349
                    self.Block = FBD_Block(self.Preview, blocktype, self.BlockName.GetValue(), extension = self.Inputs.GetValue(), inputs = pydata["inputs"], executionOrder = self.ExecutionOrder.GetValue())
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   350
                    width, height = self.MinBlockSize
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   351
                    min_width, min_height = self.Block.GetMinSize()
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   352
                    width, height = max(min_width, width), max(min_height, height)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   353
                    self.Block.SetSize(width, height)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   354
                    clientsize = self.Preview.GetClientSize()
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   355
                    x = (clientsize.width - width) / 2
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   356
                    y = (clientsize.height - height) / 2
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   357
                    self.Block.SetPosition(x, y)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   358
                    self.Block.Draw(dc)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   359
                else:
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
   360
                    self.Block = None
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   361
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   362
    def OnPaint(self, event):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   363
        if self.Block is not None:
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   364
            self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   365
        event.Skip()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   366
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   367
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   368
#                          Create New Variable Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   369
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   370
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   371
[ID_VARIABLEPROPERTIESDIALOG, ID_VARIABLEPROPERTIESDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   372
 ID_VARIABLEPROPERTIESDIALOGNAME, ID_VARIABLEPROPERTIESDIALOGCLASS, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   373
 ID_VARIABLEPROPERTIESDIALOGPREVIEW, ID_VARIABLEPROPERTIESDIALOGEXPRESSION,
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   374
 ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1, 
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   375
 ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3, 
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   376
 ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4, ID_VARIABLEPROPERTIESDIALOGSTATICTEXT5
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   377
] = [wx.NewId() for _init_ctrls in range(12)]
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   378
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   379
class VariablePropertiesDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   380
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   381
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   382
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   383
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   384
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   385
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   386
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   387
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   388
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   389
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   390
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   391
        
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   392
    def _init_coll_flexGridSizer1_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   393
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   394
        parent.AddGrowableRow(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   395
    
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   396
    def _init_coll_MainSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   397
        parent.AddSizer(self.TopSizer, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   398
        parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   399
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   400
        
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   401
    def _init_coll_MainSizer_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   402
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   403
        parent.AddGrowableRow(2)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   404
    
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   405
    def _init_coll_TopSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   406
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   407
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   408
    
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   409
    def _init_coll_LeftGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   410
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   411
        parent.AddWindow(self.Class, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   412
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   413
        parent.AddWindow(self.Expression, 0, border=0, flag=wx.GROW)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   414
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   415
        parent.AddWindow(self.ExecutionOrder, 0, border=0, flag=wx.GROW)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   416
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   417
    
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   418
    def _init_coll_LeftGridSizer_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   419
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   420
        parent.AddGrowableRow(2)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   421
            
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   422
    def _init_coll_RightGridSizer_Items(self, parent):
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   423
        parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   424
        parent.AddWindow(self.VariableName, 0, border=0, flag=wx.GROW)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   425
        
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   426
    def _init_coll_RightGridSizer_Growables(self, parent):
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   427
        parent.AddGrowableCol(0)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   428
        parent.AddGrowableRow(1)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   429
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   430
    def _init_sizers(self):
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   431
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   432
        self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=5)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   433
        self.TopSizer = wx.BoxSizer(wx.HORIZONTAL)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   434
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   435
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   436
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   437
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   438
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   439
        self._init_coll_MainSizer_Items(self.MainSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   440
        self._init_coll_MainSizer_Growables(self.MainSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   441
        self._init_coll_TopSizer_Items(self.TopSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   442
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   443
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   444
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   445
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   446
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   447
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   448
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   449
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   450
        wx.Dialog.__init__(self, id=ID_VARIABLEPROPERTIESDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   451
              name='VariablePropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   452
              size=wx.Size(400, 380), style=wx.DEFAULT_DIALOG_STYLE,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   453
              title='Variable Properties')
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   454
        self.SetClientSize(wx.Size(400, 380))
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   455
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   456
        self.staticText1 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT1,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   457
              label='Class:', name='staticText1', parent=self,
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   458
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   459
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   460
        self.staticText2 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT2,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   461
              label='Expression:', name='staticText2', parent=self,
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   462
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   463
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   464
        self.staticText3 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT3,
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   465
              label='Execution Order:', name='staticText3', parent=self,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   466
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   467
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   468
        self.staticText4 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT4,
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   469
              label='Name:', name='staticText4', parent=self,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   470
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   471
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   472
        self.staticText5 = wx.StaticText(id=ID_VARIABLEPROPERTIESDIALOGSTATICTEXT5,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   473
              label='Preview:', name='staticText5', parent=self,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   474
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   475
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   476
        self.Class = wx.Choice(id=ID_VARIABLEPROPERTIESDIALOGCLASS,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   477
              name='Class', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   478
              size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   479
        self.Bind(wx.EVT_CHOICE, self.OnClassChanged, id=ID_VARIABLEPROPERTIESDIALOGCLASS)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   480
        
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   481
        self.VariableName = wx.ListBox(id=ID_VARIABLEPROPERTIESDIALOGNAME,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   482
              name='Name', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   483
              size=wx.Size(0, 90), style=wx.LB_SINGLE)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   484
        self.Bind(wx.EVT_LISTBOX, self.OnNameChanged, id=ID_VARIABLEPROPERTIESDIALOGNAME)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   485
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   486
        self.Expression = wx.TextCtrl(id=ID_VARIABLEPROPERTIESDIALOGEXPRESSION,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   487
              name='Expression', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   488
              size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   489
        self.Bind(wx.EVT_TEXT, self.OnExpressionChanged, id=ID_VARIABLEPROPERTIESDIALOGEXPRESSION)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   490
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   491
        self.ExecutionOrder = wx.SpinCtrl(id=ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER,
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   492
              name='ExecutionOrder', parent=self, pos=wx.Point(0, 0),
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   493
              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   494
        self.Bind(wx.EVT_SPINCTRL, self.OnExecutionOrderChanged, id=ID_VARIABLEPROPERTIESDIALOGEXECUTIONORDER)
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   495
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   496
        self.Spacer = wx.Panel(id=ID_VARIABLEPROPERTIESDIALOGSPACER,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   497
              name='Spacer', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   498
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   499
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   500
        self.Preview = wx.Panel(id=ID_VARIABLEPROPERTIESDIALOGPREVIEW,
58
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   501
              name='Preview', parent=self, pos=wx.Point(0, 0),
39cd981ff242 Changing file headers
lbessard
parents: 56
diff changeset
   502
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   503
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
   504
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   505
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   506
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   507
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   508
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   509
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   510
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   511
            wx.EVT_PAINT(self.Preview, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   512
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   513
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   514
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   515
    def __init__(self, parent):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   516
        self._init_ctrls(parent)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   517
        self.Variable = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   518
        self.VarList = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   519
        self.MinVariableSize = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   520
        self.RefreshNameList()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   521
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   522
        for choice in ["Input", "Output", "InOut"]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   523
            self.Class.Append(choice)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   524
        self.Class.SetStringSelection("Input")
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   525
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   526
    def RefreshNameList(self):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   527
        selected = self.VariableName.GetStringSelection()
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   528
        self.VariableName.Clear()
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   529
        self.VariableName.Append("")
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   530
        for name, var_type, value_type in self.VarList:
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   531
            if var_type in ["Local","Temp","Global","External"]:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   532
                self.VariableName.Append(name)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   533
            elif var_type == "Input" and self.Class.GetStringSelection() == "Input":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   534
                self.VariableName.Append(name)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   535
            elif var_type == "Output" and self.Class.GetStringSelection() == "Output":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   536
                self.VariableName.Append(name)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   537
            elif var_type == "InOut" and self.Class.GetStringSelection() == "InOut":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   538
                self.VariableName.Append(name)
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   539
        if self.VariableName.FindString(selected) != wx.NOT_FOUND:
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   540
            self.VariableName.SetStringSelection(selected)
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   541
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   542
            self.VariableName.SetStringSelection("")
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   543
        self.VariableName.Enable(self.VariableName.GetCount() > 0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   544
            
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   545
    def SetMinVariableSize(self, size):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   546
        self.MinVariableSize = size
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   547
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   548
    def SetVariables(self, vars):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   549
        self.VarList = vars
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   550
        self.RefreshNameList()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   551
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   552
    def SetValues(self, values):
56
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   553
        value_type = values.get("type", None)
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   554
        value_name = values.get("name", None)
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   555
        if value_type:
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   556
            if value_type == INPUT:
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   557
                self.Class.SetStringSelection("Input")
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   558
            if value_type == OUTPUT:
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   559
                self.Class.SetStringSelection("Output")
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   560
            if value_type == INOUT:
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   561
                self.Class.SetStringSelection("InOut")
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   562
            self.RefreshNameList()
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   563
        if value_name:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   564
            if self.VariableName.FindString(value_name) != wx.NOT_FOUND:
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   565
                self.VariableName.SetStringSelection(value_name)
56
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   566
                self.Expression.Enable(False)
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   567
            else:
7187e1c00975 Adding support for Undo/Redo and Unsaved File On Close detection
lbessard
parents: 45
diff changeset
   568
                self.Expression.SetValue(value_name)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   569
                self.VariableName.Enable(False)
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   570
        if "executionOrder" in values:
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   571
            self.ExecutionOrder.SetValue(values["executionOrder"])
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   572
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   573
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   574
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   575
        values = {}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   576
        classtype = self.Class.GetStringSelection()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   577
        if classtype == "Input":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   578
            values["type"] = INPUT
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   579
        elif classtype == "Output":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   580
            values["type"] = OUTPUT
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   581
        elif classtype == "InOut":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   582
            values["type"] = INOUT
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   583
        expression = self.Expression.GetValue()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   584
        if self.Expression.IsEnabled() and expression != "":
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   585
            values["name"] = expression
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   586
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   587
            values["name"] = self.VariableName.GetStringSelection()
101
3f06a178b960 Fixed crash while draging connector from pins with undefined types
etisserant
parents: 96
diff changeset
   588
        values["value_type"] = None
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   589
        for var_name, var_type, value_type in self.VarList:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   590
            if var_name == values["name"]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   591
                values["value_type"] = value_type
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   592
        values["width"], values["height"] = self.Variable.GetSize()
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   593
        values["executionOrder"] = self.ExecutionOrder.GetValue()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   594
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   595
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   596
    def OnClassChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   597
        self.RefreshNameList()
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   598
        if self.Class.GetStringSelection() == "Input":
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   599
            self.Expression.Enable(True)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   600
        else:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   601
            self.Expression.Enable(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   602
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   603
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   604
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   605
    def OnNameChanged(self, event):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   606
        if self.VariableName.GetStringSelection() != "":
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   607
            self.Expression.Enable(False)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   608
        elif self.Class.GetStringSelection() == "Input":
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   609
            self.Expression.Enable(True)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   610
        self.RefreshPreview()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   611
        event.Skip()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   612
    
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   613
    def OnExpressionChanged(self, event):
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   614
        if self.Expression.GetValue() != "":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   615
            self.VariableName.Enable(False)
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   616
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   617
            self.VariableName.Enable(True)
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   618
        self.RefreshPreview()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   619
        event.Skip()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   620
    
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   621
    def OnExecutionOrderChanged(self, event):
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   622
        self.RefreshPreview()
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   623
        event.Skip()
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   624
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   625
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   626
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   627
        dc.Clear()
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   628
        expression = self.Expression.GetValue()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   629
        if self.Expression.IsEnabled() and expression != "":
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   630
            name = expression
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   631
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   632
            name = self.VariableName.GetStringSelection()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   633
        type = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   634
        for var_name, var_type, value_type in self.VarList:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   635
            if var_name == name:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   636
                type = value_type
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   637
        classtype = self.Class.GetStringSelection()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   638
        if classtype == "Input":
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   639
            self.Variable = FBD_Variable(self.Preview, INPUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   640
        elif classtype == "Output":
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   641
            self.Variable = FBD_Variable(self.Preview, OUTPUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   642
        elif classtype == "InOut":
118
0c53d6a36013 Add support for defining execution order in FBD networks (related ST code not generated yet)
lbessard
parents: 113
diff changeset
   643
            self.Variable = FBD_Variable(self.Preview, INOUT, name, type, executionOrder = self.ExecutionOrder.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   644
        width, height = self.MinVariableSize
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   645
        min_width, min_height = self.Variable.GetMinSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   646
        width, height = max(min_width, width), max(min_height, height)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   647
        self.Variable.SetSize(width, height)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   648
        clientsize = self.Preview.GetClientSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   649
        x = (clientsize.width - width) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   650
        y = (clientsize.height - height) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   651
        self.Variable.SetPosition(x, y)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   652
        self.Variable.Draw(dc)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   653
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   654
    def OnPaint(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   655
        self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   656
        event.Skip()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   657
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   658
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   659
#                          Create New Connection Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   660
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   661
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   662
[ID_CONNECTIONPROPERTIESDIALOG, ID_CONNECTIONPROPERTIESDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   663
 ID_CONNECTIONPROPERTIESDIALOGNAME, ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   664
 ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2, ID_CONNECTIONPROPERTIESDIALOGPREVIEW,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   665
 ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1, ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   666
 ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3, 
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   667
] = [wx.NewId() for _init_ctrls in range(9)]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   668
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   669
class ConnectionPropertiesDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   670
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   671
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   672
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   673
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   674
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   675
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   676
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   677
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   678
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   679
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   680
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   681
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   682
    def _init_coll_flexGridSizer1_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   683
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   684
        parent.AddGrowableRow(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   685
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   686
    def _init_coll_MainSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   687
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   688
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   689
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   690
    def _init_coll_LeftGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   691
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   692
        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   693
        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   694
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   695
        parent.AddWindow(self.ConnectionName, 0, border=0, flag=wx.GROW)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   696
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   697
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   698
    def _init_coll_LeftGridSizer_Growables(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   699
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   700
        parent.AddGrowableRow(5)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   701
            
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   702
    def _init_coll_RightGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   703
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   704
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   705
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   706
    def _init_coll_RightGridSizer_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   707
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   708
        parent.AddGrowableRow(1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   709
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   710
    def _init_sizers(self):
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   711
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   712
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   713
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   714
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   715
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   716
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   717
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   718
        self._init_coll_MainSizer_Items(self.MainSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   719
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   720
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   721
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   722
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   723
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   724
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   725
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   726
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   727
        wx.Dialog.__init__(self, id=ID_CONNECTIONPROPERTIESDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   728
              name='ConnectionPropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   729
              size=wx.Size(350, 220), style=wx.DEFAULT_DIALOG_STYLE,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   730
              title='Connection Properties')
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   731
        self.SetClientSize(wx.Size(350, 220))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   732
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   733
        self.staticText1 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   734
              label='Type:', name='staticText1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   735
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   736
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   737
        self.staticText2 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   738
              label='Name:', name='staticText2', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   739
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   740
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   741
        self.staticText3 = wx.StaticText(id=ID_CONNECTIONPROPERTIESDIALOGSTATICTEXT3,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   742
              label='Preview:', name='staticText3', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   743
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   744
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   745
        self.radioButton1 = wx.RadioButton(id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   746
              label='Connector', name='radioButton1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   747
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   748
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   749
        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   750
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   751
        self.radioButton2 = wx.RadioButton(id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   752
              label='Continuation', name='radioButton2', parent=self, 
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   753
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   754
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_CONNECTIONPROPERTIESDIALOGRADIOBUTTON2)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   755
        self.radioButton2.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   756
        
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   757
        self.ConnectionName = wx.TextCtrl(id=ID_CONNECTIONPROPERTIESDIALOGNAME,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   758
              name='Name', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   759
              size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   760
        self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_CONNECTIONPROPERTIESDIALOGNAME)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   761
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   762
        self.Preview = wx.Panel(id=ID_CONNECTIONPROPERTIESDIALOGPREVIEW,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   763
              name='Preview', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   764
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   765
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
   766
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   767
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   768
        self.Spacer = wx.Panel(id=ID_CONNECTIONPROPERTIESDIALOGSPACER,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   769
              name='Spacer', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   770
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   771
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   772
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   773
        
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   774
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   775
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   776
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   777
            wx.EVT_PAINT(self.Preview, self.OnPaint)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   778
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   779
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   780
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   781
    def __init__(self, parent):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   782
        self._init_ctrls(parent)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   783
        self.Connection = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   784
        self.MinConnectionSize = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   785
            
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   786
    def SetMinConnectionSize(self, size):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   787
        self.MinConnectionSize = size
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   788
    
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   789
    def SetValues(self, values):
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   790
        for name, value in values.items():
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   791
            if name == "type":
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   792
                if value == CONNECTOR:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   793
                    self.radioButton1.SetValue(True)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   794
                elif value == CONTINUATION:
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   795
                    self.radioButton2.SetValue(True)
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   796
            elif name == "name":
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   797
                self.ConnectionName.SetValue(value)
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   798
        self.RefreshPreview()
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   799
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   800
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   801
        values = {}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   802
        if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   803
            values["type"] = CONNECTOR
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   804
        else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   805
            values["type"] = CONTINUATION
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   806
        values["name"] = self.ConnectionName.GetValue()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   807
        values["width"], values["height"] = self.Connection.GetSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   808
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   809
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   810
    def OnTypeChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   811
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   812
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   813
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   814
    def OnNameChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   815
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   816
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   817
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   818
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   819
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   820
        dc.Clear()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   821
        if self.radioButton1.GetValue():
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   822
            self.Connection = FBD_Connector(self.Preview, CONNECTOR, self.ConnectionName.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   823
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   824
            self.Connection = FBD_Connector(self.Preview, CONTINUATION, self.ConnectionName.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   825
        width, height = self.MinConnectionSize
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   826
        min_width, min_height = self.Connection.GetMinSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   827
        width, height = max(min_width, width), max(min_height, height)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   828
        self.Connection.SetSize(width, height)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   829
        clientsize = self.Preview.GetClientSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   830
        x = (clientsize.width - width) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   831
        y = (clientsize.height - height) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   832
        self.Connection.SetPosition(x, y)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   833
        self.Connection.Draw(dc)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   834
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   835
    def OnPaint(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   836
        self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   837
        event.Skip()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   838
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   839
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   840
#                        Edit Ladder Element Properties Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   841
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   842
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   843
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   844
[ID_LDELEMENTDIALOG, ID_LDELEMENTDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   845
 ID_LDELEMENTDIALOGNAME, ID_LDELEMENTDIALOGRADIOBUTTON1, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   846
 ID_LDELEMENTDIALOGRADIOBUTTON2, ID_LDELEMENTDIALOGRADIOBUTTON3,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   847
 ID_LDELEMENTDIALOGRADIOBUTTON4, ID_LDELEMENTDIALOGPREVIEW,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   848
 ID_LDELEMENTDIALOGSTATICTEXT1, ID_LDELEMENTDIALOGSTATICTEXT2, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   849
 ID_LDELEMENTDIALOGSTATICTEXT3, 
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   850
] = [wx.NewId() for _init_ctrls in range(11)]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   851
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   852
class LDElementDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   853
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   854
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   855
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   856
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   857
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   858
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   859
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   860
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   861
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   862
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   863
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   864
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   865
    def _init_coll_flexGridSizer1_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   866
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   867
        parent.AddGrowableRow(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   868
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   869
    def _init_coll_MainSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   870
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   871
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   872
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   873
    def _init_coll_LeftGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   874
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   875
        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   876
        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   877
        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   878
        parent.AddWindow(self.radioButton4, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   879
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   880
        parent.AddWindow(self.ElementName, 0, border=0, flag=wx.GROW)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   881
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   882
        
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   883
    def _init_coll_LeftGridSizer_Growables(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   884
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   885
        parent.AddGrowableRow(7)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   886
            
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   887
    def _init_coll_RightGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   888
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   889
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   890
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   891
    def _init_coll_RightGridSizer_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   892
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   893
        parent.AddGrowableRow(1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   894
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   895
    def _init_sizers(self):
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   896
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   897
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   898
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=8, vgap=5)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   899
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   900
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   901
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   902
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   903
        self._init_coll_MainSizer_Items(self.MainSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   904
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   905
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   906
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   907
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   908
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   909
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   910
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   911
    def _init_ctrls(self, prnt, title, labels):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   912
        wx.Dialog.__init__(self, id=ID_LDELEMENTDIALOG,
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
   913
              name='LDElementDialog', parent=prnt, pos=wx.Point(376, 223),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   914
              size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   915
              title=title)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   916
        self.SetClientSize(wx.Size(350, 260))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   917
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   918
        self.staticText1 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   919
              label='Modifier:', name='staticText1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   920
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   921
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   922
        self.staticText2 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   923
              label='Name:', name='staticText2', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   924
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   925
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   926
        self.staticText3 = wx.StaticText(id=ID_LDELEMENTDIALOGSTATICTEXT3,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   927
              label='Preview:', name='staticText3', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   928
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   929
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   930
        self.radioButton1 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   931
              label=labels[0], name='radioButton1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   932
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   933
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   934
        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   935
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   936
        self.radioButton2 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   937
              label=labels[1], name='radioButton2', parent=self, 
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   938
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   939
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON2)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   940
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   941
        self.radioButton3 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON3,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   942
              label=labels[2], name='radioButton3', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   943
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   944
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON3)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   945
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   946
        self.radioButton4 = wx.RadioButton(id=ID_LDELEMENTDIALOGRADIOBUTTON4,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   947
              label=labels[3], name='radioButton4', parent=self, 
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   948
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   949
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDELEMENTDIALOGRADIOBUTTON4)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   950
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   951
        self.ElementName = wx.Choice(id=ID_LDELEMENTDIALOGNAME,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   952
              name='Name', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   953
              size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   954
        self.Bind(wx.EVT_CHOICE, self.OnNameChanged, id=ID_LDELEMENTDIALOGNAME)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   955
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   956
        self.Preview = wx.Panel(id=ID_LDELEMENTDIALOGPREVIEW,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   957
              name='Preview', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   958
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   959
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
   960
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   961
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   962
        self.Spacer = wx.Panel(id=ID_LDELEMENTDIALOGSPACER,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   963
              name='Spacer', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   964
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
   965
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   966
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   967
        
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   968
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   969
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   970
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
   971
            wx.EVT_PAINT(self.Preview, self.OnPaint)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   972
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   973
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   974
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   975
    def __init__(self, parent, type):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   976
        self.Type = type
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   977
        if type == "contact":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   978
            self._init_ctrls(parent, "Edit Contact Values", ['Normal','Negate','Rising Edge','Falling Edge'])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   979
            self.Element = LD_Contact(self.Preview, CONTACT_NORMAL, "")
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   980
        elif type == "coil":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   981
            self._init_ctrls(parent, "Edit Coil Values", ['Normal','Negate','Set','Reset'])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   982
            self.Element = LD_Coil(self.Preview, COIL_NORMAL, "")
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   983
        
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   984
    def SetElementSize(self, size):
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   985
        min_width, min_height = self.Element.GetMinSize()
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
   986
        width, height = max(min_width, size[0]), max(min_height, size[1])
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   987
        self.Element.SetSize(width, height)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
   988
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   989
    def SetVariables(self, vars):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   990
        self.ElementName.Clear()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   991
        for name in vars:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   992
            self.ElementName.Append(name)
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   993
        self.ElementName.Enable(self.ElementName.GetCount() > 0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   994
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   995
    def SetValues(self, values):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   996
        for name, value in values.items():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   997
            if name == "name":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
   998
                self.Element.SetName(value)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
   999
                self.ElementName.SetStringSelection(value)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1000
            elif name == "type":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1001
                self.Element.SetType(value)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1002
                if self.Type == "contact":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1003
                    if value == CONTACT_NORMAL:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1004
                        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1005
                    elif value == CONTACT_REVERSE:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1006
                        self.radioButton2.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1007
                    elif value == CONTACT_RISING:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1008
                        self.radioButton3.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1009
                    elif value == CONTACT_FALLING:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1010
                        self.radioButton4.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1011
                elif self.Type == "coil":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1012
                    if value == COIL_NORMAL:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1013
                        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1014
                    elif value == COIL_REVERSE:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1015
                        self.radioButton2.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1016
                    elif value == COIL_SET:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1017
                        self.radioButton3.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1018
                    elif value == COIL_RESET:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1019
                        self.radioButton4.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1020
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1021
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1022
        values = {}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1023
        values["name"] = self.Element.GetName()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1024
        values["type"] = self.Element.GetType()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1025
        values["width"], values["height"] = self.Element.GetSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1026
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1027
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1028
    def OnTypeChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1029
        if self.Type == "contact":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1030
            if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1031
                self.Element.SetType(CONTACT_NORMAL)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1032
            elif self.radioButton2.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1033
                self.Element.SetType(CONTACT_REVERSE)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1034
            elif self.radioButton3.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1035
                self.Element.SetType(CONTACT_RISING)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1036
            elif self.radioButton4.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1037
                self.Element.SetType(CONTACT_FALLING)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1038
        elif self.Type == "coil":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1039
            if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1040
                self.Element.SetType(COIL_NORMAL)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1041
            elif self.radioButton2.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1042
                self.Element.SetType(COIL_REVERSE)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1043
            elif self.radioButton3.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1044
                self.Element.SetType(COIL_SET)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1045
            elif self.radioButton4.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1046
                self.Element.SetType(COIL_RESET)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1047
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1048
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1049
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1050
    def OnNameChanged(self, event):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1051
        self.Element.SetName(self.ElementName.GetStringSelection())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1052
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1053
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1054
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1055
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1056
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1057
        dc.Clear()
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1058
        clientsize = self.Preview.GetClientSize()
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1059
        width, height = self.Element.GetSize()
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1060
        self.Element.SetPosition((clientsize.width - width) / 2, (clientsize.height - height) / 2)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1061
        self.Element.Draw(dc)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1062
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1063
    def OnPaint(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1064
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1065
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1066
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1067
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1068
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1069
#                      Edit Ladder Power Rail Properties Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1070
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1071
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1072
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1073
[ID_LDPOWERRAILDIALOG, ID_LDPOWERRAILDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1074
 ID_LDPOWERRAILDIALOGTYPE, ID_LDPOWERRAILDIALOGRADIOBUTTON1, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1075
 ID_LDPOWERRAILDIALOGRADIOBUTTON2, ID_LDPOWERRAILDIALOGPREVIEW,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1076
 ID_LDPOWERRAILDIALOGSTATICTEXT1, ID_LDPOWERRAILDIALOGSTATICTEXT2, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1077
 ID_LDPOWERRAILDIALOGSTATICTEXT3, ID_LDPOWERRAILDIALOGPINNUMBER,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1078
] = [wx.NewId() for _init_ctrls in range(10)]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1079
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1080
class LDPowerRailDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1081
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1082
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1083
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1084
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1085
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1086
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1087
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1088
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1089
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1090
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1091
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1092
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1093
    def _init_coll_flexGridSizer1_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1094
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1095
        parent.AddGrowableRow(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1096
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1097
    def _init_coll_MainSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1098
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1099
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1100
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1101
    def _init_coll_LeftGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1102
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1103
        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1104
        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1105
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1106
        parent.AddWindow(self.PinNumber, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1107
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1108
    
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1109
    def _init_coll_LeftGridSizer_Growables(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1110
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1111
        parent.AddGrowableRow(5)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1112
            
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1113
    def _init_coll_RightGridSizer_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1114
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1115
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1116
        
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1117
    def _init_coll_RightGridSizer_Growables(self, parent):
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1118
        parent.AddGrowableCol(0)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1119
        parent.AddGrowableRow(1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1120
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1121
    def _init_sizers(self):
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1122
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1123
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1124
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1125
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1126
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1127
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1128
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1129
        self._init_coll_MainSizer_Items(self.MainSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1130
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1131
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1132
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1133
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1134
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1135
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1136
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1137
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1138
        wx.Dialog.__init__(self, id=ID_LDPOWERRAILDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1139
              name='PowerRailDialog', parent=prnt, pos=wx.Point(376, 223),
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1140
              size=wx.Size(350, 260), style=wx.DEFAULT_DIALOG_STYLE,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1141
              title='Power Rail Properties')
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1142
        self.SetClientSize(wx.Size(350, 260))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1143
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1144
        self.staticText1 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1145
              label='Type:', name='staticText1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1146
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1147
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1148
        self.staticText2 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1149
              label='Pin number:', name='staticText2', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1150
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1151
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1152
        self.staticText3 = wx.StaticText(id=ID_LDPOWERRAILDIALOGSTATICTEXT3,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1153
              label='Preview:', name='staticText3', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1154
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1155
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1156
        self.radioButton1 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON1,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1157
              label='Left PowerRail', name='radioButton1', parent=self,
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1158
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1159
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1160
        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1161
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1162
        self.radioButton2 = wx.RadioButton(id=ID_LDPOWERRAILDIALOGRADIOBUTTON2,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1163
              label='Right PowerRail', name='radioButton2', parent=self, 
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1164
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1165
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_LDPOWERRAILDIALOGRADIOBUTTON2)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1166
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1167
        self.PinNumber = wx.SpinCtrl(id=ID_LDPOWERRAILDIALOGPINNUMBER,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1168
              name='PinNumber', parent=self, pos=wx.Point(0, 0),
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1169
              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=1, max=20)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1170
        self.Bind(wx.EVT_SPINCTRL, self.OnPinNumberChanged, id=ID_LDPOWERRAILDIALOGPINNUMBER)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1171
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1172
        self.Preview = wx.Panel(id=ID_LDPOWERRAILDIALOGPREVIEW,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1173
              name='Preview', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1174
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1175
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
  1176
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1177
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1178
        self.Spacer = wx.Panel(id=ID_LDELEMENTDIALOGSPACER,
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1179
              name='Spacer', parent=self, pos=wx.Point(0, 0),
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1180
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1181
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1182
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1183
        
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1184
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1185
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1186
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1187
            wx.EVT_PAINT(self.Preview, self.OnPaint)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1188
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1189
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1190
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1191
    def __init__(self, parent, type = LEFTRAIL, number = 1):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1192
        self._init_ctrls(parent)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1193
        self.Type = type
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1194
        if type == LEFTRAIL:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1195
            self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1196
        elif type == RIGHTRAIL:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1197
            self.radioButton2.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1198
        self.PinNumber.SetValue(number)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1199
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1200
        self.PowerRailMinSize = (0, 0)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1201
        self.PowerRail = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1202
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1203
    def SetMinSize(self, size):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1204
        self.PowerRailMinSize = size
28
fc23e1f415d8 Adding support for concurrent overriden standard function
lbessard
parents: 27
diff changeset
  1205
        self.RefreshPreview()    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1206
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1207
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1208
        values = {}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1209
        values["type"] = self.Type
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1210
        values["number"] = self.PinNumber.GetValue()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1211
        values["width"], values["height"] = self.PowerRail.GetSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1212
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1213
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1214
    def OnTypeChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1215
        if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1216
            self.Type = LEFTRAIL
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1217
        elif self.radioButton2.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1218
            self.Type = RIGHTRAIL
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1219
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1220
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1221
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1222
    def OnPinNumberChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1223
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1224
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1225
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1226
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1227
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1228
        dc.Clear()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1229
        self.PowerRail = LD_PowerRail(self.Preview, self.Type, connectors = [True for i in xrange(self.PinNumber.GetValue())])
96
d178cfa9e77f Bug on LDPowerRail resize fixed
lbessard
parents: 95
diff changeset
  1230
        min_width, min_height = 2, LD_LINE_SIZE * self.PinNumber.GetValue()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1231
        width, height = max(min_width, self.PowerRailMinSize[0]), max(min_height, self.PowerRailMinSize[1])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1232
        self.PowerRail.SetSize(width, height)
62
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1233
        clientsize = self.Preview.GetClientSize()
1908c45f21ef Adding sizer on some Dialogs for making them resizable
lbessard
parents: 58
diff changeset
  1234
        self.PowerRail.SetPosition((clientsize.width - width) / 2, (clientsize.height - height) / 2)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1235
        self.PowerRail.Draw(dc)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1236
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1237
    def OnPaint(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1238
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1239
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1240
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1241
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1242
#-------------------------------------------------------------------------------
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1243
#                          Edit Step Content Dialog
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1244
#-------------------------------------------------------------------------------
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1245
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1246
[ID_STEPCONTENTDIALOG, ID_STEPCONTENTDIALOGSPACER, 
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1247
 ID_STEPCONTENTDIALOGNAME, ID_STEPCONTENTDIALOGPREVIEW, 
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1248
 ID_STEPCONTENTDIALOGCHECKBOX1, ID_STEPCONTENTDIALOGCHECKBOX2,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1249
 ID_STEPCONTENTDIALOGCHECKBOX3, ID_STEPCONTENTDIALOGSTATICTEXT1, 
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1250
 ID_STEPCONTENTDIALOGSTATICTEXT2, ID_STEPCONTENTDIALOGSTATICTEXT3, 
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1251
] = [wx.NewId() for _init_ctrls in range(10)]
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1252
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1253
class StepContentDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1254
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1255
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1256
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1257
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1258
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1259
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1260
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1261
    
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1262
    def _init_coll_flexGridSizer1_Items(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1263
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1264
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1265
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1266
    def _init_coll_flexGridSizer1_Growables(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1267
        parent.AddGrowableCol(0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1268
        parent.AddGrowableRow(0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1269
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1270
    def _init_coll_MainSizer_Items(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1271
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1272
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1273
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1274
    def _init_coll_LeftGridSizer_Items(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1275
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1276
        parent.AddWindow(self.StepName, 0, border=0, flag=wx.GROW)
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1277
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1278
        parent.AddWindow(self.checkBox1, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1279
        parent.AddWindow(self.checkBox2, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1280
        parent.AddWindow(self.checkBox3, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1281
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1282
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1283
    def _init_coll_LeftGridSizer_Growables(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1284
        parent.AddGrowableCol(0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1285
        parent.AddGrowableRow(6)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1286
            
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1287
    def _init_coll_RightGridSizer_Items(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1288
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1289
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1290
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1291
    def _init_coll_RightGridSizer_Growables(self, parent):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1292
        parent.AddGrowableCol(0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1293
        parent.AddGrowableRow(1)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1294
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1295
    def _init_sizers(self):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1296
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1297
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1298
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1299
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1300
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1301
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1302
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1303
        self._init_coll_MainSizer_Items(self.MainSizer)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1304
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1305
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1306
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1307
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1308
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1309
        self.SetSizer(self.flexGridSizer1)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1310
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1311
    def _init_ctrls(self, prnt):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1312
        wx.Dialog.__init__(self, id=ID_STEPCONTENTDIALOG,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1313
              name='StepContentDialog', parent=prnt, pos=wx.Point(376, 223),
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1314
              size=wx.Size(400, 250), style=wx.DEFAULT_DIALOG_STYLE,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1315
              title='Edit Step')
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1316
        self.SetClientSize(wx.Size(400, 250))
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1317
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1318
        self.staticText1 = wx.StaticText(id=ID_STEPCONTENTDIALOGSTATICTEXT1,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1319
              label='Name:', name='staticText1', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1320
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1321
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1322
        self.staticText2 = wx.StaticText(id=ID_STEPCONTENTDIALOGSTATICTEXT2,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1323
              label='Connectors:', name='staticText2', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1324
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1325
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1326
        self.staticText3 = wx.StaticText(id=ID_STEPCONTENTDIALOGSTATICTEXT3,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1327
              label='Preview:', name='staticText4', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1328
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1329
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1330
        self.StepName = wx.TextCtrl(id=ID_STEPCONTENTDIALOGNAME,
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1331
              name='Name', parent=self, pos=wx.Point(0, 0),
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1332
              size=wx.Size(0, 24), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1333
        self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_STEPCONTENTDIALOGNAME)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1334
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1335
        self.checkBox1 = wx.CheckBox(id=ID_STEPCONTENTDIALOGCHECKBOX1,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1336
              label="Input", name='checkBox1', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1337
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1338
        self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_STEPCONTENTDIALOGCHECKBOX1)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1339
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1340
        self.checkBox2 = wx.CheckBox(id=ID_STEPCONTENTDIALOGCHECKBOX2,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1341
              label="Output", name='checkBox2', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1342
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1343
        self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_STEPCONTENTDIALOGCHECKBOX2)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1344
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1345
        self.checkBox3 = wx.CheckBox(id=ID_STEPCONTENTDIALOGCHECKBOX3,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1346
              label="Action", name='checkBox3', parent=self,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1347
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1348
        self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_STEPCONTENTDIALOGCHECKBOX3)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1349
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1350
        self.Spacer = wx.Panel(id=ID_STEPCONTENTDIALOGSPACER,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1351
              name='Spacer', parent=self, pos=wx.Point(0, 0),
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1352
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1353
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1354
        self.Preview = wx.Panel(id=ID_STEPCONTENTDIALOGPREVIEW,
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1355
              name='Preview', parent=self, pos=wx.Point(0, 0),
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1356
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1357
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1358
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1359
        setattr(self.Preview, "RefreshStepModel", lambda x:None)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1360
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1361
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1362
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1363
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1364
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1365
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1366
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1367
            wx.EVT_PAINT(self.Preview, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1368
        
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1369
        self._init_sizers()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1370
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1371
    def __init__(self, parent, initial = False):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1372
        self._init_ctrls(parent)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1373
        self.Step = None
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1374
        self.Initial = initial
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1375
        self.MinStepSize = None
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1376
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1377
        self.PouNames = []
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1378
        self.Variables = []
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1379
        self.StepNames = []
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1380
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1381
    def OnOK(self, event):
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1382
        step_name = self.StepName.GetValue()
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1383
        if step_name == "":
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1384
            message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1385
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1386
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1387
        elif not TestIdentifier(step_name):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1388
            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1389
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1390
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1391
        elif step_name.upper() in IEC_KEYWORDS:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1392
            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1393
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1394
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1395
        elif step_name.upper() in self.PouNames:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1396
            message = wx.MessageDialog(self, "A pou with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1397
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1398
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1399
        elif step_name.upper() in self.Variables:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1400
            message = wx.MessageDialog(self, "A variable with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1401
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1402
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1403
        elif step_name.upper() in self.StepNames:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1404
            message = wx.MessageDialog(self, "\"%s\" step already exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1405
            message.ShowModal()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1406
            message.Destroy()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1407
        else:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1408
            self.EndModal(wx.ID_OK)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1409
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1410
    def SetMinStepSize(self, size):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1411
        self.MinStepSize = size
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1412
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1413
    def SetPouNames(self, pou_names):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1414
        self.PouNames = [pou_name.upper() for pou_name in pou_names]
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1415
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1416
    def SetVariables(self, variables):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1417
        self.Variables = [var["Name"].upper() for var in variables]
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1418
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1419
    def SetStepNames(self, step_names):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1420
        self.StepNames = [step_name.upper() for step_name in step_names]
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1421
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1422
    def SetValues(self, values):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1423
        value_name = values.get("name", None)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1424
        if value_name:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1425
            self.StepName.SetValue(value_name)
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1426
        else:
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1427
            self.StepName.SetValue("")
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1428
        self.checkBox1.SetValue(values.get("input", False))
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1429
        self.checkBox2.SetValue(values.get("output", False))
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1430
        self.checkBox3.SetValue(values.get("action", False))
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1431
        self.RefreshPreview()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1432
        
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1433
    def GetValues(self):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1434
        values = {}
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1435
        values["name"] = self.StepName.GetValue()
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1436
        values["input"] = self.checkBox1.IsChecked()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1437
        values["output"] = self.checkBox2.IsChecked()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1438
        values["action"] = self.checkBox3.IsChecked()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1439
        values["width"], values["height"] = self.Step.GetSize()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1440
        return values
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1441
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1442
    def OnConnectorsChanged(self, event):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1443
        self.RefreshPreview()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1444
        event.Skip()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1445
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1446
    def OnNameChanged(self, event):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1447
        self.RefreshPreview()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1448
        event.Skip()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1449
    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1450
    def RefreshPreview(self):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1451
        dc = wx.ClientDC(self.Preview)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1452
        dc.Clear()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1453
        self.Step = SFC_Step(self.Preview, self.StepName.GetValue(), self.Initial)
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1454
        if self.checkBox1.IsChecked():
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1455
            self.Step.AddInput()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1456
        else:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1457
            self.Step.RemoveInput()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1458
        if self.checkBox2.IsChecked():
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1459
            self.Step.AddOutput()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1460
        else:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1461
            self.Step.RemoveOutput()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1462
        if self.checkBox3.IsChecked():
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1463
            self.Step.AddAction()    
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1464
        else:
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1465
            self.Step.RemoveAction()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1466
        width, height = self.MinStepSize
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1467
        min_width, min_height = self.Step.GetMinSize()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1468
        width, height = max(min_width, width), max(min_height, height)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1469
        self.Step.SetSize(width, height)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1470
        clientsize = self.Preview.GetClientSize()
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1471
        x = (clientsize.width - width) / 2
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1472
        y = (clientsize.height - height) / 2
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1473
        self.Step.SetPosition(x, y)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1474
        self.Step.Draw(dc)
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1475
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1476
    def OnPaint(self, event):
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1477
        self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1478
        event.Skip()
71
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1479
0578bc212c20 Adding Dialog for Step in free drawing
lbessard
parents: 70
diff changeset
  1480
#-------------------------------------------------------------------------------
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1481
#                          Edit Transition Content Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1482
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1483
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1484
[ID_TRANSITIONCONTENTDIALOG, ID_TRANSITIONCONTENTDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1485
 ID_TRANSITIONCONTENTDIALOGREFERENCE, ID_TRANSITIONCONTENTDIALOGINLINE, 
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1486
 ID_TRANSITIONCONTENTDIALOGPRIORITY, ID_TRANSITIONCONTENTDIALOGPREVIEW, 
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1487
 ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1, ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2, 
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1488
 ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3, ID_TRANSITIONCONTENTDIALOGSTATICTEXT1, 
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1489
 ID_TRANSITIONCONTENTDIALOGSTATICTEXT2, ID_TRANSITIONCONTENTDIALOGSTATICTEXT3, 
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1490
] = [wx.NewId() for _init_ctrls in range(12)]
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1491
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1492
class TransitionContentDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1493
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1494
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1495
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1496
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1497
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1498
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1499
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1500
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1501
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1502
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1503
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1504
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1505
    def _init_coll_flexGridSizer1_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1506
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1507
        parent.AddGrowableRow(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1508
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1509
    def _init_coll_MainSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1510
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1511
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1512
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1513
    def _init_coll_LeftGridSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1514
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1515
        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1516
        parent.AddWindow(self.Reference, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1517
        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1518
        parent.AddWindow(self.Inline, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1519
        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1520
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1521
        parent.AddWindow(self.Priority, 0, border=0, flag=wx.GROW)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1522
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1523
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1524
    def _init_coll_LeftGridSizer_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1525
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1526
        parent.AddGrowableRow(6)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1527
            
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1528
    def _init_coll_RightGridSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1529
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1530
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1531
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1532
    def _init_coll_RightGridSizer_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1533
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1534
        parent.AddGrowableRow(1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1535
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1536
    def _init_sizers(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1537
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1538
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1539
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=9, vgap=5)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1540
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1541
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1542
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1543
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1544
        self._init_coll_MainSizer_Items(self.MainSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1545
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1546
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1547
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1548
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1549
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1550
        self.SetSizer(self.flexGridSizer1)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1551
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1552
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1553
        wx.Dialog.__init__(self, id=ID_TRANSITIONCONTENTDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1554
              name='ProjectDialog', parent=prnt, pos=wx.Point(376, 223),
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1555
              size=wx.Size(350, 300), style=wx.DEFAULT_DIALOG_STYLE,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1556
              title='Edit transition')
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1557
        self.SetClientSize(wx.Size(350, 300))
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1558
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1559
        self.staticText1 = wx.StaticText(id=ID_TRANSITIONCONTENTDIALOGSTATICTEXT1,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1560
              label='Type:', name='staticText1', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1561
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1562
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1563
        self.staticText2 = wx.StaticText(id=ID_TRANSITIONCONTENTDIALOGSTATICTEXT2,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1564
              label='Preview:', name='staticText2', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1565
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1566
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1567
        self.staticText3 = wx.StaticText(id=ID_TRANSITIONCONTENTDIALOGSTATICTEXT3,
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1568
              label='Priority:', name='staticText3', parent=self,
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1569
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1570
        
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1571
        self.radioButton1 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1572
              label='Reference', name='radioButton1', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1573
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1574
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1575
        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1576
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1577
        self.Reference = wx.Choice(id=ID_TRANSITIONCONTENTDIALOGREFERENCE,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1578
              name='Reference', parent=self, pos=wx.Point(0, 0), 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1579
              size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1580
        self.Bind(wx.EVT_CHOICE, self.OnReferenceChanged, id=ID_TRANSITIONCONTENTDIALOGREFERENCE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1581
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1582
        self.radioButton2 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1583
              label='Inline', name='radioButton2', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1584
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1585
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON2)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1586
        self.radioButton2.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1587
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1588
        self.Inline = wx.TextCtrl(id=ID_TRANSITIONCONTENTDIALOGINLINE,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1589
              name='Inline', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1590
              size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1591
        self.Bind(wx.EVT_TEXT, self.OnInlineChanged, id=ID_TRANSITIONCONTENTDIALOGINLINE)
108
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  1592
        self.Inline.Enable(False)
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  1593
        
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1594
        self.radioButton3 = wx.RadioButton(id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1595
              label='Connection', name='radioButton3', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1596
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1597
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_TRANSITIONCONTENTDIALOGRADIOBUTTON3)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1598
        self.radioButton3.SetValue(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1599
        if not self.Connection:
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1600
            self.radioButton3.Hide()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1601
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1602
        self.Priority = wx.SpinCtrl(id=ID_TRANSITIONCONTENTDIALOGPRIORITY,
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1603
              name='Priority', parent=self, pos=wx.Point(0, 0),
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1604
              size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1605
        self.Bind(wx.EVT_TEXT, self.OnPriorityChanged, id=ID_TRANSITIONCONTENTDIALOGPRIORITY)
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1606
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1607
        self.Preview = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGPREVIEW,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1608
              name='Preview', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1609
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1610
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1611
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1612
        setattr(self.Preview, "RefreshTransitionModel", lambda x:None)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1613
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1614
        self.Spacer = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGSPACER,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1615
              name='Spacer', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1616
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1617
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1618
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1619
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1620
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1621
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1622
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1623
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1624
            wx.EVT_PAINT(self.Preview, self.OnPaint)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1625
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1626
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1627
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1628
    def __init__(self, parent, connection):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1629
        self.Connection = connection
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1630
        self._init_ctrls(parent)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1631
        self.Transition = None
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1632
        self.MinTransitionSize = None
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1633
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1634
        self.Element = SFC_Transition(self.Preview)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1635
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1636
    def SetElementSize(self, size):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1637
        min_width, min_height = self.Element.GetMinSize()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1638
        width, height = max(min_width, size[0]), max(min_height, size[1])
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1639
        self.Element.SetSize(width, height)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1640
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1641
    def OnOK(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1642
        error = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1643
        if self.radioButton1.GetValue() and self.Reference.GetStringSelection() == "":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1644
            error.append("Reference")
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1645
        if self.radioButton2.GetValue() and self.Inline.GetValue() == "":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1646
            error.append("Inline")
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1647
        if len(error) > 0:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1648
            text = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1649
            for i, item in enumerate(error):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1650
                if i == 0:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1651
                    text += item
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1652
                elif i == len(error) - 1:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1653
                    text += " and %s"%item
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1654
                else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1655
                    text += ", %s"%item 
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1656
            message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1657
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1658
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1659
        else:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1660
            self.EndModal(wx.ID_OK)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1661
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1662
    def OnTypeChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1663
        if self.radioButton1.GetValue():
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1664
            self.Element.SetType("reference", self.Reference.GetStringSelection())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1665
            self.Reference.Enable(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1666
            self.Inline.Enable(False)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1667
        elif self.radioButton2.GetValue():
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1668
            self.Element.SetType("inline", self.Inline.GetValue())
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1669
            self.Reference.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1670
            self.Inline.Enable(True)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1671
        else:
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1672
            self.Element.SetType("connection")
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1673
            self.Reference.Enable(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1674
            self.Inline.Enable(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1675
        self.RefreshPreview()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1676
        event.Skip()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1677
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1678
    def OnReferenceChanged(self, event):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1679
        self.Element.SetType("reference", self.Reference.GetStringSelection())
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1680
        self.RefreshPreview()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1681
        event.Skip()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1682
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1683
    def OnInlineChanged(self, event):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1684
        self.Element.SetType("inline", self.Inline.GetValue())
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1685
        self.RefreshPreview()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1686
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1687
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1688
    def OnPriorityChanged(self, event):
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1689
        self.Element.SetPriority(int(self.Priority.GetValue()))
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1690
        self.RefreshPreview()
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1691
        event.Skip()
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1692
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1693
    def SetTransitions(self, transitions):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1694
        self.Reference.Append("")
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1695
        for transition in transitions:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1696
            self.Reference.Append(transition)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1697
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1698
    def SetValues(self, values):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1699
        if values["type"] == "reference":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1700
            self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1701
            self.radioButton2.SetValue(False)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1702
            self.radioButton3.SetValue(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1703
            self.Reference.Enable(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1704
            self.Inline.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1705
            self.Reference.SetStringSelection(values["value"])
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1706
            self.Element.SetType("reference", values["value"])
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1707
        elif values["type"] == "inline":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1708
            self.radioButton1.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1709
            self.radioButton2.SetValue(True)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1710
            self.radioButton3.SetValue(False)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1711
            self.Reference.Enable(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1712
            self.Inline.Enable(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1713
            self.Inline.SetValue(values["value"])
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1714
            self.Element.SetType("inline", values["value"])
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1715
        elif values["type"] == "connection" and self.Connection:
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1716
            self.radioButton1.SetValue(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1717
            self.radioButton2.SetValue(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1718
            self.radioButton3.SetValue(True)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1719
            self.Reference.Enable(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1720
            self.Inline.Enable(False)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1721
            self.Element.SetType("connection")
108
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  1722
        self.Priority.SetValue(values["priority"])
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1723
        self.Element.SetPriority(values["priority"])
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1724
        self.RefreshPreview()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1725
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1726
    def GetValues(self):
80
c798a68c5560 Lots of bugs fixed
lbessard
parents: 71
diff changeset
  1727
        values = {"priority" : int(self.Priority.GetValue())}
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1728
        if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1729
            values["type"] = "reference"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1730
            values["value"] = self.Reference.GetStringSelection()
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1731
        elif self.radioButton2.GetValue():
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1732
            values["type"] = "inline"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1733
            values["value"] = self.Inline.GetValue()
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1734
        else:
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1735
            values["type"] = "connection"
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1736
            values["value"] = None
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1737
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1738
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1739
    def RefreshPreview(self):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1740
        dc = wx.ClientDC(self.Preview)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1741
        dc.Clear()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1742
        clientsize = self.Preview.GetClientSize()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1743
        posx, posy = self.Element.GetPosition()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1744
        rect = self.Element.GetBoundingBox()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1745
        diffx, diffy = posx - rect.x, posy - rect.y
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1746
        self.Element.SetPosition((clientsize.width - rect.width) / 2 + diffx, (clientsize.height - rect.height) / 2 + diffy)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1747
        self.Element.Draw(dc)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1748
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1749
    def OnPaint(self, event):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1750
        self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1751
        event.Skip()
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1752
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1753
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1754
#                         Create New Divergence Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1755
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1756
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1757
[ID_DIVERGENCECREATEDIALOG, ID_DIVERGENCECREATEDIALOGSPACER, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1758
 ID_DIVERGENCECREATEDIALOGRADIOBUTTON1, ID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1759
 ID_DIVERGENCECREATEDIALOGRADIOBUTTON3, ID_DIVERGENCECREATEDIALOGRADIOBUTTON4, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1760
 ID_DIVERGENCECREATEDIALOGSEQUENCES, ID_DIVERGENCECREATEDIALOGPREVIEW, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1761
 ID_DIVERGENCECREATEDIALOGSTATICTEXT1, ID_DIVERGENCECREATEDIALOGSTATICTEXT2, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1762
 ID_DIVERGENCECREATEDIALOGSTATICTEXT3,  
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1763
] = [wx.NewId() for _init_ctrls in range(11)]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1764
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1765
class DivergenceCreateDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1766
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1767
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1768
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1769
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1770
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1771
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1772
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1773
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1774
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1775
        parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1776
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1777
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1778
    def _init_coll_flexGridSizer1_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1779
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1780
        parent.AddGrowableRow(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1781
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1782
    def _init_coll_MainSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1783
        parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1784
        parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1785
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1786
    def _init_coll_LeftGridSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1787
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1788
        parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1789
        parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1790
        parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1791
        parent.AddWindow(self.radioButton4, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1792
        parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1793
        parent.AddWindow(self.Sequences, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1794
        parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1795
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1796
    def _init_coll_LeftGridSizer_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1797
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1798
        parent.AddGrowableRow(7)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1799
            
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1800
    def _init_coll_RightGridSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1801
        parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1802
        parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1803
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1804
    def _init_coll_RightGridSizer_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1805
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1806
        parent.AddGrowableRow(1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1807
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1808
    def _init_sizers(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1809
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1810
        self.MainSizer = wx.BoxSizer(wx.HORIZONTAL)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1811
        self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=8, vgap=5)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1812
        self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1813
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1814
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1815
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1816
        self._init_coll_MainSizer_Items(self.MainSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1817
        self._init_coll_LeftGridSizer_Items(self.LeftGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1818
        self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1819
        self._init_coll_RightGridSizer_Items(self.RightGridSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1820
        self._init_coll_RightGridSizer_Growables(self.RightGridSizer)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1821
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1822
        self.SetSizer(self.flexGridSizer1)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1823
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1824
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1825
        wx.Dialog.__init__(self, id=ID_DIVERGENCECREATEDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1826
              name='DivergencePropertiesDialog', parent=prnt, pos=wx.Point(376, 223),
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1827
              size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1828
              title='Create a new divergence or convergence')
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1829
        self.SetClientSize(wx.Size(500, 300))
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1830
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1831
        self.staticText1 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT1,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1832
              label='Type:', name='staticText1', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1833
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1834
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1835
        self.radioButton1 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON1,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1836
              label='Selection Divergence', name='radioButton1', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1837
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1838
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON1)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1839
        self.radioButton1.SetValue(True)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1840
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1841
        self.radioButton2 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON2,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1842
              label='Selection Convergence', name='radioButton2', parent=self, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1843
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1844
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON2)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1845
        self.radioButton2.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1846
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1847
        self.radioButton3 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON3,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1848
              label='Simultaneous Divergence', name='radioButton3', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1849
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1850
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON3)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1851
        self.radioButton3.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1852
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1853
        self.radioButton4 = wx.RadioButton(id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON4,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1854
              label='Simultaneous Convergence', name='radioButton4', parent=self, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1855
              pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1856
        self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_DIVERGENCECREATEDIALOGRADIOBUTTON4)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1857
        self.radioButton4.SetValue(False)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1858
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1859
        self.staticText2 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT2,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1860
              label='Number of sequences:', name='staticText2', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1861
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1862
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1863
        self.Sequences = wx.SpinCtrl(id=ID_DIVERGENCECREATEDIALOGSEQUENCES,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1864
              name='Sequences', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1865
              size=wx.Size(0, 24), style=0, min=2, max=20)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1866
        self.Bind(wx.EVT_SPINCTRL, self.OnSequencesChanged, id=ID_DIVERGENCECREATEDIALOGSEQUENCES)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1867
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1868
        self.staticText3 = wx.StaticText(id=ID_DIVERGENCECREATEDIALOGSTATICTEXT3,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1869
              label='Preview:', name='staticText3', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1870
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1871
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1872
        self.Preview = wx.Panel(id=ID_DIVERGENCECREATEDIALOGPREVIEW,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1873
              name='Preview', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1874
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1875
        self.Preview.SetBackgroundColour(wx.Colour(255,255,255))
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
  1876
        setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1877
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1878
        self.Spacer = wx.Panel(id=ID_TRANSITIONCONTENTDIALOGSPACER,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1879
              name='Spacer', parent=self, pos=wx.Point(0, 0),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1880
              size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1881
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1882
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1883
        
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1884
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1885
            self.Preview.Bind(wx.EVT_PAINT, self.OnPaint)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1886
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  1887
            wx.EVT_PAINT(self.Preview, self.OnPaint)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1888
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1889
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1890
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1891
    def __init__(self, parent):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1892
        self._init_ctrls(parent)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1893
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1894
        self.Divergence = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1895
        self.MinSize = (0, 0)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1896
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1897
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1898
        values = {}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1899
        if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1900
            values["type"] = SELECTION_DIVERGENCE
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1901
        elif self.radioButton2.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1902
            values["type"] = SELECTION_CONVERGENCE
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1903
        elif self.radioButton3.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1904
            values["type"] = SIMULTANEOUS_DIVERGENCE
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1905
        else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1906
            values["type"] = SIMULTANEOUS_CONVERGENCE
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1907
        values["number"] = self.Sequences.GetValue()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1908
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1909
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1910
    def SetMinSize(self, size):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1911
        self.MinSize = size
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1912
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1913
    def OnTypeChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1914
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1915
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1916
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1917
    def OnSequencesChanged(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1918
        self.RefreshPreview()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1919
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1920
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1921
    def RefreshPreview(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1922
        dc = wx.ClientDC(self.Preview)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1923
        dc.Clear()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1924
        if self.radioButton1.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1925
            self.Divergence = SFC_Divergence(self.Preview, SELECTION_DIVERGENCE, self.Sequences.GetValue())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1926
        elif self.radioButton2.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1927
            self.Divergence = SFC_Divergence(self.Preview, SELECTION_CONVERGENCE, self.Sequences.GetValue())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1928
        elif self.radioButton3.GetValue():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1929
            self.Divergence = SFC_Divergence(self.Preview, SIMULTANEOUS_DIVERGENCE, self.Sequences.GetValue())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1930
        else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1931
            self.Divergence = SFC_Divergence(self.Preview, SIMULTANEOUS_CONVERGENCE, self.Sequences.GetValue())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1932
        width, height = self.Divergence.GetSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1933
        min_width, min_height = max(width, self.MinSize[0]), max(height, self.MinSize[1])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1934
        self.Divergence.SetSize(min_width, min_height)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1935
        clientsize = self.Preview.GetClientSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1936
        x = (clientsize.width - min_width) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1937
        y = (clientsize.height - min_height) / 2
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1938
        self.Divergence.SetPosition(x, y)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1939
        self.Divergence.Draw(dc)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1940
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1941
    def OnPaint(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1942
        self.RefreshPreview()
95
ee66a9a1748b Corrections for wx version 2.8.4 and Windows
lbessard
parents: 80
diff changeset
  1943
        event.Skip()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1944
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1945
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1946
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1947
#                            Action Block Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1948
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1949
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1950
class ActionTable(wx.grid.PyGridTableBase):
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1951
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1952
    """
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1953
    A custom wx.Grid Table using user supplied data
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1954
    """
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1955
    def __init__(self, parent, data, colnames):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1956
        # The base class must be initialized *first*
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1957
        wx.grid.PyGridTableBase.__init__(self)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1958
        self.data = data
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1959
        self.colnames = colnames
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1960
        self.Parent = parent
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1961
        # XXX
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1962
        # we need to store the row length and collength to
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1963
        # see if the table has changed size
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1964
        self._rows = self.GetNumberRows()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1965
        self._cols = self.GetNumberCols()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1966
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1967
    def GetNumberCols(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1968
        return len(self.colnames)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1969
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1970
    def GetNumberRows(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1971
        return len(self.data)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1972
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1973
    def GetColLabelValue(self, col):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1974
        if col < len(self.colnames):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1975
            return self.colnames[col]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1976
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1977
    def GetRowLabelValues(self, row):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1978
        return row
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1979
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1980
    def GetValue(self, row, col):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1981
        if row < self.GetNumberRows():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1982
            name = str(self.data[row].get(self.GetColLabelValue(col), ""))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1983
            return name
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1984
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1985
    def GetValueByName(self, row, colname):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1986
        return self.data[row].get(colname)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1987
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1988
    def SetValue(self, row, col, value):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1989
        if col < len(self.colnames):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1990
            self.data[row][self.GetColLabelValue(col)] = value
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1991
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1992
    def ResetView(self, grid):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1993
        """
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1994
        (wx.Grid) -> Reset the grid view.   Call this to
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1995
        update the grid if rows and columns have been added or deleted
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1996
        """
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1997
        grid.BeginBatch()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  1998
        for current, new, delmsg, addmsg in [
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  1999
            (self._rows, self.GetNumberRows(), wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED, wx.grid.GRIDTABLE_NOTIFY_ROWS_APPENDED),
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2000
            (self._cols, self.GetNumberCols(), wx.grid.GRIDTABLE_NOTIFY_COLS_DELETED, wx.grid.GRIDTABLE_NOTIFY_COLS_APPENDED),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2001
        ]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2002
            if new < current:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2003
                msg = wx.grid.GridTableMessage(self,delmsg,new,current-new)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2004
                grid.ProcessTableMessage(msg)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2005
            elif new > current:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2006
                msg = wx.grid.GridTableMessage(self,addmsg,new-current)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2007
                grid.ProcessTableMessage(msg)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2008
                self.UpdateValues(grid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2009
        grid.EndBatch()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2010
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2011
        self._rows = self.GetNumberRows()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2012
        self._cols = self.GetNumberCols()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2013
        # update the column rendering scheme
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2014
        self._updateColAttrs(grid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2015
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2016
        # update the scrollbars and the displayed part of the grid
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2017
        grid.AdjustScrollbars()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2018
        grid.ForceRefresh()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2019
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2020
    def UpdateValues(self, grid):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2021
        """Update all displayed values"""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2022
        # This sends an event to the grid table to update all of the values
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2023
        msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2024
        grid.ProcessTableMessage(msg)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2025
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2026
    def _updateColAttrs(self, grid):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2027
        """
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2028
        wx.Grid -> update the column attributes to add the
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2029
        appropriate renderer given the column name.
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2030
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2031
        Otherwise default to the default renderer.
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2032
        """
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2033
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2034
        for col in range(self.GetNumberCols()):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2035
            attr = wx.grid.GridCellAttr()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2036
            attr.SetAlignment(self.Parent.ColAlignements[col], wx.ALIGN_CENTRE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2037
            grid.SetColAttr(col, attr)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2038
            grid.SetColSize(col, self.Parent.ColSizes[col])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2039
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2040
        typelist = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2041
        accesslist = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2042
        for row in range(self.GetNumberRows()):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2043
            for col in range(self.GetNumberCols()):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2044
                editor = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2045
                renderer = None
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2046
                readonly = False
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2047
                colname = self.GetColLabelValue(col)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2048
                if colname == "Qualifier":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2049
                    editor = wx.grid.GridCellChoiceEditor()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2050
                    editor.SetParameters(self.Parent.QualifierList)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2051
                if colname == "Duration":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2052
                    editor = wx.grid.GridCellTextEditor()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2053
                    renderer = wx.grid.GridCellStringRenderer()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2054
                    if self.Parent.DurationList[self.data[row]["Qualifier"]]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2055
                        readonly = False
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2056
                    else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2057
                        readonly = True
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2058
                        self.data[row]["Duration"] = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2059
                elif colname == "Type":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2060
                    editor = wx.grid.GridCellChoiceEditor()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2061
                    editor.SetParameters(self.Parent.TypeList)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2062
                elif colname == "Value":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2063
                    type = self.data[row]["Type"]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2064
                    if type == "Action":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2065
                        editor = wx.grid.GridCellChoiceEditor()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2066
                        editor.SetParameters(self.Parent.ActionList)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2067
                    elif type == "Variable":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2068
                        editor = wx.grid.GridCellChoiceEditor()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2069
                        editor.SetParameters(self.Parent.VariableList)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2070
                    elif type == "Inline":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2071
                        editor = wx.grid.GridCellTextEditor()
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2072
                        renderer = wx.grid.GridCellStringRenderer()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2073
                elif colname == "Indicator":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2074
                    editor = wx.grid.GridCellChoiceEditor()
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2075
                    editor.SetParameters(self.Parent.VariableList)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2076
                    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2077
                grid.SetCellEditor(row, col, editor)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2078
                grid.SetCellRenderer(row, col, renderer)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2079
                grid.SetReadOnly(row, col, readonly)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2080
                
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2081
                grid.SetCellBackgroundColour(row, col, wx.WHITE)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2082
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2083
    def SetData(self, data):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2084
        self.data = data
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2085
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2086
    def GetData(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2087
        return self.data
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2088
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2089
    def GetCurrentIndex(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2090
        return self.CurrentIndex
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2091
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2092
    def SetCurrentIndex(self, index):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2093
        self.CurrentIndex = index
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2094
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2095
    def AppendRow(self, row_content):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2096
        self.data.append(row_content)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2097
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2098
    def RemoveRow(self, row_index):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2099
        self.data.pop(row_index)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2100
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2101
    def MoveRow(self, row_index, move, grid):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2102
        new_index = max(0, min(row_index + move, len(self.data) - 1))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2103
        if new_index != row_index:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2104
            self.data.insert(new_index, self.data.pop(row_index))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2105
            grid.SetGridCursor(new_index, grid.GetGridCursorCol())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2106
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2107
    def Empty(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2108
        self.data = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2109
        self.editors = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2110
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2111
[ID_ACTIONBLOCKDIALOG, ID_ACTIONBLOCKDIALOGVARIABLESGRID, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2112
 ID_ACTIONBLOCKDIALOGSTATICTEXT1, ID_ACTIONBLOCKDIALOGADDBUTTON,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2113
 ID_ACTIONBLOCKDIALOGDELETEBUTTON, ID_ACTIONBLOCKDIALOGUPBUTTON, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2114
 ID_ACTIONBLOCKDIALOGDOWNBUTTON, 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2115
] = [wx.NewId() for _init_ctrls in range(7)]
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2116
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2117
class ActionBlockDialog(wx.Dialog):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2118
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2119
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2120
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2121
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2122
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2123
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2124
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2125
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2126
    def _init_coll_flexGridSizer1_Items(self, parent):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2127
        parent.AddSizer(self.TopSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2128
        parent.AddSizer(self.GridButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2129
        parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2130
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2131
    def _init_coll_flexGridSizer1_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2132
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2133
        parent.AddGrowableRow(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2134
        
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2135
    def _init_coll_TopSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2136
        parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2137
        parent.AddWindow(self.ActionsGrid, 0, border=0, flag=wx.GROW)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2138
    
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2139
    def _init_coll_TopSizer_Growables(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2140
        parent.AddGrowableCol(0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2141
        parent.AddGrowableRow(1)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2142
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2143
    def _init_coll_GridButtonSizer_Items(self, parent):
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2144
        parent.AddWindow(self.AddButton, 0, border=10, flag=wx.GROW|wx.LEFT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2145
        parent.AddWindow(self.DeleteButton, 0, border=10, flag=wx.GROW|wx.LEFT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2146
        parent.AddWindow(self.UpButton, 0, border=10, flag=wx.GROW|wx.LEFT)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2147
        parent.AddWindow(self.DownButton, 0, border=10, flag=wx.GROW|wx.LEFT)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2148
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2149
    def _init_sizers(self):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2150
        self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2151
        self.TopSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2152
        self.GridButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2153
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2154
        self._init_coll_flexGridSizer1_Items(self.flexGridSizer1)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2155
        self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2156
        self._init_coll_TopSizer_Items(self.TopSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2157
        self._init_coll_TopSizer_Growables(self.TopSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2158
        self._init_coll_GridButtonSizer_Items(self.GridButtonSizer)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2159
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2160
        self.SetSizer(self.flexGridSizer1)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2161
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2162
    def _init_ctrls(self, prnt):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2163
        wx.Dialog.__init__(self, id=ID_ACTIONBLOCKDIALOG,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2164
              name='ActionBlockDialog', parent=prnt, pos=wx.Point(376, 223),
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2165
              size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2166
              title='Edit action block properties')
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2167
        self.SetClientSize(wx.Size(500, 300))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2168
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2169
        self.staticText1 = wx.StaticText(id=ID_ACTIONBLOCKDIALOGSTATICTEXT1,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2170
              label='Actions:', name='staticText1', parent=self,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2171
              pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2172
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2173
        self.ActionsGrid = wx.grid.Grid(id=ID_ACTIONBLOCKDIALOGVARIABLESGRID,
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2174
              name='ActionsGrid', parent=self, pos=wx.Point(0, 0), 
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2175
              size=wx.Size(0, 0), style=wx.VSCROLL)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2176
        self.ActionsGrid.SetFont(wx.Font(12, 77, wx.NORMAL, wx.NORMAL, False,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2177
              'Sans'))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2178
        self.ActionsGrid.SetLabelFont(wx.Font(10, 77, wx.NORMAL, wx.NORMAL,
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2179
              False, 'Sans'))
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2180
        self.ActionsGrid.DisableDragGridSize()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2181
        self.ActionsGrid.EnableScrolling(False, True)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2182
        self.ActionsGrid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnActionsGridCellChange)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2183
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2184
        self.AddButton = wx.Button(id=ID_ACTIONBLOCKDIALOGADDBUTTON, label='Add',
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2185
              name='AddButton', parent=self, pos=wx.Point(0, 0),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2186
              size=wx.Size(72, 32), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2187
        self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_ACTIONBLOCKDIALOGADDBUTTON)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2188
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2189
        self.DeleteButton = wx.Button(id=ID_ACTIONBLOCKDIALOGDELETEBUTTON, label='Delete',
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2190
              name='DeleteButton', parent=self, pos=wx.Point(0, 0),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2191
              size=wx.Size(72, 32), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2192
        self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_ACTIONBLOCKDIALOGDELETEBUTTON)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2193
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2194
        self.UpButton = wx.Button(id=ID_ACTIONBLOCKDIALOGUPBUTTON, label='^',
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2195
              name='UpButton', parent=self, pos=wx.Point(0, 0),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2196
              size=wx.Size(32, 32), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2197
        self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_ACTIONBLOCKDIALOGUPBUTTON)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2198
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2199
        self.DownButton = wx.Button(id=ID_ACTIONBLOCKDIALOGDOWNBUTTON, label='v',
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2200
              name='DownButton', parent=self, pos=wx.Point(0, 0),
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2201
              size=wx.Size(32, 32), style=0)
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2202
        self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_ACTIONBLOCKDIALOGDOWNBUTTON)
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2203
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2204
        self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2205
        if wx.VERSION >= (2, 5, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2206
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2207
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2208
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2209
        
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2210
        self._init_sizers()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2211
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2212
    def __init__(self, parent):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2213
        self._init_ctrls(parent)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2214
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2215
        self.DefaultValue = {"Qualifier" : "N", "Duration" : "", "Type" : "Action", "Value" : "", "Indicator" : ""}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2216
        self.Table = ActionTable(self, [], ["Qualifier","Duration","Type","Value","Indicator"])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2217
        self.TypeList = "Action,Variable,Inline"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2218
        self.ColSizes = [60, 90, 80, 110, 80]
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2219
        self.ColAlignements = [wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2220
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2221
        self.ActionsGrid.SetTable(self.Table)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2222
        self.ActionsGrid.SetRowLabelSize(0)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2223
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2224
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2225
108
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  2226
    def OnOK(self, event):
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  2227
        self.ActionsGrid.SetGridCursor(0, 0)
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  2228
        self.EndModal(wx.ID_OK)
9aa1fdfb7cb2 A lots of bugs fixed
lbessard
parents: 105
diff changeset
  2229
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2230
    def OnAddButton(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2231
        self.Table.AppendRow(self.DefaultValue.copy())
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2232
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2233
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2234
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2235
    def OnDeleteButton(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2236
        row = self.ActionsGrid.GetGridCursorRow()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2237
        self.Table.RemoveRow(row)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2238
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2239
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2240
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2241
    def OnUpButton(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2242
        row = self.ActionsGrid.GetGridCursorRow()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2243
        self.Table.MoveRow(row, -1, self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2244
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2245
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2246
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2247
    def OnDownButton(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2248
        row = self.ActionsGrid.GetGridCursorRow()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2249
        self.Table.MoveRow(row, 1, self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2250
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2251
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2252
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2253
    def OnActionsGridCellChange(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2254
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2255
        event.Skip()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2256
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2257
    def SetQualifierList(self, list):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2258
        self.QualifierList = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2259
        sep = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2260
        for qualifier in list.keys():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2261
            self.QualifierList += "%s%s"%(sep, qualifier)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2262
            sep = ","
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2263
        self.DurationList = list
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2264
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2265
    def SetVariableList(self, list):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2266
        self.VariableList = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2267
        sep = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2268
        for variable in list:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2269
            self.VariableList += "%s%s"%(sep, variable["Name"])
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2270
            sep = ","
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2271
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2272
    def SetActionList(self, list):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2273
        self.ActionList = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2274
        sep = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2275
        for action in list:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2276
            self.ActionList += "%s%s"%(sep, action)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2277
            sep = ","
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2278
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2279
    def SetValues(self, actions):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2280
        for action in actions:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2281
            row = {"Qualifier" : action["qualifier"], "Value" : action["value"]}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2282
            if action["type"] == "reference":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2283
                if action["value"] in self.ActionList:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2284
                    row["Type"] = "Action"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2285
                elif action["value"] in self.VariableList:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2286
                    row["Type"] = "Variable"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2287
                else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2288
                    row["Type"] = "Inline"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2289
            else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2290
                row["Type"] = "Inline"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2291
            if "duration" in action:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2292
                row["Duration"] = action["duration"]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2293
            else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2294
                row["Duration"] = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2295
            if "indicator" in action:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2296
                row["Indicator"] = action["indicator"]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2297
            else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2298
                row["Indicator"] = ""
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2299
            self.Table.AppendRow(row)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2300
        self.Table.ResetView(self.ActionsGrid)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2301
    
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2302
    def GetValues(self):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2303
        values = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2304
        for data in self.Table.GetData():
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2305
            action = {"qualifier" : data["Qualifier"], "value" : data["Value"]}
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2306
            if data["Type"] in ["Action", "Variable"]:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2307
                action["type"] = "reference"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2308
            else:
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2309
                action["type"] = "inline"
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2310
            if data["Duration"] != "":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2311
                action["duration"] = data["Duration"]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2312
            if data["Indicator"] != "":
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2313
                action["indicator"] = data["Indicator"]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2314
            values.append(action)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2315
        return values
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2316
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2317
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2318
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2319
#                          Edit Step Name Dialog
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2320
#-------------------------------------------------------------------------------
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2321
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2322
class StepNameDialog(wx.TextEntryDialog):
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2323
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2324
    if wx.VERSION < (2, 6, 0):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2325
        def Bind(self, event, function, id = None):
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2326
            if id is not None:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2327
                event(self, id, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2328
            else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2329
                event(self, function)
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2330
    
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2331
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2332
    def __init__(self, parent, message, caption = "Please enter text", defaultValue = "", 
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2333
                       style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2334
        wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2335
        
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2336
        self.PouNames = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2337
        self.Variables = []
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2338
        self.StepNames = []
123
62f93b8df816 Bug on Step Name Dialog with wx 2.8 fixed
lbessard
parents: 118
diff changeset
  2339
        if wx.VERSION >= (2, 8, 0):
62f93b8df816 Bug on Step Name Dialog with wx 2.8 fixed
lbessard
parents: 118
diff changeset
  2340
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(2).GetSizer().GetItem(1).GetSizer().GetAffirmativeButton().GetId())
62f93b8df816 Bug on Step Name Dialog with wx 2.8 fixed
lbessard
parents: 118
diff changeset
  2341
        elif wx.VERSION >= (2, 6, 0):
113
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2342
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2343
        else:
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2344
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
9eeaebd867aa Adding support for wxpython 2.4
lbessard
parents: 108
diff changeset
  2345
    
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2346
    def OnOK(self, event):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2347
        step_name = self.GetSizer().GetItem(1).GetWindow().GetValue()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2348
        if step_name == "":
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2349
            message = wx.MessageDialog(self, "You must type a name!", "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2350
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2351
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2352
        elif not TestIdentifier(step_name):
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2353
            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2354
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2355
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2356
        elif step_name.upper() in IEC_KEYWORDS:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2357
            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2358
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2359
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2360
        elif step_name.upper() in self.PouNames:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2361
            message = wx.MessageDialog(self, "A pou with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2362
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2363
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2364
        elif step_name.upper() in self.Variables:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2365
            message = wx.MessageDialog(self, "A variable with \"%s\" as name exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2366
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2367
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2368
        elif step_name.upper() in self.StepNames:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2369
            message = wx.MessageDialog(self, "\"%s\" step already exists!"%step_name, "Error", wx.OK|wx.ICON_ERROR)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2370
            message.ShowModal()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2371
            message.Destroy()
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2372
        else:
64
dd6f693e46a1 Cleaning code for using only wxPython 2.6 class naming
lbessard
parents: 62
diff changeset
  2373
            self.EndModal(wx.ID_OK)
27
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2374
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2375
    def SetPouNames(self, pou_names):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2376
        self.PouNames = [pou_name.upper() for pou_name in pou_names]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2377
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2378
    def SetVariables(self, variables):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2379
        self.Variables = [var["Name"].upper() for var in variables]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2380
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2381
    def SetStepNames(self, step_names):
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2382
        self.StepNames = [step_name.upper() for step_name in step_names]
dae55dd9ee14 Current developping version
lbessard
parents:
diff changeset
  2383
42
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
  2384
    def GetValue(self):
4a8400732001 Adding optimization on redrawing
lbessard
parents: 28
diff changeset
  2385
        return self.GetSizer().GetItem(1).GetWindow().GetValue()