dialogs/SFCTransitionDialog.py
author Edouard Tisserant
Wed, 19 Jan 2022 11:41:04 +0100
changeset 3417 9b9775d230f5
parent 2591 5f685bcd3ad6
child 3303 0ffb41625592
permissions -rw-r--r--
SVGHMI: fix again appication of frequency value when given in label. Use it on PushButton instance in svghmi test.
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
1696
8043f32de7b8 make all dialog have non-fixed size
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1571
diff changeset
     8
# Copyright (C) 2017: Andrey Skvortsov <andrej.skvortzov@gmail.com>
1571
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
     9
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    10
# 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
    11
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    12
# 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
    13
# 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
    14
# 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
    15
# 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
    16
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    17
# 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
    18
# 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
    19
# 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
    20
# 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
    21
#
486f94a8032c fix license notices in source files and license files under GPLv2+
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1554
diff changeset
    22
# 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
    23
# 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
    24
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    25
1853
47a3f39bead0 fix pylint warning "(relative-import) Relative import 'Y', should be 'X.Y'"
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1847
diff changeset
    26
from __future__ import absolute_import
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    27
import wx
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    28
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    29
from graphics.SFC_Objects import SFC_Transition
1853
47a3f39bead0 fix pylint warning "(relative-import) Relative import 'Y', should be 'X.Y'"
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1847
diff changeset
    30
from dialogs.BlockPreviewDialog import BlockPreviewDialog
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    31
1782
5b6ad7a7fd9d clean-up: fix PEP8 E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1768
diff changeset
    32
# -------------------------------------------------------------------------------
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    33
#                        Set Transition Parameters Dialog
1782
5b6ad7a7fd9d clean-up: fix PEP8 E265 block comment should start with '# '
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1768
diff changeset
    34
# -------------------------------------------------------------------------------
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    35
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    36
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    37
class SFCTransitionDialog(BlockPreviewDialog):
1736
7e61baa047f0 clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1730
diff changeset
    38
    """
7e61baa047f0 clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1730
diff changeset
    39
    Class that implements a dialog for defining parameters of a transition graphic
7e61baa047f0 clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1730
diff changeset
    40
    element
7e61baa047f0 clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1730
diff changeset
    41
    """
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    42
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    43
    def __init__(self, parent, controller, tagname, connection=True):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    44
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    45
        Constructor
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    46
        @param parent: Parent wx.Window of dialog for modal
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    47
        @param controller: Reference to project controller
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    48
        @param tagname: Tagname of project POU edited
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    49
        @param connection: True if transition value can be defined by a
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    50
        connection (default: True)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    51
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    52
        BlockPreviewDialog.__init__(self, parent, controller, tagname,
1768
691083b5682a clean-up: fix PEP8 E128 continuation line under-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1745
diff changeset
    53
                                    title=_('Edit transition'))
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    54
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    55
        # Init common sizers
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    56
        self._init_sizers(2, 0, 8, None, 2, 1)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    57
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    58
        # Create label for transition type
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    59
        type_label = wx.StaticText(self, label=_('Type:'))
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    60
        self.LeftGridSizer.AddWindow(type_label, flag=wx.GROW)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    61
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    62
        # Create combo box for selecting reference value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    63
        reference = wx.ComboBox(self, style=wx.CB_READONLY)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    64
        reference.Append("")
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    65
        for transition in controller.GetEditedElementTransitions(tagname):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    66
            reference.Append(transition)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    67
        self.Bind(wx.EVT_COMBOBOX, self.OnReferenceChanged, reference)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    68
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    69
        # Create Text control for defining inline value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    70
        inline = wx.TextCtrl(self)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    71
        self.Bind(wx.EVT_TEXT, self.OnInlineChanged, inline)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    72
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    73
        # Create radio buttons for selecting power rail type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    74
        self.TypeRadioButtons = {}
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    75
        first = True
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    76
        for type, label, control in [('reference', _('Reference'), reference),
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    77
                                     ('inline', _('Inline'), inline),
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    78
                                     ('connection', _('Connection'), None)]:
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    79
            radio_button = wx.RadioButton(self, label=label,
1768
691083b5682a clean-up: fix PEP8 E128 continuation line under-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1745
diff changeset
    80
                                          style=(wx.RB_GROUP if first else 0))
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    81
            radio_button.SetValue(first)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    82
            self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, radio_button)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    83
            self.LeftGridSizer.AddWindow(radio_button, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    84
            if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    85
                control.Enable(first)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    86
                self.LeftGridSizer.AddWindow(control, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    87
            self.TypeRadioButtons[type] = (radio_button, control)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    88
            first = False
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    89
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    90
        # Create label for transition priority
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    91
        priority_label = wx.StaticText(self, label=_('Priority:'))
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    92
        self.LeftGridSizer.AddWindow(priority_label, flag=wx.GROW)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    93
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    94
        # Create spin control for defining priority value
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    95
        self.Priority = wx.SpinCtrl(self, min=0, style=wx.SP_ARROW_KEYS)
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
    96
        self.Bind(wx.EVT_TEXT, self.OnPriorityChanged, self.Priority)
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    97
        self.LeftGridSizer.AddWindow(self.Priority, flag=wx.GROW)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
    98
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
    99
        # Add preview panel and associated label to sizers
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   100
        self.RightGridSizer.AddWindow(self.PreviewLabel, flag=wx.GROW)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   101
        self.RightGridSizer.AddWindow(self.Preview, flag=wx.GROW)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   102
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   103
        # Add buttons sizer to sizers
1768
691083b5682a clean-up: fix PEP8 E128 continuation line under-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1745
diff changeset
   104
        self.MainSizer.AddSizer(
691083b5682a clean-up: fix PEP8 E128 continuation line under-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1745
diff changeset
   105
            self.ButtonSizer, border=20,
691083b5682a clean-up: fix PEP8 E128 continuation line under-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1745
diff changeset
   106
            flag=wx.ALIGN_RIGHT | wx.BOTTOM | wx.LEFT | wx.RIGHT)
1696
8043f32de7b8 make all dialog have non-fixed size
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1571
diff changeset
   107
8043f32de7b8 make all dialog have non-fixed size
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1571
diff changeset
   108
        self.Fit()
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   109
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   110
        # Reference radio button is default control having keyboard focus
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   111
        self.TypeRadioButtons["reference"][0].SetFocus()
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   112
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   113
    def GetTransitionType(self):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   114
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   115
        Return type selected for SFC transition and associated value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   116
        @return: Type selected and associated value (None if no value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   117
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   118
        # Go through radio buttons and return type and value associated to the
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   119
        # one that is selected
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   120
        for type, (radio, control) in self.TypeRadioButtons.iteritems():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   121
            if radio.GetValue():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   122
                if isinstance(control, wx.ComboBox):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   123
                    return type, control.GetStringSelection()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   124
                elif isinstance(control, wx.TextCtrl):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   125
                    return type, control.GetValue()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   126
                else:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   127
                    return type, None
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   128
        return None, None
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   129
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   130
    def SetValues(self, values):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   131
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   132
        Set default SFC transition parameters
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   133
        @param values: Transition parameters values
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   134
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   135
        # Extract transition value according to type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   136
        type_value = values.get("value", None)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   137
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   138
        # For each parameters defined, set corresponding control value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   139
        for name, value in values.items():
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   140
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   141
            # Parameter is SFC transition priority
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   142
            if name == "priority":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   143
                self.Priority.SetValue(values["priority"])
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   144
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   145
            # Parameter is SFC transition type
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   146
            elif name == "type":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   147
                for type, (radio, control) in self.TypeRadioButtons.iteritems():
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   148
                    radio.SetValue(type == value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   149
                    if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   150
                        # Enable associated control to type and set value
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   151
                        control.Enable(type == value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   152
                        if type == value:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   153
                            if isinstance(control, wx.ComboBox):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   154
                                control.SetStringSelection(type_value)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   155
                            elif isinstance(control, wx.TextCtrl):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   156
                                control.ChangeValue(type_value)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   157
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   158
        # Refresh preview panel
2591
5f685bcd3ad6 Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant
parents: 2587
diff changeset
   159
        self.RefreshPreview()
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   160
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   161
    def GetValues(self):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   162
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   163
        Return SFC transition parameters defined in dialog
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   164
        @return: {parameter_name: parameter_value,...}
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   165
        """
1739
ec153828ded2 clean-up: fix PEP8 E203 whitespace before ':' and whitespace before ','
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1736
diff changeset
   166
        values = {"priority": self.Priority.GetValue()}
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   167
        values["type"], values["value"] = self.GetTransitionType()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   168
        values["width"], values["height"] = self.Element.GetSize()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   169
        return values
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   170
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   171
    def OnOK(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   172
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   173
        Called when dialog OK button is pressed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   174
        Test if parameters defined are valid
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   175
        @param event: wx.Event from OK button
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   176
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   177
        message = None
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   178
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   179
        # Get transition type and value associated
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   180
        type, value = self.GetTransitionType()
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   181
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   182
        # Test that value associated to type is defined
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   183
        if type != "connection" and value == "":
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   184
            message = _("Form isn't complete. %s must be filled!") % type
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   185
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   186
        # Show error message if an error is detected
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   187
        if message is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   188
            self.ShowErrorMessage(message)
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   189
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   190
        else:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   191
            # Call BlockPreviewDialog function
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   192
            BlockPreviewDialog.OnOK(self, event)
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   193
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   194
    def OnTypeChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   195
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   196
        Called when transition type changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   197
        @param event: wx.RadioButtonEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   198
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   199
        # Refresh sensibility of control associated to transition types
1847
6198190bc121 explicitly mark unused variables found by pylint with _ or dummy
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1782
diff changeset
   200
        for _type, (radio, control) in self.TypeRadioButtons.iteritems():
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   201
            if control is not None:
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   202
                control.Enable(radio.GetValue())
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   203
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   204
        # Refresh preview panel
2591
5f685bcd3ad6 Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant
parents: 2587
diff changeset
   205
        self.RefreshPreview()
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   206
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   207
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   208
    def OnReferenceChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   209
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   210
        Called when SFC transition reference value changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   211
        @param event: wx.ComboBoxEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   212
        """
2591
5f685bcd3ad6 Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant
parents: 2587
diff changeset
   213
        self.RefreshPreview()
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   214
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   215
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   216
    def OnInlineChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   217
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   218
        Called when SFC transition inline value changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   219
        @param event: wx.TextEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   220
        """
2591
5f685bcd3ad6 Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant
parents: 2587
diff changeset
   221
        self.RefreshPreview()
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   222
        event.Skip()
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   223
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   224
    def OnPriorityChanged(self, event):
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   225
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   226
        Called when block inputs number changed
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   227
        @param event: wx.SpinEvent
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   228
        """
2591
5f685bcd3ad6 Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant
parents: 2587
diff changeset
   229
        self.RefreshPreview()
2587
c67488bd8134 Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)
Edouard Tisserant
parents: 1853
diff changeset
   230
        event.Skip()
c67488bd8134 Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)
Edouard Tisserant
parents: 1853
diff changeset
   231
c67488bd8134 Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)
Edouard Tisserant
parents: 1853
diff changeset
   232
    def DrawPreview(self):
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   233
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   234
        Refresh preview panel of graphic element
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   235
        Override BlockPreviewDialog function
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   236
        """
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   237
        # Set graphic element displayed, creating a SFC transition
814
5743cbdff669 Integration of PLCOpenEditor into Beremiz
Laurent Bessard
parents:
diff changeset
   238
        self.Element = SFC_Transition(self.Preview)
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   239
        self.Element.SetType(*self.GetTransitionType())
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   240
        self.Element.SetPriority(self.Priority.GetValue())
1730
64d8f52bc8c8 clean-up for PEP8: fix W291 trailing whitespace
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 1696
diff changeset
   241
1252
18cd1357e8d3 Rewrite SFCTransitionDialog
Laurent Bessard
parents: 814
diff changeset
   242
        # Call BlockPreviewDialog function
2587
c67488bd8134 Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)
Edouard Tisserant
parents: 1853
diff changeset
   243
        BlockPreviewDialog.DrawPreview(self)