Add side argument in renderer.render() method

This commit is contained in:
Kim Silkebækken 2013-01-22 09:03:34 +01:00
parent 3ee6e55025
commit 2159814076
2 changed files with 29 additions and 25 deletions

View File

@ -29,7 +29,7 @@ class Renderer(object):
else: else:
return self.theme return self.theme
def render(self, mode, width=None, theme=None, segments=None): def render(self, mode, width=None, theme=None, segments=None, side=None):
'''Render all segments. '''Render all segments.
When a width is provided, low-priority segments are dropped one at When a width is provided, low-priority segments are dropped one at
@ -39,7 +39,7 @@ class Renderer(object):
reached. reached.
''' '''
theme = theme or self.get_theme() theme = theme or self.get_theme()
segments = segments or theme.get_segments() segments = segments or theme.get_segments(side)
# Handle excluded/included segments for the current mode # Handle excluded/included segments for the current mode
segments = [segment for segment in segments\ segments = [segment for segment in segments\

View File

@ -15,26 +15,30 @@ class Theme(object):
def __init__(self, ext, colorscheme, theme_config, common_config): def __init__(self, ext, colorscheme, theme_config, common_config):
self.colorscheme = colorscheme self.colorscheme = colorscheme
self.dividers = theme_config.get('dividers', common_config['dividers']) self.dividers = theme_config.get('dividers', common_config['dividers'])
self.segments = [] self.segments = {
'left': [],
'right': [],
}
self.EMPTY_SEGMENT = { self.EMPTY_SEGMENT = {
'contents': None, 'contents': None,
'highlight': defaultdict(lambda: {'fg': False, 'bg': False, 'attr': 0}) 'highlight': defaultdict(lambda: {'fg': False, 'bg': False, 'attr': 0})
} }
get_segment = Segment(ext, common_config['paths'], colorscheme, theme_config.get('default_module')).get get_segment = Segment(ext, common_config['paths'], colorscheme, theme_config.get('default_module')).get
for side in ['left', 'right']: for side in ['left', 'right']:
self.segments.extend((get_segment(segment, side) for segment in theme_config['segments'].get(side, []))) self.segments[side].extend((get_segment(segment, side) for segment in theme_config['segments'].get(side, [])))
def get_divider(self, side='left', type='soft'): def get_divider(self, side='left', type='soft'):
'''Return segment divider.''' '''Return segment divider.'''
return self.dividers[side][type] return self.dividers[side][type]
def get_segments(self): def get_segments(self, side=None):
'''Return all segments. '''Return all segments.
Function segments are called, and all segments get their before/after Function segments are called, and all segments get their before/after
and ljust/rjust properties applied. and ljust/rjust properties applied.
''' '''
for segment in self.segments: for side in [side] if side else ['left', 'right']:
for segment in self.segments[side]:
if segment['type'] == 'function': if segment['type'] == 'function':
contents = segment['contents_func'](**segment['args']) contents = segment['contents_func'](**segment['args'])
if contents is None: if contents is None: