X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=kll_lib%2Fcontainers.py;h=f732649fb5c2a75148e28757572aefedf4c57d46;hb=b4e4a13811f38b2ba6b36b0fd194c4dd399f61f8;hp=d54ff1029e8d7e3a5b5c8a244ba59c93056c0d44;hpb=bbf2c3ffaf4d579a5865c36c986720202d11f04a;p=kiibohd-kll.git diff --git a/kll_lib/containers.py b/kll_lib/containers.py index d54ff10..f732649 100644 --- a/kll_lib/containers.py +++ b/kll_lib/containers.py @@ -31,7 +31,9 @@ ERROR = '\033[5;1;31mERROR\033[0m:' ### Parsing ### + ## Containers + class Capabilities: # Container for capabilities dictionary and convenience functions def __init__( self ): @@ -99,6 +101,7 @@ class Macros: self.triggersIndexSorted = [] self.triggerList = [] self.maxScanCode = [] + self.firstScanCode = [] # USBCode Assignment Cache self.assignmentCache = [] @@ -143,7 +146,8 @@ class Macros: self.macros[ self.layer ][ trigger ] = [ result ] # Mark layer scan code, so it won't be removed later - if not self.baseLayout is None: + # Also check to see if it hasn't already been removed before + if not self.baseLayout is None and trigger in self.layerLayoutMarkers[ self.layer ]: del self.layerLayoutMarkers[ self.layer ][ trigger ] # Return a list of ScanCode triggers with the given USB Code trigger @@ -252,9 +256,40 @@ class Macros: # Shrink triggerList to actual max size self.triggerList[ layer ] = self.triggerList[ layer ][ : self.maxScanCode[ layer ] + 1 ] + # Calculate first scan code for layer, useful for uC implementations trying to save RAM + firstScanCode = 0 + for triggerList in range( 0, len( self.triggerList[ layer ] ) ): + firstScanCode = triggerList + + # Break if triggerList has items + if len( self.triggerList[ layer ][ triggerList ] ) > 0: + break; + self.firstScanCode.append( firstScanCode ) + # Determine overall maxScanCode self.overallMaxScanCode = 0x00 for maxVal in self.maxScanCode: if maxVal > self.overallMaxScanCode: self.overallMaxScanCode = maxVal + +class Variables: + # Container for variables + # Stores three sets of variables, the overall combined set, per layer, and per file + def __init__( self ): + pass + + def baseLayerFinished( self ): + pass + + def setCurrentFile( self, name ): + # Store using filename and current layer + pass + + def setCurrentLayer( self, layer ): + # Store using layer index + pass + + def assignVariable( self, key, value ): + pass +