gtk-stream 0.10__py3-none-any.whl → 0.11.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
gtk_stream/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.10'
16
- __version_tuple__ = version_tuple = (0, 10)
15
+ __version__ = version = '0.11.1'
16
+ __version_tuple__ = version_tuple = (0, 11, 1)
gtk_stream/application.py CHANGED
@@ -19,14 +19,33 @@ from . import Gtk, GLib, Gdk
19
19
  from .common import printEvent
20
20
  from .properties import parse_property, get_prop_type, set_parse_prop
21
21
 
22
- def piloted(f):
22
+ class _Object:
23
+ pass
24
+
25
+ def app_message(name, store = None):
23
26
  """A decorator for methods that are both called from the pilot
24
27
  application and need access to the gtk main thread"""
25
- def ret(self, *args, **kwargs):
26
- def cb():
27
- f(self, *args, **kwargs)
28
- self.run_when_idle(cb)
29
- return ret
28
+ def app_message_f(f):
29
+ def ret(self, *args, **kwargs):
30
+ def cb():
31
+ f(self, *args, **kwargs)
32
+ self.run_when_idle(cb)
33
+ ret.__tag_name__ = name
34
+ ret.__store__ = store
35
+ return ret
36
+ return app_message_f
37
+
38
+ def single_store():
39
+ store = _Object()
40
+ def setChild(child):
41
+ store.child = child
42
+ return (lambda: store.child, setChild, None)
43
+ def multiple_store():
44
+ children = []
45
+ return (lambda: children, children.append, None)
46
+ def style_store():
47
+ style = []
48
+ return (lambda: " ".join(style),None, style.append)
30
49
 
31
50
  class GtkStreamApp(Gtk.Application):
32
51
  def __init__(self, logger, name = None, **kwargs):
@@ -57,7 +76,7 @@ class GtkStreamApp(Gtk.Application):
57
76
  if id is not None:
58
77
  self.namedWidgets[id] = w
59
78
 
60
- @piloted
79
+ @app_message('file-dialog')
61
80
  def openFileDialog(self, id, parent):
62
81
  dialog = Gtk.FileDialog()
63
82
  dialog.props.modal = True
@@ -72,45 +91,50 @@ class GtkStreamApp(Gtk.Application):
72
91
 
73
92
  dialog.open(parent = self.namedWindows[parent], callback = on_choose)
74
93
 
75
- @piloted
94
+ @app_message('window', single_store)
76
95
  def newWindow(self, document, id, **attrs):
77
96
  win = Gtk.Window(application=self)
78
97
  for (attr_name, attr_val) in attrs.items():
98
+ self.logger.debug("Setting attr '%s' on window", attr_name)
79
99
  set_parse_prop(self, win, attr_name, attr_val)
80
100
  self.namedWindows[id] = win
81
101
  win.set_child(document.render())
82
102
  win.connect('close-request', printEvent(self.logger, 'close-request', id))
83
103
  win.present()
84
104
 
85
- @piloted
105
+ @app_message('style', style_store)
86
106
  def addStyle(self, style):
87
107
  provider = Gtk.CssProvider()
88
108
  provider.load_from_data(style)
89
109
  Gtk.StyleContext.add_provider_for_display(Gdk.Display.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
90
110
 
91
- @piloted
111
+ @app_message('add-icon-path')
92
112
  def addIconPath(self, path):
93
113
  theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default())
94
114
  theme.add_search_path(path)
95
115
 
96
- @piloted
116
+ @app_message('close-window')
97
117
  def closeWindow(self, id):
98
118
  self.namedWindows[id].close()
99
119
 
100
- @piloted
120
+ @app_message('remove')
101
121
  def removeWidget(self, id):
102
122
  w = self.namedWidgets[id]
103
123
  w.get_parent().remove(w)
104
124
 
105
- @piloted
106
- def insertWidget(self, to, document):
107
- if to in self.namedWidgets:
108
- w = self.namedWidgets[to]
125
+ @app_message('insert', multiple_store)
126
+ def insertWidgets(self, documents, into):
127
+ for doc in documents:
128
+ self.insertWidget(doc, into)
129
+
130
+ def insertWidget(self, document, into):
131
+ if into in self.namedWidgets:
132
+ w = self.namedWidgets[into]
109
133
  w.insert_child(document)
110
134
  else:
111
- raise Exception(f"Error: unknown widget id '{to}'")
135
+ raise Exception(f"Error: unknown widget id '{into}'")
112
136
 
113
- @piloted
137
+ @app_message('set-prop')
114
138
  def setProp(self, id, name, value):
115
139
  w = self.namedWidgets[id]
116
140
  w.set_property(name, parse_property(get_prop_type(w.__class__, name), value)(self))
@@ -6,6 +6,7 @@ from .classes.ProgressBar import ProgressBar
6
6
  from .classes.Separator import Separator
7
7
 
8
8
  from .classes.Button import Button, LinkButton
9
+ from .classes.Scale import Scale
9
10
  from .classes.Dropdown import Dropdown, Item
10
11
  from .classes.Switch import Switch
11
12
  from .classes.Entry import Entry
@@ -15,7 +15,6 @@
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
17
  from ... import Gtk
18
- from ...common import printEvent
19
18
  from .. import Document
20
19
 
21
20
  class Button(Document):
@@ -24,7 +23,7 @@ class Button(Document):
24
23
  super().__init__(app, id = id, **kwargs)
25
24
  def render_raw(self):
26
25
  button = Gtk.Button()
27
- button.connect('clicked', printEvent(self.app.logger, 'clicked', self.id))
26
+ self.connect_event(button, 'clicked', 'clicked')
28
27
  return button
29
28
  def insert_child(self, w, d):
30
29
  w.set_child(d.render())
@@ -35,7 +34,9 @@ class LinkButton(Button):
35
34
  super().__init__(app, id=id, **kwargs)
36
35
  def render_raw(self):
37
36
  button = Gtk.LinkButton()
38
- button.connect('activate-link', printEvent(self.app.logger, 'clicked', self.id, True))
37
+ self.connect_event(
38
+ button, 'activate-link', 'clicked',
39
+ retval = True)
39
40
  return button
40
41
  def insert_child(self, w, d):
41
42
  w.set_child(d.render())
@@ -15,15 +15,21 @@
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
17
  from ...properties import parse_property, get_prop_type
18
+ from ...common import printEvent
18
19
 
19
20
  class Document:
20
21
  __g_class__ = None
21
22
  def __init__(self, app, id = None, **attrs):
22
23
  self.id = id
23
24
  self.app = app
24
- self.props = { attr: parse_property(get_prop_type(self.__g_class__, attr), val) for (attr, val) in attrs.items() }
25
+ self.props = {
26
+ attr: parse_property(get_prop_type(self.__g_class__, attr), val)
27
+ for (attr, val) in attrs.items()
28
+ }
25
29
  self.children = []
26
30
 
31
+ def connect_event(self, w, event, name, **printEvent_kwargs):
32
+ w.connect(event, printEvent(self.app.logger, name, self.id, **printEvent_kwargs))
27
33
  def add_child(self, child):
28
34
  self.children.append(child)
29
35
 
@@ -16,7 +16,6 @@
16
16
 
17
17
  from ... import Gtk, Gio, GObject
18
18
  from .. import Document
19
- from ...common import printEvent
20
19
 
21
20
  class Item(Document):
22
21
  def __init__(self, app, value, **kwargs):
@@ -57,9 +56,14 @@ class Dropdown(Document):
57
56
  factory.connect("setup", on_list_setup)
58
57
  factory.connect("bind", on_list_bind)
59
58
 
60
- ret = Gtk.DropDown(model=model, expression=Gtk.PropertyExpression.new(_ItemObject, None, 'item_value'), factory=factory)
59
+ ret = Gtk.DropDown(
60
+ model=model,
61
+ expression=Gtk.PropertyExpression.new(_ItemObject, None, 'item_value'),
62
+ factory=factory)
61
63
 
62
- ret.connect('notify::selected-item', printEvent(self.app.logger, 'selected', self.id, get_data = lambda w,_: w.get_selected_item().value))
64
+ self.connect_event(
65
+ ret, 'notify::selected-item', 'selected',
66
+ get_data = lambda w,_: w.get_selected_item().value)
63
67
  return ret
64
68
  def insert_child(self, w, d):
65
69
  pass
@@ -15,7 +15,6 @@
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
17
  from ... import Gtk
18
- from ...common import printEvent
19
18
  from .. import Document
20
19
 
21
20
  class Entry(Document):
@@ -24,5 +23,8 @@ class Entry(Document):
24
23
  super().__init__(app, id = id, **kwargs)
25
24
  def render_raw(self):
26
25
  entry = Gtk.Entry()
27
- entry.connect('changed', printEvent(self.app.logger, 'changed', self.id, get_data = lambda _: entry.get_text()))
26
+ self.connect_event(
27
+ entry, 'changed', 'changed',
28
+ get_data = lambda _: entry.get_text()
29
+ )
28
30
  return entry
@@ -0,0 +1,30 @@
1
+ # Gtk-Stream : A stream-based GUI protocol
2
+ # Copyright (C) 2024 Marc Coiffier
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
+
17
+ from ... import Gtk
18
+ from .. import Document
19
+
20
+ class Scale(Document):
21
+ __g_class__ = Gtk.Scale
22
+ def __init__(self, app, id, **kwargs):
23
+ super().__init__(app, id = id, **kwargs)
24
+ def render_raw(self):
25
+ scale = Gtk.Scale()
26
+ self.connect_event(
27
+ scale, 'value-changed', 'changed',
28
+ get_data = lambda _: str(scale.get_value())
29
+ )
30
+ return scale
@@ -15,7 +15,6 @@
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
17
  from ... import Gtk
18
- from ...common import printEvent
19
18
  from .. import Document
20
19
  from ...properties import parse_property
21
20
 
@@ -26,7 +25,8 @@ class Switch(Document):
26
25
  self.managed = parse_property('gboolean', managed)(app)
27
26
  def render_raw(self):
28
27
  ret = Gtk.Switch()
29
- ret.connect('state-set', printEvent(self.app.logger, 'switch', self.id,
30
- retval = self.managed,
31
- get_data = lambda _,state: "on" if state else "off"))
28
+ self.connect_event(
29
+ ret, 'state-set', 'switch',
30
+ retval = self.managed,
31
+ get_data = lambda _,state: "on" if state else "off")
32
32
  return ret
gtk_stream/parser.py CHANGED
@@ -14,6 +14,7 @@
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <https://www.gnu.org/licenses/>.
16
16
 
17
+ import functools
17
18
  import threading
18
19
  import signal
19
20
  import sys
@@ -24,9 +25,6 @@ from . import documents as docs
24
25
 
25
26
  from .application import GtkStreamApp
26
27
 
27
- class _Object:
28
- pass
29
-
30
28
  WIDGET_DOCUMENTS = {
31
29
  'progress-bar' : docs.ProgressBar,
32
30
  'label' : docs.Label,
@@ -49,7 +47,9 @@ WIDGET_DOCUMENTS = {
49
47
  'stack' : docs.Stack,
50
48
  'flow-box' : docs.FlowBox,
51
49
  'flow-box-prepend': docs.FlowBoxPrepend,
52
- 'entry' : docs.Entry
50
+ 'entry' : docs.Entry,
51
+ 'scale' : docs.Scale
52
+
53
53
  }
54
54
 
55
55
  class GtkStreamXMLHandler(sax.ContentHandler):
@@ -109,90 +109,48 @@ class GtkStreamXMLHandler(sax.ContentHandler):
109
109
  self.quit_application()
110
110
  signal.signal(signal.SIGINT, on_sigint)
111
111
 
112
+ # Get all messages directly from the application
113
+ # class. This allows defining new messages without
114
+ # touching the parser
115
+ self.messages = {
116
+ f.__tag_name__: self.startMessage(functools.partial(f,self.app), f.__store__)
117
+ for f in GtkStreamApp.__dict__.values()
118
+ if hasattr(f, '__tag_name__')
119
+ }
120
+ self.logger.debug("Messages: %s", self.messages)
121
+
112
122
  self.transition_enter = self.transE_message
113
123
  self.transition_leave = self.transL_tag('application', self.transE_final, self.transL_final)
114
124
  case _:
115
125
  raise Exception("Error: expected 'application' tag")
116
- def transE_message(self, name, attrs):
117
- leave_parent = self.transition_leave
118
- match name:
119
- case 'style':
120
- style = _Object()
121
- style.chars = []
122
- def onchars(s):
123
- style.chars.append(s)
124
- def leave():
125
- self.transition_chars = self.ignore_chars
126
- self.app.addStyle(" ".join(style.chars))
127
- self.transition_chars = onchars
128
- self.transition_enter = self.transE_final
129
- self.transition_leave = self.transL_tag('style', self.transE_message, leave_parent, leave)
130
-
131
- case 'add-icon-path':
132
- if 'path' in attrs:
133
- def leave():
134
- self.app.addIconPath(attrs['path'])
135
- self.transition_enter = self.transE_final
136
- self.transition_leave = self.transL_tag('add-icon-path', self.transE_message, leave_parent, leave)
137
-
138
- case 'window':
139
- if 'id' in attrs:
140
- store = _Object()
141
- def leave():
142
- self.app.newWindow(store.child, **attrs)
143
- def setChild(c):
144
- store.child = c
145
- self.transition_enter = self.transE_addChild(setChild)
146
- self.transition_leave = self.transL_tag('window', self.transE_message, leave_parent, leave)
147
- else:
148
- raise Exception("Error: expected attribute 'id' in 'window' tag")
149
-
150
- case 'file-dialog':
151
- id = attrs.get('id')
152
- parent = attrs.get('parent')
153
- if id != None and parent != None:
154
- self.app.openFileDialog(id, parent)
155
- self.transition_enter = self.transE_final
156
- self.transition_leave = self.transL_tag('file-dialog', self.transE_message, leave_parent)
157
- else:
158
- raise Exception("Error: expected 'id' and 'parent' attributes on 'file-chooser'")
159
-
160
- case 'close-window':
161
- if 'id' in attrs:
162
- def leave():
163
- self.app.closeWindow(attrs['id'])
164
- self.transition_enter = self.transE_final
165
- self.transition_leave = self.transL_tag('close-window', self.transE_message, leave_parent, leave)
166
- else:
167
- raise Exception("Error: expected 'id' attribute in 'close-window' tag")
168
126
 
169
- case 'set-prop':
170
- self.app.setProp(**attrs)
127
+ def startMessage(self, f, child = None):
128
+ if child != None:
129
+ def ret(name,attrs):
130
+ getC, setC, setChars = child()
131
+ old_chars = self.transition_chars
132
+ def leave():
133
+ if setChars != None:
134
+ self.transition_chars = old_chars
135
+ f(getC(),**attrs)
136
+ if setChars != None:
137
+ self.transition_chars = setChars
138
+ self.transition_enter = self.transE_addChild(setC)
139
+ self.transition_leave = self.transL_tag(name, self.transE_message, self.transition_leave, leave)
140
+ else:
141
+ def ret(name, attrs):
142
+ def leave():
143
+ f(**attrs)
171
144
  self.transition_enter = self.transE_final
172
- self.transition_leave = self.transL_tag('set-prop', self.transE_message, leave_parent)
173
-
174
- case 'insert':
175
- if 'into' in attrs:
176
- children = []
177
- def leave():
178
- for child in children:
179
- self.app.insertWidget(attrs['into'], child)
180
- self.transition_enter = self.transE_addChild(lambda child: children.append(child))
181
- self.transition_leave = self.transL_tag('insert', self.transE_message, leave_parent, leave)
182
- else:
183
- raise Exception("Expected 'to' attribute of 'append' message")
184
-
185
- case 'remove':
186
- if 'id' in attrs:
187
- def leave():
188
- self.app.removeWidget(attrs['id'])
189
- self.transition_enter = self.transE_final
190
- self.transition_leave = self.transL_tag('remove', self.transE_message, leave_parent, leave)
191
- else:
192
- raise Exception("Expected 'id' attribute of 'remove' message")
145
+ self.transition_leave = self.transL_tag(name, self.transE_message, self.transition_leave, leave)
146
+ return ret
193
147
 
194
- case _:
195
- raise Exception(f"Error: unknown message '{name}'")
148
+ def transE_message(self, name, attrs):
149
+ start = self.messages.get(name)
150
+ if start != None:
151
+ start(name,attrs)
152
+ else:
153
+ raise Exception(f"Error: unknown message '{name}'")
196
154
 
197
155
  def transE_addChild(self, addChild):
198
156
  def ret(name, attrs):
@@ -204,7 +162,7 @@ class GtkStreamXMLHandler(sax.ContentHandler):
204
162
  self.transition_enter = self.transE_addChild(lambda child: doc.add_child(child))
205
163
  self.transition_leave = self.transL_tag(name, self.transE_addChild(addChild), leave_parent)
206
164
  else:
207
- raise Exception(f"Error: Unknown widget {name}")
165
+ raise Exception(f"Error: Unknown widget type '{name}'")
208
166
  return ret
209
167
 
210
168
  def characters(self, s):
gtk_stream/properties.py CHANGED
@@ -36,11 +36,24 @@ def _parse_searchMode_property(val):
36
36
  return _const(Gtk.StringFilterMatchMode.SUBSTRING)
37
37
  case _:
38
38
  return _const(Gtk.StringFilterMatchMode.PREFIX)
39
+ def _parse_adjustment_property(val):
40
+ adj = Gtk.Adjustment()
41
+ start, end, *rest = val.split(':')
42
+ adj.set_lower(int(start))
43
+ adj.set_upper(int(end))
44
+ if len(rest) > 0:
45
+ default = rest[0]
46
+ else:
47
+ default = start
48
+ adj.set_value(int(default))
49
+ return _const(adj)
39
50
  def _parse_css_classes_property(val):
40
51
  return _const(val.split())
41
52
  def _parse_widget_property(val):
42
53
  return lambda app: app.namedWidgets[val]
43
-
54
+ def _parse_window_property(val):
55
+ return lambda app: app.namedWindows[val]
56
+
44
57
  _PARSE_TYPE_PROPERTY = {
45
58
  'GStrv' : _parse_css_classes_property,
46
59
  'GtkOrientation' : _parse_orientation_property,
@@ -50,6 +63,8 @@ _PARSE_TYPE_PROPERTY = {
50
63
  'gboolean' : _parse_boolean_property,
51
64
  'GtkStringFilterMatchMode' : _parse_searchMode_property,
52
65
  'GtkWidget' : _parse_widget_property,
66
+ 'GtkWindow' : _parse_window_property,
67
+ 'GtkAdjustment' : _parse_adjustment_property,
53
68
  'gchararray' : _const,
54
69
  }
55
70
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gtk-stream
3
- Version: 0.10
3
+ Version: 0.11.1
4
4
  Summary: A simple stream-oriented GUI protocol
5
5
  Author-email: Marc Coiffier <marc.coiffier@univ-grenoble-alpes.fr>
6
6
  Project-URL: Homepage, https://coiffier.net/projects/gtk-stream/
@@ -0,0 +1,31 @@
1
+ gtk_stream/__init__.py,sha256=y6JLknVFexWrSo_Zl7-TXrPR6EQ5XVMeFO1bUzLN9Lg,98
2
+ gtk_stream/_version.py,sha256=GfnRHfD9z98AbNAoXaNE50CPUnbpEikyDWn-_mn0J2Q,413
3
+ gtk_stream/application.py,sha256=uFquTXCV0fbGlSURBmjrg9BK3Enf9N0_WKX6Lv-5Fko,4993
4
+ gtk_stream/command_line.py,sha256=Ej4mmPiuYjr5-1JrvjGK0BDitKUCfVEI9uHp1p_FAr4,1520
5
+ gtk_stream/common.py,sha256=xdscxYgBg_Ux6iyk26gB-AMSgoUIqlZUPgso5YS_gKE,2106
6
+ gtk_stream/parser.py,sha256=LOCGoTT_L5Qf29YJ2wFfTYLHtH0al-QjpFWf9HEHYxU,6561
7
+ gtk_stream/properties.py,sha256=Pgu59t3K-SkHXCZzkrk2DU8ODtjOhkZmf7dLqDYiDqc,3116
8
+ gtk_stream/documents/__init__.py,sha256=T9mIonSi9DWrpXQzbjq0s0TPU0hB7HylfhMA20OfWIg,831
9
+ gtk_stream/documents/classes/Box.py,sha256=d01o2-JQ3-k0VjvvY8E7mly-u_f1v1NqYz1IDjHZLUo,1381
10
+ gtk_stream/documents/classes/Button.py,sha256=21bVI7DUWmiusboxdsimTgcqKtLqzQydhS9ifIt4R64,1512
11
+ gtk_stream/documents/classes/Document.py,sha256=eZ-nT62UfO_ZUsxOR89hFLiBzpxMuNlbcjdZ4yJIzZo,2356
12
+ gtk_stream/documents/classes/Dropdown.py,sha256=8fIUX1HCWIjUfKLPy9NYsW6OskhkontoNDTsCZ7qKxw,2446
13
+ gtk_stream/documents/classes/Entry.py,sha256=KcBwjSu4tI30bQxPlSFSLPxFEUbTaqAdoAzd0XSQciY,1112
14
+ gtk_stream/documents/classes/FlowBox.py,sha256=UoVYS2j_osOV-IgbVoaqluTBCiaXus5dq2e9qhAu2Xo,1225
15
+ gtk_stream/documents/classes/Frame.py,sha256=zAZvsT-YTZMijsgk7p0YVf6siAmFoCCSXouZo9XDpsA,1222
16
+ gtk_stream/documents/classes/Grid.py,sha256=jDJ9U1GJZ45hi1VvPsCwFILN7CwEkgjqYqhTzMdtX9o,1249
17
+ gtk_stream/documents/classes/Label.py,sha256=bBNBTvGs6fM8uLf4EDb2Ro8FmCeS27cnU1Ao-44nRYs,1023
18
+ gtk_stream/documents/classes/Paned.py,sha256=q1goKJMWBg1d3hS0eanPBxzBqLB-Pz5hUnH9N-RXXh8,1392
19
+ gtk_stream/documents/classes/Picture.py,sha256=QCLQNuQxfXmaasd-bPgXxJZYyc1e1DQkLdxCZ39gvlI,1251
20
+ gtk_stream/documents/classes/ProgressBar.py,sha256=NPJtP3qaKiZUEAYEHZk4FEoWSFn2KVorI2SVb8cDnW0,966
21
+ gtk_stream/documents/classes/Scale.py,sha256=6rW6sBCdpPaqgDEGUPZi5UR8CT3bPmaZQqXXhnl-oaw,1124
22
+ gtk_stream/documents/classes/ScrolledWindow.py,sha256=WaTPgz6GBC-hjH83SQT2OGUdCapHAgO3xEmSMJZ8q70,1041
23
+ gtk_stream/documents/classes/Separator.py,sha256=uw_EgAKs_6pNA8nrOLzruIlJfk4uaogB0p_jeoY0PHM,960
24
+ gtk_stream/documents/classes/Stack.py,sha256=YA6NDzZL2u4Ko8GXtx8Or-jEWGMCEw2cC1HNkAMRw-8,1030
25
+ gtk_stream/documents/classes/Switch.py,sha256=jQVuxqS9Pmpp1ymB_dbJPxasJNpm4e35ry0JYPHdAsk,1275
26
+ gtk_stream/documents/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ gtk_stream-0.11.1.dist-info/METADATA,sha256=iwqbihyKY2PV24joIWUqAAt6D8npjUmm6T4GVOFCD4I,807
28
+ gtk_stream-0.11.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
29
+ gtk_stream-0.11.1.dist-info/entry_points.txt,sha256=PmhKTb4MMQM6dN2HJcoDSMI8L0lZIFIlFn-BgdfPDpo,60
30
+ gtk_stream-0.11.1.dist-info/top_level.txt,sha256=vE9zfHGe9Ke7FSe0wBK2WYJI-BpcQNu6xDC3Cu5O8rQ,11
31
+ gtk_stream-0.11.1.dist-info/RECORD,,
@@ -1,30 +0,0 @@
1
- gtk_stream/__init__.py,sha256=y6JLknVFexWrSo_Zl7-TXrPR6EQ5XVMeFO1bUzLN9Lg,98
2
- gtk_stream/_version.py,sha256=wg35lkz1DoondiGS1z7m4ZtbxPvMGnIj2qR4wzIH4-U,408
3
- gtk_stream/application.py,sha256=s-2A8JSSIum9QDo35oxri-10OLg5BUIfTKS0FZDQd6A,4114
4
- gtk_stream/command_line.py,sha256=Ej4mmPiuYjr5-1JrvjGK0BDitKUCfVEI9uHp1p_FAr4,1520
5
- gtk_stream/common.py,sha256=xdscxYgBg_Ux6iyk26gB-AMSgoUIqlZUPgso5YS_gKE,2106
6
- gtk_stream/parser.py,sha256=rcZtH0T5s6ttVXvbHZjX2hBoasWNbtDR5LEa8yiHUj4,8772
7
- gtk_stream/properties.py,sha256=oCG4EIMWS4WdKY4YzQZzllddoIY33GvnbgvMG3C5Muo,2630
8
- gtk_stream/documents/__init__.py,sha256=MVqnPXrTuoKyUHJ41jgqbFr3VA5JWfI6QFfXAIE6DuQ,789
9
- gtk_stream/documents/classes/Box.py,sha256=d01o2-JQ3-k0VjvvY8E7mly-u_f1v1NqYz1IDjHZLUo,1381
10
- gtk_stream/documents/classes/Button.py,sha256=0Cs5DOt-FoDVLWIktJHuH6OasI58TNI0Gs3uIKJDj2o,1563
11
- gtk_stream/documents/classes/Document.py,sha256=drWy-2HzgmpxSmRR27uIydlTJbaYTiRJPWwpELXrGSk,2135
12
- gtk_stream/documents/classes/Dropdown.py,sha256=1azU_iHbr_-099wj0_TDfDfZ5xKyh9xLFd5GvbNMw14,2443
13
- gtk_stream/documents/classes/Entry.py,sha256=MuhoUMAKKSj24KA77VCqBtedE_lStMrXvR-3wB9amSw,1137
14
- gtk_stream/documents/classes/FlowBox.py,sha256=UoVYS2j_osOV-IgbVoaqluTBCiaXus5dq2e9qhAu2Xo,1225
15
- gtk_stream/documents/classes/Frame.py,sha256=zAZvsT-YTZMijsgk7p0YVf6siAmFoCCSXouZo9XDpsA,1222
16
- gtk_stream/documents/classes/Grid.py,sha256=jDJ9U1GJZ45hi1VvPsCwFILN7CwEkgjqYqhTzMdtX9o,1249
17
- gtk_stream/documents/classes/Label.py,sha256=bBNBTvGs6fM8uLf4EDb2Ro8FmCeS27cnU1Ao-44nRYs,1023
18
- gtk_stream/documents/classes/Paned.py,sha256=q1goKJMWBg1d3hS0eanPBxzBqLB-Pz5hUnH9N-RXXh8,1392
19
- gtk_stream/documents/classes/Picture.py,sha256=QCLQNuQxfXmaasd-bPgXxJZYyc1e1DQkLdxCZ39gvlI,1251
20
- gtk_stream/documents/classes/ProgressBar.py,sha256=NPJtP3qaKiZUEAYEHZk4FEoWSFn2KVorI2SVb8cDnW0,966
21
- gtk_stream/documents/classes/ScrolledWindow.py,sha256=WaTPgz6GBC-hjH83SQT2OGUdCapHAgO3xEmSMJZ8q70,1041
22
- gtk_stream/documents/classes/Separator.py,sha256=uw_EgAKs_6pNA8nrOLzruIlJfk4uaogB0p_jeoY0PHM,960
23
- gtk_stream/documents/classes/Stack.py,sha256=YA6NDzZL2u4Ko8GXtx8Or-jEWGMCEw2cC1HNkAMRw-8,1030
24
- gtk_stream/documents/classes/Switch.py,sha256=OLCWWNeVyNrk4Tu3JDe64FqsLhedh3dDzKDKne2CyDw,1382
25
- gtk_stream/documents/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- gtk_stream-0.10.dist-info/METADATA,sha256=Tmq513moUwqczsg1EYEh0-eBcz-SJs3gTVAXUHGlt_Y,805
27
- gtk_stream-0.10.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
28
- gtk_stream-0.10.dist-info/entry_points.txt,sha256=PmhKTb4MMQM6dN2HJcoDSMI8L0lZIFIlFn-BgdfPDpo,60
29
- gtk_stream-0.10.dist-info/top_level.txt,sha256=vE9zfHGe9Ke7FSe0wBK2WYJI-BpcQNu6xDC3Cu5O8rQ,11
30
- gtk_stream-0.10.dist-info/RECORD,,