dialogs/PouActionDialog.py
changeset 1730 64d8f52bc8c8
parent 1696 8043f32de7b8
child 1734 750eeb7230a1
equal deleted inserted replaced
1726:d51af006fa6b 1730:64d8f52bc8c8
    31     _ = lambda x : x
    31     _ = lambda x : x
    32     return [_("IL"), _("ST"), _("LD"), _("FBD")]
    32     return [_("IL"), _("ST"), _("LD"), _("FBD")]
    33 ACTION_LANGUAGES_DICT = dict([(_(language), language) for language in GetActionLanguages()])
    33 ACTION_LANGUAGES_DICT = dict([(_(language), language) for language in GetActionLanguages()])
    34 
    34 
    35 class PouActionDialog(wx.Dialog):
    35 class PouActionDialog(wx.Dialog):
    36     
    36 
    37     def __init__(self, parent):
    37     def __init__(self, parent):
    38         wx.Dialog.__init__(self, parent, title=_('Create a new action'))
    38         wx.Dialog.__init__(self, parent, title=_('Create a new action'))
    39         
    39 
    40         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
    40         main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10)
    41         main_sizer.AddGrowableCol(0)
    41         main_sizer.AddGrowableCol(0)
    42         main_sizer.AddGrowableRow(0)
    42         main_sizer.AddGrowableRow(0)
    43         
    43 
    44         infos_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=3, vgap=15)
    44         infos_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=3, vgap=15)
    45         infos_sizer.AddGrowableCol(1)
    45         infos_sizer.AddGrowableCol(1)
    46         main_sizer.AddSizer(infos_sizer, border=20, 
    46         main_sizer.AddSizer(infos_sizer, border=20,
    47               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
    47               flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT)
    48         
    48 
    49         actionname_label = wx.StaticText(self, label=_('Action Name:'))
    49         actionname_label = wx.StaticText(self, label=_('Action Name:'))
    50         infos_sizer.AddWindow(actionname_label, border=4, 
    50         infos_sizer.AddWindow(actionname_label, border=4,
    51               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP)
    51               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP)
    52         
    52 
    53         self.ActionName = wx.TextCtrl(self, size=wx.Size(180,-1))
    53         self.ActionName = wx.TextCtrl(self, size=wx.Size(180,-1))
    54         infos_sizer.AddWindow(self.ActionName, flag=wx.GROW)
    54         infos_sizer.AddWindow(self.ActionName, flag=wx.GROW)
    55         
    55 
    56         language_label = wx.StaticText(self, label=_('Language:'))
    56         language_label = wx.StaticText(self, label=_('Language:'))
    57         infos_sizer.AddWindow(language_label, border=4, 
    57         infos_sizer.AddWindow(language_label, border=4,
    58               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP)
    58               flag=wx.ALIGN_CENTER_VERTICAL|wx.TOP)
    59         
    59 
    60         self.Language = wx.ComboBox(self, style=wx.CB_READONLY)
    60         self.Language = wx.ComboBox(self, style=wx.CB_READONLY)
    61         infos_sizer.AddWindow(self.Language, flag=wx.GROW)
    61         infos_sizer.AddWindow(self.Language, flag=wx.GROW)
    62         
    62 
    63         button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
    63         button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE)
    64         self.Bind(wx.EVT_BUTTON, self.OnOK, 
    64         self.Bind(wx.EVT_BUTTON, self.OnOK,
    65               button_sizer.GetAffirmativeButton())
    65               button_sizer.GetAffirmativeButton())
    66         main_sizer.AddSizer(button_sizer, border=20, 
    66         main_sizer.AddSizer(button_sizer, border=20,
    67               flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
    67               flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
    68             
    68 
    69         self.SetSizer(main_sizer)
    69         self.SetSizer(main_sizer)
    70         
    70 
    71         for option in GetActionLanguages():
    71         for option in GetActionLanguages():
    72             self.Language.Append(_(option))
    72             self.Language.Append(_(option))
    73         
    73 
    74         self.Fit()
    74         self.Fit()
    75         self.PouNames = []
    75         self.PouNames = []
    76         self.PouElementNames = []
    76         self.PouElementNames = []
    77     
    77 
    78     def OnOK(self, event):
    78     def OnOK(self, event):
    79         error = []
    79         error = []
    80         action_name = self.ActionName.GetValue()
    80         action_name = self.ActionName.GetValue()
    81         if action_name == "":
    81         if action_name == "":
    82             error.append(_("Action Name"))
    82             error.append(_("Action Name"))
    89                 if i == 0:
    89                 if i == 0:
    90                     text += item
    90                     text += item
    91                 elif i == len(error) - 1:
    91                 elif i == len(error) - 1:
    92                     text += _(" and %s")%item
    92                     text += _(" and %s")%item
    93                 else:
    93                 else:
    94                     text += _(", %s")%item 
    94                     text += _(", %s")%item
    95             message = _("Form isn't complete. %s must be filled!") % text
    95             message = _("Form isn't complete. %s must be filled!") % text
    96         elif not TestIdentifier(action_name):
    96         elif not TestIdentifier(action_name):
    97             message = _("\"%s\" is not a valid identifier!") % action_name
    97             message = _("\"%s\" is not a valid identifier!") % action_name
    98         elif action_name.upper() in IEC_KEYWORDS:
    98         elif action_name.upper() in IEC_KEYWORDS:
    99             message = _("\"%s\" is a keyword. It can't be used!") % action_name
    99             message = _("\"%s\" is a keyword. It can't be used!") % action_name
   105             dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
   105             dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
   106             dialog.ShowModal()
   106             dialog.ShowModal()
   107             dialog.Destroy()
   107             dialog.Destroy()
   108         else:
   108         else:
   109             self.EndModal(wx.ID_OK)
   109             self.EndModal(wx.ID_OK)
   110     
   110 
   111     def SetPouNames(self, pou_names):
   111     def SetPouNames(self, pou_names):
   112         self.PouNames = [pou_name.upper() for pou_name in pou_names]
   112         self.PouNames = [pou_name.upper() for pou_name in pou_names]
   113         
   113 
   114     def SetPouElementNames(self, element_names):
   114     def SetPouElementNames(self, element_names):
   115         self.PouElementNames = [element_name.upper() for element_name in element_names]
   115         self.PouElementNames = [element_name.upper() for element_name in element_names]
   116         
   116 
   117     def SetValues(self, values):
   117     def SetValues(self, values):
   118         for item, value in values.items():
   118         for item, value in values.items():
   119             if item == "actionName":
   119             if item == "actionName":
   120                 self.ActionName.SetValue(value)
   120                 self.ActionName.SetValue(value)
   121             elif item == "language":
   121             elif item == "language":
   122                 self.Language.SetStringSelection(_(value))
   122                 self.Language.SetStringSelection(_(value))
   123                 
   123 
   124     def GetValues(self):
   124     def GetValues(self):
   125         values = {}
   125         values = {}
   126         values["actionName"] = self.ActionName.GetValue()
   126         values["actionName"] = self.ActionName.GetValue()
   127         values["language"] = ACTION_LANGUAGES_DICT[self.Language.GetStringSelection()]
   127         values["language"] = ACTION_LANGUAGES_DICT[self.Language.GetStringSelection()]
   128         return values
   128         return values
   129