import sys import json import time import core.theme import core.event import util.format def dump_json(obj): return obj.dict() def assign(src, dst, key, src_key=None, default=None): if not src_key: if key.startswith('_'): src_key = key else: src_key = key.replace('_', '-') # automagically replace _ with - for k in src_key if isinstance(src_key, list) else [src_key]: if k in src: dst[key] = src[k] return if default is not None: dst[key] = default class block(object): __COMMON_THEME_FIELDS = [ 'separator', 'separator-block-width', 'default-separators', 'border-top', 'border-left', 'border-right', 'border-bottom', 'fg', 'bg', 'padding', 'prefix', 'suffix' ] def __init__(self, theme, module, widget): self.__attributes = {} for key in self.__COMMON_THEME_FIELDS: tmp = theme.get(key, widget) if tmp is not None: self.__attributes[key] = tmp self.__attributes['name'] = module.id self.__attributes['instance'] = widget.id self.__attributes['prev-bg'] = theme.get('bg', 'previous') def set(self, key, value): self.__attributes[key] = value def is_pango(self, attr): if isinstance(attr, dict) and 'pango' in attr: return True return False def pangoize(self, text): if not self.is_pango(text): return text self.__attributes['markup'] = 'pango' attr = dict(text['pango']) text = attr.get('full_text', '') if 'full_text' in attr: del attr['full_text'] result = '