Enhance InfoDialog to display simple tables
This commit is contained in:
parent
072dc49e6c
commit
72220a5038
@ -26,6 +26,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import html
|
import html
|
||||||
import logging
|
import logging
|
||||||
|
import unicodedata
|
||||||
_LOG = logging.getLogger(".dialog")
|
_LOG = logging.getLogger(".dialog")
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@ -362,12 +363,37 @@ class InfoDialog:
|
|||||||
|
|
||||||
infoview = self.xml.get_object('infoview')
|
infoview = self.xml.get_object('infoview')
|
||||||
infobuffer = Gtk.TextBuffer()
|
infobuffer = Gtk.TextBuffer()
|
||||||
|
infoview.set_buffer(infobuffer)
|
||||||
|
|
||||||
|
if isinstance(infotext, str):
|
||||||
infobuffer.set_text(infotext)
|
infobuffer.set_text(infotext)
|
||||||
|
else:
|
||||||
|
for item in infotext:
|
||||||
|
enditer = infobuffer.get_end_iter()
|
||||||
|
if isinstance(item, str):
|
||||||
|
infobuffer.insert(enditer, item + '\n')
|
||||||
|
elif isinstance(item, list):
|
||||||
|
grid = Gtk.Grid()
|
||||||
|
grid.set_margin_start(6)
|
||||||
|
grid.set_margin_end(6)
|
||||||
|
grid.set_column_spacing(12)
|
||||||
|
if unicodedata.bidirectional(item[0][0][0]) == 'R':
|
||||||
|
grid.set_direction(Gtk.TextDirection.RTL)
|
||||||
|
for offset_y, row in enumerate(item):
|
||||||
|
for offset_x, col in enumerate(row):
|
||||||
|
cell = Gtk.Label(col)
|
||||||
|
cell.set_halign(Gtk.Align.END)
|
||||||
|
grid.attach(cell, offset_x, offset_y, 1, 1)
|
||||||
|
grid.show_all()
|
||||||
|
anchor = infobuffer.create_child_anchor(enditer)
|
||||||
|
infoview.add_child_at_anchor(grid, anchor)
|
||||||
|
enditer = infobuffer.get_end_iter()
|
||||||
|
infobuffer.insert(enditer, '\n')
|
||||||
|
|
||||||
if monospaced:
|
if monospaced:
|
||||||
startiter, enditer = infobuffer.get_bounds()
|
startiter, enditer = infobuffer.get_bounds()
|
||||||
tag = infobuffer.create_tag(family="Monospace")
|
tag = infobuffer.create_tag(family="Monospace")
|
||||||
infobuffer.apply_tag(tag, startiter, enditer)
|
infobuffer.apply_tag(tag, startiter, enditer)
|
||||||
infoview.set_buffer(infobuffer)
|
|
||||||
|
|
||||||
if parent:
|
if parent:
|
||||||
self.top.set_transient_for(parent)
|
self.top.set_transient_for(parent)
|
||||||
|
Loading…
Reference in New Issue
Block a user