;i8ddlmZmZddgZGddejZGddejZGddeZ dS) )QtCore QtWidgets TreeWidgetTreeWidgetItemcJeZdZdZejeeeZejeeZejeeZ ejeeZ ddZ dZ dZ dZdZdZd Zd Zd Zdd Zfd ZdZedZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#xZ$S)rzExtends QTreeWidget to allow internal drag/drop with widgets in the tree. Also maintains the expanded state of subtrees as they are moved. This class demonstrates the absurd lengths one must go to to make drag/drop work.Nctj||ttj||_|d|d|tj j j tj j j zg|_ d|_|j|jdS)NT)r QTreeWidget__init__InvisibleRootIteminvisibleRootItem _invRootItemsetAcceptDropssetDragEnabledsetEditTriggersQAbstractItemView EditTriggerEditKeyPressedSelectedClicked placeholderschildNestingLimit itemClickedconnect _itemClicked)selfparents PC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\pyqtgraph/widgets/TreeWidget.pyr zTreeWidget.__init__s&&tV444.i.C.U.UVZ.[.[\\ D!!! D!!! Y8DST]ToT{ULL M M M!%   !233333cFtj}tj}|dddd||||||| | | |||_ |j |tj||||dS)z Overrides QTreeWidget.setItemWidget such that widgets are added inside an invisible wrapper widget. This makes it possible to move the item in and out of the tree without its widgets being automatically deleted. N)rQWidget QVBoxLayoutsetContentsMargins setLayout setSizePolicy sizePolicysetMinimumHeight minimumHeightsetMinimumWidth minimumWidth addWidget realChildrappendr setItemWidget)ritemcolwidwls rr-zTreeWidget.setItemWidgets      ! # # Qq1%%% A (())) 3,,../// #**,,--- C    ###++D$Q?????rcztj|||}|t|dr|j}|S)Nr+)rr itemWidgethasattrr+)rr.r/r1s rr4zTreeWidget.itemWidget/s;  ! , ,T4 = = =WQ 44= Arcr|}|} |n||urdS|}||||sdS|}||}||}||ur|||kr|dz}|||||||||| ||j |||dS)NTF) currentItemr itemMovingr indexOfChild prepareMove removeChild insertChildsetCurrentItem recoverMove sigItemMovedemit)rrindexdataactionr.p currentParents r dropMimeDatazTreeWidget.dropMimeData5sP!!  yDyyu A  tVU33 5   2244M >++--F F " "uv/B/B4/H/H'H'H QJE !!$'''5$''' D!!!  tVU333trcdS)zqCalled when item has been dropped elsewhere in the tree. Return True to accept the move, False to reject.T)rr.rrBs rr9zTreeWidget.itemMovingYs trcg|_||_t|D]J}|||}|j||5|dKt|D]*}| | |+dSN) _TreeWidget__widgets isExpanded_TreeWidget__expandedrange columnCountr4r, setParent childCountr;childrr.ir1s rr;zTreeWidget.prepareMove^s//++t''))**  Aa((A N ! !! $ $ $y KK    t(()) , ,A   TZZ]] + + + + , ,rct|D])}|j|}|||||*t|D]*}|||+|dtj ||j dSNF) rOrPrLr-rRr?rS setExpandedr QApplicationinstance processEventsrNrTs rr?zTreeWidget.recoverMovejst''))** + +Aq!Ay   tQ * * * *t(()) , ,A   TZZ]] + + + + ''))77999 )))))rc|dt|D]*}|||+dSrW)rXrOrR collapseTreerSrr.rUs rr]zTreeWidget.collapseTreewsb t(()) - -A   djjmm , , , , - -rct|D]1}|||ur||dS2t dt |z)Nz!Item '%s' not in top-level items.)rOtopLevelItemCount topLevelItemtakeTopLevelItem Exceptionstrr^s rremoveTopLevelItemzTreeWidget.removeTopLevelItem|szt--//00  A  ##t++%%a(((,;c$iiGHHHrc0g}|||n|}t|D]E}|||}|D]}||F|S)N)r.)r,r rOrR listAllItemsrS)rr.itemscindex foundItemsfs rrgzTreeWidget.listAllItemss   LL    ))++DDOO--..  F** 60B0B*CCJ   Q  rcrt||dSrK)super dropEventupdateDropFlags)rev __class__s rrnzTreeWidget.dropEvents3 " rc|jdS|}|D]}d}|}||dz }|}|||jkr@||t jjjz||t jjjzdS)Nrr7) rrgrsetFlagsflagsrQtItemFlagItemIsDropEnabled)rrhr. parentCountrEs rrozTreeWidget.updateDropFlagss  ! ) D%%''E W W KKMMm1$K Am$"888MM$**,,693E3W2W"XYYYYMM$**,,1C1U"UVVVV W Wrct|dr|t|D]/}t||0dS)NtreeWidgetChanged)r5rzrOrRrinformTreeWidgetChangerS)r.rUs rr{z!TreeWidget.informTreeWidgetChangess 4, - - %  " " $ $ $t(()) = =A  - -djjmm < < < < = =rcptj||||dSrK)rr addTopLevelItemr{rr.s rr}zTreeWidget.addTopLevelItems5--dD999 ##D)))))rcztj|||D]}||dSrK)rr addTopLevelItemsr{rrhr.s rrzTreeWidget.addTopLevelItemssK..tU;;; . .D  ' ' - - - - . .rcrtj|||||dSrK)rr insertTopLevelItemr{rrBr.s rrzTreeWidget.insertTopLevelItems700udCCC ##D)))))rc|tj||||D]}||dSrK)rr insertTopLevelItemsr{)rrBrhr.s rrzTreeWidget.insertTopLevelItemssM11$uEEE . .D  ' ' - - - - . .rc||}|||tj||}|||||SrK)rar;rr rbr{rs rrbzTreeWidget.takeTopLevelItemst  ''     T " " "$55dEBB  ##D))) rc^fdtDS)Nc:g|]}|SrI)ra.0rUrs r z,TreeWidget.topLevelItems..s'NNN!!!$$NNNr)rOr`rs`r topLevelItemszTreeWidget.topLevelItemss1NNNNeD4J4J4L4L.M.MNNNNrc|}|D]}||tj|dSrK)rr;rr clearrs rrzTreeWidget.clearsV""$$ # #D   T " " " "##D)))))rc|jSrK)r rs rr zTreeWidget.invisibleRootItems   rc|}g}|dkrT|d||}|dkT||d}|ddD]}||}||fS)zCReturn the item and column corresponding to a QModelIndex. rr7N)columnrowinsertrrarS)rrBr/rowsr.rs r itemFromIndexzTreeWidget.itemFromIndexsllnniikkQ KK599;; ' ' 'LLNNEiikkQ  a))8 # #C::c??DDSyrc|tj|||j||dSrK)rr setColumnCountsigColumnCountChangedrA)rcs rrzTreeWidget.setColumnCounts:,,T1555 "''a00000rcTt|dr||dSdS)Nr)r5r)rr.r/s rrzTreeWidget._itemClickeds8 4 ' ' "   S ! ! ! ! ! " "rrK)%__name__ __module__ __qualname____doc__rSignalobjectr@sigItemCheckStateChangedsigItemTextChangedrr r-r4rGr9r;r?r]rergrnro staticmethodr{r}rrrrbrrr rrr __classcell__)rqs@rrrsYY!6=88L,v}VV<<&vv66)FM&&99 4 4 4 4@@@" """H , , , * * *--- III    WWW&==\= ***... ***... OOO***!!!   111"""""""rc~eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdS)raV TreeWidgetItem that keeps track of its own widgets and expansion state. * Widgets may be added to columns before the item is added to a tree. * Expanded state may be set before item is added to a tree. * Adds setCheked and isChecked methods. * Adds addChildren, insertChildren, and takeChildren methods. c^tjj|g|Ri|_d|_d|_dSrW)rQTreeWidgetItemr _widgets_tree _expanded)rargss rr zTreeWidgetItem.__init__s7!*47$7777  rc|||rtjjjntjjjdSrK) setCheckStaterru CheckStateChecked Unchecked)rrcheckeds r setCheckedzTreeWidgetItem.setCheckeds: 67#n69#7#?#?PVPYPdPnooooorc\||tjjjkSrK) checkStaterrurrrr/s r isCheckedzTreeWidgetItem.isCheckeds!s##vy';'CCCrcT||_tj||dSrK)rrrrX)rexps rrXzTreeWidgetItem.setExpandeds(!--dC88888rc|jSrK)rrs rrMzTreeWidgetItem.isExpandeds ~rc||jvr||||j|<|}|dS||||dSrK)r removeWidget treeWidgetr-)rrwidgettrees r setWidgetzTreeWidgetItem.setWidget sf T] " "   f % % % & f   < F   tVV 4 4 4 4 4rcr|j|=|}|dS|||dSrK)rrremoveItemWidget)rrrs rrzTreeWidgetItem.removeWidgetsA M& !   < F dF+++++rc4|}|j|urdS||_|dS|jD]\}}||||t j||jdSrK) rrrrhr-rrrXr)rrr/rs rrzz TreeWidgetItem.treeWidgetChangeds   :   F__&& < F=..00 2 2KC   tS& 1 1 1 1!--dDNCCCCCrc^fdtDS)Nc:g|]}|SrI)rSrs rrz-TreeWidgetItem.childItems..(s#@@@! 1 @@@r)rOrRrs`r childItemszTreeWidgetItem.childItems's/@@@@uT__->->'?'?@@@@rcztj||t|dSrK)rraddChildrr{rrSs rrzTreeWidgetItem.addChild*s5!**4777))%00000rctj|||D]}t|dSrKrr addChildrenrr{rchildsrSs rrzTreeWidgetItem.addChildren.sK!--dF;;; 5 5E  - -e 4 4 4 4 5 5rc|tj|||t|dSrK)rrr=rr{rrBrSs rr=zTreeWidgetItem.insertChild3s7!--dE5AAA))%00000rctj||||D]}t|dSrKrrrBrrSs rinsertChildrenzTreeWidgetItem.insertChildren7sM!--dE6BBB 5 5E  - -e 4 4 4 4 5 5rcztj||t|dSrK)rrr<rr{rs rr<zTreeWidgetItem.removeChild<s5!--dE:::))%00000rcztj||}t||SrK)rr takeChildrr{rs rrzTreeWidgetItem.takeChild@s3)33D%@@))%000 rctj|}|D]}t||SrK)rr takeChildrenrr{rs rrzTreeWidgetItem.takeChildrenEsC*77== 5 5E  - -e 4 4 4 4 rc:||}||}tj|||||}|dS|t jjj kr6|||kr|j ||dS|t jjj t jjj fvr6|||kr|j ||dSdSdSrK)rtextrrsetDatarrru ItemDataRoleCheckStateRolerrA DisplayRoleEditRoler)rrrolevalue checkstater treewidgets rrzTreeWidgetItem.setDataKs__V,, yy  !))$eDDD__&&   F FI*9 9 9jDOO\bLcLc>c>c  / 4 4T6 B B B B Bvy-969;Q;Z[[[`dhlhqhqrxhyhy`y`y  ) . .tV < < < < <\[`y`yrcdS)zlCalled when this item is clicked on. Override this method to react to user clicks. NrIrs rrzTreeWidgetItem.itemClickedZsrN)rrrrr rrrXrMrrrzrrrr=rr<rrrrrIrrrrs8 pppDDD999555,,, D D DAAA111555 111555 111  = = =     rcHeZdZdZdZdZdZdZdZdZ dZ d Z d Z d S) r zWrapper around a TreeWidget's invisible root item that calls TreeWidget.informTreeWidgetChange when child items are added/removed. c||_dSrK) _real_itemr~s rr zInvisibleRootItem.__init__es rcn|j|t|dSrK)rrrr{rs rrzInvisibleRootItem.addChildhs2   '''))%00000rcx|j||D]}t|dSrKrrrr{rs rrzInvisibleRootItem.addChildrenlsH ##F+++ 5 5E  - -e 4 4 4 4 5 5rcp|j||t|dSrK)rr=rr{rs rr=zInvisibleRootItem.insertChildqs4 ##E5111))%00000rcz|j|||D]}t|dSrKrrs rrz InvisibleRootItem.insertChildrenusJ ##E6222 5 5E  - -e 4 4 4 4 5 5rcn|j|t|dSrK)rr<rr{rs rr<zInvisibleRootItem.removeChildzs2 ##E***))%00000rcn|j|}t||SrK)rrrr{rs rrzInvisibleRootItem.takeChild~s0))%00))%000 rcv|j}|D]}t||SrK)rrrr{rs rrzInvisibleRootItem.takeChildrens@--// 5 5E  - -e 4 4 4 4 rc,t|j|SrK)getattrr)rattrs r __getattr__zInvisibleRootItem.__getattr__st---rN) rrrrr rrr=rr<rrrrIrrr r as111555 111555 111  .....rr N) rurr__all__r rrrrr rIrrrs"""""""" ) *f"f"f"f"f"&f"f"f"Ro o o o o Y.o o o d).).).).).).).).).).r