connectors/WAMP/dialog.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Tue, 26 Jun 2018 14:48:44 +0300
changeset 2228 12cb48823b8c
parent 2182 eeca1aff0691
permissions -rw-r--r--
Fix size of ProjectDialog used by PLCOpenEditor

Disable scrolling for ProjectDialog, because otherwise very very small
windows is created.
This regression was introduced by 5701225 ("replaced normal panel with scrolled panel under project
properties").
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Copyright (C) 2018: Smarteh
#
# See COPYING file for copyrights details.


from __future__ import absolute_import
from __future__ import print_function

import wx
from zope.interface import implementer

from controls.UriLocationEditor import IConnectorPanel

URITypes = ["WAMP", "WAMPS"]


def WAMP_connector_dialog(confnodesroot):
    [ID_IPTEXT, ID_PORTTEXT, ID_REALMTEXT, ID_WAMPIDTEXT, ID_SECURECHECKBOX] = [wx.NewId() for _init_ctrls in range(5)]

    @implementer(IConnectorPanel)
    class WAMPConnectorPanel(wx.Panel):
        def __init__(self, typeConnector, parrent, *args, **kwargs):
            self.type = typeConnector
            self.parrent = parrent
            wx.Panel.__init__(self, parrent, *args, **kwargs)
            self._init_ctrls()
            self._init_sizers()
            self.uri = None

        def _init_ctrls(self):
            self.IpText = wx.TextCtrl(parent=self, id=ID_IPTEXT, size=wx.Size(200, -1))
            self.PortText = wx.TextCtrl(parent=self, id=ID_PORTTEXT, size=wx.Size(200, -1))
            self.RealmText = wx.TextCtrl(parent=self, id=ID_REALMTEXT, size=wx.Size(200, -1))
            self.WAMPIDText = wx.TextCtrl(parent=self, id=ID_WAMPIDTEXT, size=wx.Size(200, -1))
            self.SecureCheckbox = wx.CheckBox(self, ID_SECURECHECKBOX, _("Is connection secure?"))

        def _init_sizers(self):
            self.mainSizer = wx.FlexGridSizer(cols=2, hgap=10, rows=5, vgap=10)
            self.mainSizer.AddWindow(wx.StaticText(self, label=_("URI host:")),
                                     flag=wx.ALIGN_CENTER_VERTICAL)
            self.mainSizer.AddWindow(self.IpText, flag=wx.GROW)

            self.mainSizer.AddWindow(wx.StaticText(self, label=_("URI port:")),
                                     flag=wx.ALIGN_CENTER_VERTICAL)
            self.mainSizer.AddWindow(self.PortText, flag=wx.GROW)

            self.mainSizer.AddWindow(wx.StaticText(self, label=_("Realm:")),
                                     flag=wx.ALIGN_CENTER_VERTICAL)
            self.mainSizer.AddWindow(self.RealmText, flag=wx.GROW)

            self.mainSizer.AddWindow(wx.StaticText(self, label=_("WAMP ID:")),
                                     flag=wx.ALIGN_CENTER_VERTICAL)
            self.mainSizer.AddWindow(self.WAMPIDText, flag=wx.GROW)

            self.mainSizer.AddWindow(wx.StaticText(self, label=""), flag=wx.ALIGN_CENTER_VERTICAL)
            self.mainSizer.AddWindow(self.SecureCheckbox, flag=wx.GROW)

            self.SetSizer(self.mainSizer)

        def SetURI(self, uri):
            self.uri = uri
            uri_list = uri.strip().split(":")
            length = len(uri_list)

            if length > 0:
                if uri_list[0] == URITypes[1]:
                    self.SecureCheckbox.SetValue(True)

                if length > 2:
                    self.IpText.SetValue(uri_list[1].strip("/"))
                    wampSett = uri_list[2].split("#")
                    length2 = len(wampSett)
                    if length2 > 0:
                        self.PortText.SetValue(wampSett[0])
                        if length2 > 1:
                            self.RealmText.SetValue(wampSett[1])
                            if length2 > 2:
                                self.WAMPIDText.SetValue(wampSett[2])

        def GetURI(self):
            if self.IpText.Validate():
                typeForURI = self.type + "S" if self.SecureCheckbox.GetValue() else self.type
                self.uri = typeForURI + "://" + self.IpText.GetValue() + ":" + self.PortText.GetValue() + "#" + self.RealmText.GetValue() + "#" + self.WAMPIDText.GetValue()
                return self.uri
            else:
                return ""

    return WAMPConnectorPanel("WAMP", confnodesroot)