Philipp Hörist pushed to branch master at gajim / gajim


Commits:
23358e1f by Philipp Hörist at 2024-09-10T16:41:06+02:00
imprv: Dataforms: Improve read only form presentation

Fixes #11758

- - - - -


2 changed files:

- gajim/gtk/dataform.py
- test/dialogs/dataform.py


Changes:

=====================================
gajim/gtk/dataform.py
=====================================
@@ -426,7 +426,7 @@ def __init__(self,
 
         if self.read_only:
             label = _('Yes') if field.value else _('No')
-            self._widget = Gtk.Label(label=label)
+            self._widget = Gtk.Label(label=label, selectable=True)
             self._widget.set_xalign(0)
         else:
             self._widget = Gtk.CheckButton()
@@ -481,6 +481,12 @@ def __init__(self,
         Field.__init__(self, field, form_grid, options)
 
         self._unique = treeview
+
+        if self.read_only:
+            self._widget = Gtk.Label(label=field.value, selectable=True)
+            self._widget.set_xalign(0)
+            return
+
         if treeview:
             self._setup_treeview(field)
         else:
@@ -621,12 +627,16 @@ def __init__(self,
         cell.connect('toggled', self._toggled)
         col.pack_start(cell, True)
         col.set_attributes(cell, active=3)
-        self.append_column(col)
+
+        if not multi_field.read_only:
+            self.append_column(col)
 
         self.set_headers_visible(False)
 
         for option in field.options:
             label, value = option
+            if multi_field.read_only and value not in field.values:
+                continue
             self._store.append(
                 [label, value, label, value in field.values])
 
@@ -691,7 +701,9 @@ def __init__(self,
         self._scrolled_window.add(self._treeview)
 
         self._widget.pack_start(self._scrolled_window, True, True, 0)
-        self._widget.pack_end(self._toolbar, False, False, 0)
+
+        if not self._read_only:
+            self._widget.pack_end(self._toolbar, False, False, 0)
 
     def _add_clicked(self, _widget: Gtk.ToolButton) -> None:
         model = self._treeview.get_model()
@@ -779,7 +791,7 @@ def __init__(self,
         Field.__init__(self, field, form_grid, options)
 
         if self.read_only:
-            self._widget = Gtk.Label(label=field.value)
+            self._widget = Gtk.Label(label=field.value, selectable=True)
             self._widget.set_xalign(0)
             self._widget.set_selectable(True)
         else:
@@ -804,9 +816,9 @@ def __init__(self,
                  ) -> None:
 
         TextSingleField.__init__(self, field, form_grid, options)
-        assert isinstance(self._widget, Gtk.Entry)
-        self._widget.set_input_purpose(Gtk.InputPurpose.PASSWORD)
-        self._widget.set_visibility(False)
+        if isinstance(self._widget, Gtk.Entry):
+            self._widget.set_input_purpose(Gtk.InputPurpose.PASSWORD)
+            self._widget.set_visibility(False)
 
 
 class JidSingleField(TextSingleField):


=====================================
test/dialogs/dataform.py
=====================================
@@ -105,6 +105,8 @@
          var='invitelist'>
     <desc>Tell all your friends about your new bot!</desc>
     <required/>
+    <value>jul...@capulet.com</value>
+    <value>benvo...@montague.net</value>
   </field>
   <field var='ocr' type='text-single' label='Fill in what you see'>
     <media xmlns='urn:xmpp:media-element'>



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/23358e1f9c4fdd936f446c86e36ad33566fe5290

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/23358e1f9c4fdd936f446c86e36ad33566fe5290
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- commits@gajim.org
To unsubscribe send an email to commits-le...@gajim.org

Reply via email to