| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import os
- import shutil
- from pathlib import Path
- HOME = Path.home()
- RESOURCES_PATH = os.path.join(HOME, '.qt_material')
- ########################################################################
- class ResourseGenerator:
- """"""
- # ----------------------------------------------------------------------
- def __init__(self, primary, secondary, disabled, source, parent='theme'):
- """Constructor"""
- if parent.startswith('/'):
- self.index = parent
- if parent.startswith('.'):
- self.index = parent[1:]
- else:
- self.index = os.path.join(RESOURCES_PATH, parent)
- self.contex = [
- (os.path.join(self.index, 'disabled'), disabled),
- (os.path.join(self.index, 'primary'), primary),
- ]
- self.source = source
- self.secondary = secondary
- for folder, _ in self.contex:
- shutil.rmtree(folder, ignore_errors=True)
- os.makedirs(folder, exist_ok=True)
- # ----------------------------------------------------------------------
- def generate(self):
- """"""
- for icon in os.listdir(self.source):
- if not icon.endswith('.svg'):
- continue
- with open(os.path.join(self.source, icon), 'r') as file_input:
- content_original = file_input.read()
- for folder, color in self.contex:
- new_content = self.replace_color(content_original, color)
- new_content = self.replace_color(
- new_content, self.secondary, '#ff0000')
- file_to_write = os.path.join(folder, icon)
- with open(file_to_write, 'w') as file_output:
- file_output.write(new_content)
- # ----------------------------------------------------------------------
- def replace_color(self, content, replace, color='#0000ff'):
- """"""
- colors = [color] + [''.join(list(color)[:i] +
- ['\\\n'] + list(color)[i:]) for i in range(1, 7)]
- for c in colors:
- content = content.replace(c, replace)
- replace = '#ffffff00'
- color = '#000000'
- colors = [color] + [''.join(list(color)[:i] +
- ['\\\n'] + list(color)[i:]) for i in range(1, 7)]
- for c in colors:
- content = content.replace(c, replace)
- return content
|