PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  pYG@sddlTGdddeZGdddeZGdddeZGdd d eZd d Zed krdd l m Z e edS))*c@seZdZdS)InvalidNameErrorN)__name__ __module__ __qualname__rr*/opt/python35/lib/python3.5/tabbedpages.pyr s rc@seZdZdS)AlreadyExistsErrorN)rrrrrrrr s r c@seZdZddddddZddZd d Zd d Zd dZddZddZ Gddde Z dS)TabSetNFc Kstj|||||_||_||_||_||_i|_i|_|rjt ||_ n g|_ d|_ g|_ t|dddddt d|jd|_|jjdtdtd d |jdS) Nheight borderwidthrrelief backgroundsidefillexpandF)Frame__init__select_commandn_rowsmax_tabs_per_row expand_tabspage_set_tabs_tab2rowlist _tab_names _selected_tab _tab_rowsFLATcgetZ padding_framepackTOPX _arrange_tabs)selfrrZtabsrrrkwrrrrs$           zTabSet.__init__cCsS|std|||jkr5td||jj||jdS)NzInvalid Tab name: '%s'zTab named '%s' already exists)rrr appendr')r(tab_namerrradd_tabDs zTabSet.add_tabcCs=||jkrtd||jj||jdS)NzNo such Tab: '%s)rKeyErrorremover')r(r+rrr remove_tabNszTabSet.remove_tabcCs||jkrdS|dk r>||jkr>td||jdk ra|j|jjd|_|dk r||_|j|}|j|j|}|j|jdtdt dddS)NzNo such Tab: '%srrrr) r rr- set_normal set_selectedr pack_forgetr$r%r&)r(r+tabtab_rowrrrset_selected_tabVs       zTabSet.set_selected_tabcCs|s dSt|}|jdtdtdd|jj|xx|D]p}tj||j||}|r|jdt dtddn|jdt ||j |<||j |dS|jdk rh|jdkrh|j}nt|jd|jd}|jp|dk}d}xht |D]Z}t|j|d||d}|j|||}||7}|j ||qW|j }|j d||jkr>|j |dS)Nr r) rpopitemr<r=rrlenrrranger:r r5)r(rriZ row_indexZn_tabsr9selectedrrrr's&    #   zTabSet._arrange_tabsc@saeZdZdZddZddZddZdd Zd d Zd d dZ dS)zTabSet.TabButtonrcCstj||d|jdt||_||_||_d|_t|d|d|j dddd d t d t d d dddd  |_ |j j dt dtdd|j|jdS)NrrFtextcommandpadxr padyr Z takefocusZ indicatoronZhighlightthicknessrZ selectcolorrrrT)rrbwRAISEDnamertab_setr8Z Radiobutton _select_eventFALSEZbuttonr$r7r& _init_masksr0)r(rJrr4rKrrrrs      zTabSet.TabButton.__init__cGs|j|jdS)N)rrJ)r(argsrrrrLs zTabSet.TabButton._select_eventcCs|jdddS)NrBT) _place_masks)r(rrrr1szTabSet.TabButton.set_selectedcCs|jdddS)NrBF)rP)r(rrrr0szTabSet.TabButton.set_normalc Cs|jj}|jjd}t|dddtd||_t|dddtd||_t|jd|jdt |j_ |jj j ddd|j dd|jd |jd t|dddtd||_ t|j d|jdt |j _ dS) Nrrrrxywidthrr )rKr pages_framer#rr"maskmsklrHrImlplacemskrmr)r(rrrrrrNs    zTabSet.TabButton._init_masksFcCs|j}|r||j7}|jjd|ddddddddd dd dd dd | |jjd|ddd|j ddddd dd |jd dd | |jj}|r|j s|j|j|j|jkr||j8}|j jd|ddddddddd dd |jd dd | |j j jd|j d|j d d |jd ||jd |jj dS)NZin_ZrelxgrQrZrelyg?rRZrelwidthrSZ relheightr r) rHrVrYrWrKrr8Z winfo_rootxZ winfo_widthrZr[lower)r(rBr rrrrrPs4             #zTabSet.TabButton._place_masksN) rrrrHrrLr1r0rNrPrrrrr6s      r6) rrrrr,r/r5r:r=r'rr6rrrrr s  ,     (r c@seZdZGdddeZGdddeZGdddeZGdddeZd ed d d d dZddZ ddZ ddZ d S) TabbedPageSetc@s:eZdZdZddZddZddZdS) zTabbedPageSet.PageFcCst|dddt|_dS)Nrrr)rrIframe)r(rrrrr9szTabbedPageSet.Page.__init__cCs tdS)N)NotImplementedError)r(rrr_show<szTabbedPageSet.Page._showcCs tdS)N)r_)r(rrr_hide?szTabbedPageSet.Page._hideN)rrr uses_gridrr`rarrrrPage1s   rcc@s.eZdZdZddZddZdS)zTabbedPageSet.PageRemoveTcCs#|jjdddddtdS)Nrowrcolumnsticky)r^gridNSEW)r(rrrr`FszTabbedPageSet.PageRemove._showcCs|jjdS)N)r^Z grid_remove)r(rrrraIszTabbedPageSet.PageRemove._hideN)rrrrbr`rarrrr PageRemoveBs  rics@eZdZdZfddZddZddZS)zTabbedPageSet.PageLiftTcsIttj|j||jjdddddt|jjdS)Nrdrrerf)superr]PageLiftrr^rgrhr\)r(r) __class__rrrPszTabbedPageSet.PageLift.__init__cCs|jjdS)N)r^Zlift)r(rrrr`UszTabbedPageSet.PageLift._showcCs|jjdS)N)r^r\)r(rrrraXszTabbedPageSet.PageLift._hide)rrrrbrr`rarr)rlrrkLs  rkc@s(eZdZddZddZdS)zTabbedPageSet.PagePackForgetcCs|jjdtdddS)NrrT)r^r$BOTH)r(rrrr`]sz"TabbedPageSet.PagePackForget._showcCs|jjdS)N)r^r2)r(rrrra`sz"TabbedPageSet.PagePackForget._hideN)rrrr`rarrrrPagePackForget[s  rnNr r Fc KsJtj|||||_i|_g|_d|_d|_|jddd|jdddt||_ |j j dddddt |jj r|j jddd|j jdddt ||jd|d|d ||_|rx|D]}|j|qW|jj dddddt |j|jdS) NrZweightr rdrerfrrr)rr page_classpages _pages_order _current_page _default_pageZcolumnconfigureZ rowconfigurerUrgrhrbr change_page_tab_setadd_page) r(parent page_namesrorrrr)rJrrrrcs*         zTabbedPageSet.__init__cCs|std|||jkr5td||j|j|j|<|jj||jj|t |jdkr||_ |j |dS)NzInvalid TabPage name: '%s'z!TabPage named '%s' already existsr ) rrpr rorUrqr*rur,r?rsrt)r( page_namerrrrvs  zTabbedPageSet.add_pagecCs||jkrtd||jj|t|jdkrf||jkro|jd|_n d|_||jkr|j|j|jj ||jj |}|j j dS)NzNo such TabPage: '%sr) rpr-rqr.r?rsrrrtrur/r;r^r<)r(ryZpagerrr remove_pages zTabbedPageSet.remove_pagecCs|j|krdS|dk r>||jkr>td||jdk ra|j|jjd|_|dk r||_|j|j|jj|dS)NzNo such TabPage: '%s')rrrpr-rar`rur5)r(ryrrrrts   zTabbedPageSet.change_page) rrrobjectrcrirkrnrrvrzrtrrrrr] s  ;  r]c st}ttttjd|j\}}}}|jd||df|jdt|dddgdd d d j d t d t dt t jdjddddj t jdjddddj t jdjddj t|t|dddfdd}t|dddfdd}t |dd}|j dddd|j dddd|j ddj dd|jdS)Nz[x+]z+%d+%dzTest tabbed pagesrxZFoobarZBazrrrFrrrrCZFoorFZBarzAdd PagerDcsjjS)N)rvgetr) entryPgNametabPagerrsz_tabbed_pages..z Remove PagecsjjS)N)rzr~r)rrrrrszname of page to add/remove:rEr )ZTkrmapintresplitZgeometrytitler]r$r%TRUErmZLabelrpr^ZEntryZButtonZmainloop) rwrootrSr rQrRZ buttonAddZ buttonRemoveZ labelPgNamer)rrr _tabbed_pagess* 3  &&  r__main__)runN) tkinter Exceptionrr rr r]rrZidlelib.idle_test.htestrrrrr s