Adding support for opening newly created project element
authorlaurent
Tue, 13 Sep 2011 13:01:04 +0200
changeset 555 b6f9d08fd69f
parent 554 08c26c62f5a7
child 556 69214983dd03
Adding support for opening newly created project element
PLCControler.py
PLCOpenEditor.py
i18n/PLCOpenEditor_fr_FR.po
i18n/messages.pot
locale/fr_FR/LC_MESSAGES/PLCOpenEditor.mo
--- a/PLCControler.py	Fri Sep 09 17:19:35 2011 +0200
+++ b/PLCControler.py	Tue Sep 13 13:01:04 2011 +0200
@@ -574,6 +574,8 @@
             # Add the datatype to project
             self.Project.appenddataType(datatype_name)
             self.BufferProject()
+            return self.ComputeDataTypeName(datatype_name)
+        return None
         
     # Remove a Data Type from project
     def ProjectRemoveDataType(self, datatype_name):
@@ -589,6 +591,8 @@
             if pou_type == "function":
                 self.SetPouInterfaceReturnType(pou_name, "BOOL")
             self.BufferProject()
+            return self.ComputePouName(pou_name)
+        return None
     
     def ProjectChangePouType(self, name, pou_type):
         if self.Project is not None:
@@ -658,6 +662,8 @@
         if self.Project is not None:
             self.Project.addconfiguration(config_name)
             self.BufferProject()
+            return self.ComputeConfigurationName(config_name)
+        return None
     
     # Remove a configuration from project
     def ProjectRemoveConfiguration(self, config_name):
@@ -670,6 +676,8 @@
         if self.Project is not None:
             self.Project.addconfigurationResource(config_name, resource_name)
             self.BufferProject()
+            return self.ComputeConfigurationResourceName(config_name, resource_name)
+        return None
     
     # Remove a resource from a configuration of the project
     def ProjectRemoveConfigurationResource(self, config_name, resource_name):
@@ -684,6 +692,8 @@
             if pou is not None:
                 pou.addtransition(transition_name, transition_type)
                 self.BufferProject()
+                return self.ComputePouTransitionName(pou_name, transition_name)
+        return None
     
     # Remove a Transition from a Project Pou
     def ProjectRemovePouTransition(self, pou_name, transition_name):
@@ -701,6 +711,8 @@
             if pou is not None:
                 pou.addaction(action_name, action_type)
                 self.BufferProject()
+                return self.ComputePouActionName(pou_name, action_name)
+        return None
     
     # Remove an Action from a Project Pou
     def ProjectRemovePouAction(self, pou_name, action_name):
--- a/PLCOpenEditor.py	Fri Sep 09 17:19:35 2011 +0200
+++ b/PLCOpenEditor.py	Tue Sep 13 13:01:04 2011 +0200
@@ -2194,8 +2194,10 @@
         dialog = DataTypeDialog(self, _("Add a new data type"), _("Please enter data type name"), "", wx.OK|wx.CANCEL)
         dialog.SetDataTypeNames(self.Controler.GetProjectDataTypeNames())
         if dialog.ShowModal() == wx.ID_OK:
-            self.Controler.ProjectAddDataType(dialog.GetValue())
-            self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
+            tagname = self.Controler.ProjectAddDataType(dialog.GetValue())
+            if tagname is not None:
+                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
+                self.EditProjectElement(ITEM_DATATYPE, tagname)
         dialog.Destroy()
 
     def GenerateAddPouFunction(self, pou_type):
@@ -2205,8 +2207,10 @@
             dialog.SetPouElementNames(self.Controler.GetProjectPouVariables())
             if dialog.ShowModal() == wx.ID_OK:
                 values = dialog.GetValues()
-                self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"])
-                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, LIBRARYTREE)
+                tagname = self.Controler.ProjectAddPou(values["pouName"], values["pouType"], values["language"])
+                if tagname is not None:
+                    self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, LIBRARYTREE)
+                    self.EditProjectElement(ITEM_POU, tagname)
             dialog.Destroy()
         return OnAddPouMenu
 
@@ -2217,9 +2221,11 @@
             dialog.SetPouElementNames(self.Controler.GetProjectPouVariables(pou_name))
             if dialog.ShowModal() == wx.ID_OK: 
                 values = dialog.GetValues()
-                self.Controler.ProjectAddPouTransition(pou_name, values["transitionName"], values["language"])
-                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
-                dialog.Destroy()
+                tagname = self.Controler.ProjectAddPouTransition(pou_name, values["transitionName"], values["language"])
+                if tagname is not None:
+                    self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
+                    self.EditProjectElement(ITEM_TRANSITION, tagname)
+            dialog.Destroy()
         return OnAddTransitionMenu
 
     def GenerateAddActionFunction(self, pou_name):
@@ -2229,8 +2235,10 @@
             dialog.SetPouElementNames(self.Controler.GetProjectPouVariables(pou_name))
             if dialog.ShowModal() == wx.ID_OK:
                 values = dialog.GetValues()
-                self.Controler.ProjectAddPouAction(pou_name, values["actionName"], values["language"])
-                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
+                tagname = self.Controler.ProjectAddPouAction(pou_name, values["actionName"], values["language"])
+                if tagname is not None:
+                    self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE)
+                    self.EditProjectElement(ITEM_ACTION, tagname)
             dialog.Destroy()
         return OnAddActionMenu
 
@@ -2240,8 +2248,10 @@
         dialog.SetPouElementNames(self.Controler.GetProjectPouVariables())
         if dialog.ShowModal() == wx.ID_OK:
             value = dialog.GetValue()
-            self.Controler.ProjectAddConfiguration(value)
-            self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
+            tagname = self.Controler.ProjectAddConfiguration(value)
+            if tagname is not None:
+                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
+                self.EditProjectElement(ITEM_CONFIGURATION, tagname)
         dialog.Destroy()
 
     def GenerateAddResourceFunction(self, config_name):
@@ -2251,8 +2261,10 @@
             dialog.SetPouElementNames(self.Controler.GetProjectPouVariables())
             if dialog.ShowModal() == wx.ID_OK:
                 value = dialog.GetValue()
-                self.Controler.ProjectAddConfigurationResource(config_name, value)
-                self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
+                tagname = self.Controler.ProjectAddConfigurationResource(config_name, value)
+                if tagname is not None:
+                    self._Refresh(TITLE, FILEMENU, EDITMENU, TYPESTREE, INSTANCESTREE)
+                    self.EditProjectElement(ITEM_RESOURCE, tagname)
             dialog.Destroy()
         return OnAddResourceMenu
 
@@ -2264,15 +2276,6 @@
                 self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, TYPESTREE, LIBRARYTREE)
         return OnChangePouTypeMenu
 
-    def OnCreatePouFromMenu(self, event):
-        selected = self.TypesTree.GetSelection()
-        if self.TypesTree.GetPyData(selected) == ITEM_POU: 
-            dialog = PouNameDialog(self, _("Please enter POU name"), _("Create a new POU from"), "", wx.OK|wx.CANCEL)
-            dialog.SetPouNames(self.Controler.GetProjectPouNames())
-            if dialog.ShowModal() == wx.ID_OK:
-                self.Controler.ProjectCreatePouFrom(dialog.GetValue(), self.TypesTree.GetItemText(selected))
-                self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, TYPESTREE, LIBRARYTREE)
-
     def OnCopyPou(self, event):
         selected = self.TypesTree.GetSelection()
         pou_name = self.TypesTree.GetItemText(selected)
@@ -2735,7 +2738,7 @@
               size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
         
         self.staticText1 = wx.StaticText(id=ID_SCALINGPANELSTATICTEXT1,
-              label=_('X Scale:'), name='staticText1', parent=self,
+              label=_('Horizontal:'), name='staticText1', parent=self,
               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
         
         self.XScale = wx.SpinCtrl(id=ID_SCALINGPANELXSCALE,
@@ -2743,7 +2746,7 @@
               size=wx.Size(0, 24), style=0, min=0, max=2**16)
         
         self.staticText2 = wx.StaticText(id=ID_SCALINGPANELSTATICTEXT2,
-              label=_('Y Scale:'), name='staticText2', parent=self,
+              label=_('Vertical:'), name='staticText2', parent=self,
               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
         
         self.YScale = wx.SpinCtrl(id=ID_SCALINGPANELYSCALE,
@@ -3008,7 +3011,7 @@
               size=wx.Size(0, 24), style=0, min=0, max=2**16)
         
         self.staticText15 = wx.StaticText(id=ID_PROJECTDIALOGSTATICTEXT15,
-              label=_('Scaling:'), name='staticText15', parent=self.GraphicsPanel,
+              label=_('Grid Resolution:'), name='staticText15', parent=self.GraphicsPanel,
               pos=wx.Point(0, 0), size=wx.DefaultSize, style=0)
         
         self.ScalingNotebook = wx.Notebook(id=ID_PROJECTDIALOGSCALINGNOTEBOOK,
--- a/i18n/PLCOpenEditor_fr_FR.po	Fri Sep 09 17:19:35 2011 +0200
+++ b/i18n/PLCOpenEditor_fr_FR.po	Tue Sep 13 13:01:04 2011 +0200
@@ -7,15 +7,16 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-16 10:48+0100\n"
-"PO-Revision-Date: 2009-12-16 13:35+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2011-09-13 12:41+0200\n"
+"PO-Revision-Date: 2011-09-13 12:55+0100\n"
+"Last-Translator: Laurent BESSARD <laurent.bessard@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../PLCOpenEditor.py:4345
+#: ../PLCOpenEditor.py:4406
 msgid ""
 "\n"
 "An error has occurred.\n"
@@ -37,53 +38,53 @@
 "\n"
 "Erreur:\n"
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "   External"
 msgstr "  Externe"
 
-#: ../VariablePanel.py:70
+#: ../VariablePanel.py:71
 msgid "   InOut"
 msgstr "  Entrée-Sortie"
 
-#: ../VariablePanel.py:70
+#: ../VariablePanel.py:71
 msgid "   Input"
 msgstr "  Entrée"
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "   Local"
 msgstr "  Locale"
 
-#: ../VariablePanel.py:70
+#: ../VariablePanel.py:71
 msgid "   Output"
 msgstr "  Sortie"
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "   Temp"
 msgstr "  Temporaire"
 
-#: ../PLCOpenEditor.py:4355
+#: ../PLCOpenEditor.py:4416
 msgid " : "
 msgstr " : "
 
-#: ../PLCOpenEditor.py:3294
-#: ../PLCOpenEditor.py:3457
-#: ../PLCOpenEditor.py:3601
+#: ../PLCOpenEditor.py:3332
+#: ../PLCOpenEditor.py:3495
+#: ../PLCOpenEditor.py:3639
 #: ../dialogs/SFCTransitionDialog.py:206
 #, python-format
 msgid " and %s"
 msgstr " et %s"
 
-#: ../plcopen/plcopen.py:907
+#: ../plcopen/plcopen.py:926
 #, python-format
 msgid "\"%s\" Data Type doesn't exist !!!"
 msgstr "Le type de donnée \"%s\" n'existe pas !!!"
 
-#: ../plcopen/plcopen.py:925
+#: ../plcopen/plcopen.py:944
 #, python-format
 msgid "\"%s\" POU already exists !!!"
 msgstr "Le POU \"%s\" existe déjà !!!"
 
-#: ../plcopen/plcopen.py:946
+#: ../plcopen/plcopen.py:965
 #, python-format
 msgid "\"%s\" POU doesn't exist !!!"
 msgstr "Le POU \"%s\" n'existe pas !!!"
@@ -93,8 +94,8 @@
 msgid "\"%s\" can't use itself!"
 msgstr "\"%s\" ne peut pas s'utiliser lui-même !"
 
-#: ../PLCOpenEditor.py:1404
-#: ../PLCOpenEditor.py:1424
+#: ../PLCOpenEditor.py:1422
+#: ../PLCOpenEditor.py:1442
 #, python-format
 msgid "\"%s\" config already exists!"
 msgstr "La configuration \"%s\" existe déjà !"
@@ -104,41 +105,42 @@
 msgid "\"%s\" configuration already exists !!!"
 msgstr "La configuration \"%s\" existe déjà !!!"
 
-#: ../PLCOpenEditor.py:1358
-#: ../PLCOpenEditor.py:3156
+#: ../PLCOpenEditor.py:1376
+#: ../PLCOpenEditor.py:3194
 #, python-format
 msgid "\"%s\" data type already exists!"
 msgstr "Le type de données \"%s\" existe déjà !"
 
-#: ../PLCControler.py:1704
-#: ../PLCControler.py:1708
+#: ../PLCControler.py:1786
+#: ../PLCControler.py:1790
 #, python-format
 msgid "\"%s\" element can't be pasted here!!!"
 msgstr "L'élément \"%s\" ne peut être collé ici !!!"
 
-#: ../PLCOpenEditor.py:3476
-#: ../PLCOpenEditor.py:3620
+#: ../PLCOpenEditor.py:3514
+#: ../PLCOpenEditor.py:3658
 #: ../Viewer.py:250
-#: ../TextViewer.py:231
+#: ../TextViewer.py:245
+#: ../TextViewer.py:262
 #: ../dialogs/ConnectionDialog.py:215
 #: ../dialogs/FBDBlockDialog.py:260
 #, python-format
 msgid "\"%s\" element for this pou already exists!"
 msgstr "Un élément \"%s\" existe déjà dans ce POU !"
 
-#: ../plcopen/structures.py:97
+#: ../plcopen/structures.py:96
 #, python-format
 msgid "\"%s\" function cancelled in \"%s\" POU: No input connected"
 msgstr "L'appel à la fonction \"%s\" dans le POU \"%s\" a été abandonné : aucune entrée connectée"
 
-#: ../PLCOpenEditor.py:1349
-#: ../PLCOpenEditor.py:3152
-#: ../PLCOpenEditor.py:3305
-#: ../PLCOpenEditor.py:3468
-#: ../PLCOpenEditor.py:3612
-#: ../PLCOpenEditor.py:3683
-#: ../PLCOpenEditor.py:3746
-#: ../VariablePanel.py:714
+#: ../PLCOpenEditor.py:1367
+#: ../PLCOpenEditor.py:3190
+#: ../PLCOpenEditor.py:3343
+#: ../PLCOpenEditor.py:3506
+#: ../PLCOpenEditor.py:3650
+#: ../PLCOpenEditor.py:3721
+#: ../PLCOpenEditor.py:3784
+#: ../VariablePanel.py:735
 #: ../dialogs/ConnectionDialog.py:207
 #: ../dialogs/FBDBlockDialog.py:252
 #: ../dialogs/FBDVariableDialog.py:268
@@ -156,25 +158,25 @@
 msgid "\"%s\" is already used by \"%s\"!"
 msgstr "\"%s\" est déjà utilisé par \"%s\" !"
 
-#: ../plcopen/plcopen.py:2366
+#: ../plcopen/plcopen.py:2386
 #, python-format
 msgid "\"%s\" is an invalid value!"
 msgstr "\"%s\" n'est pas une valeur valide !"
 
-#: ../PLCOpenEditor.py:2637
-#: ../PLCOpenEditor.py:2665
+#: ../PLCOpenEditor.py:2673
+#: ../PLCOpenEditor.py:2702
 #, python-format
 msgid "\"%s\" is not a valid folder!"
 msgstr "\"%s\" n'est pas un répertoire valide !"
 
-#: ../PLCOpenEditor.py:1347
-#: ../PLCOpenEditor.py:3148
-#: ../PLCOpenEditor.py:3301
-#: ../PLCOpenEditor.py:3464
-#: ../PLCOpenEditor.py:3608
-#: ../PLCOpenEditor.py:3679
-#: ../PLCOpenEditor.py:3742
-#: ../VariablePanel.py:709
+#: ../PLCOpenEditor.py:1365
+#: ../PLCOpenEditor.py:3186
+#: ../PLCOpenEditor.py:3339
+#: ../PLCOpenEditor.py:3502
+#: ../PLCOpenEditor.py:3646
+#: ../PLCOpenEditor.py:3717
+#: ../PLCOpenEditor.py:3780
+#: ../VariablePanel.py:730
 #: ../dialogs/ConnectionDialog.py:203
 #: ../dialogs/FBDBlockDialog.py:248
 #: ../dialogs/PouNameDialog.py:59
@@ -185,18 +187,19 @@
 msgid "\"%s\" is not a valid identifier!"
 msgstr "\"%s\" n'est pas un identifiant valide !"
 
-#: ../PLCOpenEditor.py:283
-#: ../PLCOpenEditor.py:2302
+#: ../PLCOpenEditor.py:288
 #: ../PLCOpenEditor.py:2322
+#: ../PLCOpenEditor.py:2342
 #, python-format
 msgid "\"%s\" is used by one or more POUs. It can't be removed!"
 msgstr "Le POU \"%s\" est utilisé par un ou plusieurs POUs. Il ne peut être supprimé !"
 
-#: ../PLCOpenEditor.py:1367
-#: ../PLCOpenEditor.py:3309
+#: ../PLCOpenEditor.py:1385
+#: ../PLCOpenEditor.py:3347
 #: ../Viewer.py:248
 #: ../Viewer.py:274
-#: ../TextViewer.py:229
+#: ../TextViewer.py:243
+#: ../TextViewer.py:260
 #: ../dialogs/ConnectionDialog.py:211
 #: ../dialogs/FBDBlockDialog.py:256
 #, python-format
@@ -238,7 +241,7 @@
 "\"%s\" n'est pas une dimension de tableau valide !\n"
 "La valeur de droite doit être supérieur à celle de gauche."
 
-#: ../PLCControler.py:629
+#: ../PLCControler.py:634
 #, python-format
 msgid "%s \"%s\" can't be pasted as a %s."
 msgstr "Le %s \"%s\" ne peut être collé en tant que %s."
@@ -248,56 +251,56 @@
 msgid "%s Graphics"
 msgstr "Graphique %s"
 
-#: ../plcopen/plcopen.py:1465
-#: ../plcopen/plcopen.py:1475
-#: ../plcopen/plcopen.py:1485
-#: ../plcopen/plcopen.py:1495
+#: ../plcopen/plcopen.py:1484
+#: ../plcopen/plcopen.py:1494
 #: ../plcopen/plcopen.py:1504
+#: ../plcopen/plcopen.py:1514
+#: ../plcopen/plcopen.py:1523
 #, python-format
 msgid "%s body don't have instances!"
 msgstr "Le code d'un %s n'a pas d'instances !"
 
-#: ../plcopen/plcopen.py:1527
-#: ../plcopen/plcopen.py:1534
+#: ../plcopen/plcopen.py:1546
+#: ../plcopen/plcopen.py:1553
 #, python-format
 msgid "%s body don't have text!"
 msgstr "Le code d'un %s n'a pas de texte !"
 
-#: ../PLCOpenEditor.py:4333
-#: ../PLCOpenEditor.py:4335
-#: ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4394
+#: ../PLCOpenEditor.py:4396
+#: ../PLCOpenEditor.py:4397
 msgid ",   "
 msgstr ",   "
 
-#: ../PLCOpenEditor.py:3296
-#: ../PLCOpenEditor.py:3459
-#: ../PLCOpenEditor.py:3603
+#: ../PLCOpenEditor.py:3334
+#: ../PLCOpenEditor.py:3497
+#: ../PLCOpenEditor.py:3641
 #: ../dialogs/SFCTransitionDialog.py:208
 #, python-format
 msgid ", %s"
 msgstr ", %s"
 
-#: ../PLCOpenEditor.py:4331
+#: ../PLCOpenEditor.py:4392
 msgid ". "
 msgstr ". "
 
-#: ../PLCOpenEditor.py:1370
-#: ../PLCOpenEditor.py:1412
-#: ../PLCOpenEditor.py:1432
-#: ../PLCOpenEditor.py:3313
-#: ../PLCOpenEditor.py:3691
-#: ../PLCOpenEditor.py:3754
+#: ../PLCOpenEditor.py:1388
+#: ../PLCOpenEditor.py:1430
+#: ../PLCOpenEditor.py:1450
+#: ../PLCOpenEditor.py:3351
+#: ../PLCOpenEditor.py:3729
+#: ../PLCOpenEditor.py:3792
 #, python-format
 msgid "A POU has an element named \"%s\". This could cause a conflict. Do you wish to continue?"
 msgstr "Un POU a un élément nommé \"%s\". Cela peut générer des conflits. Voulez-vous continuer ?"
 
-#: ../PLCOpenEditor.py:1383
-#: ../PLCOpenEditor.py:1394
-#: ../PLCOpenEditor.py:3472
-#: ../PLCOpenEditor.py:3616
-#: ../PLCOpenEditor.py:3687
-#: ../PLCOpenEditor.py:3750
-#: ../VariablePanel.py:719
+#: ../PLCOpenEditor.py:1401
+#: ../PLCOpenEditor.py:1412
+#: ../PLCOpenEditor.py:3510
+#: ../PLCOpenEditor.py:3654
+#: ../PLCOpenEditor.py:3725
+#: ../PLCOpenEditor.py:3788
+#: ../VariablePanel.py:740
 #: ../dialogs/PouNameDialog.py:67
 #: ../dialogs/SFCStepDialog.py:187
 #: ../dialogs/SFCStepNameDialog.py:69
@@ -305,24 +308,24 @@
 msgid "A POU named \"%s\" already exists!"
 msgstr "Un POU nommé \"%s\" existe déjà !"
 
-#: ../VariablePanel.py:1201
+#: ../VariablePanel.py:1239
 msgid "A location must be selected!"
 msgstr "Une adresse doit être sélectionné !"
 
-#: ../PLCOpenEditor.py:1385
-#: ../PLCOpenEditor.py:1396
-#: ../VariablePanel.py:724
+#: ../PLCOpenEditor.py:1403
+#: ../PLCOpenEditor.py:1414
+#: ../VariablePanel.py:745
 #: ../dialogs/SFCStepDialog.py:191
 #: ../dialogs/SFCStepNameDialog.py:73
 #, python-format
 msgid "A variable with \"%s\" as name already exists in this pou!"
 msgstr "Une variable nommée \"%s\" existe déjà dans ce POU !"
 
-#: ../PLCOpenEditor.py:2494
+#: ../PLCOpenEditor.py:2514
 msgid "About"
 msgstr "A propos"
 
-#: ../PLCOpenEditor.py:2397
+#: ../PLCOpenEditor.py:2417
 msgid "About PLCOpenEditor"
 msgstr "A propos de PLCOpenEditor"
 
@@ -335,15 +338,15 @@
 msgid "Action"
 msgstr "Action"
 
-#: ../PLCOpenEditor.py:3592
+#: ../PLCOpenEditor.py:3630
 msgid "Action Name"
 msgstr "Nom de l'action"
 
-#: ../PLCOpenEditor.py:3559
+#: ../PLCOpenEditor.py:3597
 msgid "Action Name:"
 msgstr "Nom de l'action :"
 
-#: ../plcopen/plcopen.py:1213
+#: ../plcopen/plcopen.py:1232
 #, python-format
 msgid "Action with name %s doesn't exist!"
 msgstr "L'action nommée %s n'existe pas !"
@@ -356,30 +359,30 @@
 msgid "Actions:"
 msgstr "Actions :"
 
-#: ../VariablePanel.py:483
+#: ../VariablePanel.py:499
 #: ../dialogs/ActionBlockDialog.py:274
 #: ../DataTypeEditor.py:539
 msgid "Add"
 msgstr "Ajouter"
 
-#: ../PLCOpenEditor.py:1589
-#: ../PLCOpenEditor.py:1672
+#: ../PLCOpenEditor.py:1606
+#: ../PLCOpenEditor.py:1689
 msgid "Add Action"
 msgstr "Ajouter une action"
 
-#: ../PLCOpenEditor.py:1655
+#: ../PLCOpenEditor.py:1672
 msgid "Add Configuration"
 msgstr "Ajouter une configuration"
 
-#: ../PLCOpenEditor.py:1635
+#: ../PLCOpenEditor.py:1652
 msgid "Add DataType"
 msgstr "Ajouter un type de donnée"
 
-#: ../Viewer.py:436
+#: ../Viewer.py:401
 msgid "Add Divergence Branch"
 msgstr "Ajouter une branche à la divergence"
 
-#: ../PLCOpenEditor.py:328
+#: ../PLCOpenEditor.py:333
 msgid "Add Element"
 msgstr "Ajouter un élément"
 
@@ -387,12 +390,12 @@
 msgid "Add Instance"
 msgstr "Ajouter une instance"
 
-#: ../PLCOpenEditor.py:1642
+#: ../PLCOpenEditor.py:1659
 msgid "Add POU"
 msgstr "Ajouter un POU"
 
-#: ../PLCOpenEditor.py:1618
-#: ../PLCOpenEditor.py:1683
+#: ../PLCOpenEditor.py:1635
+#: ../PLCOpenEditor.py:1700
 msgid "Add Resource"
 msgstr "Ajouter une resource"
 
@@ -400,16 +403,16 @@
 msgid "Add Task"
 msgstr "Ajouter une tâche"
 
-#: ../PLCOpenEditor.py:1586
-#: ../PLCOpenEditor.py:1661
+#: ../PLCOpenEditor.py:1603
+#: ../PLCOpenEditor.py:1678
 msgid "Add Transition"
 msgstr "Ajouter une transition"
 
-#: ../Viewer.py:431
+#: ../Viewer.py:396
 msgid "Add Wire Segment"
 msgstr "Ajouter un segment au fil"
 
-#: ../PLCOpenEditor.py:2177
+#: ../PLCOpenEditor.py:2194
 msgid "Add a new data type"
 msgstr "Ajouter un nouveau type de données"
 
@@ -417,7 +420,7 @@
 msgid "Add a new initial step"
 msgstr "Ajouter une nouvelle étape initiale"
 
-#: ../Viewer.py:2032
+#: ../Viewer.py:2020
 #: ../SFCViewer.py:698
 msgid "Add a new jump"
 msgstr "Ajouter un nouveau renvoi"
@@ -426,11 +429,11 @@
 msgid "Add a new step"
 msgstr "Ajouter une nouvelle étape"
 
-#: ../PLCOpenEditor.py:2221
+#: ../PLCOpenEditor.py:2246
 msgid "Add new configuration"
 msgstr "Ajouter une nouvelle configuration"
 
-#: ../PLCOpenEditor.py:2232
+#: ../PLCOpenEditor.py:2259
 msgid "Add new resource"
 msgstr "Ajouter une nouvelle resource"
 
@@ -438,17 +441,17 @@
 msgid "Addition"
 msgstr "Addition"
 
-#: ../plcopen/structures.py:222
+#: ../plcopen/structures.py:221
 msgid "Additional function blocks"
 msgstr "Blocs fonctionnels additionnels"
 
-#: ../Viewer.py:445
+#: ../Viewer.py:410
 msgid "Alignment"
 msgstr "Alignement"
 
-#: ../VariablePanel.py:69
-#: ../VariablePanel.py:1018
-#: ../VariablePanel.py:1135
+#: ../VariablePanel.py:70
+#: ../VariablePanel.py:1056
+#: ../VariablePanel.py:1173
 msgid "All"
 msgstr "Toutes"
 
@@ -473,11 +476,12 @@
 msgid "Arithmetic"
 msgstr "Arithmétique"
 
+#: ../VariablePanel.py:798
 #: ../DataTypeEditor.py:236
 msgid "Array"
 msgstr "Tableau"
 
-#: ../plcopen/iec_std.csv:50
+#: ../plcopen/iec_std.csv:39
 msgid "Assignment"
 msgstr "Assignation"
 
@@ -485,11 +489,11 @@
 msgid "At least a variable or an expression must be selected!"
 msgstr "Au moins une variable ou une expression doit être sélectionné !"
 
-#: ../PLCOpenEditor.py:2947
+#: ../PLCOpenEditor.py:2985
 msgid "Author"
 msgstr "Auteur"
 
-#: ../PLCOpenEditor.py:2932
+#: ../PLCOpenEditor.py:2970
 msgid "Author Name (optional):"
 msgstr "Nom de l'auteur (optionel) :"
 
@@ -499,36 +503,36 @@
 msgid "Base Type:"
 msgstr "Type de base :"
 
-#: ../VariablePanel.py:758
+#: ../VariablePanel.py:778
 #: ../DataTypeEditor.py:801
 msgid "Base Types"
 msgstr "Types de base"
 
-#: ../plcopen/iec_std.csv:59
+#: ../plcopen/iec_std.csv:70
 msgid "Binary selection (1 of 2)"
 msgstr "Selection binaire (sélectionne 1 sur 2)"
 
-#: ../plcopen/iec_std.csv:51
+#: ../plcopen/iec_std.csv:62
 msgid "Bit-shift"
 msgstr "Décalage de bit"
 
-#: ../plcopen/iec_std.csv:55
+#: ../plcopen/iec_std.csv:66
 msgid "Bitwise"
 msgstr "Bit à bit"
 
-#: ../plcopen/iec_std.csv:55
+#: ../plcopen/iec_std.csv:66
 msgid "Bitwise AND"
 msgstr "ET bit à bit"
 
-#: ../plcopen/iec_std.csv:56
+#: ../plcopen/iec_std.csv:67
 msgid "Bitwise OR"
 msgstr "OU bit à bit"
 
-#: ../plcopen/iec_std.csv:57
+#: ../plcopen/iec_std.csv:68
 msgid "Bitwise XOR"
 msgstr "OU exclusif bit à bit"
 
-#: ../plcopen/iec_std.csv:58
+#: ../plcopen/iec_std.csv:69
 msgid "Bitwise inverting"
 msgstr "Inversion bit à bit"
 
@@ -536,72 +540,72 @@
 msgid "Block Properties"
 msgstr "Propriétés du bloc"
 
-#: ../PLCOpenEditor.py:1896
+#: ../PLCOpenEditor.py:1913
 #: ../dialogs/FBDBlockDialog.py:268
 msgid "Block Types"
 msgstr "Types de blocs"
 
-#: ../Viewer.py:403
+#: ../Viewer.py:368
 msgid "Bottom"
 msgstr "Bas"
 
-#: ../VariablePanel.py:1077
+#: ../VariablePanel.py:1115
 msgid "Browse Locations"
 msgstr "Naviger dans les adresses"
 
-#: ../PLCOpenEditor.py:1837
+#: ../PLCOpenEditor.py:1854
 msgid "CSV Log"
 msgstr "Log CVS"
 
-#: ../plcopen/plcopen.py:1407
-#: ../plcopen/plcopen.py:1421
-#: ../plcopen/plcopen.py:1442
-#: ../plcopen/plcopen.py:1458
+#: ../plcopen/plcopen.py:1426
+#: ../plcopen/plcopen.py:1440
+#: ../plcopen/plcopen.py:1461
+#: ../plcopen/plcopen.py:1477
 msgid "Can only generate execution order on FBD networks!"
 msgstr "L'ordre d'exécution ne peut être généré que dans les FBD !"
 
-#: ../VariablePanel.py:311
+#: ../VariablePanel.py:327
 msgid "Can only give a location to local or global variables"
 msgstr "Une adresse ne peut être affecté qu'à des variables locales ou globales"
 
-#: ../PLCOpenEditor.py:2632
+#: ../PLCOpenEditor.py:2668
 #, python-format
 msgid "Can't generate program to file %s!"
 msgstr "Le programme n'a pu être généré dans le fichier \"%s\" !"
 
-#: ../VariablePanel.py:309
+#: ../VariablePanel.py:325
 msgid "Can't give a location to a function block instance"
 msgstr "Une adresse ne peut être affectée une instance de Function Block"
 
-#: ../PLCOpenEditor.py:2663
+#: ../PLCOpenEditor.py:2700
 #, python-format
 msgid "Can't save project to file %s!"
 msgstr "Le projet n'a pu être sauvé dans le fichier \"%s\" !"
 
-#: ../Viewer.py:394
+#: ../Viewer.py:359
 msgid "Center"
 msgstr "Centre"
 
-#: ../PLCOpenEditor.py:1607
+#: ../PLCOpenEditor.py:1624
 msgid "Change POU Type To"
 msgstr "Changer le type du POU pour"
 
-#: ../plcopen/iec_std.csv:70
+#: ../plcopen/iec_std.csv:81
 msgid "Character string"
 msgstr "Chaîne de caractères"
 
-#: ../PLCOpenEditor.py:2598
-#: ../PLCOpenEditor.py:2622
-#: ../PLCOpenEditor.py:2657
+#: ../PLCOpenEditor.py:2630
+#: ../PLCOpenEditor.py:2658
+#: ../PLCOpenEditor.py:2694
 msgid "Choose a file"
 msgstr "Choisissez un fichier"
 
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 msgid "Class"
 msgstr "Classe"
 
-#: ../VariablePanel.py:475
+#: ../VariablePanel.py:491
 msgid "Class Filter:"
 msgstr "Filtre de classe :"
 
@@ -609,48 +613,48 @@
 msgid "Class:"
 msgstr "Classe :"
 
-#: ../PLCOpenEditor.py:367
+#: ../PLCOpenEditor.py:372
 msgid "Clear Errors\tCTRL+K"
 msgstr "Effacer les erreurs\tCTRL+K"
 
-#: ../Viewer.py:441
+#: ../Viewer.py:406
 msgid "Clear Execution Order"
 msgstr "Effacer l'ordre d'exécution"
 
-#: ../PLCOpenEditor.py:2522
+#: ../PLCOpenEditor.py:2548
 msgid "Close Application"
 msgstr "Fermer l'application"
 
-#: ../PLCOpenEditor.py:871
-#: ../PLCOpenEditor.py:2450
+#: ../PLCOpenEditor.py:887
+#: ../PLCOpenEditor.py:2470
 msgid "Close Project"
 msgstr "Fermer le projet"
 
-#: ../PLCOpenEditor.py:2448
+#: ../PLCOpenEditor.py:2468
 msgid "Close Tab\tCTRL+W"
 msgstr "Fermer l'onglet\tCTRL+W"
 
-#: ../LDViewer.py:478
+#: ../LDViewer.py:505
 msgid "Comment"
 msgstr "Commentaire"
 
-#: ../PLCOpenEditor.py:2916
+#: ../PLCOpenEditor.py:2954
 msgid "Company Name (required):"
 msgstr "Nom de l'entreprise (obligatoire) :"
 
-#: ../PLCOpenEditor.py:2924
+#: ../PLCOpenEditor.py:2962
 msgid "Company URL (optional):"
 msgstr "URL de l'entreprise (optionel) :"
 
-#: ../plcopen/iec_std.csv:64
+#: ../plcopen/iec_std.csv:75
 msgid "Comparison"
 msgstr "Comparaison"
 
-#: ../plcopen/iec_std.csv:74
+#: ../plcopen/iec_std.csv:85
 msgid "Concatenation"
 msgstr "Concaténation"
 
-#: ../PLCOpenEditor.py:338
+#: ../PLCOpenEditor.py:343
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -674,11 +678,11 @@
 msgid "Connectors:"
 msgstr "Connecteurs :"
 
-#: ../VariablePanel.py:59
+#: ../VariablePanel.py:60
 msgid "Constant"
 msgstr "Constante"
 
-#: ../PLCOpenEditor.py:3006
+#: ../PLCOpenEditor.py:3044
 msgid "Content Description (optional):"
 msgstr "Description du contenu (optionel) :"
 
@@ -702,11 +706,11 @@
 msgid "Conversion to time-of-day"
 msgstr "Conversion en heure de la journée"
 
-#: ../PLCOpenEditor.py:323
+#: ../PLCOpenEditor.py:328
 msgid "Copy\tCTRL+C"
 msgstr "Copier\tCtrl+C"
 
-#: ../PLCOpenEditor.py:1594
+#: ../PLCOpenEditor.py:1611
 msgid "Copy POU"
 msgstr "Copier ce POU"
 
@@ -714,59 +718,55 @@
 msgid "Cosine"
 msgstr "Cosinus"
 
-#: ../PLCControler.py:615
-#: ../PLCControler.py:647
+#: ../PLCControler.py:620
+#: ../PLCControler.py:652
 msgid "Couldn't paste non-POU object."
 msgstr "Impossible de coller autre chose qu'un POU."
 
-#: ../PLCOpenEditor.py:3234
+#: ../PLCOpenEditor.py:3272
 msgid "Create a new POU"
 msgstr "Créer un nouveau POU"
 
-#: ../PLCOpenEditor.py:2253
-msgid "Create a new POU from"
-msgstr "Créer un nouveau POU à partir de"
-
-#: ../PLCOpenEditor.py:3555
+#: ../PLCOpenEditor.py:3593
 msgid "Create a new action"
 msgstr "Créer une nouvelle action"
 
-#: ../PLCOpenEditor.py:215
+#: ../PLCOpenEditor.py:220
 msgid "Create a new action block"
 msgstr "Créer un nouveau bloc d'actions"
 
-#: ../PLCOpenEditor.py:170
-#: ../PLCOpenEditor.py:197
-#: ../PLCOpenEditor.py:227
+#: ../PLCOpenEditor.py:175
+#: ../PLCOpenEditor.py:202
+#: ../PLCOpenEditor.py:232
 msgid "Create a new block"
 msgstr "Créer un nouveau bloc"
 
-#: ../PLCOpenEditor.py:191
+#: ../PLCOpenEditor.py:196
 msgid "Create a new branch"
 msgstr "Créer une nouvelle branche"
 
-#: ../PLCOpenEditor.py:185
+#: ../PLCOpenEditor.py:190
 msgid "Create a new coil"
 msgstr "Créer un nouveau relai"
 
-#: ../PLCOpenEditor.py:164
-#: ../PLCOpenEditor.py:176
-#: ../PLCOpenEditor.py:203
+#: ../PLCOpenEditor.py:169
+#: ../PLCOpenEditor.py:181
+#: ../PLCOpenEditor.py:208
 msgid "Create a new comment"
 msgstr "Créer un nouveau copmmentaire"
 
-#: ../PLCOpenEditor.py:173
-#: ../PLCOpenEditor.py:200
-#: ../PLCOpenEditor.py:230
+#: ../PLCOpenEditor.py:178
+#: ../PLCOpenEditor.py:205
+#: ../PLCOpenEditor.py:235
 msgid "Create a new connection"
 msgstr "Créer une nouvelle connexion"
 
-#: ../PLCOpenEditor.py:188
-#: ../PLCOpenEditor.py:236
+#: ../PLCOpenEditor.py:193
+#: ../PLCOpenEditor.py:241
 msgid "Create a new contact"
 msgstr "Créer un nouveau contact"
 
-#: ../PLCOpenEditor.py:218
+#: ../PLCOpenEditor.py:223
 msgid "Create a new divergence"
 msgstr "Créer une nouvelle divergence"
 
@@ -774,43 +774,55 @@
 msgid "Create a new divergence or convergence"
 msgstr "Créer une nouvelle divergence ou convergence"
 
-#: ../PLCOpenEditor.py:206
+#: ../PLCOpenEditor.py:211
 msgid "Create a new initial step"
 msgstr "Créer une nouvelle étape initiale"
 
-#: ../PLCOpenEditor.py:221
+#: ../PLCOpenEditor.py:226
 msgid "Create a new jump"
 msgstr "Créer un nouveau renvoi"
 
-#: ../PLCOpenEditor.py:179
-#: ../PLCOpenEditor.py:233
+#: ../PLCOpenEditor.py:184
+#: ../PLCOpenEditor.py:238
 msgid "Create a new power rail"
 msgstr "Créer une nouvelle barre d'alimentation"
 
-#: ../PLCOpenEditor.py:182
+#: ../PLCOpenEditor.py:187
 msgid "Create a new rung"
 msgstr "Créer un nouvel échelon"
 
-#: ../PLCOpenEditor.py:209
+#: ../PLCOpenEditor.py:214
 msgid "Create a new step"
 msgstr "Créer une nouvelle étape"
 
-#: ../PLCOpenEditor.py:212
-#: ../PLCOpenEditor.py:3411
+#: ../PLCOpenEditor.py:217
+#: ../PLCOpenEditor.py:3449
 msgid "Create a new transition"
 msgstr "Créer une nouvelle transition"
 
-#: ../PLCOpenEditor.py:167
-#: ../PLCOpenEditor.py:194
-#: ../PLCOpenEditor.py:224
+#: ../PLCOpenEditor.py:172
+#: ../PLCOpenEditor.py:199
+#: ../PLCOpenEditor.py:229
 msgid "Create a new variable"
 msgstr "Créer une nouvelle variable"
 
-#: ../PLCOpenEditor.py:321
+#: ../PLCOpenEditor.py:326
 msgid "Cut\tCTRL+X"
 msgstr "Couper\tCTRL+X"
 
-#: ../PLCOpenEditor.py:330
+#: ../plcopen/iec_std.csv:42
+#: ../plcopen/iec_std.csv:44
+#: ../plcopen/iec_std.csv:46
+#: ../plcopen/iec_std.csv:50
+#: ../plcopen/iec_std.csv:52
+#: ../plcopen/iec_std.csv:54
+#: ../plcopen/iec_std.csv:56
+#: ../plcopen/iec_std.csv:58
+#: ../plcopen/iec_std.csv:60
+msgid "DEPRECATED"
+msgstr ""
+
+#: ../PLCOpenEditor.py:335
 msgid "Data Type"
 msgstr "Type de donnée"
 
@@ -822,41 +834,45 @@
 msgid "Data type conversion"
 msgstr "Conversion entre types de donnée"
 
-#: ../plcopen/iec_std.csv:36
+#: ../plcopen/iec_std.csv:44
+#: ../plcopen/iec_std.csv:45
 msgid "Date addition"
 msgstr "Addition de dates"
 
-#: ../plcopen/iec_std.csv:44
-#: ../plcopen/iec_std.csv:45
+#: ../plcopen/iec_std.csv:56
+#: ../plcopen/iec_std.csv:57
+#: ../plcopen/iec_std.csv:58
+#: ../plcopen/iec_std.csv:59
 msgid "Date and time subtraction"
 msgstr "Soustraction entre horodatage"
 
-#: ../plcopen/iec_std.csv:41
+#: ../plcopen/iec_std.csv:50
+#: ../plcopen/iec_std.csv:51
 msgid "Date subtraction"
 msgstr "Soustraction de date"
 
-#: ../Viewer.py:2885
+#: ../Viewer.py:2873
 #, python-format
 msgid "Debug: %s"
 msgstr "Déboggage : %s"
 
-#: ../PLCOpenEditor.py:618
+#: ../PLCOpenEditor.py:623
 msgid "Debugger"
 msgstr "Déboggueur"
 
-#: ../PLCOpenEditor.py:342
-#: ../PLCOpenEditor.py:1612
-#: ../PLCOpenEditor.py:1621
-#: ../PLCOpenEditor.py:1627
-#: ../PLCOpenEditor.py:4121
-#: ../Viewer.py:450
-#: ../VariablePanel.py:488
+#: ../PLCOpenEditor.py:347
+#: ../PLCOpenEditor.py:1629
+#: ../PLCOpenEditor.py:1638
+#: ../PLCOpenEditor.py:1644
+#: ../PLCOpenEditor.py:4164
+#: ../Viewer.py:415
+#: ../VariablePanel.py:504
 #: ../dialogs/ActionBlockDialog.py:279
 #: ../DataTypeEditor.py:544
 msgid "Delete"
 msgstr "Supprimer"
 
-#: ../Viewer.py:438
+#: ../Viewer.py:403
 msgid "Delete Divergence Branch"
 msgstr "Supprimer une branche de divergence"
 
@@ -868,7 +884,7 @@
 msgid "Delete Task"
 msgstr "Supprimer une tâche"
 
-#: ../Viewer.py:433
+#: ../Viewer.py:398
 msgid "Delete Wire Segment"
 msgstr "Supprimer un segment de fil"
 
@@ -877,7 +893,7 @@
 msgid "Delete item"
 msgstr "Supprimer un élément"
 
-#: ../plcopen/iec_std.csv:77
+#: ../plcopen/iec_std.csv:88
 msgid "Deletion (within)"
 msgstr "Suppression (au milieu)"
 
@@ -885,7 +901,7 @@
 msgid "Derivation Type:"
 msgstr "Type de dérivation :"
 
-#: ../plcopen/structures.py:236
+#: ../plcopen/structures.py:235
 msgid ""
 "Derivative\n"
 "The derivative function block produces an output XOUT proportional to the rate of change of the input XIN."
@@ -897,7 +913,7 @@
 msgid "Dimensions:"
 msgstr "Dimensions :"
 
-#: ../VariablePanel.py:1094
+#: ../VariablePanel.py:1132
 msgid "Direction:"
 msgstr "Direction :"
 
@@ -905,24 +921,24 @@
 msgid "Directly"
 msgstr "Direct"
 
-#: ../PLCOpenEditor.py:306
+#: ../PLCOpenEditor.py:311
 msgid "Display"
 msgstr "Affichage"
 
-#: ../plcopen/iec_std.csv:46
+#: ../plcopen/iec_std.csv:36
 msgid "Division"
 msgstr "Division"
 
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 msgid "Documentation"
 msgstr "Documentation"
 
-#: ../PLCOpenEditor.py:2626
+#: ../PLCOpenEditor.py:2662
 msgid "Done"
 msgstr "Terminé"
 
-#: ../plcopen/structures.py:199
+#: ../plcopen/structures.py:198
 msgid ""
 "Down-counter\n"
 "The down-counter can be used to signal when a count has reached zero, on counting down from a preset value."
@@ -934,11 +950,11 @@
 msgid "Duration"
 msgstr "Durée"
 
-#: ../PLCOpenEditor.py:305
+#: ../PLCOpenEditor.py:310
 msgid "Edit"
 msgstr "Editer"
 
-#: ../Viewer.py:448
+#: ../Viewer.py:413
 msgid "Edit Block"
 msgstr "Editer le block"
 
@@ -958,10 +974,10 @@
 msgid "Edit action block properties"
 msgstr "Editer les propriétés du block d'actions"
 
-#: ../Viewer.py:1857
-#: ../Viewer.py:1859
-#: ../Viewer.py:2358
-#: ../Viewer.py:2360
+#: ../Viewer.py:1845
+#: ../Viewer.py:1847
+#: ../Viewer.py:2346
+#: ../Viewer.py:2348
 msgid "Edit comment"
 msgstr "Editer le commentaire"
 
@@ -970,7 +986,7 @@
 msgid "Edit item"
 msgstr "Editer l'élément"
 
-#: ../Viewer.py:2323
+#: ../Viewer.py:2311
 msgid "Edit jump target"
 msgstr "Editer la cible du renvoi"
 
@@ -986,7 +1002,7 @@
 msgid "Elements :"
 msgstr "Eléments :"
 
-#: ../PLCOpenEditor.py:318
+#: ../PLCOpenEditor.py:323
 msgid "Enable Undo/Redo"
 msgstr "Activer Défaire/Refaire"
 
@@ -994,60 +1010,60 @@
 msgid "Enumerated"
 msgstr "Enumération"
 
-#: ../plcopen/iec_std.csv:66
+#: ../plcopen/iec_std.csv:77
 msgid "Equal to"
 msgstr "Egal à"
 
-#: ../PLCOpenEditor.py:865
-#: ../PLCOpenEditor.py:1370
-#: ../PLCOpenEditor.py:1407
-#: ../PLCOpenEditor.py:1412
-#: ../PLCOpenEditor.py:1427
-#: ../PLCOpenEditor.py:1432
-#: ../PLCOpenEditor.py:2280
-#: ../PLCOpenEditor.py:2633
-#: ../PLCOpenEditor.py:2638
-#: ../PLCOpenEditor.py:3052
-#: ../PLCOpenEditor.py:3144
-#: ../PLCOpenEditor.py:3148
-#: ../PLCOpenEditor.py:3152
-#: ../PLCOpenEditor.py:3156
-#: ../PLCOpenEditor.py:3297
-#: ../PLCOpenEditor.py:3301
-#: ../PLCOpenEditor.py:3305
-#: ../PLCOpenEditor.py:3309
-#: ../PLCOpenEditor.py:3460
-#: ../PLCOpenEditor.py:3464
-#: ../PLCOpenEditor.py:3468
-#: ../PLCOpenEditor.py:3472
-#: ../PLCOpenEditor.py:3476
-#: ../PLCOpenEditor.py:3604
-#: ../PLCOpenEditor.py:3608
-#: ../PLCOpenEditor.py:3612
-#: ../PLCOpenEditor.py:3616
-#: ../PLCOpenEditor.py:3620
-#: ../PLCOpenEditor.py:3675
-#: ../PLCOpenEditor.py:3679
-#: ../PLCOpenEditor.py:3683
-#: ../PLCOpenEditor.py:3687
-#: ../PLCOpenEditor.py:3738
-#: ../PLCOpenEditor.py:3742
-#: ../PLCOpenEditor.py:3746
-#: ../PLCOpenEditor.py:3750
-#: ../PLCOpenEditor.py:4053
-#: ../PLCOpenEditor.py:4356
-#: ../PLCOpenEditor.py:4366
-#: ../Viewer.py:369
-#: ../TextViewer.py:250
-#: ../LDViewer.py:628
-#: ../LDViewer.py:850
-#: ../LDViewer.py:854
-#: ../VariablePanel.py:358
-#: ../VariablePanel.py:709
-#: ../VariablePanel.py:714
-#: ../VariablePanel.py:719
-#: ../VariablePanel.py:724
-#: ../VariablePanel.py:1201
+#: ../PLCOpenEditor.py:881
+#: ../PLCOpenEditor.py:1388
+#: ../PLCOpenEditor.py:1425
+#: ../PLCOpenEditor.py:1430
+#: ../PLCOpenEditor.py:1445
+#: ../PLCOpenEditor.py:1450
+#: ../PLCOpenEditor.py:2300
+#: ../PLCOpenEditor.py:2669
+#: ../PLCOpenEditor.py:2674
+#: ../PLCOpenEditor.py:3090
+#: ../PLCOpenEditor.py:3182
+#: ../PLCOpenEditor.py:3186
+#: ../PLCOpenEditor.py:3190
+#: ../PLCOpenEditor.py:3194
+#: ../PLCOpenEditor.py:3335
+#: ../PLCOpenEditor.py:3339
+#: ../PLCOpenEditor.py:3343
+#: ../PLCOpenEditor.py:3347
+#: ../PLCOpenEditor.py:3498
+#: ../PLCOpenEditor.py:3502
+#: ../PLCOpenEditor.py:3506
+#: ../PLCOpenEditor.py:3510
+#: ../PLCOpenEditor.py:3514
+#: ../PLCOpenEditor.py:3642
+#: ../PLCOpenEditor.py:3646
+#: ../PLCOpenEditor.py:3650
+#: ../PLCOpenEditor.py:3654
+#: ../PLCOpenEditor.py:3658
+#: ../PLCOpenEditor.py:3713
+#: ../PLCOpenEditor.py:3717
+#: ../PLCOpenEditor.py:3721
+#: ../PLCOpenEditor.py:3725
+#: ../PLCOpenEditor.py:3776
+#: ../PLCOpenEditor.py:3780
+#: ../PLCOpenEditor.py:3784
+#: ../PLCOpenEditor.py:3788
+#: ../PLCOpenEditor.py:4091
+#: ../PLCOpenEditor.py:4417
+#: ../PLCOpenEditor.py:4427
+#: ../Viewer.py:334
+#: ../TextViewer.py:281
+#: ../LDViewer.py:665
+#: ../LDViewer.py:881
+#: ../LDViewer.py:885
+#: ../VariablePanel.py:374
+#: ../VariablePanel.py:730
+#: ../VariablePanel.py:735
+#: ../VariablePanel.py:740
+#: ../VariablePanel.py:745
+#: ../VariablePanel.py:1239
 #: ../dialogs/ConnectionDialog.py:199
 #: ../dialogs/ConnectionDialog.py:203
 #: ../dialogs/ConnectionDialog.py:207
@@ -1061,8 +1077,8 @@
 #: ../dialogs/FBDBlockDialog.py:260
 #: ../dialogs/FBDVariableDialog.py:264
 #: ../dialogs/FBDVariableDialog.py:268
-#: ../dialogs/ForceVariableDialog.py:92
-#: ../dialogs/ForceVariableDialog.py:96
+#: ../dialogs/ForceVariableDialog.py:170
+#: ../dialogs/ForceVariableDialog.py:174
 #: ../dialogs/PouNameDialog.py:55
 #: ../dialogs/PouNameDialog.py:59
 #: ../dialogs/PouNameDialog.py:63
@@ -1099,7 +1115,7 @@
 msgid "Execution Order:"
 msgstr "Ordre d'exécution :"
 
-#: ../plcopen/iec_std.csv:49
+#: ../plcopen/iec_std.csv:38
 msgid "Exponent"
 msgstr "Exposant"
 
@@ -1111,24 +1127,24 @@
 msgid "Expression:"
 msgstr "Expression :"
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "External"
 msgstr "Externe"
 
-#: ../PLCOpenEditor.py:2984
-#: ../PLCOpenEditor.py:3179
-#: ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3022
+#: ../PLCOpenEditor.py:3217
+#: ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "FBD"
 msgstr "FBD"
 
-#: ../Viewer.py:428
+#: ../Viewer.py:393
 #: ../dialogs/LDElementDialog.py:155
 msgid "Falling Edge"
 msgstr "Front descendant"
 
-#: ../plcopen/structures.py:189
+#: ../plcopen/structures.py:188
 msgid ""
 "Falling edge detector\n"
 "The output produces a single pulse when a falling edge is detected."
@@ -1136,27 +1152,27 @@
 "Détecteur de front descendant\n"
 "La sortie produit une impulsion unique lorsqu'un front descendant est détecté."
 
-#: ../PLCOpenEditor.py:304
+#: ../PLCOpenEditor.py:309
 msgid "File"
 msgstr "Fichier"
 
-#: ../plcopen/iec_std.csv:79
+#: ../plcopen/iec_std.csv:90
 msgid "Find position"
 msgstr "Trouver la position"
 
-#: ../PLCOpenEditor.py:4184
-#: ../Viewer.py:1130
+#: ../PLCOpenEditor.py:4232
+#: ../Viewer.py:1095
 msgid "Force value"
 msgstr "Forcer la valeur"
 
-#: ../dialogs/ForceVariableDialog.py:77
+#: ../dialogs/ForceVariableDialog.py:155
 msgid "Forcing Variable Value"
 msgstr "Forcer la valeur de la variable"
 
-#: ../PLCOpenEditor.py:3052
-#: ../PLCOpenEditor.py:3297
-#: ../PLCOpenEditor.py:3460
-#: ../PLCOpenEditor.py:3604
+#: ../PLCOpenEditor.py:3090
+#: ../PLCOpenEditor.py:3335
+#: ../PLCOpenEditor.py:3498
+#: ../PLCOpenEditor.py:3642
 #: ../dialogs/SFCTransitionDialog.py:209
 #, python-format
 msgid "Form isn't complete. %s must be filled!"
@@ -1171,16 +1187,16 @@
 msgid "Form isn't complete. Valid block type must be selected!"
 msgstr "Le formulaire est incomplet. Un type de bloc valide doit être sélectionné !"
 
-#: ../PLCOpenEditor.py:332
+#: ../PLCOpenEditor.py:337
 msgid "Function"
 msgstr "Fonction"
 
-#: ../PLCOpenEditor.py:334
-#: ../PLCOpenEditor.py:1602
+#: ../PLCOpenEditor.py:339
+#: ../PLCOpenEditor.py:1619
 msgid "Function Block"
 msgstr "Bloc fonctionnel"
 
-#: ../VariablePanel.py:786
+#: ../VariablePanel.py:810
 msgid "Function Block Types"
 msgstr "Types de blocs fonctionnels"
 
@@ -1196,7 +1212,7 @@
 msgid "Function Blocks can't be used in Transitions!"
 msgstr "Les blocs fonctionnels ne peuvent être utilisés dans des transitions"
 
-#: ../PLCControler.py:1719
+#: ../PLCControler.py:1801
 #, python-format
 msgid "FunctionBlock \"%s\" can't be pasted in a Function!!!"
 msgstr "Le bloc fonctionnel \"%s\" ne peuvent être collés dans une function !"
@@ -1205,67 +1221,75 @@
 msgid "Functions"
 msgstr "Fonctions"
 
-#: ../PLCOpenEditor.py:2457
+#: ../PLCOpenEditor.py:2477
 msgid "Generate Program\tCTRL+G"
 msgstr "Générer le program\tCTRL+G"
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "Global"
 msgstr "Globale"
 
-#: ../PLCOpenEditor.py:1834
+#: ../PLCOpenEditor.py:1851
 msgid "Graphic Panel"
 msgstr "Graphique"
 
-#: ../PLCOpenEditor.py:2989
+#: ../PLCOpenEditor.py:3027
 msgid "Graphics"
 msgstr "Graphiques"
 
-#: ../plcopen/iec_std.csv:64
+#: ../plcopen/iec_std.csv:75
 msgid "Greater than"
 msgstr "Supérieur à"
 
-#: ../plcopen/iec_std.csv:65
+#: ../plcopen/iec_std.csv:76
 msgid "Greater than or equal to"
 msgstr "Supérieur ou égal à"
 
-#: ../PLCOpenEditor.py:2968
+#: ../PLCOpenEditor.py:3014
+msgid "Grid Resolution:"
+msgstr "Résolution de la grille :"
+
+#: ../PLCOpenEditor.py:3006
 msgid "Height:"
 msgstr "Hauteur :"
 
-#: ../PLCOpenEditor.py:307
+#: ../PLCOpenEditor.py:312
 msgid "Help"
 msgstr "Aide"
 
-#: ../plcopen/structures.py:251
+#: ../PLCOpenEditor.py:2741
+msgid "Horizontal:"
+msgstr "Horizontal :"
+
+#: ../plcopen/structures.py:250
 msgid ""
 "Hysteresis\n"
 "The hysteresis function block provides a hysteresis boolean output driven by the difference of two floating point (REAL) inputs XIN1 and XIN2."
 msgstr ""
 
-#: ../PLCOpenEditor.py:3179
-#: ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3217
+#: ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "IL"
 msgstr "IL"
 
-#: ../VariablePanel.py:70
+#: ../VariablePanel.py:71
 #: ../dialogs/FBDVariableDialog.py:42
 msgid "InOut"
 msgstr "Entrée-Sortie"
 
-#: ../VariablePanel.py:328
+#: ../VariablePanel.py:344
 #, python-format
 msgid "Incompatible data types between \"%s\" and \"%s\""
 msgstr "Types de donnée imcompatible entre \"%s\" et \"%s\""
 
-#: ../VariablePanel.py:339
+#: ../VariablePanel.py:355
 #, python-format
 msgid "Incompatible size of data between \"%s\" and \"%s\""
 msgstr "Taille de donnée incompatible entre \"%s\" et \"%s\""
 
-#: ../VariablePanel.py:335
+#: ../VariablePanel.py:351
 #, python-format
 msgid "Incompatible size of data between \"%s\" and \"BOOL\""
 msgstr "Taille de donnée incompatible entre \"%s\" et \"BOOL\""
@@ -1274,8 +1298,8 @@
 msgid "Indicator"
 msgstr "Indicateur"
 
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 #: ../DataTypeEditor.py:46
 msgid "Initial Value"
 msgstr "Valeur initiale"
@@ -1293,8 +1317,8 @@
 msgid "Inline"
 msgstr "Inline"
 
-#: ../VariablePanel.py:70
-#: ../VariablePanel.py:1019
+#: ../VariablePanel.py:71
+#: ../VariablePanel.py:1057
 #: ../dialogs/FBDVariableDialog.py:41
 #: ../dialogs/SFCStepDialog.py:122
 msgid "Input"
@@ -1304,16 +1328,16 @@
 msgid "Inputs:"
 msgstr "Entrées :"
 
-#: ../plcopen/iec_std.csv:76
+#: ../plcopen/iec_std.csv:87
 msgid "Insertion (into)"
 msgstr "Insertion (au milieu)"
 
-#: ../plcopen/plcopen.py:1518
+#: ../plcopen/plcopen.py:1537
 #, python-format
 msgid "Instance with id %d doesn't exist!"
 msgstr "L'instance dont l'id est %d n'existe pas !"
 
-#: ../PLCOpenEditor.py:559
+#: ../PLCOpenEditor.py:564
 msgid "Instances"
 msgstr "Instances"
 
@@ -1321,7 +1345,7 @@
 msgid "Instances:"
 msgstr "Instances :"
 
-#: ../plcopen/structures.py:231
+#: ../plcopen/structures.py:230
 msgid ""
 "Integral\n"
 "The integral function block integrates the value of input XIN over time."
@@ -1329,7 +1353,7 @@
 "Intégrale\n"
 "Le bloc fonctionnel INTEGRAL intègre les valeurs de l'entrée XIN en fonction du temps."
 
-#: ../VariablePanel.py:69
+#: ../VariablePanel.py:70
 msgid "Interface"
 msgstr "Interface"
 
@@ -1337,24 +1361,24 @@
 msgid "Interval"
 msgstr "Interval"
 
-#: ../PLCControler.py:1696
-#: ../PLCControler.py:1734
+#: ../PLCControler.py:1778
+#: ../PLCControler.py:1816
 msgid "Invalid plcopen element(s)!!!"
 msgstr "Les éléments plcopen ne sont pas valides !!! "
 
-#: ../dialogs/ForceVariableDialog.py:96
+#: ../dialogs/ForceVariableDialog.py:174
 #, python-format
 msgid "Invalid value \"%s\" for \"%s\" variable!"
 msgstr "Valeur \"%s\" invalide pour une variable de type \"%s\" !"
 
-#: ../PLCOpenEditor.py:4042
-#: ../PLCOpenEditor.py:4045
+#: ../PLCOpenEditor.py:4080
+#: ../PLCOpenEditor.py:4083
 #, python-format
 msgid "Invalid value \"%s\" for debug variable"
 msgstr "Chemin de variable à déboguer \"%s\" invalide"
 
-#: ../VariablePanel.py:316
-#: ../VariablePanel.py:319
+#: ../VariablePanel.py:332
+#: ../VariablePanel.py:335
 #, python-format
 msgid "Invalid value \"%s\" for location"
 msgstr "Adresse \"%s\" invalide "
@@ -1365,37 +1389,37 @@
 msgid "Invalid value \"%s\" for viewer block"
 msgstr "Valeur \"%s\" invalide pour un élément graphique"
 
-#: ../PLCOpenEditor.py:2984
-#: ../PLCOpenEditor.py:3179
-#: ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3022
+#: ../PLCOpenEditor.py:3217
+#: ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "LD"
 msgstr "LD"
 
-#: ../LDViewer.py:213
-#: ../LDViewer.py:228
+#: ../LDViewer.py:215
+#: ../LDViewer.py:231
 #, python-format
 msgid "Ladder element with id %d is on more than one rung."
 msgstr "L'élément de LD dont l'id est %d apparait dans plusieurs échelons. "
 
-#: ../PLCOpenEditor.py:3287
-#: ../PLCOpenEditor.py:3450
-#: ../PLCOpenEditor.py:3594
+#: ../PLCOpenEditor.py:3325
+#: ../PLCOpenEditor.py:3488
+#: ../PLCOpenEditor.py:3632
 msgid "Language"
 msgstr "Langue"
 
-#: ../PLCOpenEditor.py:2998
+#: ../PLCOpenEditor.py:3036
 msgid "Language (optional):"
 msgstr "Langue (optionnel) :"
 
-#: ../PLCOpenEditor.py:3255
-#: ../PLCOpenEditor.py:3423
-#: ../PLCOpenEditor.py:3567
+#: ../PLCOpenEditor.py:3293
+#: ../PLCOpenEditor.py:3461
+#: ../PLCOpenEditor.py:3605
 msgid "Language:"
 msgstr "Langue :"
 
-#: ../Viewer.py:392
+#: ../Viewer.py:357
 msgid "Left"
 msgstr "Gauche"
 
@@ -1403,35 +1427,35 @@
 msgid "Left PowerRail"
 msgstr "Barre d'alimentation à gauche"
 
-#: ../plcopen/iec_std.csv:70
+#: ../plcopen/iec_std.csv:81
 msgid "Length of string"
 msgstr "Longueur de la chaîne"
 
-#: ../plcopen/iec_std.csv:67
+#: ../plcopen/iec_std.csv:78
 msgid "Less than"
 msgstr "Inférieur à"
 
-#: ../plcopen/iec_std.csv:68
+#: ../plcopen/iec_std.csv:79
 msgid "Less than or equal to"
 msgstr "Inférieur ou égal à"
 
-#: ../PLCOpenEditor.py:594
+#: ../PLCOpenEditor.py:599
 msgid "Library"
 msgstr "Librairie"
 
-#: ../plcopen/iec_std.csv:62
+#: ../plcopen/iec_std.csv:73
 msgid "Limitation"
 msgstr "Limitation"
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "Local"
 msgstr "Locale"
 
-#: ../VariablePanel.py:52
+#: ../VariablePanel.py:53
 msgid "Location"
 msgstr "Adresse"
 
-#: ../VariablePanel.py:1080
+#: ../VariablePanel.py:1118
 msgid "Locations available:"
 msgstr "Adresses disponibles :"
 
@@ -1439,7 +1463,7 @@
 msgid "Logarithm to base 10"
 msgstr "Logarithme de base 10"
 
-#: ../plcopen/iec_std.csv:60
+#: ../plcopen/iec_std.csv:71
 msgid "Maximum"
 msgstr "Maximum"
 
@@ -1447,15 +1471,15 @@
 msgid "Maximum:"
 msgstr "Maximum :"
 
-#: ../VariablePanel.py:1021
+#: ../VariablePanel.py:1059
 msgid "Memory"
 msgstr "Mémoire"
 
-#: ../Viewer.py:401
+#: ../Viewer.py:366
 msgid "Middle"
 msgstr "Milieu"
 
-#: ../plcopen/iec_std.csv:61
+#: ../plcopen/iec_std.csv:72
 msgid "Minimum"
 msgstr "Minimum"
 
@@ -1463,7 +1487,7 @@
 msgid "Minimum:"
 msgstr "Minimum :"
 
-#: ../PLCOpenEditor.py:3013
+#: ../PLCOpenEditor.py:3051
 msgid "Miscellaneous"
 msgstr "Divers"
 
@@ -1471,8 +1495,8 @@
 msgid "Modifier:"
 msgstr "Modificateur :"
 
-#: ../PLCGenerator.py:682
-#: ../PLCGenerator.py:886
+#: ../PLCGenerator.py:724
+#: ../PLCGenerator.py:948
 #, python-format
 msgid "More than one connector found corresponding to \"%s\" continuation in \"%s\" POU"
 msgstr "Plusieurs connecteurs trouvés pour le prolongement \"%s\" dans le POU \"%s\""
@@ -1487,18 +1511,18 @@
 msgid "Move up"
 msgstr "Déplacer vers le bas"
 
-#: ../plcopen/iec_std.csv:63
+#: ../plcopen/iec_std.csv:74
 msgid "Multiplexer (select 1 of N)"
 msgstr "Multipléxeur (sélection 1 sur N)"
 
-#: ../plcopen/iec_std.csv:37
+#: ../plcopen/iec_std.csv:34
 msgid "Multiplication"
 msgstr "Multiplication"
 
 #: ../RessourceEditor.py:82
 #: ../RessourceEditor.py:86
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 #: ../DataTypeEditor.py:46
 msgid "Name"
 msgstr "Nom"
@@ -1515,12 +1539,12 @@
 msgid "Natural logarithm"
 msgstr "Logarithme népérien"
 
-#: ../Viewer.py:424
+#: ../Viewer.py:389
 #: ../dialogs/LDElementDialog.py:135
 msgid "Negated"
 msgstr "Inversé"
 
-#: ../PLCOpenEditor.py:2444
+#: ../PLCOpenEditor.py:2464
 msgid "New\tCTRL+N"
 msgstr "Nouveau\tCTRL+N"
 
@@ -1529,26 +1553,26 @@
 msgid "New item"
 msgstr "Nouvel élément"
 
-#: ../Viewer.py:422
+#: ../Viewer.py:387
 msgid "No Modifier"
 msgstr "Pas de modificateur"
 
-#: ../PLCControler.py:2578
+#: ../PLCControler.py:2663
 msgid "No PLC project found"
 msgstr "Pas de projet d'automate trouvé"
 
-#: ../PLCGenerator.py:1267
+#: ../PLCGenerator.py:1331
 #, python-format
 msgid "No body defined in \"%s\" POU"
 msgstr "Pas de code défini dans le POU \"%s\""
 
-#: ../PLCGenerator.py:701
-#: ../PLCGenerator.py:895
+#: ../PLCGenerator.py:743
+#: ../PLCGenerator.py:957
 #, python-format
 msgid "No connector found corresponding to \"%s\" continuation in \"%s\" POU"
 msgstr "Pas de connecteur trouvé pour le prolongement \"%s\" dans le POU \"%s\""
 
-#: ../PLCOpenEditor.py:2391
+#: ../PLCOpenEditor.py:2411
 msgid ""
 "No documentation available.\n"
 "Coming soon."
@@ -1556,21 +1580,21 @@
 "Pas de documentation.\n"
 "Bientôt disponible."
 
-#: ../PLCGenerator.py:753
+#: ../PLCGenerator.py:765
 #, python-format
 msgid "No informations found for \"%s\" block"
 msgstr "Aucune information trouvée pour le block \"%s\""
 
-#: ../plcopen/structures.py:139
+#: ../plcopen/structures.py:138
 msgid "No output variable found"
 msgstr "Pas de variable de sortie trouvée."
 
-#: ../PLCGenerator.py:1265
+#: ../PLCGenerator.py:1329
 #, python-format
 msgid "No variable defined in \"%s\" POU"
 msgstr "Pas de varaibles définies dans le POU \"%s\""
 
-#: ../VariablePanel.py:63
+#: ../VariablePanel.py:64
 msgid "Non-Retain"
 msgstr "Non-Persistante"
 
@@ -1578,7 +1602,7 @@
 msgid "Normal"
 msgstr "Normal"
 
-#: ../plcopen/iec_std.csv:69
+#: ../plcopen/iec_std.csv:80
 msgid "Not equal to"
 msgstr "Non égal à"
 
@@ -1590,39 +1614,39 @@
 msgid "Numerical"
 msgstr "Numérique"
 
-#: ../plcopen/structures.py:219
+#: ../plcopen/structures.py:218
 msgid ""
 "Off-delay timer\n"
 "The off-delay timer can be used to delay setting an output false, for fixed period after input goes false."
 msgstr ""
 
-#: ../plcopen/structures.py:214
+#: ../plcopen/structures.py:213
 msgid ""
 "On-delay timer\n"
 "The on-delay timer can be used to delay setting an output true, for fixed period after an input becomes true."
 msgstr ""
 
-#: ../PLCOpenEditor.py:2446
+#: ../PLCOpenEditor.py:2466
 msgid "Open\tCTRL+O"
 msgstr "Ouvrir\tCTRL+O"
 
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 msgid "Option"
 msgstr "Option"
 
-#: ../PLCOpenEditor.py:2940
+#: ../PLCOpenEditor.py:2978
 msgid "Organization (optional):"
 msgstr "Groupe (optionnel) :"
 
-#: ../VariablePanel.py:70
-#: ../VariablePanel.py:1020
+#: ../VariablePanel.py:71
+#: ../VariablePanel.py:1058
 #: ../dialogs/FBDVariableDialog.py:43
 #: ../dialogs/SFCStepDialog.py:127
 msgid "Output"
 msgstr "Sortie"
 
-#: ../plcopen/structures.py:241
+#: ../plcopen/structures.py:240
 msgid ""
 "PID\n"
 "The PID (proportional, Integral, Derivative) function block provides the classical three term controller for closed loop control."
@@ -1630,53 +1654,53 @@
 "PID\n"
 "Le bloc fonctionnel PID (Proportionnel, Intégrale, Dérivée) fournit un controller de boucle fermé classique à trois paramètres."
 
-#: ../PLCOpenEditor.py:2598
-#: ../PLCOpenEditor.py:2657
+#: ../PLCOpenEditor.py:2630
+#: ../PLCOpenEditor.py:2694
 msgid "PLCOpen files (*.xml)|*.xml|All files|*.*"
 msgstr "Fichiers PLCOpen (*.xml)|*.xml|Tous les fichiers|*.*"
 
-#: ../PLCOpenEditor.py:2530
+#: ../PLCOpenEditor.py:2559
 msgid "PLCOpenEditor"
 msgstr "PLCOpenEditor"
 
-#: ../PLCOpenEditor.py:2488
+#: ../PLCOpenEditor.py:2508
 msgid "PLCOpenEditor\tF1"
 msgstr "PLCOpenEditor\tF1"
 
-#: ../PLCOpenEditor.py:3283
+#: ../PLCOpenEditor.py:3321
 msgid "POU Name"
 msgstr "Nom du POU"
 
-#: ../PLCOpenEditor.py:3238
+#: ../PLCOpenEditor.py:3276
 msgid "POU Name:"
 msgstr "Nom du POU :"
 
-#: ../PLCOpenEditor.py:3285
+#: ../PLCOpenEditor.py:3323
 msgid "POU Type"
 msgstr "Type du POU"
 
-#: ../PLCOpenEditor.py:3246
+#: ../PLCOpenEditor.py:3284
 msgid "POU Type:"
 msgstr "Type du POU :"
 
-#: ../PLCOpenEditor.py:2460
+#: ../PLCOpenEditor.py:2480
 msgid "Page Setup"
 msgstr "Mise en page..."
 
-#: ../PLCOpenEditor.py:2956
+#: ../PLCOpenEditor.py:2994
 msgid "Page Size (optional):"
 msgstr "Taille de la page (optionnel) :"
 
-#: ../PLCOpenEditor.py:4301
+#: ../PLCOpenEditor.py:4362
 #, python-format
 msgid "Page: %d"
 msgstr "Page: %d"
 
-#: ../PLCOpenEditor.py:325
+#: ../PLCOpenEditor.py:330
 msgid "Paste\tCTRL+V"
 msgstr "Coller\tCTRL+V"
 
-#: ../PLCOpenEditor.py:1646
+#: ../PLCOpenEditor.py:1663
 msgid "Paste POU"
 msgstr "Coller un POU"
 
@@ -1684,34 +1708,30 @@
 msgid "Pin number:"
 msgstr "Nombre de pattes :"
 
-#: ../Viewer.py:2032
-#: ../Viewer.py:2323
+#: ../Viewer.py:2020
+#: ../Viewer.py:2311
 #: ../SFCViewer.py:698
 msgid "Please choose a target"
 msgstr "Choisissez une cible"
 
-#: ../PLCOpenEditor.py:2253
-msgid "Please enter POU name"
-msgstr "Saisissez le nom du POU"
-
-#: ../Viewer.py:1857
-#: ../Viewer.py:1859
-#: ../Viewer.py:2358
-#: ../Viewer.py:2360
+#: ../Viewer.py:1845
+#: ../Viewer.py:1847
+#: ../Viewer.py:2346
+#: ../Viewer.py:2348
 msgid "Please enter comment text"
 msgstr "Saisissez le texte du commentaire"
 
-#: ../PLCOpenEditor.py:2221
-#: ../PLCOpenEditor.py:3658
+#: ../PLCOpenEditor.py:2246
+#: ../PLCOpenEditor.py:3696
 msgid "Please enter configuration name"
 msgstr "Saisissez le nom de la configuration"
 
-#: ../PLCOpenEditor.py:2177
+#: ../PLCOpenEditor.py:2194
 msgid "Please enter data type name"
 msgstr "Saisissez le nom du type de donnée"
 
-#: ../PLCOpenEditor.py:2232
-#: ../PLCOpenEditor.py:3721
+#: ../PLCOpenEditor.py:2259
+#: ../PLCOpenEditor.py:3759
 msgid "Please enter resource name"
 msgstr "Saisissez le nom de la ressource"
 
@@ -1721,16 +1741,16 @@
 msgid "Please enter step name"
 msgstr "Saisissez le nom de l'étape"
 
-#: ../PLCOpenEditor.py:3129
+#: ../PLCOpenEditor.py:3167
 msgid "Please enter text"
 msgstr "Saisissez le texte"
 
-#: ../dialogs/ForceVariableDialog.py:78
+#: ../dialogs/ForceVariableDialog.py:156
 #, python-format
 msgid "Please enter value for a \"%s\" variable:"
 msgstr "Veuillez entrer la valeur pour une variable de type \"%s\" :"
 
-#: ../VariablePanel.py:1147
+#: ../VariablePanel.py:1185
 msgid "Plugins"
 msgstr "Plugins"
 
@@ -1742,7 +1762,7 @@
 msgid "Power Rail Properties"
 msgstr "Propriétés de la barre d'alimentation"
 
-#: ../PLCOpenEditor.py:2462
+#: ../PLCOpenEditor.py:2482
 msgid "Preview"
 msgstr "Aperçu avant impression"
 
@@ -1757,11 +1777,11 @@
 msgid "Preview:"
 msgstr "Aperçu :"
 
-#: ../PLCOpenEditor.py:2464
+#: ../PLCOpenEditor.py:2484
 msgid "Print"
 msgstr "Imprimer"
 
-#: ../PLCOpenEditor.py:934
+#: ../PLCOpenEditor.py:950
 msgid "Print preview"
 msgstr "Aperçu avant impression"
 
@@ -1773,24 +1793,24 @@
 msgid "Priority:"
 msgstr "Priorité :"
 
-#: ../PLCOpenEditor.py:2884
+#: ../PLCOpenEditor.py:2922
 msgid "Product Name (required):"
 msgstr "Nom du produit (obligatoire) :"
 
-#: ../PLCOpenEditor.py:2900
+#: ../PLCOpenEditor.py:2938
 msgid "Product Release (optional):"
 msgstr "Publication du produit (optionnel) :"
 
-#: ../PLCOpenEditor.py:2892
+#: ../PLCOpenEditor.py:2930
 msgid "Product Version (required):"
 msgstr "Version du produit (obligatoire) :"
 
-#: ../PLCOpenEditor.py:336
-#: ../PLCOpenEditor.py:1605
+#: ../PLCOpenEditor.py:341
+#: ../PLCOpenEditor.py:1622
 msgid "Program"
 msgstr "Programme"
 
-#: ../PLCOpenEditor.py:2635
+#: ../PLCOpenEditor.py:2671
 msgid "Program was successfully generated!"
 msgstr "Le programme a été généré avec succès !"
 
@@ -1802,29 +1822,37 @@
 msgid "Programs can't be used by other POUs!"
 msgstr "Les programmes ne peuvent être utilisés par les autres POUs !"
 
-#: ../PLCOpenEditor.py:437
-#: ../PLCOpenEditor.py:2907
+#: ../PLCOpenEditor.py:442
+#: ../PLCOpenEditor.py:2945
 msgid "Project"
 msgstr "Projet"
 
-#: ../PLCOpenEditor.py:2868
+#: ../PLCOpenEditor.py:2906
 msgid "Project Name (required):"
 msgstr "Nom du projet (obligatoire) :"
 
-#: ../PLCOpenEditor.py:2876
+#: ../PLCOpenEditor.py:2914
 msgid "Project Version (optional):"
 msgstr "Version du projet (optionnel) :"
 
-#: ../PLCOpenEditor.py:2854
+#: ../PLCControler.py:2650
+msgid ""
+"Project file syntax error:\n"
+"\n"
+msgstr ""
+"Erreur de syntaxe dans le fichier du projet :\n"
+"\n"
+
+#: ../PLCOpenEditor.py:2892
 msgid "Project properties"
 msgstr "Propriétés du projet"
 
-#: ../PLCOpenEditor.py:2467
+#: ../PLCOpenEditor.py:2487
 #: ../PLCControler.py:91
 msgid "Properties"
 msgstr "Propriétés"
 
-#: ../plcopen/structures.py:209
+#: ../plcopen/structures.py:208
 msgid ""
 "Pulse timer\n"
 "The pulse timer can be used to generate output pulses of a given time duration."
@@ -1834,11 +1862,11 @@
 msgid "Qualifier"
 msgstr "Qualificatif"
 
-#: ../PLCOpenEditor.py:2470
+#: ../PLCOpenEditor.py:2490
 msgid "Quit\tCTRL+Q"
 msgstr "Quitter\tCTRL+Q"
 
-#: ../plcopen/structures.py:174
+#: ../plcopen/structures.py:173
 msgid ""
 "RS bistable\n"
 "The RS bistable is a latch where the Reset dominates."
@@ -1846,7 +1874,7 @@
 "Bascule RS\n"
 "La bascule RS est une bascule où le Reset est dominant."
 
-#: ../plcopen/structures.py:246
+#: ../plcopen/structures.py:245
 msgid ""
 "Ramp\n"
 "The RAMP function block is modelled on example given in the standard but with the addition of a 'Holdback' feature."
@@ -1858,7 +1886,7 @@
 msgid "Range:"
 msgstr "Echelle :"
 
-#: ../PLCOpenEditor.py:316
+#: ../PLCOpenEditor.py:321
 msgid "Redo\tCTRL+Y"
 msgstr "Refaire\tCTRL+Y"
 
@@ -1867,24 +1895,24 @@
 msgid "Reference"
 msgstr "Référence"
 
-#: ../PLCOpenEditor.py:364
+#: ../PLCOpenEditor.py:369
 msgid "Refresh\tF5"
 msgstr "Actualiser\tF5"
 
-#: ../PLCOpenEditor.py:4187
-#: ../Viewer.py:1133
+#: ../PLCOpenEditor.py:4235
+#: ../Viewer.py:1098
 msgid "Release value"
 msgstr "Relacher la valeur"
 
-#: ../plcopen/iec_std.csv:48
+#: ../plcopen/iec_std.csv:37
 msgid "Remainder (modulo)"
 msgstr "Modulo"
 
-#: ../PLCOpenEditor.py:1609
+#: ../PLCOpenEditor.py:1626
 msgid "Rename"
 msgstr "Renommer"
 
-#: ../plcopen/iec_std.csv:78
+#: ../plcopen/iec_std.csv:89
 msgid "Replacement (within)"
 msgstr "Remplacement (au milieu)"
 
@@ -1892,7 +1920,7 @@
 msgid "Reset"
 msgstr "Mise à zéro"
 
-#: ../Viewer.py:443
+#: ../Viewer.py:408
 msgid "Reset Execution Order"
 msgstr "Réinitialiser l'order d'exécution"
 
@@ -1900,15 +1928,15 @@
 msgid "Resources"
 msgstr "Ressources"
 
-#: ../VariablePanel.py:61
+#: ../VariablePanel.py:62
 msgid "Retain"
 msgstr "Persistante"
 
-#: ../VariablePanel.py:466
+#: ../VariablePanel.py:482
 msgid "Return Type:"
 msgstr "Type de retour :"
 
-#: ../Viewer.py:396
+#: ../Viewer.py:361
 msgid "Right"
 msgstr "Droite"
 
@@ -1916,12 +1944,12 @@
 msgid "Right PowerRail"
 msgstr "Barre d'alimentation à droite"
 
-#: ../Viewer.py:426
+#: ../Viewer.py:391
 #: ../dialogs/LDElementDialog.py:150
 msgid "Rising Edge"
 msgstr "Front montant"
 
-#: ../plcopen/structures.py:184
+#: ../plcopen/structures.py:183
 msgid ""
 "Rising edge detector\n"
 "The output produces a single pulse when a rising edge is detected."
@@ -1929,11 +1957,11 @@
 "Détecteur de front montant\n"
 "La sortie produit une impulsion unique lorsqu'un front montant est détecté."
 
-#: ../plcopen/iec_std.csv:54
+#: ../plcopen/iec_std.csv:65
 msgid "Rotate left"
 msgstr "Rotation à gauche"
 
-#: ../plcopen/iec_std.csv:53
+#: ../plcopen/iec_std.csv:64
 msgid "Rotate right"
 msgstr "Rotation à droite"
 
@@ -1941,12 +1969,12 @@
 msgid "Rounding up/down"
 msgstr "Arrondi"
 
-#: ../PLCOpenEditor.py:2984
-#: ../PLCOpenEditor.py:3189
+#: ../PLCOpenEditor.py:3022
+#: ../PLCOpenEditor.py:3227
 msgid "SFC"
 msgstr "SFC"
 
-#: ../plcopen/structures.py:169
+#: ../plcopen/structures.py:168
 msgid ""
 "SR bistable\n"
 "The SR bistable is a latch where the Set dominates."
@@ -1954,43 +1982,39 @@
 "Bascule SR\n"
 "La bascule SR est une bascule où le Set est dominant."
 
-#: ../PLCOpenEditor.py:3179
-#: ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3217
+#: ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "ST"
 msgstr "ST"
 
-#: ../PLCOpenEditor.py:2622
+#: ../PLCOpenEditor.py:2658
 msgid "ST files (*.st)|*.st|All files|*.*"
 msgstr "Fichiers ST (*.st)|*.st|Tous les fichiers|*.*"
 
-#: ../PLCOpenEditor.py:2453
+#: ../PLCOpenEditor.py:2473
 msgid "Save\tCTRL+S"
 msgstr "Enregistrer\tCTRL+S"
 
-#: ../PLCOpenEditor.py:2455
+#: ../PLCOpenEditor.py:2475
 msgid "Save As...\tCTRL+SHIFT+S"
 msgstr "Enregistrer sous...\tCTRL+SHIFT+S"
 
-#: ../PLCOpenEditor.py:2976
-msgid "Scaling:"
-msgstr "Echelle :"
-
-#: ../PLCOpenEditor.py:340
+#: ../PLCOpenEditor.py:345
 msgid "Select All\tCTRL+A"
 msgstr "Tout sélectionner\tCTRL+A"
 
-#: ../VariablePanel.py:341
+#: ../VariablePanel.py:357
 msgid "Select a variable class:"
 msgstr "Sélectionner une direction pour la variable :"
 
-#: ../PLCOpenEditor.py:570
-#: ../PLCOpenEditor.py:582
+#: ../PLCOpenEditor.py:575
+#: ../PLCOpenEditor.py:587
 msgid "Select an object"
 msgstr "Sélectionner un objet"
 
-#: ../plcopen/iec_std.csv:59
+#: ../plcopen/iec_std.csv:70
 msgid "Selection"
 msgstr "Sélection"
 
@@ -2002,7 +2026,7 @@
 msgid "Selection Divergence"
 msgstr "Divergence simple"
 
-#: ../plcopen/structures.py:179
+#: ../plcopen/structures.py:178
 msgid ""
 "Semaphore\n"
 "The semaphore provides a mechanism to allow software elements mutually exclusive access to certain ressources."
@@ -2014,11 +2038,11 @@
 msgid "Set"
 msgstr "Mise à 1"
 
-#: ../plcopen/iec_std.csv:51
+#: ../plcopen/iec_std.csv:62
 msgid "Shift left"
 msgstr "Décalage à gauche"
 
-#: ../plcopen/iec_std.csv:52
+#: ../plcopen/iec_std.csv:63
 msgid "Shift right"
 msgstr "Décalage à droite"
 
@@ -2042,7 +2066,7 @@
 msgid "Square root (base 2)"
 msgstr "Racine carré (base 2)"
 
-#: ../plcopen/structures.py:165
+#: ../plcopen/structures.py:164
 msgid "Standard function blocks"
 msgstr "Blocs fonctionnels standards"
 
@@ -2054,7 +2078,7 @@
 msgid "Subrange"
 msgstr "Sous-ensemble"
 
-#: ../plcopen/iec_std.csv:39
+#: ../plcopen/iec_std.csv:35
 msgid "Subtraction"
 msgstr "Soustraction"
 
@@ -2070,25 +2094,25 @@
 msgid "Tasks:"
 msgstr "Tâches :"
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "Temp"
 msgstr "Temporaire"
 
-#: ../LDViewer.py:850
+#: ../LDViewer.py:881
 msgid "The group of block must be coherent!"
 msgstr "Le groupe de blocs doit être cohérent !"
 
-#: ../PLCOpenEditor.py:873
+#: ../PLCOpenEditor.py:889
 msgid "There are changes, do you want to save?"
 msgstr "Le projet a été modifié. Voulez-vous l'enregistrer ?"
 
-#: ../PLCOpenEditor.py:1407
-#: ../PLCOpenEditor.py:1427
+#: ../PLCOpenEditor.py:1425
+#: ../PLCOpenEditor.py:1445
 #, python-format
 msgid "There is a POU named \"%s\". This could cause a conflict. Do you wish to continue?"
 msgstr "Un POU a pour nom \"%s\". Cela peut générer des conflits. Voulez-vous continuer ?"
 
-#: ../PLCOpenEditor.py:953
+#: ../PLCOpenEditor.py:969
 msgid ""
 "There was a problem printing.\n"
 "Perhaps your current printer is not set correctly?"
@@ -2096,7 +2120,7 @@
 "Un problème est apparu lors de l'impression.\n"
 "Peut-être que votre imprimante n'est pas correctement configurée ?"
 
-#: ../LDViewer.py:859
+#: ../LDViewer.py:890
 msgid "This option isn't available yet!"
 msgstr "Cette option n'a pas encore disponible"
 
@@ -2104,62 +2128,73 @@
 msgid "Tick"
 msgstr "Tick"
 
-#: ../plcopen/iec_std.csv:34
+#: ../plcopen/iec_std.csv:40
+msgid "Time"
+msgstr "Temps"
+
+#: ../plcopen/iec_std.csv:40
+#: ../plcopen/iec_std.csv:41
 msgid "Time addition"
 msgstr "Addition de durée"
 
-#: ../plcopen/iec_std.csv:75
+#: ../plcopen/iec_std.csv:86
 msgid "Time concatenation"
 msgstr "Concaténation de date et de durée"
 
-#: ../plcopen/iec_std.csv:47
+#: ../plcopen/iec_std.csv:60
+#: ../plcopen/iec_std.csv:61
 msgid "Time division"
 msgstr "Division de durée"
 
-#: ../plcopen/iec_std.csv:38
+#: ../plcopen/iec_std.csv:46
+#: ../plcopen/iec_std.csv:47
 msgid "Time multiplication"
 msgstr "Multiplication de durée"
 
-#: ../plcopen/iec_std.csv:40
+#: ../plcopen/iec_std.csv:48
+#: ../plcopen/iec_std.csv:49
 msgid "Time subtraction"
 msgstr "Soustraction de durée"
 
-#: ../plcopen/iec_std.csv:35
+#: ../plcopen/iec_std.csv:42
+#: ../plcopen/iec_std.csv:43
 msgid "Time-of-day addition"
 msgstr "Addition d'horodatage"
 
-#: ../plcopen/iec_std.csv:42
-#: ../plcopen/iec_std.csv:43
+#: ../plcopen/iec_std.csv:52
+#: ../plcopen/iec_std.csv:53
+#: ../plcopen/iec_std.csv:54
+#: ../plcopen/iec_std.csv:55
 msgid "Time-of-day subtraction"
 msgstr "Soustraction d'horodatage"
 
-#: ../PLCOpenEditor.py:574
+#: ../PLCOpenEditor.py:579
 msgid "Toolbar"
 msgstr "Barre d'outils"
 
-#: ../Viewer.py:399
+#: ../Viewer.py:364
 msgid "Top"
 msgstr "Haut"
 
-#: ../PLCOpenEditor.py:3448
+#: ../PLCOpenEditor.py:3486
 msgid "Transition Name"
 msgstr "Nom de la transition"
 
-#: ../PLCOpenEditor.py:3415
+#: ../PLCOpenEditor.py:3453
 msgid "Transition Name:"
 msgstr "Nom de la transition :"
 
-#: ../PLCGenerator.py:1247
+#: ../PLCGenerator.py:1311
 #, python-format
 msgid "Transition with content \"%s\" not connected to a next step in \"%s\" POU"
 msgstr "La transition contenant \"%s\" n'est pas connectée à une étape en sortie dans le POU \"%s\" !"
 
-#: ../PLCGenerator.py:1238
+#: ../PLCGenerator.py:1302
 #, python-format
 msgid "Transition with content \"%s\" not connected to a previous step in \"%s\" POU"
 msgstr "La transition contenant \"%s\" n'est pas connectée à une étape en entrée dans le POU \"%s\" !"
 
-#: ../plcopen/plcopen.py:1175
+#: ../plcopen/plcopen.py:1194
 #, python-format
 msgid "Transition with name %s doesn't exist!"
 msgstr "La transition nommée %s n'existe pas !"
@@ -2169,8 +2204,8 @@
 msgstr "Transitions"
 
 #: ../RessourceEditor.py:86
-#: ../VariablePanel.py:52
 #: ../VariablePanel.py:53
+#: ../VariablePanel.py:54
 #: ../dialogs/ActionBlockDialog.py:33
 #: ../DataTypeEditor.py:46
 msgid "Type"
@@ -2192,7 +2227,7 @@
 msgid "Type:"
 msgstr "Type :"
 
-#: ../PLCOpenEditor.py:540
+#: ../PLCOpenEditor.py:545
 msgid "Types"
 msgstr "Types"
 
@@ -2201,11 +2236,11 @@
 msgid "Undefined pou type \"%s\""
 msgstr "Type de POU \"%s\" indéterminé !"
 
-#: ../PLCOpenEditor.py:314
+#: ../PLCOpenEditor.py:319
 msgid "Undo\tCTRL+Z"
 msgstr "Défaire\tCTRL+Z"
 
-#: ../Viewer.py:320
+#: ../Viewer.py:304
 #, python-format
 msgid "Unknown variable \"%s\" for this POU!"
 msgstr "Variable \"%s\" inconnue dans ce POU !"
@@ -2215,12 +2250,12 @@
 msgid "Unnamed%d"
 msgstr "Sansnom%d"
 
-#: ../VariablePanel.py:337
+#: ../VariablePanel.py:353
 #, python-format
 msgid "Unrecognized data size \"%s\""
 msgstr "Taille de donnée \"%s\" non identifié !"
 
-#: ../plcopen/structures.py:194
+#: ../plcopen/structures.py:193
 msgid ""
 "Up-counter\n"
 "The up-counter can be used to signal when a count has reached a maximum value."
@@ -2228,7 +2263,7 @@
 "Compteur incrémental\n"
 "Le compteur incrémental peut être utilisé pour signaler lorsque le compteur a atteint la valeur maximale."
 
-#: ../plcopen/structures.py:204
+#: ../plcopen/structures.py:203
 msgid ""
 "Up-down counter\n"
 "The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other."
@@ -2236,7 +2271,7 @@
 "Compteur bidirectionnel\n"
 "Le compteur bidirectionnel a deux entrées CU et CD. Il peut être utilisé pour compter de façon incrémentale ou décrémentale sur l'une ou l'autre des entrées."
 
-#: ../VariablePanel.py:770
+#: ../VariablePanel.py:790
 #: ../DataTypeEditor.py:807
 msgid "User Data Types"
 msgstr "Types de donnée du projet"
@@ -2245,7 +2280,7 @@
 msgid "User-defined POUs"
 msgstr "POUs du projet"
 
-#: ../PLCOpenEditor.py:3857
+#: ../PLCOpenEditor.py:3895
 #: ../dialogs/ActionBlockDialog.py:33
 msgid "Value"
 msgstr "Valeur"
@@ -2258,7 +2293,7 @@
 msgid "Values:"
 msgstr "Valeurs"
 
-#: ../PLCOpenEditor.py:3857
+#: ../PLCOpenEditor.py:3895
 #: ../dialogs/ActionBlockDialog.py:37
 msgid "Variable"
 msgstr "Variable"
@@ -2267,125 +2302,139 @@
 msgid "Variable Properties"
 msgstr "Propriétés de la variable"
 
-#: ../VariablePanel.py:341
+#: ../VariablePanel.py:357
 msgid "Variable class"
 msgstr "Direction de la variable"
 
-#: ../Viewer.py:322
-#: ../TextViewer.py:248
+#: ../Viewer.py:306
+#: ../TextViewer.py:279
 msgid "Variable don't belong to this POU!"
 msgstr "La variable n'appartient pas à ce POU !"
 
-#: ../PLCOpenEditor.py:589
-#: ../VariablePanel.py:71
+#: ../PLCOpenEditor.py:594
+#: ../VariablePanel.py:72
 msgid "Variables"
 msgstr "Variables"
 
-#: ../PLCOpenEditor.py:3313
-#: ../PLCOpenEditor.py:3691
-#: ../PLCOpenEditor.py:3754
-#: ../LDViewer.py:859
+#: ../PLCOpenEditor.py:2749
+msgid "Vertical:"
+msgstr "Vertical :"
+
+#: ../PLCOpenEditor.py:3351
+#: ../PLCOpenEditor.py:3729
+#: ../PLCOpenEditor.py:3792
+#: ../LDViewer.py:890
 msgid "Warning"
 msgstr "Attention"
 
-#: ../PLCOpenEditor.py:2960
+#: ../PLCOpenEditor.py:2998
 msgid "Width:"
 msgstr "Longueur :"
 
-#: ../PLCOpenEditor.py:2703
-msgid "X Scale:"
-msgstr "Echelle X :"
-
-#: ../PLCOpenEditor.py:2711
-msgid "Y Scale:"
-msgstr "Echelle Y :"
-
-#: ../LDViewer.py:854
+#: ../LDViewer.py:885
 msgid "You must select the block or group of blocks around which a branch should be added!"
 msgstr "Vous devez sélectionné le bloc ou le group autour duquel un ebranche doit être ajoutée !"
 
-#: ../LDViewer.py:628
+#: ../LDViewer.py:665
 msgid "You must select the wire where a contact should be added!"
 msgstr "Vous devez sélectionner le fil sur lequel le contact doit être ajouté !"
 
-#: ../PLCOpenEditor.py:3144
-#: ../PLCOpenEditor.py:3675
-#: ../PLCOpenEditor.py:3738
+#: ../PLCOpenEditor.py:3182
+#: ../PLCOpenEditor.py:3713
+#: ../PLCOpenEditor.py:3776
 #: ../dialogs/PouNameDialog.py:55
 #: ../dialogs/SFCStepDialog.py:175
 #: ../dialogs/SFCStepNameDialog.py:57
 msgid "You must type a name!"
 msgstr "Vous devez saisir un nom !"
 
-#: ../dialogs/ForceVariableDialog.py:92
+#: ../dialogs/ForceVariableDialog.py:170
 msgid "You must type a value!"
 msgstr "Vous devez saisir une valeur !"
 
-#: ../PLCOpenEditor.py:370
+#: ../PLCOpenEditor.py:375
 msgid "Zoom"
 msgstr "Zoom"
 
-#: ../PLCOpenEditor.py:2631
+#: ../PLCOpenEditor.py:2667
 #, python-format
 msgid "error: %s\n"
 msgstr "erreur: %s\n"
 
-#: ../PLCOpenEditor.py:4333
-#: ../PLCOpenEditor.py:4335
+#: ../PLCOpenEditor.py:4394
+#: ../PLCOpenEditor.py:4396
 msgid "file : "
 msgstr "fichier :"
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "function"
 msgstr "fonction"
 
-#: ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4397
 msgid "function : "
 msgstr "fonction :"
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "functionBlock"
 msgstr "Bloc fonctionnel"
 
-#: ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4397
 msgid "line : "
 msgstr "ligne :"
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "program"
 msgstr "programme"
 
-#: ../plcopen/iec_std.csv:73
+#: ../plcopen/iec_std.csv:84
 msgid "string from the middle"
 msgstr "Caractères du milieu"
 
-#: ../plcopen/iec_std.csv:71
+#: ../plcopen/iec_std.csv:82
 msgid "string left of"
 msgstr "Caractères à gauche de"
 
-#: ../plcopen/iec_std.csv:72
+#: ../plcopen/iec_std.csv:83
 msgid "string right of"
 msgstr "Caractères à droite de"
 
-#: ../PLCOpenEditor.py:2629
+#: ../PLCOpenEditor.py:2665
 #, python-format
 msgid "warning: %s\n"
 msgstr "attention: %s\n"
 
+#~ msgid "Create a new POU from"
+#~ msgstr "Créer un nouveau POU à partir de"
+
+#~ msgid "Please enter POU name"
+#~ msgstr "Saisissez le nom du POU"
+
+#~ msgid "Scaling:"
+#~ msgstr "Echelle :"
+
+#~ msgid "X Scale:"
+#~ msgstr "Echelle X :"
+
+#~ msgid "Y Scale:"
+#~ msgstr "Echelle Y :"
+
 #~ msgid "No"
 #~ msgstr "Non"
+
 #~ msgid "Yes"
 #~ msgstr "Oui"
 
 #, fuzzy
 #~ msgid "A pou with \"%s\" as name exists!"
 #~ msgstr "Un POU nommé \"%s\" existe déjà !"
+
 #~ msgid "Close\tCTRL+Q"
 #~ msgstr "Fermer\tCTRL+Q"
+
 #~ msgid ""
 #~ "A variable is defined with \"%s\" as name. It can generate a conflict. Do "
 #~ "you wish to continue?"
 #~ msgstr "Une variable"
+
 #~ msgid "Create A New POU From"
 #~ msgstr "Créer un nouveau POU à partir de"
-
--- a/i18n/messages.pot	Fri Sep 09 17:19:35 2011 +0200
+++ b/i18n/messages.pot	Tue Sep 13 13:01:04 2011 +0200
@@ -8,15 +8,16 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-16 10:48+0100\n"
+"POT-Creation-Date: 2011-09-13 12:41+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../PLCOpenEditor.py:4345
+#: ../PLCOpenEditor.py:4406
 msgid ""
 "\n"
 "An error has occurred.\n"
@@ -29,51 +30,51 @@
 "Error:\n"
 msgstr ""
 
+#: ../VariablePanel.py:72
+msgid "   External"
+msgstr ""
+
 #: ../VariablePanel.py:71
-msgid "   External"
-msgstr ""
-
-#: ../VariablePanel.py:70
 msgid "   InOut"
 msgstr ""
 
-#: ../VariablePanel.py:70
+#: ../VariablePanel.py:71
 msgid "   Input"
 msgstr ""
 
+#: ../VariablePanel.py:72
+msgid "   Local"
+msgstr ""
+
 #: ../VariablePanel.py:71
-msgid "   Local"
-msgstr ""
-
-#: ../VariablePanel.py:70
 msgid "   Output"
 msgstr ""
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "   Temp"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4355
+#: ../PLCOpenEditor.py:4416
 msgid " : "
 msgstr ""
 
-#: ../PLCOpenEditor.py:3294 ../PLCOpenEditor.py:3457 ../PLCOpenEditor.py:3601
+#: ../PLCOpenEditor.py:3332 ../PLCOpenEditor.py:3495 ../PLCOpenEditor.py:3639
 #: ../dialogs/SFCTransitionDialog.py:206
 #, python-format
 msgid " and %s"
 msgstr ""
 
-#: ../plcopen/plcopen.py:907
+#: ../plcopen/plcopen.py:926
 #, python-format
 msgid "\"%s\" Data Type doesn't exist !!!"
 msgstr ""
 
-#: ../plcopen/plcopen.py:925
+#: ../plcopen/plcopen.py:944
 #, python-format
 msgid "\"%s\" POU already exists !!!"
 msgstr ""
 
-#: ../plcopen/plcopen.py:946
+#: ../plcopen/plcopen.py:965
 #, python-format
 msgid "\"%s\" POU doesn't exist !!!"
 msgstr ""
@@ -83,7 +84,7 @@
 msgid "\"%s\" can't use itself!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1404 ../PLCOpenEditor.py:1424
+#: ../PLCOpenEditor.py:1422 ../PLCOpenEditor.py:1442
 #, python-format
 msgid "\"%s\" config already exists!"
 msgstr ""
@@ -93,31 +94,31 @@
 msgid "\"%s\" configuration already exists !!!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1358 ../PLCOpenEditor.py:3156
+#: ../PLCOpenEditor.py:1376 ../PLCOpenEditor.py:3194
 #, python-format
 msgid "\"%s\" data type already exists!"
 msgstr ""
 
-#: ../PLCControler.py:1704 ../PLCControler.py:1708
+#: ../PLCControler.py:1786 ../PLCControler.py:1790
 #, python-format
 msgid "\"%s\" element can't be pasted here!!!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3476 ../PLCOpenEditor.py:3620 ../Viewer.py:250
-#: ../TextViewer.py:231 ../dialogs/ConnectionDialog.py:215
-#: ../dialogs/FBDBlockDialog.py:260
+#: ../PLCOpenEditor.py:3514 ../PLCOpenEditor.py:3658 ../Viewer.py:250
+#: ../TextViewer.py:245 ../TextViewer.py:262
+#: ../dialogs/ConnectionDialog.py:215 ../dialogs/FBDBlockDialog.py:260
 #, python-format
 msgid "\"%s\" element for this pou already exists!"
 msgstr ""
 
-#: ../plcopen/structures.py:97
+#: ../plcopen/structures.py:96
 #, python-format
 msgid "\"%s\" function cancelled in \"%s\" POU: No input connected"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1349 ../PLCOpenEditor.py:3152 ../PLCOpenEditor.py:3305
-#: ../PLCOpenEditor.py:3468 ../PLCOpenEditor.py:3612 ../PLCOpenEditor.py:3683
-#: ../PLCOpenEditor.py:3746 ../VariablePanel.py:714
+#: ../PLCOpenEditor.py:1367 ../PLCOpenEditor.py:3190 ../PLCOpenEditor.py:3343
+#: ../PLCOpenEditor.py:3506 ../PLCOpenEditor.py:3650 ../PLCOpenEditor.py:3721
+#: ../PLCOpenEditor.py:3784 ../VariablePanel.py:735
 #: ../dialogs/ConnectionDialog.py:207 ../dialogs/FBDBlockDialog.py:252
 #: ../dialogs/FBDVariableDialog.py:268 ../dialogs/PouNameDialog.py:63
 #: ../dialogs/SFCStepDialog.py:183 ../dialogs/SFCStepNameDialog.py:65
@@ -131,19 +132,19 @@
 msgid "\"%s\" is already used by \"%s\"!"
 msgstr ""
 
-#: ../plcopen/plcopen.py:2366
+#: ../plcopen/plcopen.py:2386
 #, python-format
 msgid "\"%s\" is an invalid value!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2637 ../PLCOpenEditor.py:2665
+#: ../PLCOpenEditor.py:2673 ../PLCOpenEditor.py:2702
 #, python-format
 msgid "\"%s\" is not a valid folder!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1347 ../PLCOpenEditor.py:3148 ../PLCOpenEditor.py:3301
-#: ../PLCOpenEditor.py:3464 ../PLCOpenEditor.py:3608 ../PLCOpenEditor.py:3679
-#: ../PLCOpenEditor.py:3742 ../VariablePanel.py:709
+#: ../PLCOpenEditor.py:1365 ../PLCOpenEditor.py:3186 ../PLCOpenEditor.py:3339
+#: ../PLCOpenEditor.py:3502 ../PLCOpenEditor.py:3646 ../PLCOpenEditor.py:3717
+#: ../PLCOpenEditor.py:3780 ../VariablePanel.py:730
 #: ../dialogs/ConnectionDialog.py:203 ../dialogs/FBDBlockDialog.py:248
 #: ../dialogs/PouNameDialog.py:59 ../dialogs/SFCStepDialog.py:179
 #: ../dialogs/SFCStepNameDialog.py:61 ../DataTypeEditor.py:760
@@ -151,14 +152,14 @@
 msgid "\"%s\" is not a valid identifier!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:283 ../PLCOpenEditor.py:2302 ../PLCOpenEditor.py:2322
+#: ../PLCOpenEditor.py:288 ../PLCOpenEditor.py:2322 ../PLCOpenEditor.py:2342
 #, python-format
 msgid "\"%s\" is used by one or more POUs. It can't be removed!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1367 ../PLCOpenEditor.py:3309 ../Viewer.py:248
-#: ../Viewer.py:274 ../TextViewer.py:229 ../dialogs/ConnectionDialog.py:211
-#: ../dialogs/FBDBlockDialog.py:256
+#: ../PLCOpenEditor.py:1385 ../PLCOpenEditor.py:3347 ../Viewer.py:248
+#: ../Viewer.py:274 ../TextViewer.py:243 ../TextViewer.py:260
+#: ../dialogs/ConnectionDialog.py:211 ../dialogs/FBDBlockDialog.py:256
 #, python-format
 msgid "\"%s\" pou already exists!"
 msgstr ""
@@ -195,7 +196,7 @@
 "Right value must be greater than left value."
 msgstr ""
 
-#: ../PLCControler.py:629
+#: ../PLCControler.py:634
 #, python-format
 msgid "%s \"%s\" can't be pasted as a %s."
 msgstr ""
@@ -205,61 +206,61 @@
 msgid "%s Graphics"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1465 ../plcopen/plcopen.py:1475
-#: ../plcopen/plcopen.py:1485 ../plcopen/plcopen.py:1495
-#: ../plcopen/plcopen.py:1504
+#: ../plcopen/plcopen.py:1484 ../plcopen/plcopen.py:1494
+#: ../plcopen/plcopen.py:1504 ../plcopen/plcopen.py:1514
+#: ../plcopen/plcopen.py:1523
 #, python-format
 msgid "%s body don't have instances!"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1527 ../plcopen/plcopen.py:1534
+#: ../plcopen/plcopen.py:1546 ../plcopen/plcopen.py:1553
 #, python-format
 msgid "%s body don't have text!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4333 ../PLCOpenEditor.py:4335 ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4394 ../PLCOpenEditor.py:4396 ../PLCOpenEditor.py:4397
 msgid ",   "
 msgstr ""
 
-#: ../PLCOpenEditor.py:3296 ../PLCOpenEditor.py:3459 ../PLCOpenEditor.py:3603
+#: ../PLCOpenEditor.py:3334 ../PLCOpenEditor.py:3497 ../PLCOpenEditor.py:3641
 #: ../dialogs/SFCTransitionDialog.py:208
 #, python-format
 msgid ", %s"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4331
+#: ../PLCOpenEditor.py:4392
 msgid ". "
 msgstr ""
 
-#: ../PLCOpenEditor.py:1370 ../PLCOpenEditor.py:1412 ../PLCOpenEditor.py:1432
-#: ../PLCOpenEditor.py:3313 ../PLCOpenEditor.py:3691 ../PLCOpenEditor.py:3754
+#: ../PLCOpenEditor.py:1388 ../PLCOpenEditor.py:1430 ../PLCOpenEditor.py:1450
+#: ../PLCOpenEditor.py:3351 ../PLCOpenEditor.py:3729 ../PLCOpenEditor.py:3792
 #, python-format
 msgid "A POU has an element named \"%s\". This could cause a conflict. Do you wish to continue?"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1383 ../PLCOpenEditor.py:1394 ../PLCOpenEditor.py:3472
-#: ../PLCOpenEditor.py:3616 ../PLCOpenEditor.py:3687 ../PLCOpenEditor.py:3750
-#: ../VariablePanel.py:719 ../dialogs/PouNameDialog.py:67
+#: ../PLCOpenEditor.py:1401 ../PLCOpenEditor.py:1412 ../PLCOpenEditor.py:3510
+#: ../PLCOpenEditor.py:3654 ../PLCOpenEditor.py:3725 ../PLCOpenEditor.py:3788
+#: ../VariablePanel.py:740 ../dialogs/PouNameDialog.py:67
 #: ../dialogs/SFCStepDialog.py:187 ../dialogs/SFCStepNameDialog.py:69
 #, python-format
 msgid "A POU named \"%s\" already exists!"
 msgstr ""
 
-#: ../VariablePanel.py:1201
+#: ../VariablePanel.py:1239
 msgid "A location must be selected!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1385 ../PLCOpenEditor.py:1396 ../VariablePanel.py:724
+#: ../PLCOpenEditor.py:1403 ../PLCOpenEditor.py:1414 ../VariablePanel.py:745
 #: ../dialogs/SFCStepDialog.py:191 ../dialogs/SFCStepNameDialog.py:73
 #, python-format
 msgid "A variable with \"%s\" as name already exists in this pou!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2494
+#: ../PLCOpenEditor.py:2514
 msgid "About"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2397
+#: ../PLCOpenEditor.py:2417
 msgid "About PLCOpenEditor"
 msgstr ""
 
@@ -271,15 +272,15 @@
 msgid "Action"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3592
+#: ../PLCOpenEditor.py:3630
 msgid "Action Name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3559
+#: ../PLCOpenEditor.py:3597
 msgid "Action Name:"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1213
+#: ../plcopen/plcopen.py:1232
 #, python-format
 msgid "Action with name %s doesn't exist!"
 msgstr ""
@@ -292,28 +293,28 @@
 msgid "Actions:"
 msgstr ""
 
-#: ../VariablePanel.py:483 ../dialogs/ActionBlockDialog.py:274
+#: ../VariablePanel.py:499 ../dialogs/ActionBlockDialog.py:274
 #: ../DataTypeEditor.py:539
 msgid "Add"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1589 ../PLCOpenEditor.py:1672
+#: ../PLCOpenEditor.py:1606 ../PLCOpenEditor.py:1689
 msgid "Add Action"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1655
+#: ../PLCOpenEditor.py:1672
 msgid "Add Configuration"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1635
+#: ../PLCOpenEditor.py:1652
 msgid "Add DataType"
 msgstr ""
 
-#: ../Viewer.py:436
+#: ../Viewer.py:401
 msgid "Add Divergence Branch"
 msgstr ""
 
-#: ../PLCOpenEditor.py:328
+#: ../PLCOpenEditor.py:333
 msgid "Add Element"
 msgstr ""
 
@@ -321,11 +322,11 @@
 msgid "Add Instance"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1642
+#: ../PLCOpenEditor.py:1659
 msgid "Add POU"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1618 ../PLCOpenEditor.py:1683
+#: ../PLCOpenEditor.py:1635 ../PLCOpenEditor.py:1700
 msgid "Add Resource"
 msgstr ""
 
@@ -333,15 +334,15 @@
 msgid "Add Task"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1586 ../PLCOpenEditor.py:1661
+#: ../PLCOpenEditor.py:1603 ../PLCOpenEditor.py:1678
 msgid "Add Transition"
 msgstr ""
 
-#: ../Viewer.py:431
+#: ../Viewer.py:396
 msgid "Add Wire Segment"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2177
+#: ../PLCOpenEditor.py:2194
 msgid "Add a new data type"
 msgstr ""
 
@@ -349,7 +350,7 @@
 msgid "Add a new initial step"
 msgstr ""
 
-#: ../Viewer.py:2032 ../SFCViewer.py:698
+#: ../Viewer.py:2020 ../SFCViewer.py:698
 msgid "Add a new jump"
 msgstr ""
 
@@ -357,11 +358,11 @@
 msgid "Add a new step"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2221
+#: ../PLCOpenEditor.py:2246
 msgid "Add new configuration"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2232
+#: ../PLCOpenEditor.py:2259
 msgid "Add new resource"
 msgstr ""
 
@@ -369,15 +370,15 @@
 msgid "Addition"
 msgstr ""
 
-#: ../plcopen/structures.py:222
+#: ../plcopen/structures.py:221
 msgid "Additional function blocks"
 msgstr ""
 
-#: ../Viewer.py:445
+#: ../Viewer.py:410
 msgid "Alignment"
 msgstr ""
 
-#: ../VariablePanel.py:69 ../VariablePanel.py:1018 ../VariablePanel.py:1135
+#: ../VariablePanel.py:70 ../VariablePanel.py:1056 ../VariablePanel.py:1173
 msgid "All"
 msgstr ""
 
@@ -402,11 +403,11 @@
 msgid "Arithmetic"
 msgstr ""
 
-#: ../DataTypeEditor.py:236
+#: ../VariablePanel.py:798 ../DataTypeEditor.py:236
 msgid "Array"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:50
+#: ../plcopen/iec_std.csv:39
 msgid "Assignment"
 msgstr ""
 
@@ -414,11 +415,11 @@
 msgid "At least a variable or an expression must be selected!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2947
+#: ../PLCOpenEditor.py:2985
 msgid "Author"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2932
+#: ../PLCOpenEditor.py:2970
 msgid "Author Name (optional):"
 msgstr ""
 
@@ -426,35 +427,35 @@
 msgid "Base Type:"
 msgstr ""
 
-#: ../VariablePanel.py:758 ../DataTypeEditor.py:801
+#: ../VariablePanel.py:778 ../DataTypeEditor.py:801
 msgid "Base Types"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:59
+#: ../plcopen/iec_std.csv:70
 msgid "Binary selection (1 of 2)"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:51
+#: ../plcopen/iec_std.csv:62
 msgid "Bit-shift"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:55
+#: ../plcopen/iec_std.csv:66
 msgid "Bitwise"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:55
+#: ../plcopen/iec_std.csv:66
 msgid "Bitwise AND"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:56
+#: ../plcopen/iec_std.csv:67
 msgid "Bitwise OR"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:57
+#: ../plcopen/iec_std.csv:68
 msgid "Bitwise XOR"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:58
+#: ../plcopen/iec_std.csv:69
 msgid "Bitwise inverting"
 msgstr ""
 
@@ -462,66 +463,66 @@
 msgid "Block Properties"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1896 ../dialogs/FBDBlockDialog.py:268
+#: ../PLCOpenEditor.py:1913 ../dialogs/FBDBlockDialog.py:268
 msgid "Block Types"
 msgstr ""
 
-#: ../Viewer.py:403
+#: ../Viewer.py:368
 msgid "Bottom"
 msgstr ""
 
-#: ../VariablePanel.py:1077
+#: ../VariablePanel.py:1115
 msgid "Browse Locations"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1837
+#: ../PLCOpenEditor.py:1854
 msgid "CSV Log"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1407 ../plcopen/plcopen.py:1421
-#: ../plcopen/plcopen.py:1442 ../plcopen/plcopen.py:1458
+#: ../plcopen/plcopen.py:1426 ../plcopen/plcopen.py:1440
+#: ../plcopen/plcopen.py:1461 ../plcopen/plcopen.py:1477
 msgid "Can only generate execution order on FBD networks!"
 msgstr ""
 
-#: ../VariablePanel.py:311
+#: ../VariablePanel.py:327
 msgid "Can only give a location to local or global variables"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2632
+#: ../PLCOpenEditor.py:2668
 #, python-format
 msgid "Can't generate program to file %s!"
 msgstr ""
 
-#: ../VariablePanel.py:309
+#: ../VariablePanel.py:325
 msgid "Can't give a location to a function block instance"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2663
+#: ../PLCOpenEditor.py:2700
 #, python-format
 msgid "Can't save project to file %s!"
 msgstr ""
 
-#: ../Viewer.py:394
+#: ../Viewer.py:359
 msgid "Center"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1607
+#: ../PLCOpenEditor.py:1624
 msgid "Change POU Type To"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:70
+#: ../plcopen/iec_std.csv:81
 msgid "Character string"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2598 ../PLCOpenEditor.py:2622 ../PLCOpenEditor.py:2657
+#: ../PLCOpenEditor.py:2630 ../PLCOpenEditor.py:2658 ../PLCOpenEditor.py:2694
 msgid "Choose a file"
 msgstr ""
 
-#: ../VariablePanel.py:52 ../VariablePanel.py:53
+#: ../VariablePanel.py:53 ../VariablePanel.py:54
 msgid "Class"
 msgstr ""
 
-#: ../VariablePanel.py:475
+#: ../VariablePanel.py:491
 msgid "Class Filter:"
 msgstr ""
 
@@ -529,47 +530,47 @@
 msgid "Class:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:367
+#: ../PLCOpenEditor.py:372
 msgid "Clear Errors\tCTRL+K"
 msgstr ""
 
-#: ../Viewer.py:441
+#: ../Viewer.py:406
 msgid "Clear Execution Order"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2522
+#: ../PLCOpenEditor.py:2548
 msgid "Close Application"
 msgstr ""
 
-#: ../PLCOpenEditor.py:871 ../PLCOpenEditor.py:2450
+#: ../PLCOpenEditor.py:887 ../PLCOpenEditor.py:2470
 msgid "Close Project"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2448
+#: ../PLCOpenEditor.py:2468
 msgid "Close Tab\tCTRL+W"
 msgstr ""
 
-#: ../LDViewer.py:478
+#: ../LDViewer.py:505
 msgid "Comment"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2916
+#: ../PLCOpenEditor.py:2954
 msgid "Company Name (required):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2924
+#: ../PLCOpenEditor.py:2962
 msgid "Company URL (optional):"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:64
+#: ../plcopen/iec_std.csv:75
 msgid "Comparison"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:74
+#: ../plcopen/iec_std.csv:85
 msgid "Concatenation"
 msgstr ""
 
-#: ../PLCOpenEditor.py:338
+#: ../PLCOpenEditor.py:343
 msgid "Configuration"
 msgstr ""
 
@@ -593,11 +594,11 @@
 msgid "Connectors:"
 msgstr ""
 
-#: ../VariablePanel.py:59
+#: ../VariablePanel.py:60
 msgid "Constant"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3006
+#: ../PLCOpenEditor.py:3044
 msgid "Content Description (optional):"
 msgstr ""
 
@@ -621,11 +622,11 @@
 msgid "Conversion to time-of-day"
 msgstr ""
 
-#: ../PLCOpenEditor.py:323
+#: ../PLCOpenEditor.py:328
 msgid "Copy\tCTRL+C"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1594
+#: ../PLCOpenEditor.py:1611
 msgid "Copy POU"
 msgstr ""
 
@@ -633,51 +634,47 @@
 msgid "Cosine"
 msgstr ""
 
-#: ../PLCControler.py:615 ../PLCControler.py:647
+#: ../PLCControler.py:620 ../PLCControler.py:652
 msgid "Couldn't paste non-POU object."
 msgstr ""
 
-#: ../PLCOpenEditor.py:3234
+#: ../PLCOpenEditor.py:3272
 msgid "Create a new POU"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2253
-msgid "Create a new POU from"
-msgstr ""
-
-#: ../PLCOpenEditor.py:3555
+#: ../PLCOpenEditor.py:3593
 msgid "Create a new action"
 msgstr ""
 
-#: ../PLCOpenEditor.py:215
+#: ../PLCOpenEditor.py:220
 msgid "Create a new action block"
 msgstr ""
 
-#: ../PLCOpenEditor.py:170 ../PLCOpenEditor.py:197 ../PLCOpenEditor.py:227
+#: ../PLCOpenEditor.py:175 ../PLCOpenEditor.py:202 ../PLCOpenEditor.py:232
 msgid "Create a new block"
 msgstr ""
 
-#: ../PLCOpenEditor.py:191
+#: ../PLCOpenEditor.py:196
 msgid "Create a new branch"
 msgstr ""
 
-#: ../PLCOpenEditor.py:185
+#: ../PLCOpenEditor.py:190
 msgid "Create a new coil"
 msgstr ""
 
-#: ../PLCOpenEditor.py:164 ../PLCOpenEditor.py:176 ../PLCOpenEditor.py:203
+#: ../PLCOpenEditor.py:169 ../PLCOpenEditor.py:181 ../PLCOpenEditor.py:208
 msgid "Create a new comment"
 msgstr ""
 
-#: ../PLCOpenEditor.py:173 ../PLCOpenEditor.py:200 ../PLCOpenEditor.py:230
+#: ../PLCOpenEditor.py:178 ../PLCOpenEditor.py:205 ../PLCOpenEditor.py:235
 msgid "Create a new connection"
 msgstr ""
 
-#: ../PLCOpenEditor.py:188 ../PLCOpenEditor.py:236
+#: ../PLCOpenEditor.py:193 ../PLCOpenEditor.py:241
 msgid "Create a new contact"
 msgstr ""
 
-#: ../PLCOpenEditor.py:218
+#: ../PLCOpenEditor.py:223
 msgid "Create a new divergence"
 msgstr ""
 
@@ -685,39 +682,47 @@
 msgid "Create a new divergence or convergence"
 msgstr ""
 
-#: ../PLCOpenEditor.py:206
+#: ../PLCOpenEditor.py:211
 msgid "Create a new initial step"
 msgstr ""
 
-#: ../PLCOpenEditor.py:221
+#: ../PLCOpenEditor.py:226
 msgid "Create a new jump"
 msgstr ""
 
-#: ../PLCOpenEditor.py:179 ../PLCOpenEditor.py:233
+#: ../PLCOpenEditor.py:184 ../PLCOpenEditor.py:238
 msgid "Create a new power rail"
 msgstr ""
 
-#: ../PLCOpenEditor.py:182
+#: ../PLCOpenEditor.py:187
 msgid "Create a new rung"
 msgstr ""
 
-#: ../PLCOpenEditor.py:209
+#: ../PLCOpenEditor.py:214
 msgid "Create a new step"
 msgstr ""
 
-#: ../PLCOpenEditor.py:212 ../PLCOpenEditor.py:3411
+#: ../PLCOpenEditor.py:217 ../PLCOpenEditor.py:3449
 msgid "Create a new transition"
 msgstr ""
 
-#: ../PLCOpenEditor.py:167 ../PLCOpenEditor.py:194 ../PLCOpenEditor.py:224
+#: ../PLCOpenEditor.py:172 ../PLCOpenEditor.py:199 ../PLCOpenEditor.py:229
 msgid "Create a new variable"
 msgstr ""
 
-#: ../PLCOpenEditor.py:321
+#: ../PLCOpenEditor.py:326
 msgid "Cut\tCTRL+X"
 msgstr ""
 
-#: ../PLCOpenEditor.py:330
+#: ../plcopen/iec_std.csv:42 ../plcopen/iec_std.csv:44
+#: ../plcopen/iec_std.csv:46 ../plcopen/iec_std.csv:50
+#: ../plcopen/iec_std.csv:52 ../plcopen/iec_std.csv:54
+#: ../plcopen/iec_std.csv:56 ../plcopen/iec_std.csv:58
+#: ../plcopen/iec_std.csv:60
+msgid "DEPRECATED"
+msgstr ""
+
+#: ../PLCOpenEditor.py:335
 msgid "Data Type"
 msgstr ""
 
@@ -729,35 +734,36 @@
 msgid "Data type conversion"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:36
+#: ../plcopen/iec_std.csv:44 ../plcopen/iec_std.csv:45
 msgid "Date addition"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:44 ../plcopen/iec_std.csv:45
+#: ../plcopen/iec_std.csv:56 ../plcopen/iec_std.csv:57
+#: ../plcopen/iec_std.csv:58 ../plcopen/iec_std.csv:59
 msgid "Date and time subtraction"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:41
+#: ../plcopen/iec_std.csv:50 ../plcopen/iec_std.csv:51
 msgid "Date subtraction"
 msgstr ""
 
-#: ../Viewer.py:2885
+#: ../Viewer.py:2873
 #, python-format
 msgid "Debug: %s"
 msgstr ""
 
-#: ../PLCOpenEditor.py:618
+#: ../PLCOpenEditor.py:623
 msgid "Debugger"
 msgstr ""
 
-#: ../PLCOpenEditor.py:342 ../PLCOpenEditor.py:1612 ../PLCOpenEditor.py:1621
-#: ../PLCOpenEditor.py:1627 ../PLCOpenEditor.py:4121 ../Viewer.py:450
-#: ../VariablePanel.py:488 ../dialogs/ActionBlockDialog.py:279
+#: ../PLCOpenEditor.py:347 ../PLCOpenEditor.py:1629 ../PLCOpenEditor.py:1638
+#: ../PLCOpenEditor.py:1644 ../PLCOpenEditor.py:4164 ../Viewer.py:415
+#: ../VariablePanel.py:504 ../dialogs/ActionBlockDialog.py:279
 #: ../DataTypeEditor.py:544
 msgid "Delete"
 msgstr ""
 
-#: ../Viewer.py:438
+#: ../Viewer.py:403
 msgid "Delete Divergence Branch"
 msgstr ""
 
@@ -769,7 +775,7 @@
 msgid "Delete Task"
 msgstr ""
 
-#: ../Viewer.py:433
+#: ../Viewer.py:398
 msgid "Delete Wire Segment"
 msgstr ""
 
@@ -777,7 +783,7 @@
 msgid "Delete item"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:77
+#: ../plcopen/iec_std.csv:88
 msgid "Deletion (within)"
 msgstr ""
 
@@ -785,7 +791,7 @@
 msgid "Derivation Type:"
 msgstr ""
 
-#: ../plcopen/structures.py:236
+#: ../plcopen/structures.py:235
 msgid ""
 "Derivative\n"
 "The derivative function block produces an output XOUT proportional to the rate of change of the input XIN."
@@ -795,7 +801,7 @@
 msgid "Dimensions:"
 msgstr ""
 
-#: ../VariablePanel.py:1094
+#: ../VariablePanel.py:1132
 msgid "Direction:"
 msgstr ""
 
@@ -803,23 +809,23 @@
 msgid "Directly"
 msgstr ""
 
-#: ../PLCOpenEditor.py:306
+#: ../PLCOpenEditor.py:311
 msgid "Display"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:46
+#: ../plcopen/iec_std.csv:36
 msgid "Division"
 msgstr ""
 
-#: ../VariablePanel.py:52 ../VariablePanel.py:53
+#: ../VariablePanel.py:53 ../VariablePanel.py:54
 msgid "Documentation"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2626
+#: ../PLCOpenEditor.py:2662
 msgid "Done"
 msgstr ""
 
-#: ../plcopen/structures.py:199
+#: ../plcopen/structures.py:198
 msgid ""
 "Down-counter\n"
 "The down-counter can be used to signal when a count has reached zero, on counting down from a preset value."
@@ -829,11 +835,11 @@
 msgid "Duration"
 msgstr ""
 
-#: ../PLCOpenEditor.py:305
+#: ../PLCOpenEditor.py:310
 msgid "Edit"
 msgstr ""
 
-#: ../Viewer.py:448
+#: ../Viewer.py:413
 msgid "Edit Block"
 msgstr ""
 
@@ -853,7 +859,7 @@
 msgid "Edit action block properties"
 msgstr ""
 
-#: ../Viewer.py:1857 ../Viewer.py:1859 ../Viewer.py:2358 ../Viewer.py:2360
+#: ../Viewer.py:1845 ../Viewer.py:1847 ../Viewer.py:2346 ../Viewer.py:2348
 msgid "Edit comment"
 msgstr ""
 
@@ -861,7 +867,7 @@
 msgid "Edit item"
 msgstr ""
 
-#: ../Viewer.py:2323
+#: ../Viewer.py:2311
 msgid "Edit jump target"
 msgstr ""
 
@@ -877,7 +883,7 @@
 msgid "Elements :"
 msgstr ""
 
-#: ../PLCOpenEditor.py:318
+#: ../PLCOpenEditor.py:323
 msgid "Enable Undo/Redo"
 msgstr ""
 
@@ -885,34 +891,34 @@
 msgid "Enumerated"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:66
+#: ../plcopen/iec_std.csv:77
 msgid "Equal to"
 msgstr ""
 
-#: ../PLCOpenEditor.py:865 ../PLCOpenEditor.py:1370 ../PLCOpenEditor.py:1407
-#: ../PLCOpenEditor.py:1412 ../PLCOpenEditor.py:1427 ../PLCOpenEditor.py:1432
-#: ../PLCOpenEditor.py:2280 ../PLCOpenEditor.py:2633 ../PLCOpenEditor.py:2638
-#: ../PLCOpenEditor.py:3052 ../PLCOpenEditor.py:3144 ../PLCOpenEditor.py:3148
-#: ../PLCOpenEditor.py:3152 ../PLCOpenEditor.py:3156 ../PLCOpenEditor.py:3297
-#: ../PLCOpenEditor.py:3301 ../PLCOpenEditor.py:3305 ../PLCOpenEditor.py:3309
-#: ../PLCOpenEditor.py:3460 ../PLCOpenEditor.py:3464 ../PLCOpenEditor.py:3468
-#: ../PLCOpenEditor.py:3472 ../PLCOpenEditor.py:3476 ../PLCOpenEditor.py:3604
-#: ../PLCOpenEditor.py:3608 ../PLCOpenEditor.py:3612 ../PLCOpenEditor.py:3616
-#: ../PLCOpenEditor.py:3620 ../PLCOpenEditor.py:3675 ../PLCOpenEditor.py:3679
-#: ../PLCOpenEditor.py:3683 ../PLCOpenEditor.py:3687 ../PLCOpenEditor.py:3738
-#: ../PLCOpenEditor.py:3742 ../PLCOpenEditor.py:3746 ../PLCOpenEditor.py:3750
-#: ../PLCOpenEditor.py:4053 ../PLCOpenEditor.py:4356 ../PLCOpenEditor.py:4366
-#: ../Viewer.py:369 ../TextViewer.py:250 ../LDViewer.py:628 ../LDViewer.py:850
-#: ../LDViewer.py:854 ../VariablePanel.py:358 ../VariablePanel.py:709
-#: ../VariablePanel.py:714 ../VariablePanel.py:719 ../VariablePanel.py:724
-#: ../VariablePanel.py:1201 ../dialogs/ConnectionDialog.py:199
+#: ../PLCOpenEditor.py:881 ../PLCOpenEditor.py:1388 ../PLCOpenEditor.py:1425
+#: ../PLCOpenEditor.py:1430 ../PLCOpenEditor.py:1445 ../PLCOpenEditor.py:1450
+#: ../PLCOpenEditor.py:2300 ../PLCOpenEditor.py:2669 ../PLCOpenEditor.py:2674
+#: ../PLCOpenEditor.py:3090 ../PLCOpenEditor.py:3182 ../PLCOpenEditor.py:3186
+#: ../PLCOpenEditor.py:3190 ../PLCOpenEditor.py:3194 ../PLCOpenEditor.py:3335
+#: ../PLCOpenEditor.py:3339 ../PLCOpenEditor.py:3343 ../PLCOpenEditor.py:3347
+#: ../PLCOpenEditor.py:3498 ../PLCOpenEditor.py:3502 ../PLCOpenEditor.py:3506
+#: ../PLCOpenEditor.py:3510 ../PLCOpenEditor.py:3514 ../PLCOpenEditor.py:3642
+#: ../PLCOpenEditor.py:3646 ../PLCOpenEditor.py:3650 ../PLCOpenEditor.py:3654
+#: ../PLCOpenEditor.py:3658 ../PLCOpenEditor.py:3713 ../PLCOpenEditor.py:3717
+#: ../PLCOpenEditor.py:3721 ../PLCOpenEditor.py:3725 ../PLCOpenEditor.py:3776
+#: ../PLCOpenEditor.py:3780 ../PLCOpenEditor.py:3784 ../PLCOpenEditor.py:3788
+#: ../PLCOpenEditor.py:4091 ../PLCOpenEditor.py:4417 ../PLCOpenEditor.py:4427
+#: ../Viewer.py:334 ../TextViewer.py:281 ../LDViewer.py:665 ../LDViewer.py:881
+#: ../LDViewer.py:885 ../VariablePanel.py:374 ../VariablePanel.py:730
+#: ../VariablePanel.py:735 ../VariablePanel.py:740 ../VariablePanel.py:745
+#: ../VariablePanel.py:1239 ../dialogs/ConnectionDialog.py:199
 #: ../dialogs/ConnectionDialog.py:203 ../dialogs/ConnectionDialog.py:207
 #: ../dialogs/ConnectionDialog.py:211 ../dialogs/ConnectionDialog.py:215
 #: ../dialogs/FBDBlockDialog.py:240 ../dialogs/FBDBlockDialog.py:244
 #: ../dialogs/FBDBlockDialog.py:248 ../dialogs/FBDBlockDialog.py:252
 #: ../dialogs/FBDBlockDialog.py:256 ../dialogs/FBDBlockDialog.py:260
 #: ../dialogs/FBDVariableDialog.py:264 ../dialogs/FBDVariableDialog.py:268
-#: ../dialogs/ForceVariableDialog.py:92 ../dialogs/ForceVariableDialog.py:96
+#: ../dialogs/ForceVariableDialog.py:170 ../dialogs/ForceVariableDialog.py:174
 #: ../dialogs/PouNameDialog.py:55 ../dialogs/PouNameDialog.py:59
 #: ../dialogs/PouNameDialog.py:63 ../dialogs/PouNameDialog.py:67
 #: ../dialogs/SFCStepDialog.py:175 ../dialogs/SFCStepDialog.py:179
@@ -935,7 +941,7 @@
 msgid "Execution Order:"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:49
+#: ../plcopen/iec_std.csv:38
 msgid "Exponent"
 msgstr ""
 
@@ -947,43 +953,43 @@
 msgid "Expression:"
 msgstr ""
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "External"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2984 ../PLCOpenEditor.py:3179 ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368 ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3022 ../PLCOpenEditor.py:3217 ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406 ../PLCOpenEditor.py:3550
 msgid "FBD"
 msgstr ""
 
-#: ../Viewer.py:428 ../dialogs/LDElementDialog.py:155
+#: ../Viewer.py:393 ../dialogs/LDElementDialog.py:155
 msgid "Falling Edge"
 msgstr ""
 
-#: ../plcopen/structures.py:189
+#: ../plcopen/structures.py:188
 msgid ""
 "Falling edge detector\n"
 "The output produces a single pulse when a falling edge is detected."
 msgstr ""
 
-#: ../PLCOpenEditor.py:304
+#: ../PLCOpenEditor.py:309
 msgid "File"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:79
+#: ../plcopen/iec_std.csv:90
 msgid "Find position"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4184 ../Viewer.py:1130
+#: ../PLCOpenEditor.py:4232 ../Viewer.py:1095
 msgid "Force value"
 msgstr ""
 
-#: ../dialogs/ForceVariableDialog.py:77
+#: ../dialogs/ForceVariableDialog.py:155
 msgid "Forcing Variable Value"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3052 ../PLCOpenEditor.py:3297 ../PLCOpenEditor.py:3460
-#: ../PLCOpenEditor.py:3604 ../dialogs/SFCTransitionDialog.py:209
+#: ../PLCOpenEditor.py:3090 ../PLCOpenEditor.py:3335 ../PLCOpenEditor.py:3498
+#: ../PLCOpenEditor.py:3642 ../dialogs/SFCTransitionDialog.py:209
 #, python-format
 msgid "Form isn't complete. %s must be filled!"
 msgstr ""
@@ -996,15 +1002,15 @@
 msgid "Form isn't complete. Valid block type must be selected!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:332
+#: ../PLCOpenEditor.py:337
 msgid "Function"
 msgstr ""
 
-#: ../PLCOpenEditor.py:334 ../PLCOpenEditor.py:1602
+#: ../PLCOpenEditor.py:339 ../PLCOpenEditor.py:1619
 msgid "Function Block"
 msgstr ""
 
-#: ../VariablePanel.py:786
+#: ../VariablePanel.py:810
 msgid "Function Block Types"
 msgstr ""
 
@@ -1020,7 +1026,7 @@
 msgid "Function Blocks can't be used in Transitions!"
 msgstr ""
 
-#: ../PLCControler.py:1719
+#: ../PLCControler.py:1801
 #, python-format
 msgid "FunctionBlock \"%s\" can't be pasted in a Function!!!"
 msgstr ""
@@ -1029,64 +1035,72 @@
 msgid "Functions"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2457
+#: ../PLCOpenEditor.py:2477
 msgid "Generate Program\tCTRL+G"
 msgstr ""
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "Global"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1834
+#: ../PLCOpenEditor.py:1851
 msgid "Graphic Panel"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2989
+#: ../PLCOpenEditor.py:3027
 msgid "Graphics"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:64
+#: ../plcopen/iec_std.csv:75
 msgid "Greater than"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:65
+#: ../plcopen/iec_std.csv:76
 msgid "Greater than or equal to"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2968
+#: ../PLCOpenEditor.py:3014
+msgid "Grid Resolution:"
+msgstr ""
+
+#: ../PLCOpenEditor.py:3006
 msgid "Height:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:307
+#: ../PLCOpenEditor.py:312
 msgid "Help"
 msgstr ""
 
-#: ../plcopen/structures.py:251
+#: ../PLCOpenEditor.py:2741
+msgid "Horizontal:"
+msgstr ""
+
+#: ../plcopen/structures.py:250
 msgid ""
 "Hysteresis\n"
 "The hysteresis function block provides a hysteresis boolean output driven by the difference of two floating point (REAL) inputs XIN1 and XIN2."
 msgstr ""
 
-#: ../PLCOpenEditor.py:3179 ../PLCOpenEditor.py:3189 ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3217 ../PLCOpenEditor.py:3227 ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "IL"
 msgstr ""
 
-#: ../VariablePanel.py:70 ../dialogs/FBDVariableDialog.py:42
+#: ../VariablePanel.py:71 ../dialogs/FBDVariableDialog.py:42
 msgid "InOut"
 msgstr ""
 
-#: ../VariablePanel.py:328
+#: ../VariablePanel.py:344
 #, python-format
 msgid "Incompatible data types between \"%s\" and \"%s\""
 msgstr ""
 
-#: ../VariablePanel.py:339
+#: ../VariablePanel.py:355
 #, python-format
 msgid "Incompatible size of data between \"%s\" and \"%s\""
 msgstr ""
 
-#: ../VariablePanel.py:335
+#: ../VariablePanel.py:351
 #, python-format
 msgid "Incompatible size of data between \"%s\" and \"BOOL\""
 msgstr ""
@@ -1095,7 +1109,7 @@
 msgid "Indicator"
 msgstr ""
 
-#: ../VariablePanel.py:52 ../VariablePanel.py:53 ../DataTypeEditor.py:46
+#: ../VariablePanel.py:53 ../VariablePanel.py:54 ../DataTypeEditor.py:46
 msgid "Initial Value"
 msgstr ""
 
@@ -1109,7 +1123,7 @@
 msgid "Inline"
 msgstr ""
 
-#: ../VariablePanel.py:70 ../VariablePanel.py:1019
+#: ../VariablePanel.py:71 ../VariablePanel.py:1057
 #: ../dialogs/FBDVariableDialog.py:41 ../dialogs/SFCStepDialog.py:122
 msgid "Input"
 msgstr ""
@@ -1118,16 +1132,16 @@
 msgid "Inputs:"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:76
+#: ../plcopen/iec_std.csv:87
 msgid "Insertion (into)"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1518
+#: ../plcopen/plcopen.py:1537
 #, python-format
 msgid "Instance with id %d doesn't exist!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:559
+#: ../PLCOpenEditor.py:564
 msgid "Instances"
 msgstr ""
 
@@ -1135,13 +1149,13 @@
 msgid "Instances:"
 msgstr ""
 
-#: ../plcopen/structures.py:231
+#: ../plcopen/structures.py:230
 msgid ""
 "Integral\n"
 "The integral function block integrates the value of input XIN over time."
 msgstr ""
 
-#: ../VariablePanel.py:69
+#: ../VariablePanel.py:70
 msgid "Interface"
 msgstr ""
 
@@ -1149,21 +1163,21 @@
 msgid "Interval"
 msgstr ""
 
-#: ../PLCControler.py:1696 ../PLCControler.py:1734
+#: ../PLCControler.py:1778 ../PLCControler.py:1816
 msgid "Invalid plcopen element(s)!!!"
 msgstr ""
 
-#: ../dialogs/ForceVariableDialog.py:96
+#: ../dialogs/ForceVariableDialog.py:174
 #, python-format
 msgid "Invalid value \"%s\" for \"%s\" variable!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4042 ../PLCOpenEditor.py:4045
+#: ../PLCOpenEditor.py:4080 ../PLCOpenEditor.py:4083
 #, python-format
 msgid "Invalid value \"%s\" for debug variable"
 msgstr ""
 
-#: ../VariablePanel.py:316 ../VariablePanel.py:319
+#: ../VariablePanel.py:332 ../VariablePanel.py:335
 #, python-format
 msgid "Invalid value \"%s\" for location"
 msgstr ""
@@ -1173,29 +1187,29 @@
 msgid "Invalid value \"%s\" for viewer block"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2984 ../PLCOpenEditor.py:3179 ../PLCOpenEditor.py:3189
-#: ../PLCOpenEditor.py:3368 ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3022 ../PLCOpenEditor.py:3217 ../PLCOpenEditor.py:3227
+#: ../PLCOpenEditor.py:3406 ../PLCOpenEditor.py:3550
 msgid "LD"
 msgstr ""
 
-#: ../LDViewer.py:213 ../LDViewer.py:228
+#: ../LDViewer.py:215 ../LDViewer.py:231
 #, python-format
 msgid "Ladder element with id %d is on more than one rung."
 msgstr ""
 
-#: ../PLCOpenEditor.py:3287 ../PLCOpenEditor.py:3450 ../PLCOpenEditor.py:3594
+#: ../PLCOpenEditor.py:3325 ../PLCOpenEditor.py:3488 ../PLCOpenEditor.py:3632
 msgid "Language"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2998
+#: ../PLCOpenEditor.py:3036
 msgid "Language (optional):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3255 ../PLCOpenEditor.py:3423 ../PLCOpenEditor.py:3567
+#: ../PLCOpenEditor.py:3293 ../PLCOpenEditor.py:3461 ../PLCOpenEditor.py:3605
 msgid "Language:"
 msgstr ""
 
-#: ../Viewer.py:392
+#: ../Viewer.py:357
 msgid "Left"
 msgstr ""
 
@@ -1203,35 +1217,35 @@
 msgid "Left PowerRail"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:70
+#: ../plcopen/iec_std.csv:81
 msgid "Length of string"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:67
+#: ../plcopen/iec_std.csv:78
 msgid "Less than"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:68
+#: ../plcopen/iec_std.csv:79
 msgid "Less than or equal to"
 msgstr ""
 
-#: ../PLCOpenEditor.py:594
+#: ../PLCOpenEditor.py:599
 msgid "Library"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:62
+#: ../plcopen/iec_std.csv:73
 msgid "Limitation"
 msgstr ""
 
-#: ../VariablePanel.py:71
+#: ../VariablePanel.py:72
 msgid "Local"
 msgstr ""
 
-#: ../VariablePanel.py:52
+#: ../VariablePanel.py:53
 msgid "Location"
 msgstr ""
 
-#: ../VariablePanel.py:1080
+#: ../VariablePanel.py:1118
 msgid "Locations available:"
 msgstr ""
 
@@ -1239,7 +1253,7 @@
 msgid "Logarithm to base 10"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:60
+#: ../plcopen/iec_std.csv:71
 msgid "Maximum"
 msgstr ""
 
@@ -1247,15 +1261,15 @@
 msgid "Maximum:"
 msgstr ""
 
-#: ../VariablePanel.py:1021
+#: ../VariablePanel.py:1059
 msgid "Memory"
 msgstr ""
 
-#: ../Viewer.py:401
+#: ../Viewer.py:366
 msgid "Middle"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:61
+#: ../plcopen/iec_std.csv:72
 msgid "Minimum"
 msgstr ""
 
@@ -1263,7 +1277,7 @@
 msgid "Minimum:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3013
+#: ../PLCOpenEditor.py:3051
 msgid "Miscellaneous"
 msgstr ""
 
@@ -1271,7 +1285,7 @@
 msgid "Modifier:"
 msgstr ""
 
-#: ../PLCGenerator.py:682 ../PLCGenerator.py:886
+#: ../PLCGenerator.py:724 ../PLCGenerator.py:948
 #, python-format
 msgid "More than one connector found corresponding to \"%s\" continuation in \"%s\" POU"
 msgstr ""
@@ -1284,16 +1298,16 @@
 msgid "Move up"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:63
+#: ../plcopen/iec_std.csv:74
 msgid "Multiplexer (select 1 of N)"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:37
+#: ../plcopen/iec_std.csv:34
 msgid "Multiplication"
 msgstr ""
 
-#: ../RessourceEditor.py:82 ../RessourceEditor.py:86 ../VariablePanel.py:52
-#: ../VariablePanel.py:53 ../DataTypeEditor.py:46
+#: ../RessourceEditor.py:82 ../RessourceEditor.py:86 ../VariablePanel.py:53
+#: ../VariablePanel.py:54 ../DataTypeEditor.py:46
 msgid "Name"
 msgstr ""
 
@@ -1307,11 +1321,11 @@
 msgid "Natural logarithm"
 msgstr ""
 
-#: ../Viewer.py:424 ../dialogs/LDElementDialog.py:135
+#: ../Viewer.py:389 ../dialogs/LDElementDialog.py:135
 msgid "Negated"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2444
+#: ../PLCOpenEditor.py:2464
 msgid "New\tCTRL+N"
 msgstr ""
 
@@ -1319,45 +1333,45 @@
 msgid "New item"
 msgstr ""
 
-#: ../Viewer.py:422
+#: ../Viewer.py:387
 msgid "No Modifier"
 msgstr ""
 
-#: ../PLCControler.py:2578
+#: ../PLCControler.py:2663
 msgid "No PLC project found"
 msgstr ""
 
-#: ../PLCGenerator.py:1267
+#: ../PLCGenerator.py:1331
 #, python-format
 msgid "No body defined in \"%s\" POU"
 msgstr ""
 
-#: ../PLCGenerator.py:701 ../PLCGenerator.py:895
+#: ../PLCGenerator.py:743 ../PLCGenerator.py:957
 #, python-format
 msgid "No connector found corresponding to \"%s\" continuation in \"%s\" POU"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2391
+#: ../PLCOpenEditor.py:2411
 msgid ""
 "No documentation available.\n"
 "Coming soon."
 msgstr ""
 
-#: ../PLCGenerator.py:753
+#: ../PLCGenerator.py:765
 #, python-format
 msgid "No informations found for \"%s\" block"
 msgstr ""
 
-#: ../plcopen/structures.py:139
+#: ../plcopen/structures.py:138
 msgid "No output variable found"
 msgstr ""
 
-#: ../PLCGenerator.py:1265
+#: ../PLCGenerator.py:1329
 #, python-format
 msgid "No variable defined in \"%s\" POU"
 msgstr ""
 
-#: ../VariablePanel.py:63
+#: ../VariablePanel.py:64
 msgid "Non-Retain"
 msgstr ""
 
@@ -1365,7 +1379,7 @@
 msgid "Normal"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:69
+#: ../plcopen/iec_std.csv:80
 msgid "Not equal to"
 msgstr ""
 
@@ -1377,87 +1391,87 @@
 msgid "Numerical"
 msgstr ""
 
-#: ../plcopen/structures.py:219
+#: ../plcopen/structures.py:218
 msgid ""
 "Off-delay timer\n"
 "The off-delay timer can be used to delay setting an output false, for fixed period after input goes false."
 msgstr ""
 
-#: ../plcopen/structures.py:214
+#: ../plcopen/structures.py:213
 msgid ""
 "On-delay timer\n"
 "The on-delay timer can be used to delay setting an output true, for fixed period after an input becomes true."
 msgstr ""
 
-#: ../PLCOpenEditor.py:2446
+#: ../PLCOpenEditor.py:2466
 msgid "Open\tCTRL+O"
 msgstr ""
 
-#: ../VariablePanel.py:52 ../VariablePanel.py:53
+#: ../VariablePanel.py:53 ../VariablePanel.py:54
 msgid "Option"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2940
+#: ../PLCOpenEditor.py:2978
 msgid "Organization (optional):"
 msgstr ""
 
-#: ../VariablePanel.py:70 ../VariablePanel.py:1020
+#: ../VariablePanel.py:71 ../VariablePanel.py:1058
 #: ../dialogs/FBDVariableDialog.py:43 ../dialogs/SFCStepDialog.py:127
 msgid "Output"
 msgstr ""
 
-#: ../plcopen/structures.py:241
+#: ../plcopen/structures.py:240
 msgid ""
 "PID\n"
 "The PID (proportional, Integral, Derivative) function block provides the classical three term controller for closed loop control."
 msgstr ""
 
-#: ../PLCOpenEditor.py:2598 ../PLCOpenEditor.py:2657
+#: ../PLCOpenEditor.py:2630 ../PLCOpenEditor.py:2694
 msgid "PLCOpen files (*.xml)|*.xml|All files|*.*"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2530
+#: ../PLCOpenEditor.py:2559
 msgid "PLCOpenEditor"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2488
+#: ../PLCOpenEditor.py:2508
 msgid "PLCOpenEditor\tF1"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3283
+#: ../PLCOpenEditor.py:3321
 msgid "POU Name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3238
+#: ../PLCOpenEditor.py:3276
 msgid "POU Name:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3285
+#: ../PLCOpenEditor.py:3323
 msgid "POU Type"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3246
+#: ../PLCOpenEditor.py:3284
 msgid "POU Type:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2460
+#: ../PLCOpenEditor.py:2480
 msgid "Page Setup"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2956
+#: ../PLCOpenEditor.py:2994
 msgid "Page Size (optional):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4301
+#: ../PLCOpenEditor.py:4362
 #, python-format
 msgid "Page: %d"
 msgstr ""
 
-#: ../PLCOpenEditor.py:325
+#: ../PLCOpenEditor.py:330
 msgid "Paste\tCTRL+V"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1646
+#: ../PLCOpenEditor.py:1663
 msgid "Paste POU"
 msgstr ""
 
@@ -1465,27 +1479,23 @@
 msgid "Pin number:"
 msgstr ""
 
-#: ../Viewer.py:2032 ../Viewer.py:2323 ../SFCViewer.py:698
+#: ../Viewer.py:2020 ../Viewer.py:2311 ../SFCViewer.py:698
 msgid "Please choose a target"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2253
-msgid "Please enter POU name"
-msgstr ""
-
-#: ../Viewer.py:1857 ../Viewer.py:1859 ../Viewer.py:2358 ../Viewer.py:2360
+#: ../Viewer.py:1845 ../Viewer.py:1847 ../Viewer.py:2346 ../Viewer.py:2348
 msgid "Please enter comment text"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2221 ../PLCOpenEditor.py:3658
+#: ../PLCOpenEditor.py:2246 ../PLCOpenEditor.py:3696
 msgid "Please enter configuration name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2177
+#: ../PLCOpenEditor.py:2194
 msgid "Please enter data type name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2232 ../PLCOpenEditor.py:3721
+#: ../PLCOpenEditor.py:2259 ../PLCOpenEditor.py:3759
 msgid "Please enter resource name"
 msgstr ""
 
@@ -1493,16 +1503,16 @@
 msgid "Please enter step name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3129
+#: ../PLCOpenEditor.py:3167
 msgid "Please enter text"
 msgstr ""
 
-#: ../dialogs/ForceVariableDialog.py:78
+#: ../dialogs/ForceVariableDialog.py:156
 #, python-format
 msgid "Please enter value for a \"%s\" variable:"
 msgstr ""
 
-#: ../VariablePanel.py:1147
+#: ../VariablePanel.py:1185
 msgid "Plugins"
 msgstr ""
 
@@ -1514,7 +1524,7 @@
 msgid "Power Rail Properties"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2462
+#: ../PLCOpenEditor.py:2482
 msgid "Preview"
 msgstr ""
 
@@ -1525,11 +1535,11 @@
 msgid "Preview:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2464
+#: ../PLCOpenEditor.py:2484
 msgid "Print"
 msgstr ""
 
-#: ../PLCOpenEditor.py:934
+#: ../PLCOpenEditor.py:950
 msgid "Print preview"
 msgstr ""
 
@@ -1541,23 +1551,23 @@
 msgid "Priority:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2884
+#: ../PLCOpenEditor.py:2922
 msgid "Product Name (required):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2900
+#: ../PLCOpenEditor.py:2938
 msgid "Product Release (optional):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2892
+#: ../PLCOpenEditor.py:2930
 msgid "Product Version (required):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:336 ../PLCOpenEditor.py:1605
+#: ../PLCOpenEditor.py:341 ../PLCOpenEditor.py:1622
 msgid "Program"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2635
+#: ../PLCOpenEditor.py:2671
 msgid "Program was successfully generated!"
 msgstr ""
 
@@ -1569,27 +1579,33 @@
 msgid "Programs can't be used by other POUs!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:437 ../PLCOpenEditor.py:2907
+#: ../PLCOpenEditor.py:442 ../PLCOpenEditor.py:2945
 msgid "Project"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2868
+#: ../PLCOpenEditor.py:2906
 msgid "Project Name (required):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2876
+#: ../PLCOpenEditor.py:2914
 msgid "Project Version (optional):"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2854
+#: ../PLCControler.py:2650
+msgid ""
+"Project file syntax error:\n"
+"\n"
+msgstr ""
+
+#: ../PLCOpenEditor.py:2892
 msgid "Project properties"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2467 ../PLCControler.py:91
+#: ../PLCOpenEditor.py:2487 ../PLCControler.py:91
 msgid "Properties"
 msgstr ""
 
-#: ../plcopen/structures.py:209
+#: ../plcopen/structures.py:208
 msgid ""
 "Pulse timer\n"
 "The pulse timer can be used to generate output pulses of a given time duration."
@@ -1599,17 +1615,17 @@
 msgid "Qualifier"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2470
+#: ../PLCOpenEditor.py:2490
 msgid "Quit\tCTRL+Q"
 msgstr ""
 
-#: ../plcopen/structures.py:174
+#: ../plcopen/structures.py:173
 msgid ""
 "RS bistable\n"
 "The RS bistable is a latch where the Reset dominates."
 msgstr ""
 
-#: ../plcopen/structures.py:246
+#: ../plcopen/structures.py:245
 msgid ""
 "Ramp\n"
 "The RAMP function block is modelled on example given in the standard but with the addition of a 'Holdback' feature."
@@ -1619,7 +1635,7 @@
 msgid "Range:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:316
+#: ../PLCOpenEditor.py:321
 msgid "Redo\tCTRL+Y"
 msgstr ""
 
@@ -1627,23 +1643,23 @@
 msgid "Reference"
 msgstr ""
 
-#: ../PLCOpenEditor.py:364
+#: ../PLCOpenEditor.py:369
 msgid "Refresh\tF5"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4187 ../Viewer.py:1133
+#: ../PLCOpenEditor.py:4235 ../Viewer.py:1098
 msgid "Release value"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:48
+#: ../plcopen/iec_std.csv:37
 msgid "Remainder (modulo)"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1609
+#: ../PLCOpenEditor.py:1626
 msgid "Rename"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:78
+#: ../plcopen/iec_std.csv:89
 msgid "Replacement (within)"
 msgstr ""
 
@@ -1651,7 +1667,7 @@
 msgid "Reset"
 msgstr ""
 
-#: ../Viewer.py:443
+#: ../Viewer.py:408
 msgid "Reset Execution Order"
 msgstr ""
 
@@ -1659,15 +1675,15 @@
 msgid "Resources"
 msgstr ""
 
-#: ../VariablePanel.py:61
+#: ../VariablePanel.py:62
 msgid "Retain"
 msgstr ""
 
-#: ../VariablePanel.py:466
+#: ../VariablePanel.py:482
 msgid "Return Type:"
 msgstr ""
 
-#: ../Viewer.py:396
+#: ../Viewer.py:361
 msgid "Right"
 msgstr ""
 
@@ -1675,21 +1691,21 @@
 msgid "Right PowerRail"
 msgstr ""
 
-#: ../Viewer.py:426 ../dialogs/LDElementDialog.py:150
+#: ../Viewer.py:391 ../dialogs/LDElementDialog.py:150
 msgid "Rising Edge"
 msgstr ""
 
-#: ../plcopen/structures.py:184
+#: ../plcopen/structures.py:183
 msgid ""
 "Rising edge detector\n"
 "The output produces a single pulse when a rising edge is detected."
 msgstr ""
 
-#: ../plcopen/iec_std.csv:54
+#: ../plcopen/iec_std.csv:65
 msgid "Rotate left"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:53
+#: ../plcopen/iec_std.csv:64
 msgid "Rotate right"
 msgstr ""
 
@@ -1697,50 +1713,46 @@
 msgid "Rounding up/down"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2984 ../PLCOpenEditor.py:3189
+#: ../PLCOpenEditor.py:3022 ../PLCOpenEditor.py:3227
 msgid "SFC"
 msgstr ""
 
-#: ../plcopen/structures.py:169
+#: ../plcopen/structures.py:168
 msgid ""
 "SR bistable\n"
 "The SR bistable is a latch where the Set dominates."
 msgstr ""
 
-#: ../PLCOpenEditor.py:3179 ../PLCOpenEditor.py:3189 ../PLCOpenEditor.py:3368
-#: ../PLCOpenEditor.py:3512
+#: ../PLCOpenEditor.py:3217 ../PLCOpenEditor.py:3227 ../PLCOpenEditor.py:3406
+#: ../PLCOpenEditor.py:3550
 msgid "ST"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2622
+#: ../PLCOpenEditor.py:2658
 msgid "ST files (*.st)|*.st|All files|*.*"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2453
+#: ../PLCOpenEditor.py:2473
 msgid "Save\tCTRL+S"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2455
+#: ../PLCOpenEditor.py:2475
 msgid "Save As...\tCTRL+SHIFT+S"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2976
-msgid "Scaling:"
-msgstr ""
-
-#: ../PLCOpenEditor.py:340
+#: ../PLCOpenEditor.py:345
 msgid "Select All\tCTRL+A"
 msgstr ""
 
-#: ../VariablePanel.py:341
+#: ../VariablePanel.py:357
 msgid "Select a variable class:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:570 ../PLCOpenEditor.py:582
+#: ../PLCOpenEditor.py:575 ../PLCOpenEditor.py:587
 msgid "Select an object"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:59
+#: ../plcopen/iec_std.csv:70
 msgid "Selection"
 msgstr ""
 
@@ -1752,7 +1764,7 @@
 msgid "Selection Divergence"
 msgstr ""
 
-#: ../plcopen/structures.py:179
+#: ../plcopen/structures.py:178
 msgid ""
 "Semaphore\n"
 "The semaphore provides a mechanism to allow software elements mutually exclusive access to certain ressources."
@@ -1762,11 +1774,11 @@
 msgid "Set"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:51
+#: ../plcopen/iec_std.csv:62
 msgid "Shift left"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:52
+#: ../plcopen/iec_std.csv:63
 msgid "Shift right"
 msgstr ""
 
@@ -1790,7 +1802,7 @@
 msgid "Square root (base 2)"
 msgstr ""
 
-#: ../plcopen/structures.py:165
+#: ../plcopen/structures.py:164
 msgid "Standard function blocks"
 msgstr ""
 
@@ -1802,7 +1814,7 @@
 msgid "Subrange"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:39
+#: ../plcopen/iec_std.csv:35
 msgid "Subtraction"
 msgstr ""
 
@@ -1818,30 +1830,30 @@
 msgid "Tasks:"
 msgstr ""
 
-#: ../VariablePanel.py:72
+#: ../VariablePanel.py:73
 msgid "Temp"
 msgstr ""
 
-#: ../LDViewer.py:850
+#: ../LDViewer.py:881
 msgid "The group of block must be coherent!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:873
+#: ../PLCOpenEditor.py:889
 msgid "There are changes, do you want to save?"
 msgstr ""
 
-#: ../PLCOpenEditor.py:1407 ../PLCOpenEditor.py:1427
+#: ../PLCOpenEditor.py:1425 ../PLCOpenEditor.py:1445
 #, python-format
 msgid "There is a POU named \"%s\". This could cause a conflict. Do you wish to continue?"
 msgstr ""
 
-#: ../PLCOpenEditor.py:953
+#: ../PLCOpenEditor.py:969
 msgid ""
 "There was a problem printing.\n"
 "Perhaps your current printer is not set correctly?"
 msgstr ""
 
-#: ../LDViewer.py:859
+#: ../LDViewer.py:890
 msgid "This option isn't available yet!"
 msgstr ""
 
@@ -1849,61 +1861,66 @@
 msgid "Tick"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:34
+#: ../plcopen/iec_std.csv:40
+msgid "Time"
+msgstr ""
+
+#: ../plcopen/iec_std.csv:40 ../plcopen/iec_std.csv:41
 msgid "Time addition"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:75
+#: ../plcopen/iec_std.csv:86
 msgid "Time concatenation"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:47
+#: ../plcopen/iec_std.csv:60 ../plcopen/iec_std.csv:61
 msgid "Time division"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:38
+#: ../plcopen/iec_std.csv:46 ../plcopen/iec_std.csv:47
 msgid "Time multiplication"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:40
+#: ../plcopen/iec_std.csv:48 ../plcopen/iec_std.csv:49
 msgid "Time subtraction"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:35
+#: ../plcopen/iec_std.csv:42 ../plcopen/iec_std.csv:43
 msgid "Time-of-day addition"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:42 ../plcopen/iec_std.csv:43
+#: ../plcopen/iec_std.csv:52 ../plcopen/iec_std.csv:53
+#: ../plcopen/iec_std.csv:54 ../plcopen/iec_std.csv:55
 msgid "Time-of-day subtraction"
 msgstr ""
 
-#: ../PLCOpenEditor.py:574
+#: ../PLCOpenEditor.py:579
 msgid "Toolbar"
 msgstr ""
 
-#: ../Viewer.py:399
+#: ../Viewer.py:364
 msgid "Top"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3448
+#: ../PLCOpenEditor.py:3486
 msgid "Transition Name"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3415
+#: ../PLCOpenEditor.py:3453
 msgid "Transition Name:"
 msgstr ""
 
-#: ../PLCGenerator.py:1247
+#: ../PLCGenerator.py:1311
 #, python-format
 msgid "Transition with content \"%s\" not connected to a next step in \"%s\" POU"
 msgstr ""
 
-#: ../PLCGenerator.py:1238
+#: ../PLCGenerator.py:1302
 #, python-format
 msgid "Transition with content \"%s\" not connected to a previous step in \"%s\" POU"
 msgstr ""
 
-#: ../plcopen/plcopen.py:1175
+#: ../plcopen/plcopen.py:1194
 #, python-format
 msgid "Transition with name %s doesn't exist!"
 msgstr ""
@@ -1912,7 +1929,7 @@
 msgid "Transitions"
 msgstr ""
 
-#: ../RessourceEditor.py:86 ../VariablePanel.py:52 ../VariablePanel.py:53
+#: ../RessourceEditor.py:86 ../VariablePanel.py:53 ../VariablePanel.py:54
 #: ../dialogs/ActionBlockDialog.py:33 ../DataTypeEditor.py:46
 msgid "Type"
 msgstr ""
@@ -1931,7 +1948,7 @@
 msgid "Type:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:540
+#: ../PLCOpenEditor.py:545
 msgid "Types"
 msgstr ""
 
@@ -1940,11 +1957,11 @@
 msgid "Undefined pou type \"%s\""
 msgstr ""
 
-#: ../PLCOpenEditor.py:314
+#: ../PLCOpenEditor.py:319
 msgid "Undo\tCTRL+Z"
 msgstr ""
 
-#: ../Viewer.py:320
+#: ../Viewer.py:304
 #, python-format
 msgid "Unknown variable \"%s\" for this POU!"
 msgstr ""
@@ -1954,24 +1971,24 @@
 msgid "Unnamed%d"
 msgstr ""
 
-#: ../VariablePanel.py:337
+#: ../VariablePanel.py:353
 #, python-format
 msgid "Unrecognized data size \"%s\""
 msgstr ""
 
-#: ../plcopen/structures.py:194
+#: ../plcopen/structures.py:193
 msgid ""
 "Up-counter\n"
 "The up-counter can be used to signal when a count has reached a maximum value."
 msgstr ""
 
-#: ../plcopen/structures.py:204
+#: ../plcopen/structures.py:203
 msgid ""
 "Up-down counter\n"
 "The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other."
 msgstr ""
 
-#: ../VariablePanel.py:770 ../DataTypeEditor.py:807
+#: ../VariablePanel.py:790 ../DataTypeEditor.py:807
 msgid "User Data Types"
 msgstr ""
 
@@ -1979,7 +1996,7 @@
 msgid "User-defined POUs"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3857 ../dialogs/ActionBlockDialog.py:33
+#: ../PLCOpenEditor.py:3895 ../dialogs/ActionBlockDialog.py:33
 msgid "Value"
 msgstr ""
 
@@ -1991,7 +2008,7 @@
 msgid "Values:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3857 ../dialogs/ActionBlockDialog.py:37
+#: ../PLCOpenEditor.py:3895 ../dialogs/ActionBlockDialog.py:37
 msgid "Variable"
 msgstr ""
 
@@ -1999,99 +2016,95 @@
 msgid "Variable Properties"
 msgstr ""
 
-#: ../VariablePanel.py:341
+#: ../VariablePanel.py:357
 msgid "Variable class"
 msgstr ""
 
-#: ../Viewer.py:322 ../TextViewer.py:248
+#: ../Viewer.py:306 ../TextViewer.py:279
 msgid "Variable don't belong to this POU!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:589 ../VariablePanel.py:71
+#: ../PLCOpenEditor.py:594 ../VariablePanel.py:72
 msgid "Variables"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3313 ../PLCOpenEditor.py:3691 ../PLCOpenEditor.py:3754
-#: ../LDViewer.py:859
+#: ../PLCOpenEditor.py:2749
+msgid "Vertical:"
+msgstr ""
+
+#: ../PLCOpenEditor.py:3351 ../PLCOpenEditor.py:3729 ../PLCOpenEditor.py:3792
+#: ../LDViewer.py:890
 msgid "Warning"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2960
+#: ../PLCOpenEditor.py:2998
 msgid "Width:"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2703
-msgid "X Scale:"
-msgstr ""
-
-#: ../PLCOpenEditor.py:2711
-msgid "Y Scale:"
-msgstr ""
-
-#: ../LDViewer.py:854
+#: ../LDViewer.py:885
 msgid "You must select the block or group of blocks around which a branch should be added!"
 msgstr ""
 
-#: ../LDViewer.py:628
+#: ../LDViewer.py:665
 msgid "You must select the wire where a contact should be added!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:3144 ../PLCOpenEditor.py:3675 ../PLCOpenEditor.py:3738
+#: ../PLCOpenEditor.py:3182 ../PLCOpenEditor.py:3713 ../PLCOpenEditor.py:3776
 #: ../dialogs/PouNameDialog.py:55 ../dialogs/SFCStepDialog.py:175
 #: ../dialogs/SFCStepNameDialog.py:57
 msgid "You must type a name!"
 msgstr ""
 
-#: ../dialogs/ForceVariableDialog.py:92
+#: ../dialogs/ForceVariableDialog.py:170
 msgid "You must type a value!"
 msgstr ""
 
-#: ../PLCOpenEditor.py:370
+#: ../PLCOpenEditor.py:375
 msgid "Zoom"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2631
+#: ../PLCOpenEditor.py:2667
 #, python-format
 msgid "error: %s\n"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4333 ../PLCOpenEditor.py:4335
+#: ../PLCOpenEditor.py:4394 ../PLCOpenEditor.py:4396
 msgid "file : "
 msgstr ""
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "function"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4397
 msgid "function : "
 msgstr ""
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "functionBlock"
 msgstr ""
 
-#: ../PLCOpenEditor.py:4336
+#: ../PLCOpenEditor.py:4397
 msgid "line : "
 msgstr ""
 
-#: ../PLCOpenEditor.py:3184
+#: ../PLCOpenEditor.py:3222
 msgid "program"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:73
+#: ../plcopen/iec_std.csv:84
 msgid "string from the middle"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:71
+#: ../plcopen/iec_std.csv:82
 msgid "string left of"
 msgstr ""
 
-#: ../plcopen/iec_std.csv:72
+#: ../plcopen/iec_std.csv:83
 msgid "string right of"
 msgstr ""
 
-#: ../PLCOpenEditor.py:2629
+#: ../PLCOpenEditor.py:2665
 #, python-format
 msgid "warning: %s\n"
 msgstr ""
Binary file locale/fr_FR/LC_MESSAGES/PLCOpenEditor.mo has changed