@@ -458,15 +458,19 @@ def __init__(self, display_name, key, callback):
458
458
459
459
class SeparatorListBoxRow(Gtk.ListBoxRow):
460
460
461
-
def __init__(self, display_name):
461
+
def set_markup(self, markup):
462
+
self.label.set_markup("<b>{}</b>".format(markup))
463
+
464
+
def __init__(self, display_name=None):
462
465
super().__init__(activatable=False, selectable=False)
463
466
464
-
label = Gtk.Label(xalign=0)
465
-
label.set_markup("<b>{}</b>".format(display_name))
467
+
self.label = Gtk.Label(xalign=0)
468
+
if display_name:
469
+
self.set_markup(display_name)
466
470
467
471
hbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
468
472
hbox.pack_start(Gtk.Label(), True, True, 2)
469
-
hbox.pack_start(label, True, True, 4)
473
+
hbox.pack_start(self.label, True, True, 4)
470
474
471
475
self.add(hbox)
472
476
@@ -480,15 +484,15 @@ class ThemeColorsList(Gtk.ScrolledWindow):
480
484
481
485
listbox = None
482
486
_all_rows = None
483
-
_no_gui_row = None
487
+
_error_messages_row = None
484
488
485
489
def color_edited(self, key, value):
486
490
self.theme[key] = value
487
491
self.color_edited_callback(self.theme)
488
492
489
493
def build_theme_model_rows(self):
490
-
self._no_gui_row = SeparatorListBoxRow(_("Can't Be Edited in GUI"))
491
-
self.listbox.add(self._no_gui_row)
494
+
self._error_messages_row = SeparatorListBoxRow()
495
+
self.listbox.add(self._error_messages_row)
492
496
self._all_rows = {}
493
497
for option_idx, theme_value in enumerate(THEME_MODEL):
494
498
key = theme_value.get('key')
@@ -576,10 +580,9 @@ def _callback(key, value):
576
580
577
581
def open_theme(self, theme):
578
582
self.theme = theme
583
+
error_messages = []
579
584
if "NOGUI" in theme:
580
-
self._no_gui_row.show()
581
-
else:
582
-
self._no_gui_row.hide()
585
+
error_messages.append(_("Can't Be Edited in GUI"))
583
586
for option_idx, theme_value in enumerate(THEME_MODEL):
584
587
key = theme_value.get('key')
585
588
row = self._all_rows.get(option_idx)
@@ -597,11 +600,23 @@ def open_theme(self, theme):
597
600
row.hide()
598
601
continue
599
602
if theme_value['type'] in ['color', 'options', 'bool', 'int', 'float', 'image_path']:
600
-
row.set_value(theme[key])
603
+
if key in theme:
604
+
row.set_value(theme[key])
605
+
else:
606
+
error_messages.append(
607
+
_("No plugins installed for {plugin_type}").format(
608
+
plugin_type=theme_value['display_name']
609
+
)
610
+
)
601
611
row.show()
612
+
if error_messages:
613
+
self._error_messages_row.set_markup('\n'.join(error_messages))
614
+
self._error_messages_row.show()
615
+
else:
616
+
self._error_messages_row.hide()
602
617
603
618
def hide_all_rows(self):
604
-
self._no_gui_row.hide()
619
+
self._error_messages_row.hide()
605
620
for option_idx, _theme_value in enumerate(THEME_MODEL):
606
621
row = self._all_rows.get(option_idx)
607
622
if not row:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4