o4iddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z eje ZejZdadadadZdZGd d eZGd d eZGd deZy)N) SubElement)QObjectCreator) Properties)UIFilecd}|jdD]D}|jd^}}ttjj|}||}@||z}F|S)z5 Convert a C++ alignment to the corresponding flags. N|::)splitgetattrQtCoreQt AlignmentFlag) alignment align_flagsqt_align_aligns ^/mnt/ssd/data/python-lab/DaemonControl/venv/lib/python3.12/site-packages/PyQt6/uic/uiparser.py_parse_alignmentr8sfKOOC(!~~d+ H //:  K 5 K! c|jjd}|jjd}|jjd}|||ydt|fSt|}t|}t|jjdd}t|jjdd}|||||fS||||t|fS) 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. rowcolumnrrrowspanrcolspan)attribgetrint)elemrrrrrs r_layout_positionr"Hs ++//% C [[__X &F  ,I {fn  #I.// c(C [F$++//)Q/0G$++//)Q/0GVWg.. '+;I+F GGrc4eZdZdZdZdZdZdZdZdZ y) WidgetStackNctd|jjd|j|j |t |t jr||_yy)Nzpush  ) DEBUG metaObject className objectNameappend isinstance QtWidgetsQWidget topwidget)selfitems rpushzWidgetStack.pushisS doo/99;"oo/1 2 D dI-- .!DN /rctj|}td|jj d|j |S)Nz pop layout r&)listpopr'r(r)r*)r0layouts r popLayoutzWidgetStack.popLayoutpsA$ F$5$5$7$A$A$C$*$5$5$79 : rcJtj|}td|jj d|j t |D]%}t|tjs||_ nd|_ td|j|S)Nz pop widget r&znew topwidget ) r4r5r'r(r)r*reversedr,r-r.r/)r0widgetr1s r popWidgetzWidgetStack.popWidgetvs$ F$5$5$7$A$A$C$*$5$5$79 :TN "D$ 1 12!% " "DN DNN45 rc |dSNrr0s rpeekzWidgetStack.peeks Bxrc<t|dtjSr=)r,r-QLayoutr?s r topIsLayoutzWidgetStack.topIsLayouts$r(I$5$566rc t|dtjuryt|dkry|d}t |tjxrt|tj tj tjtjtjtjtjtjfvS)Nr>F) typer-r.lenr, QMainWindowQStackedWidgetQToolBox QTabWidget QScrollAreaQMdiAreaQWizard QDockWidget)r0parents rtopIsLayoutWidgetzWidgetStack.topIsLayoutWidgets R>!2!2 2 t9q=b&)"3"34'f%%((""$$%%""!!%%N':' 'r) __name__ __module__ __qualname__r/r2r7r;r@rCrRrrrr$r$gs%I" 7'rr$ceZdZdZdZy) ButtonGroupzM Encapsulate the configuration of a button group and its implementation. c d|_d|_y)z Initialise the button group. TN) exclusiveobjectr?s r__init__zButtonGroup.__init__s rN)rSrTrU__doc__r[rrrrWrWs rrWc eZdZdZdZdZ d&dZdZdZdZ dZ d Z d Z d Z d Zd ZdZedZdZdZdZdZdZeee e eeeeeed ZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&ed$Z'y%)'UIParserct||_t|j||||_|a|a|a|jyN)rfactoryrwpropsr QtGuir-reset)r0 qtcore_module qtgui_moduleqtwidgets_module creatorPolicys rr[zUIParser.__init__sA%m4  }l " $  rc |j|}|dz }||j|<d||fzS#t$rd|j|<|cYSwxYw)zUIParser.uniqueName(string) -> string Create a unique name from a string. >>> p = UIParser(QtCore, QtGui, QtWidgets) >>> p.uniqueName("foo") 'foo' >>> p.uniqueName("foo") 'foo1' rrz%s%i) name_suffixesKeyError)r0namesuffixs r uniqueNamezUIParser.uniqueNamesg ''-F ! #)4 v&& '(D  t $K s,A A c|jjd|_t |_i|_ddd|_g|_d|_ i|_ y#t$rYHwxYw)Nr>)spacingmargin) rbrdAttributeErrortoplevelWidgetr$stackrjdefaultsactionscurrentActionGroup button_groupsr?s rrdzUIParser.resets] [[   " ] $&"5  "&#t#sA A$#A$c|j|jjdxs|ddj}|d}i}n|rd}t |}n|f}i}|j j |||||} |jj| || j||rt|j|| | S)Nrlrr)rQ) ctor_args ctor_kwargs is_attribute) rnrrlowerdictracreateQtObjectrb setProperties setObjectNamesetattrrs) r0 class_namerQbranchr|parent_is_optional object_namerzr{objs r _setupObjectzUIParser._setupObjectsoo !!&)CZ^-A-A-CE  >IK If-K IKll))*k#)*+ !!#v. +&  D''c : rc\|jdD]}|jd|k(s|cSy)Npropertyrl)findallr)r0r!rlprops r getPropertyzUIParser.getPropertys5LL, D{{6"d*  rc d|_d|_d|_g|_d|_|j dj dd}|dk(rd}|jj}t|tjtjtjtjtjtj tj"frd}|jj%|j'|||t|jjtj(r|j+|d=|jjj-t/|j1d|j+|d =|jjj3t/|j1d |j5||jj7}t|tj8r#|j;|d |j=not|tj>rD|j;|d |jA|j;|d |jCnt|tjDr|jFjI|d}| |jJ}|sd} |jN|}|jT|jVjYd||jZf|_*t]|jZ||jT|jTj_||j`s|jTjcd|jTje||j"|jg|jd|_|jjir||jjk}|j d} t|tjlr&|jo| d|jq| |n|jr|g| |jj} t| tjr|jFjI|d} | .| ju|| |jFjI|dn,| ju||jFjI|d|jFjI|d} | "| jw| jy|| yyt| tj r|jFjI|d} | .| j{|| |jFjI|dn,| j{||jFjI|d|jFjI|d} | "| j}| jy|| yyt| tj"r| j|yt| tjr| js|yt| tjtjfr| jo|yt| tjrzt|tjk(r| j|yt|tjrs|jFjI|d} | | j|n| j| ||jFjI|d}|r| j|yyt|tjr| j|yt|tjr| j|yt|tjrL|jFjI|d}| jtjj||yyy#tL$r|}YwxYw#tP$rtSx}|jN|<YwxYw)Nrclassr .LineQFrame columnCountrrowCountrheaderhorizontalHeaderverticalHeader buttonGroup QButtonGroup)rzFlayout-positioniconlabeltoolTiptitle toolBarArea toolBarBreakdockWidgetArea)Ocolumn_counter row_counteritem_nr itemstacksorting_enabledrreplacertr/r,r-rPrNrMrJrKrLrOr2r QTableWidgetrsetColumnCountrHr setRowCounttraverseWidgetTreer; QTreeViewhandleHeaderViewr QTableViewrrQAbstractButtonrb getAttributestringrrrxrkrWrZrarrsrrrY setExclusive addButtonsetSortingEnabledrCr@ QFormLayout setWidget_form_layout_role addWidgetaddItemsetItemToolTipindexOfaddTab setTabToolTipaddPagerIrGr.setCentralWidgetQToolBar addToolBarinsertToolBarBreakQMenuBar setMenuBar QStatusBar setStatusBar addDockWidgetr rDockWidgetArea)r0r! widget_classrQr:bg_i18nbg_namebglaylpr/rtooltiptbAreatbBreakdwAreas r createWidgetzUIParser.createWidgets #{{7+33D#> 6 !#L%% fy44i6H6H(44i6N6N(1193G3G(002 3F )),EF djj**I,B,B Cm4< $$33C X8N4OPj19 $$00T\\%5H1IJ %%%' fi11 2  ! !$&--/ B  4 4 5  ! !$(:++- /  ! !$(8))+ - 9 9 :kk..t]CG"&%nnG+GE++G4B99$ $ ; ;N#0C0C/F!<!HBID//"))DII++G4<< ..u5 ##F+    +  $ $T%9%9 :#'D :: ! ! #**//#C./B#y445 beT%;%;B%?H f*r*JJ(( i!3!3 4;;++D&9D!!&$ 0H0Hw0WX!!&$++*B*B4*QRkk..tY?G"(():):6)BGL# 9#7#7 8;;++D&9D  t{{/G/Gg/VW  )A)A$)PQkk..tY?G"'' (9(9&(A7K# 9#4#4 5   f %  9#;#; <    '  I$9$99;P;P#Q R    '  9#8#8 9F|y000**62FI$6$6711$ F>((0((8++224H008FI$6$67$$V,FI$8$89&&v.FI$9$9:11$8HI'' (@(@(H ;):U&&%G& E7B}DB++G4Es$ aa" aa""bbc|jj||dz}||j||jj||dz}||j||jj||dz}||j ||jj||dz}||j ||jj||dz}||j ||jj||dz}||j||jj||dz}||j|yy)NVisibleCascadingSectionResizesDefaultSectionSizeHighlightSectionsMinimumSectionSizeShowSortIndicatorStretchLastSection) rbr setVisiblesetCascadingSectionResizessetDefaultSectionSizesetHighlightSectionssetMinimumSectionSizesetSortIndicatorShownsetStretchLastSection)r0r!rlrvalues rrzUIParser.handleHeaderViewsV ((ti/?@     e $ ((t6O/OP    - -e 4 ((t6J/JK    ( ( / ((t6I/IJ    ' ' . ((t6J/JK    ( ( / ((t6I/IJ    ( ( / ((t6J/JK    ( ( / rcr|jd}|jd}||d}nt|t|f}|jj|dtj j j}tj j j|f}|jj|dtjjjk(r |d|df}|jjd|jd ||zd }|j j#r}|j j%}|j&d } t)|tj*r&|j-| d|j/| |y|j0|g| yy) Nzproperty/size/widthzproperty/size/heightrsizeType orientationrr QSpacerItem spacerItemFrzr|r)findtextr rbrr- QSizePolicyPolicy ExpandingMinimumr r Orientation HorizontalrarrnrtrCr@rr,rsetItemrr) r0r!widthheight size_argsrpolicyspacerrrs r createSpacerzUIParser.createSpacerso 3456 =FNIUS[1I;;**4%%,,668''..66A ;; " "4 7699;P;P;[;[ [AYq )F,,] -V9K"-$ :: ! ! #**//#C./B#y445 BqE4#9#9"#=vF F(R( $rc@|jjrdn|jd}|jj |d|}|jj |d|}|jj |d|}|jj |d|}|jj |d|}|jj r|dkrd}|dkrd}|dkrd}|dkrd}|dk\s|dk\s |dk\s|dk\rvt |dd }t|t |d _t|t |d _t|t |d _t|t |d _|jj |d |jd }|jj |d |} |jj |d|} | dk\s| dk\rBt |dd }t| t |d _t| t |d _|jd} |jjrd} n|jj} d|jvr | ddj|jd<|jj|j| | |d|j||jj} |j!|| |jjr}|jj#}|jd}t%|t&j(r&|j+|d|j-|| y|j.| g|yy)Nr>rq leftMargin topMargin rightMargin bottomMarginrr pyuicMargins)rlnumberrphorizontalSpacingverticalSpacing pyuicSpacingrrlrFrr)rtrCrurbrrRrstrtextrr/r}r2rrr7configureLayoutr@r,r-r setLayoutr addLayout)r0r!rqlefttoprightbottomcmerphorizvert classnamerQr6 top_layoutrs r createLayoutzUIParser.createLayouts zz--/T]]85L((x@{{&&t\6Bkk%%dK@ ''mVD((~vF :: ' ' )axQwaqy!%zA6 19qEQJ&A+T:NCC-0YJsH % *-0XJsH % *-0ZJsH % *-0[JsH % *++))$  i(* ''.A7K{{&&t->H A:T:NCC-0ZJsH % *-0YJsH % *KK( :: ! ! #FZZ))F  $"+AB-"5"5"7DKK  !!)VT+0"2 3 %%%' T6* :: ! ! #*J./B*i&;&;<$$RUD,B,B2,FO$ $$V1b1 $rct|tjru|j|d|j|j|d|j |j|d|j |j|d|jyt|tjr|j|d|jyy)Ncolumnminimumwidthrowminimumheight columnstretch rowstretchstretch) r,r- QGridLayoutsetArraysetColumnMinimumWidthsetRowMinimumHeightsetColumnStretch setRowStretch QBoxLayout setStretch)r0r!r6s rrzUIParser.configureLayouts fi33 4 MM$ 400 2 MM$ 2.. 0 MM$1H1H I MM$ f.B.B C  4 4 5 MM$ 6+<+< =6rc|jj|}|r=t|jdD]\}}t |}|dkDs|||!yy)N,r)rr enumerater r )r0r!rlsetterarrayidxrs rrzUIParser.setArraysW % ' C(89 ' UE 193& ' rc|jdk(r=|jjd|j|_|j dyy)Nr__sortingEnabledF)rrainvokeisSortingEnabledrr)r0ws rdisableSortingzUIParser.disableSorting"sD <<1 #'<<#6#67I&&$(D   & rcx |jjr-t||djd<|j |y|jj }t |tjr||jj|d}|jj|d}|r|j|dn|jd|j|j|nt |tjrL|j||j!d||j"|j}|j|nLt |tj$r|j&r%|j&d\}}|j&d\}}n|}|j}|j(j+dd t-|j&z|fd }|jdk(rH|j&s<|j(j/d |j0|_|j5d |j&j7||jfd|_ |j9|} |j&d dD]\} } | j;| } d} |j=dD]&} |jj?| }| jd}|dk(r| d z } |s;| jA| |N|dk(r|jC| |f|dk(r|jE| |~|dk(r|jG| ||dk(r|jI| ||dk(r|jK| ||dk(r|jM| ||dk(r|jO| ||dk(r|jQ||dk(s|jS| |)|j ||j&jU\}|_ nt |tjVrstY|jd}tY|jd}|j||j!d||j"||}|j[||||xjd z c_ y)NrrrrQListWidgetItemr>QTreeWidgetItemzitem_%dFrr'rrrl statusTipr whatsThisfont background foregroundflags checkStaterrQTableWidgetItem).rtrCr"rrr/r,r- QComboBoxrbrr setItemTextr QListWidgetr+createWidgetItemr1 QTreeWidgetrrarrHr(r)rrr+ topLevelItemchildrconvertsetText setStatusTip setToolTip setWhatsThissetFontsetIcon setBackground setForegroundsetFlags setCheckStater5rr r)r0r!r*rrr1rQr nr_in_roottitmr> nr_in_parentrrc_prop c_prop_namercols r handleItemzUIParser.handleItem(s :: ! ! #0@0FDGNN, -  # #D ) $$A!Y001{{..tV<{{..tV<IIdB'IIbM dllD1Ay445##A&,,->aff & $Ay445>> $r 2IFA$(NN1$5MAzF!%J||223D!C$77F:%*3,<<1$T^^+/<<+>+>?QSTSeSe+fD(''.%%tT\\&:;  ~~j1+/>>!"+=4'E<::l3D4 LL4;D![[006F"&++f"5K"f,! ! LL8$ 3))&&9$ 17$ 3))&&9$. VV4$. VV4$ 4**66:$ 4**66:$/ f-$ 4**66:3;6''-"&.."4"4"64<Ay556$++e,-$++h/0##A&,,-?qvvS" #sD) LLA Lrc|jj|jj|jdfy)Nrl)rvr+rtr/rr0r!s r addActionzUIParser.addActions, TZZ114;;v3FGHrc<|D]}|t|tryy)z; Return True if any argument appears to be an i18n string. TF)r,r)argsas rany_i18nzUIParser.any_i18ns) A}Z3%7 rc|jj|dd}|j}|j|d}|j|d}|j|d} |j|d} |j ||| | r|jj d|||r|j ||r|j|| r|j| | r|j| |j|d} | r|j| |j|d } | r|j| |j|d } | r|j| |j|d }|r|j||j|d }|r|j||j|d }|r|j||j|d}|r|j!||S)z( Create a specific type of widget item. r1F)r|rr0rr1 textAlignmentr2rr3r4r5r6)rarrbrrWr(r@rArBrCsetTextAlignmentrDrErFrGrHrI)r0 item_typer!getter getter_argsr1propsr status_tiptool_tip whats_thistext_alignmentr2rr3r4r5 check_states rr;zUIParser.createWidgetItems||**9f"+$    v.&&t[9 $$T95&&t[9 ==z8Z @ LL   <  LL     j )  OOH %    j )**4A   ! !. 1  v.  LL   v.  LL &&t\:    z *&&t\:    z *!!$0  MM% ''l;    { + rcb|jj}t|tjr|j }|j }|j|d}|r |jj|||j|d}|r |jj|||j|d}|r |jj|||j|d}|r |jj|||j|d} | r |jj|| |j|d} | r |jj|| |j|d} | r |jj|| |j|d} | r |jj!|| |j|d } | r |jj#|| |xj d z c_yt|tj$rt'|d k7r|j(d k(rZ|j+d ||j,|j }|j/|j ||xj d z c_y|j(dk(rZ|j+d ||j0|j2}|j5|j2||xj2d z c_yyyy)Nrr0rr1rYr2rr3r4rrrr7r)rtr/r,r-r<rbrr headerItemr@rArBrCrZrDrErFrGrrHtagr;horizontalHeaderItemsetHorizontalHeaderItemverticalHeaderItemrsetVerticalHeaderItem)r0r!r*r^rOrr_r`rarbr2rr3r4r1s r addHeaderzUIParser.addHeaders JJ  a.. /KKE%%C$$T62D &&sD1**4=J ++C<((y9H ))#x8**4=J ++C<"..t_EN //^D$$T62D &&sD1$$T62D &&sD1**4>J ,,S*=**4>J ,,S*=   1 $  911 24yA~88x'001CT22D4G4GID--d.A.A4H''1,'XX&001CT00$2B2BDD++D,<, A  A cZ|jd|jxs |j|y)NQAction)rrwrsrRs r createActionzUIParser.createActions) )''>4+>+> Frc|jd|j|d}||_|j|d|_y)N QActionGroupFr)rrsrwr)r0r! action_groups rcreateActionGroupzUIParser.createActionGroupsD((9L9L)0 ". %"&r) r: addactionr6rr1action actiongrouprrzorderct|D]%} |j|j}|||'y#t$rY4wxYwr`)iterwidgetTreeItemHandlersrfrk)r0r!r>handlers rrzUIParser.traverseWidgetTree+sN$Z !E 55eii@ D%  !  s5 AAc|jd}|jd}|s1|}|jdr|dd}|dj|ddz}|j|||_|jj |t d|jjj|jj|j||jj|j|j||jj|j|j!|j#y)z( Handle the top-level element. rrlQrNrztoplevel widget is %s)r startswithr}createToplevelWidgetrsrr'r(r)rbrrtr2rr; addActions setBuddiessetDelayedProps)r0elcnamewnames r_handle_widgetzUIParser._handle_widget4s '" &!E$ab !HNN$uQRy0E"77uE ))%0 %!!,,.88: < !!$"5"5r: ++, #    rc|jD]\}}|dk(r|jtd||jt |j |}t |tjr |j|jt |tjr|j|y)N separatorzadd action %s to %s) rv addSeparatorr'r*r rsr,r-QMenurS menuActionrcrs)r0r: action_name action_objs rrzUIParser.addActionsPs#'<< 1 FKk)##%+[&:K:K:MN$T%8%8+F j)//:$$Z%:%:%<=#J0B0BC$$Z0 1rc|jjD]-\}}}}|r|j}t||}||/yr`)rb delayed_propsr6r )r0r:r6r#rUs rrzUIParser.setDelayedProps\sE,0KK,E,E  (FFFDVV,F 4L  rc|jjD]F\}}td||j |j t |j |Hy#t$rtd||jYpwxYw)Nz%s is buddy of %sz1ERROR in ui spec: %s (buddy of %s) does not exist)rbbuddiesr'r*setBuddyr rsrr)r0r:buddys rrzUIParser.setBuddiesds}![[00 2MFE %uf.?.?.A B 2(;(;U CD 2" 2IV..02 2s%A!!$BBcy)zc Reimplemented by a sub-class if it needs to know the translation context. Nr)r0contexts r setContextzUIParser.setContextms rct|jd|jd<t|jd|jd<y)z% Handle the element. rqrpN)r rru)r0rs r_handle_layout_defaultzUIParser._handle_layout_defaultts<#&bii&9": h#&ryy';#< i rcd}|D]B}t|j|j}||jj|||}Dy)z Handle the element. N)r rsr setTabOrder)r0r lastwidget widget_elr:s r_handle_tab_stopszUIParser._handle_tab_stopszsO  IT00)..AF%##// FCJ  rcfd}|D]}|jd}|jd\}}|ddjdd}||jd}t||}jj ||jd |jd jdd } |dk(r|j | |jd }t|d k(r||d j | |t|j | !tjjjy)z# Handle the element. cf|jk(r jStj|Sr`)uinamersr )rr0s r name2objectz1UIParser._handle_connections..name2objects.dkk!***t22C88rsignal(Nr>r&r-senderreceiverslotrr!r) rr rr ragetSlotconnectrHtupler QMetaObjectconnectSlotsByNamers) r0rrconnr signal_name signal_argsr bound_signalrs ` r_handle_connectionszUIParser._handle_connectionss4 9  CD]]8,F'-||C'8 $K%cr*223;K x!89F"6;7L<<'' DMM*4M(NMM&)//4Q79Db $$T*)//4 {#q( Q088> {!34< element. c|jdr|dd}g}|jdD](}|dvs|dk(r td|j|*dj |S) zheader2module(header) -> string Convert paths to C++ header files to according Python modules >>> header2module("foo/bar/baz.h") 'foo.bar.baz' z.hNrF/)r-rz..z4custom widget header file name may not contain '..'.r)endswithr SyntaxErrorr+join)rmpathparts r header2modulez6UIParser._handle_custom_widgets..header2modulesqt$E S) 'y(t|)*`aaLL& '88E? "rrextendsr.rN)rraaddCustomWidget)r0rr custom_widgetrs r_handle_custom_widgetszUIParser._handle_custom_widgetsse #.  EM%..w7I LL ( (!**95B!-"8"8"BC E Erctr`)NotImplementedError)r0r widgetnames rrzUIParser.createToplevelWidgets!!rc|D]k}|jdk(s|jd}t}||j|<|j |d}|P|j ddk(sed|_my)z$ Handle the element. buttongrouprlrYNboolfalseF)rfrrWrxrrrY)r0r button_grouprrrs r_handle_button_groupszUIParser._handle_button_groupssx -L=0&--f5 ].0""7+'' kB#}}V,7',  -rcyr`rr?s rfinalizezUIParser.finalizes rcht|drd}ntjj|}|jj |t |}|j|_|j|j_|j|j|j|j|j|j|j|j|j|j|j|j |j#|j |j$|j'|j$|j(|j+|j(|j-|j.}|j1|S)Nreadr-)hasattrospathdirnamerb set_base_dirrrrrlayout_defaultrrxrcustom_widgetsrr:r connectionsr tab_stopsrrrsrd)r0filenamebase_dirui_filer*s rparsezUIParser.parsesP 8V $Hwwx0H   *"(( $//  **+  ! ! -  ' '(>(> ?  ,  & &w'<'< =  ! ! -  ' '(>(> ? >> %    /    *  $ $W%8%8 9    (  " "7#4#4 5     rc|ddkDr&tjjj}|S|ddk(r&tjjj}|Stjjj }|S)Nr)r-rItemRole SpanningRole FieldRole LabelRole)layout_positionroles rrzUIParser._form_layout_rolesx 1  !((11>>D  Q 1 $((11;;D ((11;;D rN)TT)(rSrTrUr[rnrdrrrrrrrrr+rPrS staticmethodrWr;rkrnrqrur|rrrrrrrrrrrrrrrrrrr^r^s '*  EI#6Q f0:)'' YvI:x8*t F'#"" "(  !8 12 =  C>E@" -  (Trr^)sysloggingrrexml.etree.ElementTreer objcreatorr propertiesrrr getLoggerrSloggerdebugr'r rcr-rr"r4r$rZrWr^rrrrs~J  ,&"   8 $       H>8'$8'v&a va r