
    7jN                     2    d Z ddlZddlmZ  G d de      Zy)z: Original code from https://github.com/skullydazed/kle2xy
    N)Decimalc                   `     e Zd ZdZd fd	Zed        Zed        Zed        Zd Z	d Z
 xZS )	KLE2xyz:Abstract interface for interacting with a KLE layout.
    c                    t         t        |           || _        || _        t        d      | _        dddddddt        d	      t        d	      d
	| _        t        d      | _        t        d      | _	        |r| j                  |       y y )Nz19.05Fnone greyblack      1)	decalborder_colorkeycap_profilekeycap_colorlabel_color
label_sizelabel_stylewidthheightr   )superr   __init__nameinvert_yr   	key_widthkey_skelrowscolumnsparse_layout)selflayoutr   r   	__class__s       ?/home/hanthebot/chat/keyboard/qmk_firmware/lib/python/kle2xy.pyr   zKLE2xy.__init__   s    fd$&	  )"'SUgm  F  VW  hi  t{  |  t@  LS  TW  LX  YAJ	qzf%     c                 f    t        | j                        | j                  z  | j                  dz  z   S )z1Returns the width of the keyboard plate.
           )r   r   r   r    s    r#   r   zKLE2xy.width   s*     %6$..1:LLLr$   c                 T    | j                   | j                  z  | j                  dz  z   S )z2Returns the height of the keyboard plate.
        r&   )r   r   r'   s    r#   r   zKLE2xy.height   s%     		DNN*dnnq.@@@r$   c                 2    | j                   | j                  fS )z0Returns the size of the keyboard plate.
        )r   r   r'   s    r#   sizezKLE2xy.size$   s     

DKK((r$   c                 "    d|v r|d   | _         yy)z2Parse the keyboard properties dictionary.
        r   N)r   )r    
propertiess     r#   attrszKLE2xy.attrs*   s     Z"6*DI  r$   c           
         d|z   dz   }t        j                  |      d   }| j                  j                         }t	        d      }t	        d      }t        |d   t              r| j                  |d          |dd  }t        |      D ]  \  }}| j                  g        |D ]a  }t        |t              rd|v r"|d   t	        d      k7  rt	        |d         |d<   d|v rd	|v r|d   d
k(  r|d	   dk(  rd|d<   d|v r"|d   t	        d      k7  rt	        |d         |d<   d|v r4t        t        t        |d         d      d      x|d<   | j                  d<   d|v r4t        t        t        |d         d      d      x|d<   | j                  d<   d|v r|d   x|d<   | j                  d<   d|v r|d   x|d<   | j                  d<   d|v rEd|d   v r|d   j                  d      d   |d<   |d   dk(  rd|d<   |d   x|d<   | j                  d<   d|v r|t	        |d         z  }d|v r|t	        |d         z  }d|v sd|d <   ||d!<   t        |d"      |d#<   t        |d"      |d$<   ||d   d"z  z   }||d   d"z  z   }	|| j                  z  |d<   |	| j                  z  |d<   ||d   z  }|| j                   kD  r|| _        | j"                  r	|d    |d<   | d%   j                  |       | j                  j                         }d t	        d      }|t	        d      z  }|| j$                  kD  st	        |      | _         y )&Nz{"layout": [z]}r!   r      wr   w2h2g      ?Tisoenterhr   a	   r   fr   pr   cr   t
0z#000000r   xydr   r   r&   rowcolumn)hjsonloadsr   copyr   
isinstancedictr-   	enumerateappendmaxminintsplitroundr   r   r   r   )
r    r!   current_keycurrent_rowcurrent_colrow_numr@   keyx_centery_centers
             r#   r   zKLE2xy.parse_layout1   s   &(4/V$X. mm((*ajajfQi&JJvay!ABZF%f- ?	1LGSKKO  57c4(czc#h'!*&</6s3x/@G,s{ts{s4yC7GCPTIYZN26J/czc#h'!*&<07C0AH-czTWX[\_`cdg`h\iklXmopTqqM2T]]=5QczRUVYZ]^abe^fZgijVkmnRooL1DMM,4OczZ]^aZbb$45FV8WczVYZ]V^^N3dmmN6Scz3s8+'*3x~~d';A'>CHs8s?'0CHTWX[T\\M2T]]=5Qcz#ws3x'88cz#ws3x'88cz/3G, +.K').{A)>K&,1+q,AK)  +[-AA-EEH*[-BQ-FFH'/$..'@K$'/$..'@K$  ;w#77K"T\\1'2 }},7,<+<C( HOOK0"&--"4"4"6Kk57p "!*K71:%KTYY&#K0	?	1r$   )Nr   T)__name__
__module____qualname____doc__r   propertyr   r   r*   r-   r   __classcell__)r"   s   @r#   r   r      sX    & M M
 A A
 ) )
+M1r$   r   )rY   rC   decimalr   listr    r$   r#   <module>r_      s      v1T v1r$   