Create theme loading class
This class loads all segments from the theme, initializes the highlight group, assigns all necessary properties based on the JSON theme configuration, etc. By doing this we basically move the mksegment() functionality into the theme loader, so this function can be removed at the cost of making it more complicated to use Powerline without its theme functionality.
This commit is contained in:
parent
417f9a6909
commit
039526f720
|
@ -1,6 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import importlib
|
||||
|
||||
|
||||
class Theme(object):
|
||||
def __init__(self, ext, theme):
|
||||
pass
|
||||
self.segments = []
|
||||
|
||||
for side in ['left', 'right']:
|
||||
for segment in theme['segments'].get(side, []):
|
||||
contents = None
|
||||
segment_type = segment.get('type', 'function')
|
||||
|
||||
if segment_type == 'function':
|
||||
# Import segment function and assign it to the contents
|
||||
function_module = 'powerline.ext.{0}.segments'.format(ext)
|
||||
function_name = segment['name']
|
||||
contents = getattr(importlib.import_module(function_module), function_name)
|
||||
elif segment_type == 'string':
|
||||
contents = segment.get('contents')
|
||||
elif segment_type == 'filler':
|
||||
pass
|
||||
else:
|
||||
raise TypeError('Unknown segment type: {0}'.format(segment_type))
|
||||
|
||||
self.segments.append({
|
||||
'type': segment_type,
|
||||
'highlight': segment.get('highlight', segment.get('name')),
|
||||
'before': segment.get('before'),
|
||||
'after': segment.get('after'),
|
||||
'contents': contents,
|
||||
'args': segment.get('args', {}),
|
||||
'ljust': segment.get('ljust', False),
|
||||
'rjust': segment.get('rjust', False),
|
||||
'priority': segment.get('priority', -1),
|
||||
'draw_divider': segment.get('draw_divider', True),
|
||||
'side': side,
|
||||
'exclude_modes': segment.get('exclude_modes', []),
|
||||
'include_modes': segment.get('include_modes', []),
|
||||
})
|
||||
|
||||
def get_segments(self):
|
||||
return self.segments
|
||||
|
|
Loading…
Reference in New Issue