| ... |
... |
@@ -22,6 +22,8 @@ from gajim.gtkgui_helpers import scale_pixbuf_from_data |
|
22
|
22
|
from gajim.common import app
|
|
23
|
23
|
from gajim.common.i18n import _
|
|
24
|
24
|
|
|
|
25
|
+from gajim.gtk.util import MultiLineLabel
|
|
|
26
|
+
|
|
25
|
27
|
|
|
26
|
28
|
class DataFormWidget(Gtk.ScrolledWindow):
|
|
27
|
29
|
|
| ... |
... |
@@ -32,6 +34,7 @@ class DataFormWidget(Gtk.ScrolledWindow): |
|
32
|
34
|
self.set_hexpand(True)
|
|
33
|
35
|
self.set_vexpand(True)
|
|
34
|
36
|
self.get_style_context().add_class('data-form-widget')
|
|
|
37
|
+ self.set_overlay_scrolling(False)
|
|
35
|
38
|
|
|
36
|
39
|
self._form_node = form_node
|
|
37
|
40
|
|
| ... |
... |
@@ -91,7 +94,7 @@ class FormGrid(Gtk.Grid): |
|
91
|
94
|
if form_node.title is not None:
|
|
92
|
95
|
self.title = form_node.title
|
|
93
|
96
|
self._add_row(Title(form_node.title))
|
|
94
|
|
- if form_node.instructions is not None:
|
|
|
97
|
+ if form_node.instructions:
|
|
95
|
98
|
self.instructions = form_node.instructions
|
|
96
|
99
|
self._add_row(Instructions(form_node.instructions))
|
|
97
|
100
|
|
| ... |
... |
@@ -194,6 +197,7 @@ class Field: |
|
194
|
197
|
self._field = field
|
|
195
|
198
|
self._form_grid = form_grid
|
|
196
|
199
|
self._validate_source_id = None
|
|
|
200
|
+ self._read_only = options.get('read-only', False)
|
|
197
|
201
|
|
|
198
|
202
|
self._label = Gtk.Label(label=field.label)
|
|
199
|
203
|
self._label.set_single_line_mode(False)
|
| ... |
... |
@@ -213,6 +217,10 @@ class Field: |
|
213
|
217
|
self._warning_box.set_size_request(16, -1)
|
|
214
|
218
|
self._warning_box.add(self._warning_image)
|
|
215
|
219
|
|
|
|
220
|
+ @property
|
|
|
221
|
+ def read_only(self):
|
|
|
222
|
+ return self._read_only
|
|
|
223
|
+
|
|
216
|
224
|
def add(self, form_grid, row_number):
|
|
217
|
225
|
form_grid.attach(self._label, 0, row_number, 1, 1)
|
|
218
|
226
|
form_grid.attach_next_to(self._widget,
|
| ... |
... |
@@ -262,9 +270,14 @@ class BooleanField(Field): |
|
262
|
270
|
def __init__(self, field, form_grid, options):
|
|
263
|
271
|
Field.__init__(self, field, form_grid, options)
|
|
264
|
272
|
|
|
265
|
|
- self._widget = Gtk.CheckButton()
|
|
266
|
|
- self._widget.set_active(field.value)
|
|
267
|
|
- self._widget.connect('toggled', self._toggled)
|
|
|
273
|
+ if self.read_only:
|
|
|
274
|
+ label = _('Yes') if field.value else _('No')
|
|
|
275
|
+ self._widget = Gtk.Label(label=label)
|
|
|
276
|
+ self._widget.set_xalign(0)
|
|
|
277
|
+ else:
|
|
|
278
|
+ self._widget = Gtk.CheckButton()
|
|
|
279
|
+ self._widget.set_active(field.value)
|
|
|
280
|
+ self._widget.connect('toggled', self._toggled)
|
|
268
|
281
|
|
|
269
|
282
|
def _toggled(self, _widget):
|
|
270
|
283
|
self._field.value = self._widget.get_active()
|
| ... |
... |
@@ -465,9 +478,13 @@ class TextSingleField(Field): |
|
465
|
478
|
def __init__(self, field, form_grid, options):
|
|
466
|
479
|
Field.__init__(self, field, form_grid, options)
|
|
467
|
480
|
|
|
468
|
|
- self._widget = Gtk.Entry()
|
|
469
|
|
- self._widget.set_text(field.value)
|
|
470
|
|
- self._widget.connect('changed', self._changed)
|
|
|
481
|
+ if self.read_only:
|
|
|
482
|
+ self._widget = Gtk.Label(label=field.value)
|
|
|
483
|
+ self._widget.set_xalign(0)
|
|
|
484
|
+ else:
|
|
|
485
|
+ self._widget = Gtk.Entry()
|
|
|
486
|
+ self._widget.set_text(field.value)
|
|
|
487
|
+ self._widget.connect('changed', self._changed)
|
|
471
|
488
|
|
|
472
|
489
|
def _changed(self, _widget):
|
|
473
|
490
|
self._field.value = self._widget.get_text()
|
| ... |
... |
@@ -498,10 +515,16 @@ class TextMultiField(Field): |
|
498
|
515
|
self._widget.set_min_content_height(100)
|
|
499
|
516
|
self._widget.set_max_content_height(300)
|
|
500
|
517
|
|
|
501
|
|
- self._textview = Gtk.TextView()
|
|
502
|
|
- self._textview.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
|
|
503
|
|
- self._textview.get_buffer().set_text(field.value)
|
|
504
|
|
- self._textview.get_buffer().connect('changed', self._changed)
|
|
|
518
|
+ if self.read_only:
|
|
|
519
|
+ self._textview = MultiLineLabel(label=field.value)
|
|
|
520
|
+ self._textview.set_selectable(True)
|
|
|
521
|
+ self._textview.set_xalign(0)
|
|
|
522
|
+ self._textview.set_yalign(0)
|
|
|
523
|
+ else:
|
|
|
524
|
+ self._textview = Gtk.TextView()
|
|
|
525
|
+ self._textview.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
|
|
|
526
|
+ self._textview.get_buffer().set_text(field.value)
|
|
|
527
|
+ self._textview.get_buffer().connect('changed', self._changed)
|
|
505
|
528
|
|
|
506
|
529
|
self._widget.add(self._textview)
|
|
507
|
530
|
|