;iEddlZddlmZmZmZejjZdgZdZ Gddej Z Gddej Z dS) N)QtCoreQtGui QtWidgets TableWidgetcfd}|S)Nc(d}|j0||_d}|d |g|Ri||r"||jd|_SS#|r!||jd|_wxYw)NFT)_sortingisSortingEnabledsetSortingEnabled)selfargskwds setSortingfns QC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\pyqtgraph/widgets/TableWidget.py defersortz_defersort..defersort s =  1133DMJ  " "5 ) ) ) %2d*T***T** %&&t}555 $  %z %&&t}555 $ $$$$s A,,%B)rrs` r _defersortr s$ % % % % % ceZdZdZdZdZdZedZddZ dd Z d Z d Z d Z d ZdZedZedZdZdZddZdZdZdZdZdZdZfdZdZxZS) raExtends QTableWidget with some useful functions for automatic data handling and copy / export context menu. Can automatically format and display a variety of data types (see :func:`setData() ` for more information. ctjj|g|Rt|_||jj|tj j j | tj jjtj jj||dd|dd||d||dt+|dkr1t-dt/|zd|_ddi|_i|_|j|jtj|_ |j !tEdd j#|j$|j !tEdd j#|j%|j !tEdd j#|j&|j !tEdd j#|j'dS) a  All positional arguments are passed to QTableWidget.__init__(). ===================== ================================================= **Keyword Arguments** editable (bool) If True, cells in the table can be edited by the user. Default is False. sortable (bool) If True, the table may be soted by clicking on column headers. Note that this also causes rows to appear initially shuffled until a sort column is selected. Default is True. *(added in version 0.9.9)* ===================== ================================================= sortableTeditableFrzInvalid keyword arguments '%s'NrzCopy SelectionzCopy AllzSave SelectionzSave All)(r QTableWidget__init__TableWidgetItem itemClasssetVerticalScrollMode ScrollModeScrollPerPixelsetSelectionModeQAbstractItemView SelectionModeContiguousSelection setSizePolicy QSizePolicyPolicy Preferredclear setdefault setEditablepopr len TypeErrorlistkeysr _formats sortModes itemChangedconnecthandleItemChangedQMenu contextMenu addAction translate triggeredcopySelcopyAllsaveSelsaveAll)r rrs rrzTableWidget.__init__#sP '4t4444( ""4?#ABBB i9G[\\\ 907A9CXC_Cijjj   D)))  E*** *--... txx 33444 t99q==` for accepted data types. Ncg|]}|Srr.0xs r z*TableWidget.appendData..s+++1Q+++rc^g|])}|*Sr)verticalHeaderItemtextrPir s rrRz*TableWidget.appendData..s3XXXAd--a005577XXXrTcg|]}|SrrrOs rrRz*TableWidget.appendData..s000!A000rr)rowCount iteratorFnr*next StopIterationrEr.rArangerDsetVerticalHeaderLabelsrBsetHorizontalHeaderLabelssetRowr horizontalHeadersortIndicatorSection columnCount sortByColumnrQt SortOrderAscendingOrder) r rKstartRowfn0header0it0firstfn1header1 firstValslabelsrWrows ` rrHzTableWidget.appendDatajsk==??t,, W ; JJLLL Fc$ii IIEE    FF u-- W ; JJLLL F++E +++  C NN+++& +7+>XXXXt}}AWAWXXXF   XG 4 5 5 5  ( (')9 : : :&*D #( -W-@  * *7 3 3 3(,D %  Ay!!! 2 2C FA KK00ss3xx000 1 1 1 1 M Ed7 E  ! ! # # 8 8 : :d>N>N>P>P P P   a!4!C D D D D D E E E E P PsA"" A0/A0TcR||_|jD]}||dSN)rrCr,)r ritems rr,zTableWidget.setEditables;  J ' 'D   X & & & & ' 'rNcv|6t|ts!t|std|z||j|<|t |D]o}|j|dRt |D]0}| ||}|| |1pdS| |jd}t |D]0}| ||}|| |1dS)a Specify the default text formatting for the entire table, or for a single column if *column* is specified. If a string is specified, it is used as a format string for converting float values (and all other types are converted using str). If a function is specified, it will be called with the item as its only argument and must return a string. Setting format = None causes the default formatter to be used instead. Added in version 0.9.9. N8Format argument must string, callable, or None. (got %s)) isinstancestrcallable ValueErrorr2r^rdgetrZru setFormat)r formatcolumncrrus rr}zTableWidget.setFormatsO  j&=&= hvFVFV WZ``aa a & f >4++--.. / /=$$Q--5"4==??33//#yyA<$v....  / /~t,4==??++ ' 'yyF++<v&&&&  ' 'rcttsttrddfSttr7dtt t fStdrdr dr'fdtj dD}nM dr6tt t  d}nd}|j|fSttjr |jdfSttjr3|jtt t jjfSdStjr |jdfSdt1}t3|) Nc*|Srt)__iter__ds rz(TableWidget.iteratorFn..sQZZ\\rcDt|Srt)itervaluesrs rrz(TableWidget.iteratorFn..sT!((**--r implements MetaArrayrcVg|]%}td|&S)r)ry columnName)rPrWrKs rrRz*TableWidget.iteratorFn..s/SSS#dooa3344SSSr)NNz.Don't know how to iterate over data type: {!s})rxr0tupledictmapryr1hasattrraxisHasColumnsr^shape axisHasValuesxvals iterFirstAxisnpndarrayvoiditeratedtypenamesisscalar iterateScalarr~typer/)r rKheadermsgs ` rr[zTableWidget.iteratorFns dD ! ! !Ze%<%< !))4/ / d # # !--tCTYY[[4I4I/J/JJ JdL)) !dook.J.J !""1%% SSSSeDJqM>R>RSSS##A&& c#tzz!}}5566%v- - bj ) ) !%t+ + bg & & !<c#tz/?&@&@!A!AA A \; [   !%t+ +BII$t**UUCC.. rc#XKt|jdD] }||V dS)Nr)r^r)r rKrWs rrzTableWidget.iterFirstAxiss<tz!}%%  Aq'MMMM  rc#K|D]}|VdSrtr)r rKrQs rrzTableWidget.iterates,  AGGGG  rc#K|VdSrtrrJs rrzTableWidget.iterateScalars rc2||gdSrt)rHrJs r appendRowzTableWidget.appendRows rc|}||dz|||dSNrX)rZrDra)r valsrrs raddRowzTableWidget.addRowsAmmoo q!!! Crc||dz kr||dztt|D]}||}|||}||j|j|d}|| ||j ||j d}| ||j |||||||dSr)rZrDr^r.rr,rr3r| setSortModer2r}rCappendsetItemsetValue)r rrrcolvalrusortModer~s rrazTableWidget.setRows- 1$ $ $   S1W % % %T##  Cs)C>>#s++D   T] + + +~))#t44H#  ***]&&sDM$,?@@F NN6 " " " J  d # # # LLc4 ( ( ( MM#      rct|D]=}|||}t|dr||>||j|<dS)a Set the mode used to sort *column*. ============== ======================================================== **Sort Modes** value Compares item.value if available; falls back to text comparison. text Compares item.text() index Compares by the order in which items were inserted. ============== ======================================================== Added in version 0.9.9 rN)r^rZrurrr3)r rmoderrus rrzTableWidget.setSortMode sot}}'' ' 'A99Q''Dt]++ '  &&&!%vrc"tfdtD}|z }|z }|dzz }tfdtD}| z }|  z }tj ||S)Nc3BK|]}|VdSrt) columnWidthrVs r z'TableWidget.sizeHint..s1KKAD$$Q''KKKKKKrrc3BK|]}|VdSrt) rowHeightrVs rrz'TableWidget.sizeHint..#s/GG1T^^A&&GGGGGGr) sumr^rdverticalHeadersizeHintwidthverticalScrollBar frameWidthrZheighthorizontalScrollBarrQSize)r rrs` rrzTableWidget.sizeHintsNKKKKt7G7G7I7I1J1JKKKKK $$&&//1177999 ''))2244::<<< ""Q&&GGGGdmmoo0F0FGGGGG$%%''002299;;;$**,,5577>>@@@|E6***rFc|r|d}tt||dz}tt||dz}n\tt|}tt|}g}|j rrg}|j r| d|D]<}| | | =| ||D]}g}|j r:| || |D]W}|||} | (| t!| jB| dX| |d} |D]}| d|dzz } | S)zKConvert entire table (or just selected area) into tab-separated text valuesrrXN  )selectedRangesr0r^topRow bottomRow leftColumn rightColumnrZrdrBrArhorizontalHeaderItemrUrTruryvaluejoin) r useSelection selectionrowscolumnsrKrrrrruss r serializezTableWidget.serialize(sE  6++--a0Ii..00'1133a799::D5!5!5!7!7!*!6!6!8!81!<>>??GGdmmoo..//D5!1!1!3!34455G  $ C&  2 @ @ 444Q77<<>>???? KK     AC& > 422155::<<=== # #yyA#JJs4:////JJrNNNN KK      ) )C $))C..4' (AArctj|ddS)z Copy selected data to clipboard.TrNr QApplication clipboardsetTextrrFs rr<zTableWidget.copySelOs9((**224>>t>3T3TUUUUUrctj|ddS)zCopy all data to clipboard.FrNrrFs rr=zTableWidget.copyAllSs9((**224>>u>3U3UVVVVVrcX||ddS)zSave selected data to file.TrNsaverrFs rr>zTableWidget.saveSelWs( $..d.3344444rcX||ddS)zSave all data to file.FrNrrFs rr?zTableWidget.saveAll[s( $..e.4455555rc tj|tddddtddd\}}|sdSt |d5}||ddddS#1swxYwYdS)NrzSave Asz...rzTab-separated valuesz (*.tsv)w)r QFileDialoggetSaveFileNamer:openwrite)r rKfileName_fds rrzTableWidget.save_s+;;  22 7 7 7 (>?? I I I   !   F (C  B HHTNNN                  sA??BBc^|j|dSrt)r8popup globalPos)r evs rcontextMenuEventzTableWidget.contextMenuEventks' r||~~.....rc|tjjjr*||dSt|dSrt) matchesr QKeySequence StandardKeyCopyacceptr<super keyPressEvent)r r __class__s rrzTableWidget.keyPressEventns\ ::e(49 : : & IIKKK LLNNNNN GG ! !" % % % % %rc.|dSrt)r4)r rus rr6zTableWidget.handleItemChangedus r)Trt)F)__name__ __module__ __qualname____doc__rr*rLrrHr,r}r[rrrrrrarrrr<r=r>r?rrrr6 __classcell__)rs@rrrs ,i,i,i\ ' ' '+E+EZ+EZ'''' ''''''''T!!!4    Z Z"&&&( + + +%%%%NVVVWWW555666   ///&&&&&rcLeZdZd dZdZdZdZdZdZdZ d Z d Z d Z dS) rNcdtj|dd|_d|_d|_d|_||_tj j j tj j j z}| |||||dS)NrFz%0.3gr)rQTableWidgetItemr_blockValueChange_format_defaultFormatrindexrrfItemFlagItemIsSelectable ItemIsEnabledsetFlagsrr})r rrr~flagss rrzTableWidgetItem.__init__zs"++D"555!& %   "3fi6H6VV e c vrc|r@||tjjjzdS||tjjjzdS)z9 Set whether this item is user-editable. N)r r rrfrItemIsEditable)r rs rr,zTableWidgetItem.setEditablesj  M MM$**,,);)JJ K K K K K MM$**,,&)*<*K)KK L L L L Lrc^d}||vrtdt|z||_dS)a Set the mode used to sort this item against others in its column. ============== ======================================================== **Sort Modes** value Compares item.value if available; falls back to text comparison. text Compares item.text() index Compares by the order in which items were inserted. ============== ======================================================== )rrUrNzSort mode must be one of %sN)r{ryr)r rmodess rrzTableWidgetItem.setSortModes91 u  :SZZGHH H rc|6t|ts!t|std|z||_|dS)aDefine the conversion from item value to displayed text. If a string is specified, it is used as a format string for converting float values (and all other types are converted using str). If a function is specified, it will be called with the item as its only argument and must return a string. Added in version 0.9.9. Nrw)rxryrzr{r _updateText)r fmts rr}zTableWidgetItem.setFormatsU ?:c3#7#7? ?WZ]]^^ ^  rcd|_ ||_||jd|_dS#d|_wxYw)NTF)rr~_textrrFs rrzTableWidgetItem._updateTextsT!% +DJ LL $ $ $%*D " " "UD " * * * *s 3A Ac<||_|dSrt)rr)r rs rrzTableWidgetItem.setValues!  rcl||jkr|dSdS)z.Called when the data of this item has changed.N)rUr textChangedrFs rr4zTableWidgetItem.itemChangeds7 99;;$* $ $         % $rc"||_|jrdS t|j||_dS#t $r*t ||_YdSwxYw)z8Called when this item's text has changed for any reason.N)rUrrrrr{ryrFs rrzTableWidgetItem.textChangedsYY[[  !  F *)dj))$))++66DJJJ * * *TYY[[))DJJJJ *s4A0B Bct|jr||St|jtt jfr%|j|j|jzS|j|jzSt|jSrt) rzrrxrfloatrfloatingrryrFs rr~zTableWidgetItem.formatsv DL ! ! &<<%% % dj5"+"6 7 7 #|#*TZ77|dj00tz?? "rc|jdkr t|dr|j|jkS|jdkr t|dr|j|jkS||kS)Nrr)rrrrrU)r others r__lt__zTableWidgetItem.__lt__ss =G # #w(?(? #: + + =G # #w(?(? #: + +99;;- -rrt) rrrrr,rr}rrr4rr~rrrrrrys    MMM"   +++ * * * # # #.....rr)numpyrrfrrrQCoreApplicationr:__all__rrrrrrrrr!s))))))))))  # - /$ZZZZZ)(ZZZz g.g.g.g.g.i0g.g.g.g.g.r