<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]G                 @   s   d  d l  TGd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z d
 d   Z e d k r d  d l	 m
 Z
 e
 e  d S)    )*c               @   s   e  Z d  Z d S)InvalidNameErrorN)__name__
__module____qualname__ r   r   0/opt/alt/python35/lib64/python3.5/tabbedpages.pyr      s    r   c               @   s   e  Z d  Z d S)AlreadyExistsErrorN)r   r   r   r   r   r   r   r	      s    r	   c               @   s   e  Z d  Z d d d d d d  Z d d   Z d	 d
   Z d d   Z d d   Z d d   Z d d   Z	 Gd d   d e
  Z d S)TabSetN      Fc             K   s   t  j |  | |  | |  _ | |  _ | |  _ | |  _ | |  _ i  |  _ i  |  _ | rj t	 |  |  _
 n	 g  |  _
 d  |  _ g  |  _ t  |  d d d d d t d |  j d  |  _ |  j j d t d t d	 d
  |  j   d  S)Nheight   borderwidthr   relief
backgroundsidefillexpandF)Frame__init__select_commandn_rowsmax_tabs_per_rowexpand_tabspage_set_tabs_tab2rowlist
_tab_names_selected_tab	_tab_rowsFLATcgetZpadding_framepackTOPX_arrange_tabs)selfr   r   Ztabsr   r   r   kwr   r   r   r      s$    										zTabSet.__init__c             C   sS   | s t  d |   | |  j k r5 t d |   |  j j |  |  j   d  S)NzInvalid Tab name: '%s'zTab named '%s' already exists)r   r   r	   appendr'   )r(   tab_namer   r   r   add_tabD   s    zTabSet.add_tabc             C   s=   | |  j  k r t d |   |  j  j |  |  j   d  S)NzNo such Tab: '%s)r   KeyErrorremover'   )r(   r+   r   r   r   
remove_tabN   s    zTabSet.remove_tabc             C   s   | |  j  k r d  S| d  k	 r> | |  j k r> t d |   |  j  d  k	 ra |  j |  j  j   d  |  _  | d  k	 r | |  _  |  j | } | j   |  j | } | j   | j d t d t	 d d  d  S)NzNo such Tab: '%sr   r   r   r   )
r    r   r-   
set_normalset_selectedr   pack_forgetr$   r%   r&   )r(   r+   tabtab_rowr   r   r   set_selected_tabV   s    		

zTabSet.set_selected_tabc             C   s   | s
 d  St  |   } | j d t d t d d  |  j j |  xx | D]p } t j | |  j | |   } | r | j d t	 d t d d  n | j d t	  | |  j
 | <| |  j | <qI Wd | _ d  S)Nr   r   r   r   T)r   r$   r%   r&   r!   r*   r
   	TabButtonr   LEFTr   r   is_last_in_row)r(   	tab_namesr   r4   r+   r3   r   r   r   _add_tab_rowl   s    zTabSet._add_tab_rowc             C   s6   x& |  j  r( |  j  j   } | j   q Wi  |  _ d  S)N)r!   popdestroyr   )r(   r4   r   r   r   _reset_tab_rows   s    zTabSet._reset_tab_rowsc             C   sB  x$ |  j  r& |  j  j   d j   q W|  j   |  j s> d  S|  j d  k	 rh |  j d k rh |  j } n t |  j  d |  j d } |  j p | d k } d } xh t	 |  D]Z } t |  j  | d | | d } |  j | | |  } | | 7} |  j
 | |  q W|  j } |  j d   | |  j k r>|  j |  d  S)Nr   r   )r   popitemr<   r=   r   r   lenr   r   ranger:   r    r5   )r(   r   r   iZ	row_indexZn_tabsr9   selectedr   r   r   r'      s&    
	#
	zTabSet._arrange_tabsc               @   sa   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d d  Z	 d S)zTabSet.TabButtonr   c             C   s   t  j |  | d |  j d t | |  _ | |  _ | |  _ d |  _ t |  d | d |  j	 d d d d	 d
 t
 d t
 d d d d d d 	|  _ |  j j d t d t d d  |  j   |  j   d  S)Nr   r   Ftextcommandpadxr   padyr   Z	takefocusZindicatoronZhighlightthicknessr   Zselectcolor r   r   r   T)r   r   bwRAISEDnamer   tab_setr8   ZRadiobutton_select_eventFALSEZbuttonr$   r7   r&   _init_masksr0   )r(   rJ   r   r4   rK   r   r   r   r      s    					
zTabSet.TabButton.__init__c             G   s   |  j  |  j  d  S)N)r   rJ   )r(   argsr   r   r   rL      s    zTabSet.TabButton._select_eventc             C   s   |  j  d d  d  S)NrB   T)_place_masks)r(   r   r   r   r1      s    zTabSet.TabButton.set_selectedc             C   s   |  j  d d  d  S)NrB   F)rP   )r(   r   r   r   r0      s    zTabSet.TabButton.set_normalc          
   C   s  |  j  j } | j j d  } t | d d d t d | |  _ t | d d d t d | |  _ t |  j d |  j d t	 |  j _
 |  j j
 j d d d |  j d d |  j d	 |  j d
  t | d d d t d | |  _ t |  j d |  j d t	 |  j _ d  S)Nr   r   r   r   xywidthr   r      )rK   r   pages_framer#   r   r"   maskmsklrH   rI   mlplacemskrmr)r(   r   r   r   r   r   rN      s    zTabSet.TabButton._init_masksFc             C   s  |  j  } | r | |  j  7} |  j j d |  d d d d d d d d d	 d d
 d d d d |  	|  j j d |  d d d |  j  d d d d d	 d d
 |  j  d d d |  	|  j j } | r |  j s |  j   |  j   | j   | j   k  r | |  j  8} |  j	 j d |  d d d d d d d d d	 d d
 |  j  d d d |  	|  j	 j
 j d |  j  d |  j  d
 d |  j  d | |  j  d  |  j j   d  S)NZin_Zrelxg        rQ   r   Zrelyg      ?rR   ZrelwidthrS   Z	relheightr   r   )rH   rV   rY   rW   rK   r   r8   Zwinfo_rootxZwinfo_widthrZ   r[   lower)r(   rB   r   r   r   r   r   rP      s4    	#zTabSet.TabButton._place_masksN)
r   r   r   rH   r   rL   r1   r0   rN   rP   r   r   r   r   r6      s   r6   )r   r   r   r   r,   r/   r5   r:   r=   r'   r   r6   r   r   r   r   r
      s   	,
(r
   c               @   s   e  Z d  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d	 e d
 d d d d  Z d d   Z	 d d   Z
 d d   Z d	 S)TabbedPageSetc               @   s:   e  Z d  Z d Z d d   Z d d   Z d d   Z d S)	zTabbedPageSet.PageFc             C   s   t  | d d d t |  _ d  S)Nr   r   r   )r   rI   frame)r(   r   r   r   r   r   9  s    zTabbedPageSet.Page.__init__c             C   s
   t   d  S)N)NotImplementedError)r(   r   r   r   _show<  s    zTabbedPageSet.Page._showc             C   s
   t   d  S)N)r_   )r(   r   r   r   _hide?  s    zTabbedPageSet.Page._hideN)r   r   r   	uses_gridr   r`   ra   r   r   r   r   Page1  s   rc   c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)zTabbedPageSet.PageRemoveTc             C   s#   |  j  j d d d d d t  d  S)Nrowr   columnsticky)r^   gridNSEW)r(   r   r   r   r`   F  s    zTabbedPageSet.PageRemove._showc             C   s   |  j  j   d  S)N)r^   Zgrid_remove)r(   r   r   r   ra   I  s    zTabbedPageSet.PageRemove._hideN)r   r   r   rb   r`   ra   r   r   r   r   
PageRemoveB  s   ri   c                   s@   e  Z d  Z d Z   f d d   Z d d   Z d d   Z   S)zTabbedPageSet.PageLiftTc                sI   t  t j |   j |  |  j j d d d d d t  |  j j   d  S)Nrd   r   re   rf   )superr]   PageLiftr   r^   rg   rh   r\   )r(   r   )	__class__r   r   r   P  s    zTabbedPageSet.PageLift.__init__c             C   s   |  j  j   d  S)N)r^   Zlift)r(   r   r   r   r`   U  s    zTabbedPageSet.PageLift._showc             C   s   |  j  j   d  S)N)r^   r\   )r(   r   r   r   ra   X  s    zTabbedPageSet.PageLift._hide)r   r   r   rb   r   r`   ra   r   r   )rl   r   rk   L  s   rk   c               @   s(   e  Z d  Z d d   Z d d   Z d S)zTabbedPageSet.PagePackForgetc             C   s   |  j  j d t d d  d  S)Nr   r   T)r^   r$   BOTH)r(   r   r   r   r`   ]  s    z"TabbedPageSet.PagePackForget._showc             C   s   |  j  j   d  S)N)r^   r2   )r(   r   r   r   ra   `  s    z"TabbedPageSet.PagePackForget._hideN)r   r   r   r`   ra   r   r   r   r   PagePackForget[  s   rn   Nr   r   Fc       	   	   K   sJ  t  j |  | |  | |  _ i  |  _ g  |  _ d  |  _ d  |  _ |  j d d d |  j d d d t  |   |  _	 |  j	 j
 d d d d d t  |  j j r |  j	 j d d d |  j	 j d d d t |  |  j d | d | d	 | |  _ | rx | D] } |  j |  q W|  j j
 d d d d d t  |  j |  j  d  S)
Nr   Zweightr   rd   re   rf   r   r   r   )r   r   
page_classpages_pages_order_current_page_default_pageZcolumnconfigureZrowconfigurerU   rg   rh   rb   r
   change_page_tab_setadd_page)	r(   parent
page_namesro   r   r   r   r)   rJ   r   r   r   r   c  s*     					zTabbedPageSet.__init__c             C   s   | s t  d |   | |  j k r5 t d |   |  j |  j  |  j | <|  j j |  |  j j |  t	 |  j  d k r | |  _
 |  j |  d  S)NzInvalid TabPage name: '%s'z!TabPage named '%s' already existsr   )r   rp   r	   ro   rU   rq   r*   ru   r,   r?   rs   rt   )r(   	page_namer   r   r   rv     s    	zTabbedPageSet.add_pagec             C   s   | |  j  k r t d |   |  j j |  t |  j  d k rf | |  j k ro |  j d |  _ n	 d  |  _ | |  j k r |  j |  j  |  j j	 |  |  j  j
 |  } | j j   d  S)NzNo such TabPage: '%sr   )rp   r-   rq   r.   r?   rs   rr   rt   ru   r/   r;   r^   r<   )r(   ry   Zpager   r   r   remove_page  s    	zTabbedPageSet.remove_pagec             C   s   |  j  | k r d  S| d  k	 r> | |  j k r> t d |   |  j  d  k	 ra |  j |  j  j   d  |  _  | d  k	 r | |  _  |  j | j   |  j j |  d  S)NzNo such TabPage: '%s')rr   rp   r-   ra   r`   ru   r5   )r(   ry   r   r   r   rt     s    		zTabbedPageSet.change_page)r   r   r   objectrc   ri   rk   rn   r   rv   rz   rt   r   r   r   r   r]      s   
;r]   c       	         s  t    } t t t t j d |  j      \ } } } } | j d | | d f  | j d  t | d d d g d d	 d
 d   j	 d t
 d t d t  t  j d j d d d d j	   t  j d j d d d d j	   t  j d j d d j	   t |    t | d d d    f d d   } t | d d d    f d d   } t | d d } | j	 d d d d  | j	 d d d d  | j	 d d    j	 d d  | j   d  S)Nz[x+]z+%d+%d   zTest tabbed pagesrx   ZFoobarZBazr   r   r   Fr   r   r   rC   ZFoorF      ZBarzAdd PagerD   c                  s    j    j    S)N)rv   getr   )entryPgNametabPager   r   <lambda>  s    z_tabbed_pages.<locals>.<lambda>zRemove Pagec                  s    j    j    S)N)rz   r~   r   )r   r   r   r   r     s    zname of page to add/remove:rE   r   )ZTkr   mapintresplitZgeometrytitler]   r$   r%   TRUErm   ZLabelrp   r^   ZEntryZButtonZmainloop)	rw   rootrS   r   rQ   rR   Z	buttonAddZbuttonRemoveZlabelPgNamer   )r   r   r   _tabbed_pages  s*    	3	&& r   __main__)runN)tkinter	Exceptionr   r	   r   r
   r]   r   r   Zidlelib.idle_test.htestr   r   r   r   r   <module>
   s   
 