connectors/SchemeEditor.py
author Edouard Tisserant
Wed, 14 Nov 2018 14:09:18 +0100
changeset 2335 4262256e1d28
parent 2334 d1470c052662
child 2336 869a61616b42
permissions -rw-r--r--
IDManager.py : finished selector mode.
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# See COPYING file for copyrights details.

from __future__ import absolute_import

from itertools import repeat, izip_longest
from functools import partial
import wx

from controls.IDManager import IDManager

class SchemeEditor(wx.Panel):
    def __init__(self, scheme, parent, *args, **kwargs):
        self.txtctrls = {} 
        wx.Panel.__init__(self, parent, *args, **kwargs)

        self.fieldsizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=10)

        if self.EnableIDSelector:
            self.model = self.model + [("ID", _("ID:"))]

        for tag, label in self.model:
            txtctrl = wx.TextCtrl(parent=self, size=wx.Size(200, -1))
            self.txtctrls[tag] = txtctrl
            for win, flag in [
                (wx.StaticText(self, label=label), wx.ALIGN_CENTER_VERTICAL),
                (txtctrl, wx.GROW)]:
                self.fieldsizer.AddWindow(win, flag=flag)

        self.fieldsizer.AddSpacer(20)

        if self.EnableIDSelector:
            self.mainsizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=10)
            self.mainsizer.AddSizer(self.fieldsizer)
            self.idselector = IDManager(
                self, parent.ctr,
                # use a callafter, as editor can be deleted by calling SetURI
                partial(wx.CallAfter, parent.SetURI),
                self.txtctrls[tag].SetValue)
            self.mainsizer.AddWindow(self.idselector)
            self.SetSizer(self.mainsizer)
        else:
            self.SetSizer(self.fieldsizer)

    def SetFields(self, fields):
        for tag, label in self.model:
            self.txtctrls[tag].SetValue(fields[tag])

    def GetFields(self):
        return {tag: self.txtctrls[tag].GetValue() for tag,label in self.model}