diff -r 95a0a427f3ef -r 131ea7f237b9 dialogs/SFCStepDialog.py --- a/dialogs/SFCStepDialog.py Fri Jun 15 18:03:25 2012 +0200 +++ b/dialogs/SFCStepDialog.py Mon Jun 25 20:03:53 2012 +0200 @@ -29,135 +29,75 @@ # Edit Step Content Dialog #------------------------------------------------------------------------------- -[ID_SFCSTEPDIALOG, ID_SFCSTEPDIALOGSPACER, - ID_SFCSTEPDIALOGNAME, ID_SFCSTEPDIALOGPREVIEW, - ID_SFCSTEPDIALOGCHECKBOX1, ID_SFCSTEPDIALOGCHECKBOX2, - ID_SFCSTEPDIALOGCHECKBOX3, ID_SFCSTEPDIALOGSTATICTEXT1, - ID_SFCSTEPDIALOGSTATICTEXT2, ID_SFCSTEPDIALOGSTATICTEXT3, -] = [wx.NewId() for _init_ctrls in range(10)] - class SFCStepDialog(wx.Dialog): - if wx.VERSION < (2, 6, 0): - def Bind(self, event, function, id = None): - if id is not None: - event(self, id, function) - else: - event(self, function) - - def _init_coll_flexGridSizer1_Items(self, parent): - parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) - parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) - - def _init_coll_flexGridSizer1_Growables(self, parent): - parent.AddGrowableCol(0) - parent.AddGrowableRow(0) - - def _init_coll_MainSizer_Items(self, parent): - parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT) - parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT) - - def _init_coll_LeftGridSizer_Items(self, parent): - parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.StepName, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.checkBox1, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.checkBox2, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.checkBox3, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW) - - def _init_coll_LeftGridSizer_Growables(self, parent): - parent.AddGrowableCol(0) - parent.AddGrowableRow(6) - - def _init_coll_RightGridSizer_Items(self, parent): - parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW) - - def _init_coll_RightGridSizer_Growables(self, parent): - parent.AddGrowableCol(0) - parent.AddGrowableRow(1) - - def _init_sizers(self): - self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) - self.MainSizer = wx.BoxSizer(wx.HORIZONTAL) - self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=7, vgap=5) - self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) - - self._init_coll_flexGridSizer1_Items(self.flexGridSizer1) - self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1) - self._init_coll_MainSizer_Items(self.MainSizer) - self._init_coll_LeftGridSizer_Items(self.LeftGridSizer) - self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer) - self._init_coll_RightGridSizer_Items(self.RightGridSizer) - self._init_coll_RightGridSizer_Growables(self.RightGridSizer) - - self.SetSizer(self.flexGridSizer1) - - def _init_ctrls(self, prnt, ctrler): - wx.Dialog.__init__(self, id=ID_SFCSTEPDIALOG, - name='SFCStepDialog', parent=prnt, - size=wx.Size(400, 250), style=wx.DEFAULT_DIALOG_STYLE, - title=_('Edit Step')) - self.SetClientSize(wx.Size(400, 250)) - - self.staticText1 = wx.StaticText(id=ID_SFCSTEPDIALOGSTATICTEXT1, - label=_('Name:'), name='staticText1', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.staticText2 = wx.StaticText(id=ID_SFCSTEPDIALOGSTATICTEXT2, - label=_('Connectors:'), name='staticText2', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.staticText3 = wx.StaticText(id=ID_SFCSTEPDIALOGSTATICTEXT3, - label=_('Preview:'), name='staticText4', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.StepName = wx.TextCtrl(id=ID_SFCSTEPDIALOGNAME, - name='Name', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=0) - self.Bind(wx.EVT_TEXT, self.OnNameChanged, id=ID_SFCSTEPDIALOGNAME) - - self.checkBox1 = wx.CheckBox(id=ID_SFCSTEPDIALOGCHECKBOX1, - label=_("Input"), name='checkBox1', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0) - self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_SFCSTEPDIALOGCHECKBOX1) - - self.checkBox2 = wx.CheckBox(id=ID_SFCSTEPDIALOGCHECKBOX2, - label=_("Output"), name='checkBox2', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0) - self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_SFCSTEPDIALOGCHECKBOX2) - - self.checkBox3 = wx.CheckBox(id=ID_SFCSTEPDIALOGCHECKBOX3, - label=_("Action"), name='checkBox3', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0) - self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, id=ID_SFCSTEPDIALOGCHECKBOX3) - - self.Spacer = wx.Panel(id=ID_SFCSTEPDIALOGSPACER, - name='Spacer', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) - - self.Preview = wx.Panel(id=ID_SFCSTEPDIALOGPREVIEW, - name='Preview', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER) + def __init__(self, parent, controller, initial = False): + wx.Dialog.__init__(self, parent, title=_('Edit Step'), + size=wx.Size(400, 250), style=wx.DEFAULT_DIALOG_STYLE) + + main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) + main_sizer.AddGrowableCol(0) + main_sizer.AddGrowableRow(0) + + column_sizer = wx.BoxSizer(wx.HORIZONTAL) + main_sizer.AddSizer(column_sizer, border=20, + flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) + + left_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=6, vgap=5) + left_gridsizer.AddGrowableCol(0) + column_sizer.AddSizer(left_gridsizer, 1, border=5, + flag=wx.GROW|wx.RIGHT) + + name_label = wx.StaticText(self, label=_('Name:')) + left_gridsizer.AddWindow(name_label, flag=wx.GROW) + + self.StepName = wx.TextCtrl(self) + self.Bind(wx.EVT_TEXT, self.OnNameChanged, self.StepName) + left_gridsizer.AddWindow(self.StepName, flag=wx.GROW) + + connectors_label = wx.StaticText(self, label=_('Connectors:')) + left_gridsizer.AddWindow(connectors_label, flag=wx.GROW) + + self.Input = wx.CheckBox(self, label=_("Input")) + self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, self.Input) + left_gridsizer.AddWindow(self.Input, flag=wx.GROW) + + self.Output = wx.CheckBox(self, label=_("Output")) + self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, self.Output) + left_gridsizer.AddWindow(self.Output, flag=wx.GROW) + + self.Action = wx.CheckBox(self, label=_("Action")) + self.Bind(wx.EVT_CHECKBOX, self.OnConnectorsChanged, self.Action) + left_gridsizer.AddWindow(self.Action, flag=wx.GROW) + + right_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) + right_gridsizer.AddGrowableCol(0) + right_gridsizer.AddGrowableRow(1) + column_sizer.AddSizer(right_gridsizer, 1, border=5, + flag=wx.GROW|wx.LEFT) + + preview_label = wx.StaticText(self, label=_('Preview:')) + right_gridsizer.AddWindow(preview_label, flag=wx.GROW) + + self.Preview = wx.Panel(self, + style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER) self.Preview.SetBackgroundColour(wx.Colour(255,255,255)) setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE) setattr(self.Preview, "RefreshStepModel", lambda x:None) setattr(self.Preview, "GetScaling", lambda:None) - setattr(self.Preview, "IsOfType", ctrler.IsOfType) - - self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) - if wx.VERSION >= (2, 5, 0): - self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId()) - self.Preview.Bind(wx.EVT_PAINT, self.OnPaint) - else: - self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId()) - wx.EVT_PAINT(self.Preview, self.OnPaint) - - self._init_sizers() - - def __init__(self, parent, controler, initial = False): - self._init_ctrls(parent, controler) + setattr(self.Preview, "IsOfType", controller.IsOfType) + self.Preview.Bind(wx.EVT_PAINT, self.OnPaint) + right_gridsizer.AddWindow(self.Preview, flag=wx.GROW) + + button_sizer = self.CreateButtonSizer( + wx.OK|wx.CANCEL|wx.CENTRE) + self.Bind(wx.EVT_BUTTON, self.OnOK, + button_sizer.GetAffirmativeButton()) + main_sizer.AddSizer(button_sizer, border=20, + flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) + + self.SetSizer(main_sizer) + self.Step = None self.Initial = initial self.MinStepSize = None @@ -172,31 +112,24 @@ self.Preview.SetFont(font) def OnOK(self, event): + message = None step_name = self.StepName.GetValue() if step_name == "": - message = wx.MessageDialog(self, _("You must type a name!"), _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("You must type a name!") elif not TestIdentifier(step_name): - message = wx.MessageDialog(self, _("\"%s\" is not a valid identifier!")%step_name, _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("\"%s\" is not a valid identifier!") % step_name elif step_name.upper() in IEC_KEYWORDS: - message = wx.MessageDialog(self, _("\"%s\" is a keyword. It can't be used!")%step_name, _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("\"%s\" is a keyword. It can't be used!") % step_name elif step_name.upper() in self.PouNames: - message = wx.MessageDialog(self, _("A POU named \"%s\" already exists!")%step_name, _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("A POU named \"%s\" already exists!") % step_name elif step_name.upper() in self.Variables: - message = wx.MessageDialog(self, _("A variable with \"%s\" as name already exists in this pou!")%step_name, _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("A variable with \"%s\" as name already exists in this pou!") % step_name elif step_name.upper() in self.StepNames: - message = wx.MessageDialog(self, _("\"%s\" step already exists!")%step_name, _("Error"), wx.OK|wx.ICON_ERROR) - message.ShowModal() - message.Destroy() + message = _("\"%s\" step already exists!") % step_name + if message is not None: + dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR) + dialog.ShowModal() + dialog.Destroy() else: self.EndModal(wx.ID_OK) @@ -218,17 +151,17 @@ self.StepName.SetValue(value_name) else: self.StepName.SetValue("") - self.checkBox1.SetValue(values.get("input", False)) - self.checkBox2.SetValue(values.get("output", False)) - self.checkBox3.SetValue(values.get("action", False)) + self.Input.SetValue(values.get("input", False)) + self.Output.SetValue(values.get("output", False)) + self.Action.SetValue(values.get("action", False)) self.RefreshPreview() def GetValues(self): values = {} values["name"] = self.StepName.GetValue() - values["input"] = self.checkBox1.IsChecked() - values["output"] = self.checkBox2.IsChecked() - values["action"] = self.checkBox3.IsChecked() + values["input"] = self.Input.IsChecked() + values["output"] = self.Output.IsChecked() + values["action"] = self.Action.IsChecked() values["width"], values["height"] = self.Step.GetSize() return values @@ -245,15 +178,15 @@ dc.SetFont(self.Preview.GetFont()) dc.Clear() self.Step = SFC_Step(self.Preview, self.StepName.GetValue(), self.Initial) - if self.checkBox1.IsChecked(): + if self.Input.IsChecked(): self.Step.AddInput() else: self.Step.RemoveInput() - if self.checkBox2.IsChecked(): + if self.Output.IsChecked(): self.Step.AddOutput() else: self.Step.RemoveOutput() - if self.checkBox3.IsChecked(): + if self.Action.IsChecked(): self.Step.AddAction() else: self.Step.RemoveAction()