connectors/SchemeEditor.py
author Edouard Tisserant
Tue, 09 Apr 2019 13:05:35 +0200
changeset 2583 e172ab28d04e
parent 2537 eb4a4cc41914
child 3303 0ffb41625592
permissions -rw-r--r--
Continue fixing deadlock of previous commit, this time occuring when waiting for 'cleanup' python runtime call to finish. Now 'init' and 'cleanup' python runtime calls are called directly from main thread, and aren't anymore invoked in the context of wxMainloop and/or twisted reactor.
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     1
#!/usr/bin/env python
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     3
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     4
# See COPYING file for copyrights details.
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     5
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     6
from __future__ import absolute_import
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     7
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
     8
from functools import partial
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
     9
import wx
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    10
2336
869a61616b42 Renamed IDManager control into IDBrowser, because dialog will be named IDManager
Edouard Tisserant
parents: 2335
diff changeset
    11
from controls.IDBrowser import IDBrowser
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    12
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    13
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    14
class SchemeEditor(wx.Panel):
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    15
    def __init__(self, scheme, parent, *args, **kwargs):
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    16
        self.txtctrls = {}
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    17
        wx.Panel.__init__(self, parent, *args, **kwargs)
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    18
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    19
        self.fieldsizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=10)
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    20
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    21
        if self.EnableIDSelector:
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    22
            self.model = self.model + [("ID", _("ID:"))]
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    23
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    24
        for tag, label in self.model:
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    25
            txtctrl = wx.TextCtrl(parent=self, size=wx.Size(200, -1))
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    26
            self.txtctrls[tag] = txtctrl
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    27
            for win, flag in [
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    28
                    (wx.StaticText(self, label=label),
2537
eb4a4cc41914 Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2492
diff changeset
    29
                     wx.ALIGN_CENTER_VERTICAL),
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    30
                    (txtctrl, wx.GROW)]:
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    31
                self.fieldsizer.AddWindow(win, flag=flag)
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    32
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    33
        self.fieldsizer.AddSpacer(20)
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    34
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    35
        if self.EnableIDSelector:
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    36
            self.mainsizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=10)
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    37
            self.mainsizer.AddSizer(self.fieldsizer)
2336
869a61616b42 Renamed IDManager control into IDBrowser, because dialog will be named IDManager
Edouard Tisserant
parents: 2335
diff changeset
    38
            self.idselector = IDBrowser(
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    39
                self, parent.ctr,
2335
4262256e1d28 IDManager.py : finished selector mode.
Edouard Tisserant
parents: 2334
diff changeset
    40
                # use a callafter, as editor can be deleted by calling SetURI
4262256e1d28 IDManager.py : finished selector mode.
Edouard Tisserant
parents: 2334
diff changeset
    41
                partial(wx.CallAfter, parent.SetURI),
2537
eb4a4cc41914 Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 2492
diff changeset
    42
                self.txtctrls["ID"].SetValue)
2334
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    43
            self.mainsizer.AddWindow(self.idselector)
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    44
            self.SetSizer(self.mainsizer)
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    45
        else:
d1470c052662 Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents: 2329
diff changeset
    46
            self.SetSizer(self.fieldsizer)
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    47
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    48
    def SetFields(self, fields):
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    49
        for tag, _label in self.model:
2329
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    50
            self.txtctrls[tag].SetValue(fields[tag])
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    51
e5703dc8848e URI editor : Rewrote most of it, cleaner.
Edouard Tisserant
parents:
diff changeset
    52
    def GetFields(self):
2492
7dd551ac2fa0 check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents: 2336
diff changeset
    53
        return {tag: self.txtctrls[tag].GetValue() for tag, _label in self.model}