[KiRi] Implemented the "all" layers case

This commit is contained in:
Salvador E. Tropea 2023-12-29 13:07:36 -03:00
parent 1f62308b8b
commit 2a8c699908
1 changed files with 24 additions and 13 deletions

View File

@ -20,6 +20,7 @@ Dependencies:
version: 2.2.0
"""
import datetime
import glob
import pwd
import os
from shutil import copy2, rmtree
@ -113,16 +114,18 @@ class KiRiOptions(VariantOptions):
def create_layers_incl(self, layers):
self.incl_file = None
if not isinstance(layers, type):
layers = Layer.solve(layers)
# TODO no list (ALL)
self._solved_layers = layers
logger.debug('Including layers:')
with NamedTemporaryFile(mode='w', suffix='.lst', delete=False) as f:
self.incl_file = f.name
for la in layers:
logger.debug('- {} ({})'.format(la.layer, la.id))
f.write(str(la.id)+'\n')
if isinstance(layers, type):
self._solved_layers = None
return False
layers = Layer.solve(layers)
self._solved_layers = layers
logger.debug('Including layers:')
with NamedTemporaryFile(mode='w', suffix='.lst', delete=False) as f:
self.incl_file = f.name
for la in layers:
logger.debug('- {} ({})'.format(la.layer, la.id))
f.write(str(la.id)+'\n')
return True
def do_cache(self, name, tmp_wd, hash):
name_copy = self.run_git(['ls-files', '--full-name', name])
@ -135,15 +138,23 @@ class KiRiOptions(VariantOptions):
subdir = os.path.join(hash[:7], '_KIRI_')
subdir_layers = os.path.join(self.cache_dir, subdir, 'pcb', 'layer-')
with open(os.path.join(self.cache_dir, subdir, 'pcb_layers'), 'wt') as f:
for la in self._solved_layers:
if os.path.isfile(subdir_layers+('%02d' % la.id)+'.svg'):
f.write(str(la.id)+'|'+la.layer+'\n')
if self._solved_layers:
for la in self._solved_layers:
if os.path.isfile(subdir_layers+('%02d' % la.id)+'.svg'):
f.write(str(la.id)+'|'+la.layer+'\n')
else:
discard = len(subdir_layers)
for la in sorted(glob.glob(subdir_layers+'??.svg')):
id = int(la[discard:discard+2])
f.write(str(id)+'|'+GS.board.GetLayerName(id)+'\n')
def solve_layer_colors(self):
# Color theme
self._color_theme = load_color_theme(self.color_theme)
if self._color_theme is None:
raise KiPlotConfigurationError("Unable to load `{}` color theme".format(self.color_theme))
if self._solved_layers is None:
return
# Assign a color if none was defined
layer_id2color = self._color_theme.layer_id2color
for la in self._solved_layers: