Mercurial > louis > kiibohd-kll
changeset 25:b3f267e61a0f
Adding name and file stacks and layer naming
- Name and kll filenames are treated as special variables
- Using the order of the stacks the compilation order can be inferred (useful for debugging)
- Layer names are finally implemented (instead of Layer 1, Layer 2, etc.)
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Mon, 16 Feb 2015 13:29:26 -0800 |
parents | 092deb852ad9 |
children | 07f27f57642f |
files | backends/kiibohd.py kll_lib/containers.py |
diffstat | 2 files changed, 49 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/backends/kiibohd.py Mon Feb 09 20:15:00 2015 -0800 +++ b/backends/kiibohd.py Mon Feb 16 13:29:26 2015 -0800 @@ -100,8 +100,21 @@ else: gitChangesStr = " None\n" + # Prepare BaseLayout and Layer Info + baseLayoutInfo = "" + defaultLayerInfo = "" + partialLayersInfo = "" + for file, name in zip( variables.baseLayout['*LayerFiles'], variables.baseLayout['*NameStack'] ): + baseLayoutInfo += "// {0}\n// {1}\n".format( name, file ) + for file, name in zip( variables.layerVariables[0]['*LayerFiles'], variables.layerVariables[0]['*NameStack'] ): + defaultLayerInfo += "// {0}\n// {1}\n".format( name, file ) + for layer in range( 1, len( variables.layerVariables ) ): + partialLayersInfo += "// Layer {0}\n".format( layer ) + for file, name in zip( variables.layerVariables[ layer ]['*LayerFiles'], variables.layerVariables[ layer ]['*NameStack'] ): + partialLayersInfo += "// {0}\n// {1}\n".format( name, file ) + + ## Information ## - # TODO self.fill_dict['Information'] = "// This file was generated by the kll compiler, DO NOT EDIT.\n" self.fill_dict['Information'] += "// Generation Date: {0}\n".format( date.today() ) self.fill_dict['Information'] += "// KLL Backend: {0}\n".format( "kiibohd" ) @@ -109,9 +122,9 @@ self.fill_dict['Information'] += "// KLL Git Changes:{0}".format( gitChangesStr ) self.fill_dict['Information'] += "// Compiler arguments:\n{0}".format( compilerArgs ) self.fill_dict['Information'] += "//\n" - self.fill_dict['Information'] += "// - Base Layer -\n" - self.fill_dict['Information'] += "// - Default Layer -\n" - self.fill_dict['Information'] += "// - Partial Layers -\n" + self.fill_dict['Information'] += "// - Base Layer -\n{0}".format( baseLayoutInfo ) + self.fill_dict['Information'] += "// - Default Layer -\n{0}".format( defaultLayerInfo ) + self.fill_dict['Information'] += "// - Partial Layers -\n{0}".format( partialLayersInfo ) ## Variable Information ## @@ -304,12 +317,17 @@ # Lookup first scancode in map firstScanCode = macros.firstScanCode[ layer ] + # Generate stacked name + stackName = "" + for name in range( 0, len( variables.layerVariables[ layer ]['*NameStack'] ) ): + stackName += "{0} + ".format( variables.layerVariables[ layer ]['*NameStack'][ name ] ) + stackName = stackName[:-3] + # Default map is a special case, always the first index - # TODO Fix names if layer == 0: - self.fill_dict['LayerIndexList'] += '\tLayer_IN( default_scanMap, "DefaultMap", 0x{0:02X} ),\n'.format( firstScanCode ) + self.fill_dict['LayerIndexList'] += '\tLayer_IN( default_scanMap, "D: {1}", 0x{0:02X} ),\n'.format( firstScanCode, stackName ) else: - self.fill_dict['LayerIndexList'] += '\tLayer_IN( layer{0}_scanMap, "Layer {0}", 0x{1:02X} ),\n'.format( layer, firstScanCode ) + self.fill_dict['LayerIndexList'] += '\tLayer_IN( layer{0}_scanMap, "{0}: {2}", 0x{1:02X} ),\n'.format( layer, firstScanCode, stackName ) self.fill_dict['LayerIndexList'] += "};"
--- a/kll_lib/containers.py Mon Feb 09 20:15:00 2015 -0800 +++ b/kll_lib/containers.py Mon Feb 16 13:29:26 2015 -0800 @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # KLL Compiler Containers # -# Copyright (C) 2014 by Jacob Alexander +# Copyright (C) 2014-2015 by Jacob Alexander # # This file is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -298,10 +298,16 @@ # If still processing BaseLayout if self.baseLayoutEnabled: - self.baseLayout['*LayerFiles'] = name + if '*LayerFiles' in self.baseLayout.keys(): + self.baseLayout['*LayerFiles'] += [ name ] + else: + self.baseLayout['*LayerFiles'] = [ name ] # Set for the current layer else: - self.layerVariables[ self.currentLayer ]['*LayerFiles'] = name + if '*LayerFiles' in self.layerVariables[ self.currentLayer ].keys(): + self.layerVariables[ self.currentLayer ]['*LayerFiles'] += [ name ] + else: + self.layerVariables[ self.currentLayer ]['*LayerFiles'] = [ name ] def incrementLayer( self ): # Store using layer index @@ -312,6 +318,21 @@ # Overall set of variables self.overallVariables[ key ] = value + # The Name variable is a special accumulation case + if key == 'Name': + # BaseLayout still being processed + if self.baseLayoutEnabled: + if '*NameStack' in self.baseLayout.keys(): + self.baseLayout['*NameStack'] += [ value ] + else: + self.baseLayout['*NameStack'] = [ value ] + # Layers + else: + if '*NameStack' in self.layerVariables[ self.currentLayer ].keys(): + self.layerVariables[ self.currentLayer ]['*NameStack'] += [ value ] + else: + self.layerVariables[ self.currentLayer ]['*NameStack'] = [ value ] + # If still processing BaseLayout if self.baseLayoutEnabled: self.baseLayout[ key ] = value