
    Dfe$                     $   d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZ dZdZ ej*                  e      Zd Zd	 Zefd
ZefdZddZg g g g g ddddf	dZd Zd Zedk(  r edddddddddddd      Z yy)z#Utilities for compiling SASS files.    N)MAIN_SCSS_FILEPACKAGE_PATHQSS_FILE_SUFFIXQSS_PATHVARIABLES_SCSS_FILE)Palette)create_imagescreate_palette_imageaj  // ---------------------------------------------------------------------------
//
//    WARNING! File created programmatically. All changes made in this file will be lost!
//
//    Created by the qtsass compiler v{}
//
//    The definitions are in the "qdarkstyle.palette" module
//
//----------------------------------------------------------------------------
ae  /* ---------------------------------------------------------------------------

    WARNING! File created programmatically. All changes made in this file will be lost!

    Created by the qtsass compiler v{}

    The definitions are in the "qdarkstyle.qss._styles.scss" module

--------------------------------------------------------------------------- */
c                     g }d}| j                         D ](  \  }}|j                  ||      }|j                  |       * dj                  |      S )z+Create a scss variables string from a dict.z${}: {};
)itemsformatappendjoin)datalinestemplatekeyvaluelines         7/usr/lib/python3/dist-packages/qdarkstyle/utils/scss.py_dict_to_scssr   0   sR    EHjjl 
UsE*T 99U    c                 D   i }| j                  d      }|D ]  }|j                         }|s|j                  d      s(|j                  d      \  }}|dd j                         }|j                  dd      }|j                  d      d	   j                         }|||<    |S )
z"Parse variables and return a dict.r   $:   N-_;r   )splitstrip
startswithreplace)stringr   r   r   r   r   s         r   _scss_to_dictr&   ;   s    DLLE 	zz|DOOC(CJCab'--/C++c3'CKK$Q'--/EDI	 Kr   c                 >   t        |j                               }|j                  t        j                        |z   dz   }t
        j                  d       t
        j                  d|         t        | d      5 }|j                  |       ddd       y# 1 sw Y   yxY w)zCreate a scss variables file.r   z"Generating SCSS variables file ...zFile path: wN)	r   to_dictr   qtsass__version___loggerinfoopenwrite)variables_scss_filepathpaletteheaderscssr   fs         r   _create_scss_variablesr5   N   s     *+D==++,t3d:DLL56LL;6789	%s	+ q	  s   8BBc                    d}t         j                  d       t         j                  d|         t         j                  d|        t        j                  | |d       t	        |d      5 }|j                         }ddd       |j                  t        j                        |z   }t	        |d	      5 }|j                  |       ddd       |S # 1 sw Y   SxY w# 1 sw Y   |S xY w)
z%Create a styles.qss file from qtsass. zGenerating QSS file ...zSCSS path: z
QSS path: expanded)output_stylerNr(   )	r,   r-   r*   compile_filenamer.   readr   r+   r/   )main_scss_pathqss_filepathr2   r   r4   s        r   _create_qssr?   \   s     DLL*+LL;~./0LL:l^,-
NL)35 
lC	  Avvx ==++,t3D	lC	  A	 K 
 Ks   ,C3CCC%c                    | j                    t        d       t        j                  d       t        j
                  j                  t        | j                         }|r*t        j
                  j                  || j                         }t        j                  d| j                    d       t        j                  d|        t        j
                  j                  |t              }t        j
                  j                  |t              }t        j
                  j                  || j                   t        z         }t        ||        t        ||      }|S )a  Create variables files and run qtsass compilation.

    This function will use the structure that must contain::

        base_path
            [palette.ID]
                main.scss
            qss
                _style.scss

    The structure after the execution will contain::

        base_path
            [palette.ID]
                _variables.scss
                [palette.ID]style.qss
                main.scss
            qss
                _style.scss

    Args:
        palette (Palette): Palette class.
        base_path (str): Base path for the palette directory, required for
            custom palettes. Defaults to '' that uses `[PACKAGE_PATH]`.

    Returns:
        str: Stylesheet in string format.
    z$A QDarkStyle palette requires an ID!r   zCreating QSS for palette: 'z ...zPalette path: )IDprintsysexitospathr   r   r,   r-   r   r   r   r5   r?   )r1   	base_pathpalette_pathr0   main_scss_filepathr>   
stylesheets          r   
create_qssrK   s   s    < zz4577<<gjj9Lww||Iwzz:LL.wzzl$?@LL>,01 ggll<9LMlNC77<<gjj?.JKL2G</>Jr   c                    d}| j                         r&| d   j                         r| n| j                         }nt        d      t        j
                  j                  t              }t        j
                  j                  t              }t        j
                  j                  ||j                               }t        j
                  j                  ||      }t        j
                  j                  |      rt        j                  |       t        j                  t        |       t        j
                  j                  ||      }t        j
                  j                  |      rt	        j                  |       t        j                  t        |       t!        |t"        fi       }t$        |_        t(        |_        t,        |_        t0        |_        t4        |_        t8        |_        t<        |_        t@        |_!        tD        |_#        tH        |_%        djM                  |      |_'        tQ        ||       tS        ||       t        j
                  j                  |tT              }t        j
                  j                  |tV              }t        j
                  j                  |tX        jZ                  t\        z         }t_        ||||      }ta        |d      5 }|jc                         }d	d	d	       t#        jd                         jg                         D ]J  \  }}|je                         |   ji                         }jk                  ||      }|jk                  ||      }L ta        |d
      5 }|jm                         d	d	d	       ta        |d
      5 }|jm                  |       d	d	d	       |S # 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y   |S xY w)a:  
    Create a custom palette based on the parameters defined.

    The `id` must be a valid Python identifier and will be stored
    as a lowercased folder (even if the identifier had uppercase letters).

    This function returns the custom stylesheet pointing to resources stored
    at path_resources/[id].
    r7   r   z:The custom palette name must be a valid Python identifier!z'{}')rc_pathr1   )rF   r1   )r>   rI   r0   r1   r:   Nr(   )7isidentifierisupper
capitalize	ExceptionrE   rF   basenameRC_PATHr   r   lowerisdirshutilrmtreecopytree
removedirstyper   color_background_lightCOLOR_BACKGROUND_LIGHTcolor_background_normalCOLOR_BACKGROUND_NORMALcolor_background_darkCOLOR_BACKGROUND_DARKcolor_foreground_lightCOLOR_FOREGROUND_LIGHTcolor_foreground_normalCOLOR_FOREGROUND_NORMALcolor_foreground_darkCOLOR_FOREGROUND_DARKcolor_selection_lightCOLOR_SELECTION_LIGHTcolor_selection_normalCOLOR_SELECTION_NORMALcolor_selection_darkCOLOR_SELECTION_DARKborder_radiusSIZE_BORDER_RADIUSr   PATH_RESOURCESr	   r
   r   r   r1   rA   r   rK   r.   r<   color_paletter   upperr$   r/   )idrF   color_backgroung
color_textcolor_accentborderborder_selectionopacity_tooltipsize_border_radiusw_status_bar_background_colorpath_resourcesrJ   namerc_locqss_loctheme_root_paththeme_rc_paththeme_qss_pathcustom_paletter0   theme_main_scss_filepaththeme_qss_filepathfhr   r   colorcustom_colors                              r   create_custom_qssr      s   . J 
U]]_r"--/ & ' 	' WWg&Fggx(Gggll46OGGLL&9M	ww}}_%o&
OOG]+ WW\\/7;N	ww}}^$
n%
OOHn- $R0N,BN)-DN*+@N(,BN)-DN*+@N(+@N(,BN)*>N'(5N%$*MM/$BN! -@o~F !ggll>;NO!ww||NNKowzzO7ST'3 7	J 
&	, wwy ++-335 =
U%335c:@@B||E<0''|<
=
 
&	, 
 
 #	& "
    s$   N20N>O
2N;>O
Oc                 z    | ||j                   d}|j                  |j                                t        di |}|S )z;
    Create a custom palette based on a palette class.
    r|   rF   rm    )rn   updaterp   r   )r|   rF   r1   kwargsrJ   s        r   create_custom_qss_from_paletter     sD    
  33F
 MM''')*",V,Jr   c                 j    | ||j                  dd      d}|j                  |       t        di |}|S )z@
    Create a custom palette based on a palette dictionary.
    rn   4pxr   r   )getr   r   )r|   rF   palette_dictr   rJ   s        r   create_custom_qss_from_dictr     sC    
 %))*>FF
 MM,",V,Jr   __main__MyAwesomePalettez /Users/gpena-castellanos/Desktopz#ff0000z#cc0000z#aa0000z#00ff00z#00cc00z#00aa00z#0000ffz#0000ccz#0000aa0px)r7   )!__doc__keywordloggingrE   rerV   rC   r*   
qdarkstyler   r   r   r   r   qdarkstyle.paletter   qdarkstyle.utils.imagesr	   r
   HEADER_SCSS
HEADER_QSS	getLogger__name__r,   r   r&   r5   r?   rK   r   r   r   qssr   r   r   <module>r      s    *   	 	  
 - - & G		
 '

H
%( #. 6@ .2p "&dN z *C	 r   