dialogs/SFCTransitionDialog.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 07 Dec 2016 19:28:13 +0300
changeset 1598 1445457547f7
parent 1571 486f94a8032c
child 1696 8043f32de7b8
permissions -rw-r--r--
update PLC status after initialization

This is necessary especially if existed PLC program is loaded, but PLC
is not started automatically. In this case taskbar icon shows that PLC
isn't empty.
1571
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     1
#!/usr/bin/env python
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
     3
1571
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     4
# This file is part of Beremiz, a Integrated Development Environment for
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     5
# programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     6
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     7
# Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     8
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     9
# See COPYING file for copyrights details.
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    10
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    11
# This program is free software; you can redistribute it and/or
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    12
# modify it under the terms of the GNU General Public License
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    13
# as published by the Free Software Foundation; either version 2
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    14
# of the License, or (at your option) any later version.
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    15
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    16
# This program is distributed in the hope that it will be useful,
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    19
# GNU General Public License for more details.
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    20
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    21
# You should have received a copy of the GNU General Public License
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    22
# along with this program; if not, write to the Free Software
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    23
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    24
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    25
import wx
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    26
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    27
from graphics.SFC_Objects import SFC_Transition
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    28
from BlockPreviewDialog import BlockPreviewDialog
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    29
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    30
#-------------------------------------------------------------------------------
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    31
#                        Set Transition Parameters Dialog
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    32
#-------------------------------------------------------------------------------
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    33
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    34
"""
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    35
Class that implements a dialog for defining parameters of a transition graphic
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    36
element
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    37
"""
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    38
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    39
class SFCTransitionDialog(BlockPreviewDialog):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    40
    
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    41
    def __init__(self, parent, controller, tagname, connection=True):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    42
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    43
        Constructor
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    44
        @param parent: Parent wx.Window of dialog for modal
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    45
        @param controller: Reference to project controller
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    46
        @param tagname: Tagname of project POU edited
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    47
        @param connection: True if transition value can be defined by a
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    48
        connection (default: True)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    49
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    50
        BlockPreviewDialog.__init__(self, parent, controller, tagname,
1554
01d2c8a8a928 increase dialog size for edit SFC transition, so buttons are visible
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1252
diff changeset
    51
              size=wx.Size(350, 350), title=_('Edit transition'))
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    52
        
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    53
        # Init common sizers
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    54
        self._init_sizers(2, 0, 8, None, 2, 1)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    55
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    56
        # Create label for transition type
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    57
        type_label = wx.StaticText(self, label=_('Type:'))
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    58
        self.LeftGridSizer.AddWindow(type_label, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    59
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    60
        # Create combo box for selecting reference value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    61
        reference = wx.ComboBox(self, style=wx.CB_READONLY)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    62
        reference.Append("")
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    63
        for transition in controller.GetEditedElementTransitions(tagname):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    64
            reference.Append(transition)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    65
        self.Bind(wx.EVT_COMBOBOX, self.OnReferenceChanged, reference)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    66
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    67
        # Create Text control for defining inline value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    68
        inline = wx.TextCtrl(self)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    69
        self.Bind(wx.EVT_TEXT, self.OnInlineChanged, inline)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    70
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    71
        # Create radio buttons for selecting power rail type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    72
        self.TypeRadioButtons = {}
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    73
        first = True
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    74
        for type, label, control in [('reference', _('Reference'), reference),
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    75
                                     ('inline', _('Inline'), inline),
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    76
                                     ('connection', _('Connection'), None)]:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    77
            radio_button = wx.RadioButton(self, label=label, 
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    78
                  style=(wx.RB_GROUP if first else 0))
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    79
            radio_button.SetValue(first)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    80
            self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, radio_button)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    81
            self.LeftGridSizer.AddWindow(radio_button, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    82
            if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    83
                control.Enable(first)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    84
                self.LeftGridSizer.AddWindow(control, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    85
            self.TypeRadioButtons[type] = (radio_button, control)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    86
            first = False
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    87
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    88
        # Create label for transition priority
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    89
        priority_label = wx.StaticText(self, label=_('Priority:'))
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    90
        self.LeftGridSizer.AddWindow(priority_label, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    91
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    92
        # Create spin control for defining priority value
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    93
        self.Priority = wx.SpinCtrl(self, min=0, style=wx.SP_ARROW_KEYS)
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    94
        self.Bind(wx.EVT_TEXT, self.OnPriorityChanged, self.Priority)
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    95
        self.LeftGridSizer.AddWindow(self.Priority, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    96
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    97
        # Add preview panel and associated label to sizers
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    98
        self.RightGridSizer.AddWindow(self.PreviewLabel, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    99
        self.RightGridSizer.AddWindow(self.Preview, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   100
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   101
        # Add buttons sizer to sizers
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   102
        self.MainSizer.AddSizer(self.ButtonSizer, border=20, 
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
   103
              flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT)
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
   104
        
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   105
        # Reference radio button is default control having keyboard focus
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   106
        self.TypeRadioButtons["reference"][0].SetFocus()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   107
    
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   108
    def GetTransitionType(self):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   109
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   110
        Return type selected for SFC transition and associated value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   111
        @return: Type selected and associated value (None if no value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   112
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   113
        # Go through radio buttons and return type and value associated to the
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   114
        # one that is selected
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   115
        for type, (radio, control) in self.TypeRadioButtons.iteritems():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   116
            if radio.GetValue():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   117
                if isinstance(control, wx.ComboBox):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   118
                    return type, control.GetStringSelection()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   119
                elif isinstance(control, wx.TextCtrl):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   120
                    return type, control.GetValue()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   121
                else:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   122
                    return type, None
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   123
        return None, None
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   124
    
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   125
    def SetValues(self, values):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   126
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   127
        Set default SFC transition parameters
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   128
        @param values: Transition parameters values
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   129
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   130
        # Extract transition value according to type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   131
        type_value = values.get("value", None)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   132
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   133
        # For each parameters defined, set corresponding control value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   134
        for name, value in values.items():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   135
            
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   136
            # Parameter is SFC transition priority
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   137
            if name == "priority":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   138
                self.Priority.SetValue(values["priority"])
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   139
            
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   140
            # Parameter is SFC transition type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   141
            elif name == "type":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   142
                for type, (radio, control) in self.TypeRadioButtons.iteritems():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   143
                    radio.SetValue(type == value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   144
                    if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   145
                        # Enable associated control to type and set value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   146
                        control.Enable(type == value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   147
                        if type == value:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   148
                            if isinstance(control, wx.ComboBox):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   149
                                control.SetStringSelection(type_value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   150
                            elif isinstance(control, wx.TextCtrl):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   151
                                control.ChangeValue(type_value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   152
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   153
        # Refresh preview panel
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   154
        self.RefreshPreview()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   155
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   156
    def GetValues(self):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   157
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   158
        Return SFC transition parameters defined in dialog
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   159
        @return: {parameter_name: parameter_value,...}
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   160
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   161
        values = {"priority" : self.Priority.GetValue()}
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   162
        values["type"], values["value"] = self.GetTransitionType()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   163
        values["width"], values["height"] = self.Element.GetSize()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   164
        return values
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   165
    
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   166
    def OnOK(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   167
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   168
        Called when dialog OK button is pressed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   169
        Test if parameters defined are valid
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   170
        @param event: wx.Event from OK button
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   171
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   172
        message = None
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   173
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   174
        # Get transition type and value associated
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   175
        type, value = self.GetTransitionType()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   176
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   177
        # Test that value associated to type is defined
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   178
        if type != "connection" and value == "":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   179
            message = _("Form isn't complete. %s must be filled!") % type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   180
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   181
        # Show error message if an error is detected
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   182
        if message is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   183
            self.ShowErrorMessage(message)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   184
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   185
        else:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   186
            # Call BlockPreviewDialog function
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   187
            BlockPreviewDialog.OnOK(self, event)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   188
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   189
    def OnTypeChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   190
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   191
        Called when transition type changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   192
        @param event: wx.RadioButtonEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   193
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   194
        # Refresh sensibility of control associated to transition types
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   195
        for type, (radio, control) in self.TypeRadioButtons.iteritems():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   196
            if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   197
                control.Enable(radio.GetValue())
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   198
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   199
        # Refresh preview panel
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   200
        self.RefreshPreview()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   201
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   202
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   203
    def OnReferenceChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   204
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   205
        Called when SFC transition reference value changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   206
        @param event: wx.ComboBoxEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   207
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   208
        self.RefreshPreview()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   209
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   210
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   211
    def OnInlineChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   212
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   213
        Called when SFC transition inline value changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   214
        @param event: wx.TextEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   215
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   216
        self.RefreshPreview()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   217
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   218
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   219
    def OnPriorityChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   220
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   221
        Called when block inputs number changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   222
        @param event: wx.SpinEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   223
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   224
        self.RefreshPreview()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   225
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   226
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   227
    def RefreshPreview(self):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   228
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   229
        Refresh preview panel of graphic element
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   230
        Override BlockPreviewDialog function
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   231
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   232
        # Set graphic element displayed, creating a SFC transition
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
   233
        self.Element = SFC_Transition(self.Preview)
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   234
        self.Element.SetType(*self.GetTransitionType())
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   235
        self.Element.SetPriority(self.Priority.GetValue())
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   236
        
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   237
        # Call BlockPreviewDialog function
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   238
        BlockPreviewDialog.RefreshPreview(self)