
    o'e                         d dl Z d dlZd dlZd dlZd dlmZmZ ddlmZ ddl	m
Z
  ej        e          Zej        Zdadad Zd Z G d d	e          Z G d
 de          Z G d de          ZdS )    N)parse
SubElement   )QObjectCreator)
Propertiesc                     d}|                      d          D ]>}|                     d          \  }}t          t          j        |          }||}9||z  }?|S )z5 Convert a C++ alignment to the corresponding flags. N|::)splitgetattrQtCoreQt)	alignmentalign_flagsqt_align_aligns        2lib/python3.11/site-packages/PyQt5/uic/uiparser.py_parse_alignmentr   :   si     KOOC(( ! !nnT**8	8,,KK5 KK    c                    | j                             d          }| j                             d          }| j                             d          }|||dS dt          |          fS t          |          }t          |          }t          | j                             dd                    }t          | j                             d	d                    }|||||fS ||||t          |          fS )
z Return either (), (0, alignment), (row, column, rowspan, colspan) or
    (row, column, rowspan, colspan, alignment) depending on the type of layout
    and its configuration.  The result will be suitable to use as arguments to
    the layout.
    rowcolumnr   N r   rowspanr   colspan)attribgetr   int)elemr   r   r   r   r   s         r   _layout_positionr!   J   s     +//%
 
 C[__X&&F,,I {fn2#I..// c((C[[F$+//)Q//00G$+//)Q//00GVWg..'+;I+F+FGGr   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )WidgetStackNc                    t          d|                                                                d|                                           |                     |           t          |t          j                  r	|| _        d S d S )Nzpush  )	DEBUG
metaObject	className
objectNameappend
isinstance	QtWidgetsQWidget	topwidget)selfitems     r   pushzWidgetStack.pushk   s    doo//99;;;;"oo///1 	2 	2 	2DdI-.. 	"!DNNN	" 	"r   c                     t                               |           }t          d|                                                                d|                                           |S )Nzpop layout r%   )listpopr&   r'   r(   r)   )r/   layouts     r   	popLayoutzWidgetStack.popLayoutr   sa    $F$5$5$7$7$A$A$C$C$C$C$*$5$5$7$7$79 	: 	: 	:r   c                 v   t                               |           }t          d|                                                                d|                                           t          |           D ]%}t          |t          j	                  r	|| _
         n&d | _
        t          d| j
                   |S )Nzpop widget r%   znew topwidget )r3   r4   r&   r'   r(   r)   reversedr+   r,   r-   r.   )r/   widgetr0   s      r   	popWidgetzWidgetStack.popWidgetx   s    $F$5$5$7$7$A$A$C$C$C$C$*$5$5$7$7$79 	: 	: 	:TNN 	" 	"D$	 122 !% "DNDNN4555r   c                     | d         S Nr   r/   s    r   peekzWidgetStack.peek   s    Bxr   c                 B    t          | d         t          j                  S r<   )r+   r,   QLayoutr>   s    r   topIsLayoutzWidgetStack.topIsLayout   s    $r(I$5666r   c           	         t          | d                   t          j        urdS t          |           dk     rdS | d         }t	          |t          j                  oht          |          t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        fvS )Nr=   F   )typer,   r-   lenr+   QMainWindowQStackedWidgetQToolBox
QTabWidgetQScrollAreaQMdiAreaQWizardQDockWidget)r/   parents     r   topIsLayoutWidgetzWidgetStack.topIsLayoutWidget   s     R>>!2225t99q==5b&)"344 'f%("$%"!%N' :' 	'r   )
__name__
__module____qualname__r.   r1   r6   r:   r?   rB   rQ   r   r   r   r#   r#   i   ss        I" " "      7 7 7' ' ' ' 'r   r#   c                       e Zd ZdZd ZdS )ButtonGroupzM Encapsulate the configuration of a button group and its implementation.
    c                 "    d| _         d| _        dS )z Initialise the button group. TN)	exclusiveobjectr>   s    r   __init__zButtonGroup.__init__   s     r   N)rR   rS   rT   __doc__rZ   r   r   r   rV   rV      s-             r   rV   c                   (   e Zd Zd Zd Zd Zd)dZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zd Zeeee
eeeeeed
Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(ed'             Z)d(S )*UIParserc                     t          |          | _        t          | j        |||          | _        |a|a|                                  d S N)r   factoryr   wpropsr   r,   reset)r/   qtcore_moduleqtgui_moduleqtwidgets_modulecreatorPolicys        r   rZ   zUIParser.__init__   sJ    %m44 }l " " $	

r   c                     	 | j         |         }n# t          $ r d| j         |<   |cY S w xY w|dz  }|| j         |<   d||fz  S )zUIParser.uniqueName(string) -> string

        Create a unique name from a string.
        >>> p = UIParser(QtCore, QtGui, QtWidgets)
        >>> p.uniqueName("foo")
        'foo'
        >>> p.uniqueName("foo")
        'foo1'
        r   r   z%s%i)name_suffixesKeyError)r/   namesuffixs      r   
uniqueNamezUIParser.uniqueName   sn    	'-FF 	 	 	'(Dt$KKK	 	!#)4 v&&s    ))c                     | j                                          n# t          $ r Y nw xY wd | _        t	                      | _        i | _        ddd| _        g | _        d | _	        g | _
        i | _        d S )Nr=   )spacingmargin)ra   rb   AttributeErrortoplevelWidgetr#   stackrh   defaultsactionscurrentActionGroup	resourcesbutton_groupsr>   s    r   rb   zUIParser.reset   s~    [    ###tt#" ]]
$&"55"&s    
((Tc                 r   |                      |j                            d          p|dd                                                    }|d}n|f}| j                            ||||          }| j                            ||           |                    |           |rt          | j
        ||           |S )Nrj   r   r   )rl   r   r   lowerr`   createQObjectra   setPropertiessetObjectNamesetattrrq   )r/   clsnamerP   branchis_attributerj   argsobjs           r   setupObjectzUIParser.setupObject   s    v}0088OGABBK<M<M<O<OPP>DD:Dl(($lKK!!#v...$ 	4D's333
r   c                 `    |                     d          D ]}|j        d         |k    r|c S d S )Npropertyrj   )findallr   )r/   r    rj   props       r   getPropertyzUIParser.getProperty   sD    LL,, 	 	D{6"d** + tr   c           
      N   d| _         d| _        d| _        g | _        d | _        |j        d                             dd          }|dk    rd}| j        j        }t          |t          j        t          j        t          j        t          j        t          j        t          j        t          j        f          rd }| j                            |                     |||                     t          | j        j        t          j                  r|                     |d          ?| j        j                            t/          |                    d                               |                     |d	          ?| j        j                            t/          |                    d
                               |                     |           | j                                        }t          |t          j                  r+|                     |d|                                           nt          |t          j                  rT|                     |d|                                            |                     |d|!                                           n,t          |t          j"                  r| j#        $                    |d          }|	 |j%        }n# tL          $ r |}Y nw xY w|sd}	 | j'        |         }n(# tP          $ r tS                      x}| j'        |<   Y nw xY w|j*        }| j+        ,                    d|| j-        f          |_*        t]          | j-        ||j*                   |j*        /                    |           |j0        s|j*        1                    d           |j*        2                    |           | j        !|3                    | j                   d | _        | j        4                                r| j        5                                }|j        d         }	t          |t          j6                  r1|7                    |	d         | 8                    |	          |           n |j9        |g|	R   | j        j        }
t          |
t          j                  r| j#        $                    |d          }|1|
:                    ||| j#        $                    |d                     n/|
:                    || j#        $                    |d                     | j#        $                    |d          }|+|
;                    |
<                    |          |           d S d S t          |
t          j                  r| j#        $                    |d          }|1|
=                    ||| j#        $                    |d                     n/|
=                    || j#        $                    |d                     | j#        $                    |d          }|+|
>                    |
<                    |          |           d S d S t          |
t          j                  r|
?                    |           d S t          |
t          j                  r|
9                    |           d S t          |
t          j        t          j        f          r|
7                    |           d S t          |
t          j@                  rt          |          t          jB        k    r|
C                    |           d S t          |t          jD                  r| j#        $                    |d          }||
E                    |           n|
E                    ||           | j#        $                    |d          }|r|
F                    |           d S d S t          |t          jG                  r|
H                    |           d S t          |t          jI                  r|
J                    |           d S t          |t          j                  rR| j#        $                    |d          }|
K                    t          jM        N                    |          |           d S d S d S )Nr   classr
   .LineQFramecolumnCountr   rowCountr   headerhorizontalHeaderverticalHeaderbuttonGroupQButtonGroupFlayout-positioniconlabeltoolTiptitletoolBarAreatoolBarBreakdockWidgetArea)Ocolumn_counterrow_counteritem_nr	itemstacksorting_enabledr   replacerr   r.   r+   r,   rO   rM   rL   rI   rJ   rK   rN   r1   r   QTableWidgetr   setColumnCountrG   r   setRowCounttraverseWidgetTreer:   	QTreeViewhandleHeaderViewr   
QTableViewr   r   QAbstractButtonra   getAttributestringrp   rw   ri   rV   rY   r`   rz   rq   r}   r|   rX   setExclusive	addButtonsetSortingEnabledrB   r?   QFormLayout	setWidget_form_layout_role	addWidgetaddItemsetItemToolTipindexOfaddTabsetTabToolTipaddPagerH   rF   r-   setCentralWidgetQToolBar
addToolBarinsertToolBarBreakQMenuBar
setMenuBar
QStatusBarsetStatusBaraddDockWidgetr   r   DockWidgetArea)r/   r    widget_classrP   r9   bg_i18nbg_namebglaylpr.   r   tooltiptbAreatbBreakdwAreas                   r   createWidgetzUIParser.createWidget   sW   #{7+33D#>>6!!#L %fy4i6H(4i6N(193G(02 3 3 	 F
((vtDDEEEdj*I,BCC 	Km44<
$33CX8N8N4O4OPPPj119
$00T\\%5H5H1I1IJJJ%%%%%''fi122 +	,!!$&--//BBBB	 455 (	,!!$(:++--/ / /!!$(8))++- - - - 	 9:: "	,k..t]CCG"&%nGG% & & &%GGG&  ,+GE+G4BB E E E7B}}DB+G444E 9$ $ : :>#d&9%<!> !>BID/")DDDI++G444< 6	..u555	##F++++$$T%9:::#'D :!!## 	+*//##C./B#y455 +beT%;%;B%?%?HHHHf*r****J(	i!344 6	 ;++D&99D!!&$0H0Hw0W0WXXXX!!&$+*B*B4*Q*QRRRk..tY??G"(():):6)B)BGLLLLL #" 	9#788 +	 ;++D&99D  t{/G/Gg/V/VWWWW  )A)A$)P)PQQQk..tY??G"''	(9(9&(A(A7KKKKK #" 	9#455  	 f%%%%%	9#;<< 	 '''''	I$99;P#QRR 	 '''''	9#899 	 F||y000**622222FI$677  11$FF>((0000((888+224HH 900888889 9 FI$677  $$V,,,,,FI$899  &&v.....FI$9::  11$8HII''	(@(@(H(H         -	  	 (   s$   K K&%K&.K< <"L! L!c                    | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           | j                             ||dz             }||                    |           d S d S )NVisibleCascadingSectionResizesDefaultSectionSizeHighlightSectionsMinimumSectionSizeShowSortIndicatorStretchLastSection)	ra   r   
setVisiblesetCascadingSectionResizessetDefaultSectionSizesetHighlightSectionssetMinimumSectionSizesetSortIndicatorShownsetStretchLastSection)r/   r    rj   r   values        r   r   zUIParser.handleHeaderView  s   ((ti/?@@e$$$((t6O/OPP--e444((t6J/JKK((///((t6I/IJJ''...((t6J/JKK((///((t6I/IJJ((///((t6J/JKK((///// r   c                 :   |                     d          }|                     d          }||d}nt          |          t          |          f}| j                            |dt          j        j                  }t          j        j        |f}| j                            |d          t          j	        j
        k    r|d         |d         f}| j                            d|                     d	          ||z   d
          }| j                                        r| j                                        }|j        d         }	t%          |t          j                  r2|                    |	d         |                     |	          |           d S  |j        |g|	R   d S d S )Nzproperty/size/widthzproperty/size/heightr   sizeTypeorientationr   r   QSpacerItem
spacerItemF)r   r   )findtextr   ra   r   r,   QSizePolicy	ExpandingMinimumr   r   
Horizontalr`   rz   rl   rr   rB   r?   r   r+   r   setItemr   r   )
r/   r    widthheight	size_argsr   policyspacerr   r   s
             r   createSpacerzUIParser.createSpacer  s   344566=FNIIUS[[1I;**4%/1 1 '/:;""47769;OOOAYq	)F++M--y6/A" , $ $ :!!## 	)*//##C./B#y455 )BqE4#9#9"#=#=vFFFFFF(R((((((	) 	)r   c                    | j                                         rdn| j        d         }| j                            |d|          }| j                            |d|          }| j                            |d|          }| j                            |d|          }| j                            |d|          }| j                                         r |dk     rd}|dk     rd}|dk     rd}|dk     rd}|dk    s|dk    s|dk    s|dk    rt          |dd	
          }t          |          t          |d          _        t          |          t          |d          _        t          |          t          |d          _        t          |          t          |d          _        | j                            |d| j        d                   }| j                            |d|          }	| j                            |d|          }
|	dk    s|
dk    rVt          |dd
          }t          |	          t          |d          _        t          |
          t          |d          _        |j	        d         }| j                                         rd }n| j         j
        }d|j	        vr$|dd                                          |j	        d<   | j                             |                     |||                     |                     |           | j                                         }|                     ||           | j                                         r| j                                         }|j	        d         }t%          |t&          j                  r2|                    |d         |                     |          |           d S  |j        |g|R   d S d S )Nr=   ro   
leftMargin	topMarginrightMarginbottomMarginr   r   pyuicMargins)rj   numberrn   horizontalSpacingverticalSpacingpyuicSpacingr   rj   r   r   )rr   rB   rs   ra   r   rQ   r   strtextr   r.   ry   r1   r   r   r6   configureLayoutr?   r+   r,   r   	setLayoutr   	addLayout)r/   r    ro   lefttoprightbottomcmern   horizvert	classnamerP   r5   
top_layoutr   s                   r   createLayoutzUIParser.createLayout  s    z--//LT]85L((x@@{&&t\6BBk%%dK@@''mVDD((~vFF :'')) 	&axxQwwaqyy!%zzA6199qEQJJ&A++T:NCCCC-0YYJsH%%*-0XXJsH%%*-0ZZJsH%%*-0[[JsH%%* +))$	i(* *''.A7KK{&&t->HHA::T:NCCCC-0ZZJsH%%*-0YYJsH%%*K(	:!!## 	*FFZ)F$$"+ABB-"5"5"7"7DK
((FDAABBB%%%%%''T6***:!!## 	2**J./B*i&;<< 2$$RUD,B,B2,F,FOOOOO$
$V1b111111	2 	2r   c                    t          |t          j                  rr|                     |d|j                   |                     |d|j                   |                     |d|j                   |                     |d|j                   d S t          |t          j                  r|                     |d|j	                   d S d S )Ncolumnminimumwidthrowminimumheightcolumnstretch
rowstretchstretch)
r+   r,   QGridLayoutsetArraysetColumnMinimumWidthsetRowMinimumHeightsetColumnStretchsetRowStretch
QBoxLayout
setStretch)r/   r    r5   s      r   r   zUIParser.configureLayout  s    fi344 		>MM$ 402 2 2MM$ 2.0 0 0MM$1HIIIMM$f.BCCCCC	 455 	>MM$	6+<=====	> 	>r   c                     |j                             |          }|rIt          |                    d                    D ](\  }}t	          |          }|dk    r |||           'd S d S )N,r   )r   r   	enumerater   r   )r/   r    rj   setterarrayidxr   s          r   r  zUIParser.setArray  s    %% 	''C(8(899 ' '
UE

199F3&&&		' 	'' 'r   c                     | j         dk    r<| j                            d|j                  | _        |                    d           d S d S )Nr   __sortingEnabledF)r   r`   invokeisSortingEnabledr   r   )r/   ws     r   disableSortingzUIParser.disableSorting  sT    <1#'<#6#67I&$( $(D &&&&& r   c                 	   | j                                         r4t          |          |d         j        d<   |                     |           d S | j         j        }t          |t          j                  r| j	        
                    |d          }| j	        
                    |d          }|r|                    |d           n|                    d           |                    | j        |           nt          |t          j                  rN|                     |           |                     d||j        | j                  }|                    |           nmt          |t          j                  r| j        r!| j        d         \  }}| j        d         \  }}n	|}| j        }| j                            dd	t-          | j                  z  |fd
          }| j        dk    rA| j        s:| j                            d|j                  | _        |                    d
           | j                            || j        f           d| _        |                    |          }	| j        dd          D ]\  }
}|	                    |          }	d}|                    d          D ]S}| j	                            |          }|j        d         }|dk    r|dz  }|r|	                     ||           N|dk    r|!                    ||           k|dk    r|"                    ||           |dk    r|#                    ||           |dk    r|$                    ||           |dk    r|%                    ||           |dk    r|&                    ||           |dk    r|'                    ||           |dk    r|(                    |           7|dk    r|)                    ||           U|                     |           | j        *                                \  }| _        nt          |t          j+                  r~tY          |j        d                   }tY          |j        d                   }|                     |           |                     d||j        ||          }|-                    |||           | xj        dz  c_        d S )Nr   r   r   r    QListWidgetItemr=   QTreeWidgetItemzitem_%dFr  r   r   rj   	statusTipr   	whatsThisfont
background
foregroundflags
checkStater   r   QTableWidgetItem).rr   rB   r!   r   r   r.   r+   r,   	QComboBoxra   r   r   setItemTextr   QListWidgetr"  createWidgetItemr0   QTreeWidgetr   r`   rz   rG   r  r   r   r   r*   topLevelItemchildr   convertsetTextsetStatusTip
setToolTipsetWhatsThissetFontsetIconsetBackgroundsetForegroundsetFlagssetCheckStater4   r   r   r   )r/   r    r!  r   r   r0   rP   r   
nr_in_roottitmr5  nr_in_parentr   r   c_propc_prop_namer   cols                     r   
handleItemzUIParser.handleItem  s   :!!## W	0@0F0FDGN,-##D)))))
$A!Y011 O*{..tV<<{..tV<< "IIdB''''IIbMMMdlD1111Ay455 D*##A&&&,,->af& &		$Ay455 >*> . $r 2IFA$(N1$5MAzzF!%J|112C!C$7$77&UL L <1$$T^$+/<+>+>?QSTSe+f+fD(''...%%tT\&:;;;  ~~j11+/>!""+= 4 4'E<::l33DD LL44 ; ;D![0066F"&+f"5K"f,,!! 9 LL888$33))&&9999$	117777$33))&&9999$..VV4444$..VV4444$44**66::::$44**66::::$//f----$44**66:::''---"&."4"4"6"64<<Ay566 *$+e,--$+h/00##A&&&,,-?qvS" "		#sD)))LLALLLLr   c                 h    | j                             | j        j        |j        d         f           d S )Nrj   )rt   r*   rr   r.   r   r/   r    s     r   	addActionzUIParser.addActiony  s/    TZ14;v3FGHHHHHr   c                  D    | D ]}|t          |t                    s dS dS )z; Return True if any argument appears to be an i18n string. NTF)r+   r   )r   as     r   any_i18nzUIParser.any_i18n|  s3      	 	A}Z3%7%7}ttur   c                    | j                             |ddd          }| j        }|                    |d          }|                    |d          }|                    |d          }	|                    |d          }
|                     |||	|
          r| j                             d||           |r|                    |           |r|                    |           |	r|                    |	           |
r|	                    |
           |                    |d          }|r|
                    |           |                    |d	          }|r|                    |           |                    |d
          }|r|                    |           |                    |d          }|r|                    |           |                    |d          }|r|                    |           |                    |d          }|r|                    |           |                    |d          }|r|                    |           |S )z( Create a specific type of widget item. r0   r   Fr   r'  r   r(  textAlignmentr)  r   r*  r+  r,  r-  )r`   rz   ra   r   rM  r  r7  r8  r9  r:  setTextAlignmentr;  r<  r=  r>  r?  r@  )r/   	item_typer    gettergetter_argsr0   propsr   
status_tiptool_tip
whats_thistext_alignmentr)  r   r*  r+  r,  check_states                     r   r2  zUIParser.createWidgetItem  sr    |)))VRGG
   v..&&t[99
$$T955&&t[99
==z8Z@@ 	=L<<< 	LL 	*j))) 	&OOH%%% 	*j)))**4AA 	2!!.111  v.. 	LL  v.. 	LL&&t\::
 	+z***&&t\::
 	+z***!!$00 	!MM%   ''l;; 	,{+++r   c                    | j         j        }t          |t          j                  r`| j        }| j        }|                    |d          }|r(|                                	                    ||           |                    |d          }|r(|                                
                    ||           |                    |d          }|r(|                                                    ||           |                    |d          }|r(|                                                    ||           |                    |d          }	|	r(|                                                    ||	           |                    |d          }
|
r(|                                                    ||
           |                    |d          }|r(|                                                    ||           |                    |d          }|r(|                                                    ||           |                    |d	          }|r(|                                                    ||           | xj        d
z  c_        d S t          |t          j                  rt'          |          dk    r|j        dk    rO|                     d||j        | j                  }|                    | j        |           | xj        d
z  c_        d S |j        dk    rS|                     d||j        | j                  }|                    | j        |           | xj        d
z  c_        d S d S d S d S )Nr   r'  r   r(  rO  r)  r   r*  r+  r   r   r   r.  r   )rr   r.   r+   r,   r3  ra   r   r   
headerItemr7  r8  r9  r:  rP  r;  r<  r=  r>  r   rG   tagr2  horizontalHeaderItemsetHorizontalHeaderItemverticalHeaderItemr   setVerticalHeaderItem)r/   r    r!  rT  rF  r   rU  rV  rW  rX  r)  r   r*  r+  r0   s                  r   	addHeaderzUIParser.addHeader  sg   J a.// 5	*KE%C$$T622D 2&&sD111**4==J =++C<<<((y99H 9))#x888**4==J =++C<<<"..t_EEN E//^DDD$$T622D 2&&sD111$$T622D 2&&sD111**4>>J >,,S*===**4>>J >,,S*===1$9122 	*4yyA~~8x''001CT2D4GI ID--d.A4HHH''1,''''X&&001CT0$2BD DD++D,<dCCC$$)$$$$	* 	*~ '&r   c                     |j         d S 	 t          | j        |j                                                    d S # t          $ r Y d S w xY wr_   )r   r   rq   raise_rp   rI  s     r   	setZOrderzUIParser.setZOrder  s]    9F	D'33::<<<<< 	 	 	DD	s   ,9 
AAc                 L    |                      d| j        p| j        |           d S )NQAction)r   ru   rq   rI  s     r   createActionzUIParser.createAction  s6    D$;$Rt?R	 	 	 	 	r   c                     |                      d| j        |          }|| _        |                     |           d | _        d S )NQActionGroup)r   rq   ru   r   )r/   r    action_groups      r   createActionGroupzUIParser.createActionGroup  sF    ''8KTRR".%%%"&r   )
r9   	addactionr5   r   r0   actionactiongroupr   r   zorderc                     t          |          D ]2}	 | j        |j                 }n# t          $ r Y "w xY w || |           3d S r_   )iterwidgetTreeItemHandlersr\  ri   )r/   r    r5  handlers       r   r   zUIParser.traverseWidgetTree  sn    $ZZ 	! 	!E5ei@    GD%    	! 	!s   &
33c                    |j         d         }|j         d         }|sF|}|                    d          r
|dd          }|d                                         |dd          z   }|                     ||          | _        | j                            |           t          d| j                                                                                   | j	        
                    | j        |           | j                            | j                   |                     |           | j                                         |                                  |                                  |                                  d S )Nr   rj   Qr   r   ztoplevel widget is %s)r   
startswithry   createToplevelWidgetrq   r|   r&   r'   r(   ra   r{   rr   r1   r   r:   
addActions
setBuddiessetDelayedProps)r/   r    cnamewnames       r   createUserInterfacezUIParser.createUserInterface(  s`   G$F#  	1E$$ "abb	!HNN$$uQRRy0E"77uEE))%000%!,,..88::	< 	< 	<!!$"5t<<<
+,,,%%%
r   c                    | j         D ]\  }}|dk    r|                                  t          d||                                           t	          | j        |          }t          |t          j                  r(|	                    |
                                           t          |t          j                  s|	                    |           d S )N	separatorzadd action %s to %s)rt   addSeparatorr&   r)   r   rq   r+   r,   QMenurJ  
menuActionri  )r/   r9   action_name
action_objs       r   rx  zUIParser.addActionsB  s    #'< 		1 		1FKk))##%%%%+[&:K:K:M:MNNN$T%8+FF
j)/:: 1$$Z%:%:%<%<====#J	0FGG 1$$Z000		1 		1r   c                     | j         j        D ]8\  }}}}|r|                                }t          ||          } ||           9d S r_   )ra   delayed_propsr5   r   )r/   r9   r5   r  r   s        r   rz  zUIParser.setDelayedPropsN  s\    ,0K,E 	 	(FFFD )VV,,FF4LLLL	 	r   c                 (   | j         j        D ]\  }}t          d||                                           	 |                    t          | j        |                     R# t          $ r& t          d||                                           Y w xY wd S )Nz%s is buddy of %sz1ERROR in ui spec: %s (buddy of %s) does not exist)ra   buddiesr&   r)   setBuddyr   rq   rp   )r/   r9   buddys      r   ry  zUIParser.setBuddiesV  s    ![0 	2 	2MFE%uf.?.?.A.ABBB2(;U C CDDDD! 2 2 2IV..002 2 2 2 22		2 	2s   (A-BBc                     t          d|j                   |j        }|d}|| _        || j        _        |                     |           d S )Nzuiname is %sr$  )r&   r   uinamera   
setContext)r/   r    rj   s      r   r  zUIParser.classname_  sN    ndi(((y<D!r   c                     dS )zc
        Reimplemented by a sub-class if it needs to know the translation
        context.
        Nr   )r/   contexts     r   r  zUIParser.setContextj  s	    
 	r   c                     t          |j        d                   | j        d<   t          |j        d                   | j        d<   d S )Nro   rn   )r   r   rs   rI  s     r   readDefaultszUIParser.readDefaultsq  s>    "%dk(&;"<"<h#&t{9'=#>#>i   r   c                     d }|D ];}t          | j        |j                  }|| j                            ||           |}<d S r_   )r   rq   r   setTabOrder)r/   r    
lastwidgetwidget_elemr9   s        r   setTaborderzUIParser.setTaborderu  s[    
 	  	 KT0+2BCCF%#//
FCCCJJ	  	 r   c                    	 t          |d          }n # t          $ r t          |d          }Y nw xY w |d          D ]}|j                            d          }|rg|                    d          rRt
          j                            |dd         | j        z             }|| j	        vr| j	        
                    |           dS )zk
        Read a "resources" tag and add the module to import to the parser's
        list of them.
        rq  getiteratorincludelocationz.qrcN)r   rp   r   r   endswithospathbasename_resource_suffixrv   r*   )r/   r    iteratorr  locmnames         r   readResourceszUIParser.readResources  s    
	4tV,,HH 	4 	4 	4t]33HHH	4  x	** 	1 	1G.$$Z00C  1s||F++ 1((SbSD4I)IJJ..N))%000	1 	1s    00c                 X     fd}t          |          D ]n}|                    d          }|                    d          \  }}|d d                             dd          } ||                    d                    }t	          ||          } j                             ||                    d                    |                    d	                              d          d
                   }	|dk    r|                    |	           |                    d          }t          |          dk    r#||d
                                      |	           F|t          |                                       |	           pt          j                             j                   d S )Nc                 R    | j         k    rj        S t          j        |           S r_   )r  rq   r   )r   r/   s    r   name2objectz/UIParser.createConnections.<locals>.name2object  s,    dk!!**t2C888r   signal(r=   r%   r$  senderreceiverslotr   r  r   )rq  r   r   r   r   r`   getSlotconnectrG   tupler   QMetaObjectconnectSlotsByNamerq   )
r/   r    r  connr  signal_namesignal_argsr  bound_signalr  s
   `         r   createConnectionszUIParser.createConnections  s   	9 	9 	9 	9 	9 JJ 	C 	CD]]8,,F'-||C'8'8$K%crc*223;;K [x!8!899F"6;77L<''DMM*4M4M(N(NMM&))//44Q79 9D b  $$T****)//44{##q(( Q088>>>> {!3!34<<TBBBB--d.ABBBBBr   c           
          d }t          |          D ]d}|                    d          }| j                            ||                    d          pd ||                    d                               ed S )Nc                     |                      d          r
| dd         } g }|                     d          D ]0}|dvr*|dk    rt          d          |                    |           1d                    |          S )	zheader2module(header) -> string

            Convert paths to C++ header files to according Python modules
            >>> header2module("foo/bar/baz.h")
            'foo.bar.baz'
            z.hNrE   /)r$  r   z..z4custom widget header file name may not contain '..'.r   )r  r   SyntaxErrorr*   join)r   mpathparts      r   header2modulez-UIParser.customWidgets.<locals>.header2module  s     t$$ %ES)) ' ' y((t||)*`aaaLL&&&88E??"r   r   extendsr-   r   )rq  r   r`   addCustomWidget)r/   r    r  custom_widgetr  s        r   customWidgetszUIParser.customWidgets  s    	# 	# 	#. "$ZZ 	V 	VM%..w77IL((%2%;%;I%F%F%S)%2]=3I3I(3S3S%T%TV V V V	V 	Vr   c                     t           r_   )NotImplementedError)r/   r  
widgetnames      r   rw  zUIParser.createToplevelWidget  s    !!r   c                     t          |          D ]j}|j        dk    r]|j        d         }t                      }|| j        |<   |                     |d          }| |                    d          dk    rd|_        kd S )Nbuttongrouprj   rX   boolfalseF)rq  r\  r   rV   rw   r   r   rX   )r/   r    button_groupr   r   r   s         r   buttonGroupszUIParser.buttonGroups  s     JJ 		- 		-L=00&-f5 ]].0"7+''kBB#}}V,,77',		- 		-r   c                     d S r_   r   r>   s    r   finalizezUIParser.finalize  s    r   c           	         t          |d          rd}n.t          |          }t          j                            |          }| j                            |           || _        d| j        fd| j	        fd| j
        fd| j        fd| j        fd| j        fd	| j        fd
| j        ff}t!          |          }|                                }|j        dk    rt'          d          |j                            d          }|t'          d          |dk    rt'          d          |D ]'\  }}	|                    |          }
|
 |	|
           (|                                  | j        }|                                  |S )Nreadr$  layoutdefaultr   buttongroupscustomwidgetsr9   connectionstabstopsrv   uiznot created by Qt Designerversionzmissing version numberz4.0z)only Qt Designer files v4.0 are supported)hasattrr   r  r  dirnamera   set_base_dirr  r  r  r  r  r}  r  r  r  r   getrootr\  r  r   r   findr  rq   rb   )r/   filenameresource_suffixbase_dirbranchHandlersdocumentrootr  tagnameactorr    r!  s               r   r   zUIParser.parse  s   8V$$ 	1HH 8}}Hwx00H  *** / d/0dn-d/0d01d67d45d./d01	
 ??!!8t:;;;+//),,?6777 eIJJJ, 	 	NGU==))Dd

r   c                     | d         dk    rt           j        j        }n/| d         dk    rt           j        j        }nt           j        j        }|S )N   r   )r,   r   SpanningRole	FieldRole	LabelRole)layout_positionroles     r   r   zUIParser._form_layout_role  sL    1!!(5DDQ1$$(2DD(2Dr   N)T)*rR   rS   rT   rZ   rl   rb   r   r   r   r   r   r  r   r  r"  rG  rJ  staticmethodrM  r2  ra  rd  rg  rk  rr  r   r}  rx  rz  ry  r  r  r  r  r  r  r  rw  r  r  r   r   r   r   r   r]   r]      s       	 	 	' ' '*
  
  
    $  Q  Q  Q f0 0 0:) ) )<@2 @2 @2D
> 
> 
>' ' '' ' 'X X XtI I I   \9 9 9v8* 8* 8*t    ' ' ' #"" "(
 
! ! !  4
1 
1 
1  2 2 2	 	 	  ? ? ?     1 1 1(C C C:V V V<" " "
- 
- 
-  / / /b   \  r   r]   )sysloggingr  rexml.etree.ElementTreer   r   
objcreatorr   
propertiesr   	getLoggerrR   loggerdebugr&   r   r,   r   r!   r3   r#   rY   rV   r]   r   r   r   <module>r     sA  R 


  				 				 3 3 3 3 3 3 3 3 & & & & & & " " " " " " 
	8	$	$		   H H H>8' 8' 8' 8' 8'$ 8' 8' 8'v    &   m m m m mv m m m m mr   