Un poco de trial & error y esto es lo obtenido:
class DefaultColorSettings(object): def __init__(self): def_settings = gtk.settings_get_default() color_scheme = def_settings.get_property("gtk-color-scheme").strip() color_scheme = color_scheme.split("\n") settings = {} for property in color_scheme: # property is of the type key: value property = property.split(": ") settings[property[0]] = property[1] self.tooltip_fg_color = gtk.gdk.color_parse(settings["tooltip_fg_color"]) self.selected_bg_color = gtk.gdk.color_parse(settings["selected_bg_color"]) self.tooltip_bg_color = gtk.gdk.color_parse(settings["tooltip_bg_color"]) self.base_color = gtk.gdk.color_parse(settings["base_color"]) self.fg_color = gtk.gdk.color_parse(settings["fg_color"]) self.text_color = gtk.gdk.color_parse(settings["text_color"]) self.selected_fg_color = gtk.gdk.color_parse(settings["selected_fg_color"]) self.bg_color = gtk.gdk.color_parse(settings["bg_color"])
Básicamente, todos los componentes que se configuran con los temas de GNOME llegan a nuestras aplicaciones a través de gtk.gdk.Screen. Con "settings_get_default" obtenemos distintos aspectos de la configuración del tema: colores, tamaños de iconos, sonidos, etc.
Para lo que nos incumbe ahora, obtenemos "gtk-color-scheme" el cual es un str con los distintos colores. En MCM mi solución fue la de crear una clase DefaultColorSettings y luego utilizar DefaultColorSettings.base_color para redibujar los campos a su estado original cada vez que cambiaba los colores de los mismos.
No hay comentarios:
Publicar un comentario