
    ce2                         d Z ddlmZmZmZ ddlmZmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZ dd	lmZmZ dd
lmZmZ ddlm Z   G d de          Z!dS )zEnvironments Tab.    )absolute_importdivisionprint_function)QPointQtSignal)QHBoxLayoutQMenuQVBoxLayout)AnacondaAPI)	constants)launch)ButtonToolNormalFrameEnvironmentsListFrameEnvironmentsPackagesFrameTabHeader
WidgetBase)ButtonToggleCollapseLineEditSearch)ListItemEnvListWidgetEnv)CondaPackagesWidgetc                       e Zd ZdZdgZ e            Z eeee          Z e            Z	 e            Z
 e            Z e            Z e            Z eee          Z ee          Z ee          Z eee          Zd fd	Zd Zd Zd Zd Zdd	Zd
 Zd Zd Zd ZddZddZd ZddZd Z ddZ!d Z" xZ#S )EnvironmentsTabConda environments tab.zanaconda-navigatorNc                    t                                          |           t                      | _        d| _        t                      | _        t          |           | _        t          |           | _
        t                      | _        t                      | _        t                      | _        t#          d          | _        t#          d          | _        t#          d          | _        t#          d          | _        t#          d          | _        t/                      | _        t3          |           | _        d	| j        _        | j                            d
           | j                            t<          j                   | j                             d           | j                             d           | j                             d           | j                             d           | j                             d           | j        j!        "                    d           tG                      }|$                    | j                   | j        %                    |           tM                      }|$                    | j                   |$                    | j                   |$                    | j                   |$                    | j                   |$                    | j                   tG                      }|$                    | j                   |$                    | j                   |'                    |           | j        %                    |           tM                      }|$                    | j                   | j
        %                    |           tM                      }|$                    | j        d           |$                    | j        d           |$                    | j
        d           | %                    |           | j        j(        )                    | j*                   | j        j(        )                    | j+                   | j        j(        )                    | j,                   | j        j(        )                    | j-                   | j        j(        )                    | j.                   | j        j(        )                    | j/                   | j        j0        )                    | j1                   | j        j2        )                    | j3                   | j        j4        )                    | j4                   | j        j5        )                    | j5                   | j        j6        )                    | j6                   | j        j7        )                    | j7                   | j        j8        )                    | j8                   dS )r   NCreate)textCloneImportBackupRemove)parentTzSearch EnvironmentscreatecloneimportbackupremoveF
         )9super__init__r   apicurrent_prefixr   frame_header_leftr   
frame_listr   frame_widgetr   text_searchr   listr
   	menu_listr   button_createbutton_clonebutton_importbutton_backupbutton_remover   button_toggle_collapser   widgetis_expandedsetPlaceholderTextsetContextMenuPolicyr   CustomContextMenusetObjectNametextbox_searchset_icon_visibilityr   	addWidget	setLayoutr	   	addLayoutclickedconnectexpand_collapsesig_create_requestedsig_clone_requestedsig_import_requestedsig_backup_requestedsig_remove_requestedtextChangedfilter_listsig_item_selected_item_selected	sig_readysig_channels_requestedsig_update_index_requestedsig_cancel_requestedsig_packages_action_requested)selfr#   layout_header_leftlayout_buttonslayout_list_buttonslayout_widgetlayout_main	__class__s          Llib/python3.11/site-packages/anaconda_navigator/widgets/tabs/environments.pyr-   zEnvironmentsTab.__init__7   s       ==" "0!1!1/555d;;)++!OO	-8<<<,':::-8<<<-8<<<-8<<<&:&<&<#)666 '+#++,ABBB	&&r';<<<((222''000((222((222((222"66u=== )]]$$T%5666(();<<<$  !3444  !2333  !3444  !3444  !3444)mm%%d&<===%%di000%%n555!!"5666#,,,##M222!mmdor222d91===d/444{### 	#+33D4HIII"**4+DEEE!))$*BCCC"**4+DEEE"**4+DEEE"**4+DEEE$,,T-=>>> 		#++D,?@@@ 	%%dn555*2243NOOO.66t7VWWW(001JKKK199$:\]]]]]    c                 6   |                      d           |                    d          }|                    d          }|                    d          }|                    d          | _        |                     |           |                     |           dS )z9Setup tab content and populates the list of environments.Fprocessed_info__environmentspackagesdefault_prefixN)set_widgets_enabledgetr/   set_environmentsset_packages)rX   
conda_dataconda_processed_infoenvironmentsrd   s        r_   setupzEnvironmentsTab.setup   s      ''')~~.>??+//0@AA>>*--2667GHHl+++(#####r`   c                    | j                                          d}t          |                                          D ]d\  }\  }}t	          ||          }|j        j                            | j                   || j	        k    r|}| j         
                    |           e| j                             |d           |                                  | j                             | j                             |                     dS )z"Populate the list of environments.r   )prefixnameT)loadingN)r4   clear	enumerateitemsr   button_optionsrG   rH   show_environment_menur/   addItemsetCurrentRowrP   scrollToItemitem)rX   rl   selected_item_rowi
env_prefixenv_namerz   s          r_   rh   z EnvironmentsTab.set_environments   s    	)2<3E3E3G3G)H)H 	$ 	$%A%
Hjx@@@D'//0JKKKT000$%!Id####	 14@@@	ty~~.?@@AAAAAr`   c                     |\  }}| j                             ||           |                     d           |                     | j        d           dS )zSet packages callback.TF)ro   valueN)r<   rm   rf   set_loadingr/   )rX   workeroutputerrorrd   
model_datas         r_   _set_packageszEnvironmentsTab._set_packages   sZ    %*(J///  &&& 35AAAAAr`   c                     | j                             || j        | j                  }|j                            | j                   dS )zSet packages widget content.)ro   	blacklistN)r.   process_packagesr/   	BLACKLISTsig_chain_finishedrH   r   )rX   rd   r   s      r_   ri   zEnvironmentsTab.set_packages   sE    **8D<O[_[i*jj!))$*<=====r`   c                      j                                           j                             d          }|j                             fd           dD ]>} j                             d|z             }|j                            |f fd	           ? j                                        }|j        }t          |t                    s|)|j
                                        }t          |d          }t          dd          }|j
                            |          }	 j                             |	|z               j                                         }
|
d                             t#          j        d	|                     |
d
                             t#          j        d|                      j                                          dS )z"Show the environment actions menu.zOpen Terminalc                  .                          d          S )Nterminal)open_environment_inrX   s   r_   <lambda>z7EnvironmentsTab.show_environment_menu.<locals>.<lambda>   s    D,D,DZ,P,P r`   )PythonIPythonzJupyter Notebookz
Open with c                 R                         |                                          S N)r   lower)xwrX   s     r_   r   z7EnvironmentsTab.show_environment_menu.<locals>.<lambda>   s"    $:R:RSTSZSZS\S\:]:] r`   Nr      ipython   notebook)r5   rr   	addAction	triggeredrH   r4   currentItemro   
isinstanceboolru   widthr   mapToGlobalmoveactions
setEnabledr   
check_progexec_)rX   r   position	menu_itemwordcurrent_itemro   r   pointparent_positionr   s   `          r_   rv   z%EnvironmentsTab.show_environment_menu   s   N,,_==	##$P$P$P$PQQQ= 	_ 	_D001DEEI''D(](](](](]^^^^y,,..$h%% 	()9 /5577EeQ''Hq!&5AA%HHOh6777 .((**
f/	6BBCCC
f/
FCCDDDr`   c                     | j                                         j        }|dk    rt          j        |           dS t          j        ||           dS )z.Open selected environment in console terminal.r   N)r4   r   ro   r   consolepy_in_console)rX   whichro   s      r_   r   z#EnvironmentsTab.open_environment_in   sR    &&((/JN6""""" /////r`   c                     |                      |j                   | j                            |j        |j        t
          j                   dS )z>Callback to emit signal as user selects an item from the list.)ro   N)r   ro   rQ   emitrp   CTAB_ENVIRONMENT)rX   rz   s     r_   rR   zEnvironmentsTab._item_selected   sC    ,,,##DIt{A<MNNNNNr`   c                    d | j                                         D             }|                    |           t          t          |                                        |          dz   }t          |          }| j                             ||           | j                             |           | j                             |           |	                    d           dS )zACreates a temporal item on list while creation becomes effective.c                     g | ]	}|j         
S  rp   ).0rz   s     r_   
<listcomp>z5EnvironmentsTab.add_temporal_item.<locals>.<listcomp>   s    >>>Ddi>>>r`   r*   r   TN)
r4   rt   appendsortedindexr   
insertItemrx   ry   r   )rX   rp   
item_namesr   rz   s        r_   add_temporal_itemz!EnvironmentsTab.add_temporal_item   s    >>DIOO,=,=>>>
$VJ''((..t44q8%%%	UD)))	&&&	t$$$r`   c                     | j         j        r'| j                                          d| j         _        dS | j                                          d| j         _        dS )z%Expand or collapse the list selector.FTN)r1   r=   hideshowr   s    r_   rI   zEnvironmentsTab.expand_collapse   sW    ?& 	/O  """*/DO'''O  """*.DO'''r`   c                    | j                                                                         }t          | j                                                  D ]|}| j                            |          }|                    ||j                                        v           |j	        
                                s|j	                                         }dS )zFilter items in list by name.N)r3   r   r   ranger4   countrz   	setHiddenrp   r<   	isVisiblerepaint)rX   r   r|   rz   s       r_   rP   zEnvironmentsTab.filter_list   s    $$&&,,..ty(()) 	& 	&A9>>!$$DNN4ty'8'88999;((** &##%%%	& 	&r`   c                    || j         j                            |           | j        g}|| j                                        z  }|| j        | j        | j        | j	        | j
        | j         j        | j         j        | j         j        | j         j        | j         j        | j         j        | j         j        | j         j        | j         j        gz  }|S )z%Return a list of the ordered widgets.)r<   table_last_rowadd_focus_widgetr3   r4   ordered_widgetsr6   r7   r8   r9   r:   combobox_filterbutton_channelsbutton_updaterB   tablebutton_applybutton_clearbutton_cancel)rX   next_widgetr   s      r_   r   zEnvironmentsTab.ordered_widgets   s    "K&77DDD+,4944666K'K'K%K&KK&K$K$K%
 	
" r`   c                     | j         | j        j        k    }| j                            |           | j                            |           dS )zARefresh the enabled/disabled status of the widget and subwidgets.N)r/   r.   ROOT_PREFIXr7   setDisabledr:   )rX   is_roots     r_   refreshzEnvironmentsTab.refresh  sH    %)==%%g...&&w/////r`   Tc                     t          | j                                                  D ]B\  }}|j        |k    r2|                    |           | j                            |            dS CdS )z0Set the item given by `prefix` to loading state.N)rs   r4   rt   ro   r   rx   )rX   ro   r   rowrz   s        r_   r   zEnvironmentsTab.set_loading  sv    "49??#4#455 	 	IC{f$$  '''	'',,, %	 	r`   c                    | j                             |           | j                            |           | j                            |           | j                            |           | j                            |           | j                            |           | j                            |           |r| 	                                 dS dS )z4Change the enabled status of widgets and subwidgets.N)
r4   r   r6   r7   r8   r9   r:   r<   rf   r   )rX   r   s     r_   rf   z#EnvironmentsTab.set_widgets_enabled"  s    	U###%%e,,,$$U+++%%e,,,%%e,,,%%e,,,''... 	LLNNNNN	 	r`    c                 B    | j                             ||||           dS )z&Update widget status and progress bar.)actionmessager   	max_valueN)r<   update_status)rX   r   r   r   r   s        r_   r   zEnvironmentsTab.update_status.  s(    !!Yb!cccccr`   c                 8    | j                                          dS )zUpdate custom CSS stylesheet.N)r4   update_style_sheetr   s    r_   r   z"EnvironmentsTab.update_style_sheet2  s    	$$&&&&&r`   r   )NN)NT)r   r   NN)$__name__
__module____qualname____doc__r   r   rS   objectrQ   rJ   rK   rM   rL   rN   rT   rU   rV   rW   r-   rm   rh   r   ri   rv   r   rR   r   rI   rP   r   r   r   rf   r   r   __classcell__)r^   s   @r_   r   r      s       !!%&I I vvv66 "688 &((!688!688!688 $VFF33 "(!6&>> %+F66$:$:!P^ P^ P^ P^ P^ P^h$ $ $B B BB B B> > >
   80 0 0O O O
	 	 	/ / /& & & &   40 0 0   
 
 
d d d d' ' ' ' ' ' 'r`   r   N)"r   
__future__r   r   r   qtpy.QtCorer   r   r   qtpy.QtWidgetsr	   r
   r   #anaconda_navigator.api.anaconda_apir   anaconda_navigator.utilsr   r   r   anaconda_navigator.widgetsr   r   r   r   r   (anaconda_navigator.widgets.helperwidgetsr   r   -anaconda_navigator.widgets.lists.environmentsr   r   +anaconda_navigator.widgets.manager.packagesr   r   r   r`   r_   <module>r      sf     @ @ @ @ @ @ @ @ @ @ * * * * * * * * * * : : : : : : : : : : ; ; ; ; ; ; 3 3 3 3 3 3 + + + + + +              Z Y Y Y Y Y Y Y T T T T T T T T K K K K K KY' Y' Y' Y' Y'j Y' Y' Y' Y' Y'r`   