
    G@dR0                     4   d Z ddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZmZ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 ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ dZ, G d dee           Z- G d de+          Z.dS )zY
Namespace browser widget.

This is the main widget used in the Variable Explorer plugin
    N)PYQT5)getopenfilenamesgetsavefilename)QtSignalSlot)QCursor)QApplicationQHBoxLayoutQInputDialogQMessageBoxQVBoxLayoutQWidget)iofunctions)fix_reference_name)REMOTE_SETTINGS)_)SpyderWidgetMixin) RemoteCollectionsEditorTableView)ImportWizard)encoding)getcwd_or_homeremove_backslashes)FinderLineEditu.   [^\w+*=¡!¿?'\"#$%&()/<>\-\[\]{}^`´;,|¬]*\wc                        e Zd ZdZdZ e            Z e            Z e            Z e            Z	 fdZ
d Zd Zd Zd Zd Zd	 Zd
 Zd Zd Z ee          dd            Zd Zd Z xZS )NamespaceBrowserz?
    Namespace browser (global variables explorer widget).
    variable_explorerc                    t           r$t                                          ||           n+t          j        | |           t	          j        | |           d | _        d | _        d| _        d| _        d | _	        d | _
        d S )N)parentclass_parent)r     F)r   super__init__r   r   filenametext_finder	last_findfinder_is_visibleeditorshellwidget)selfr   	__class__s     Xlib/python3.11/site-packages/spyder/plugins/variableexplorer/widgets/namespacebrowser.pyr#   zNamespaceBrowser.__init__7   s     	BGGF@@@@T6***&t&AAAA !&     c                    | j         J | j        /| j                                          |                                  dS t	          | d| j         d          | _        | j        j                            | j                   | j        j                            | j                   | j        j	                            | j
                   | j        j                            | j                   t                      }|                    dddd           |                    | j                   |                     |           dS )zD
        Setup the namespace browser with provided options.
        NF)datar)   create_menur   )r)   r(   set_namespace_view_settingsrefresh_tabler   sig_files_droppedconnectimport_datasig_free_memory_requestedsig_editor_creation_startedsig_start_spinner_requestedsig_editor_shownsig_stop_spinner_requestedr   setContentsMargins	addWidget	setLayout)r*   layouts     r,   setupzNamespaceBrowser.setupH   sI    +++;"88:::      ; ,!	  DK K)11$2BCCCK199.0 0 0K3;;02 2 2K(00/1 1 1 !]]F%%aAq111T[)))NN6"""""r-   c                 N    i }t           D ]}|                     |          ||<   |S )z Return dict editor view settings)r   get_conf)r*   settingsnames      r,   get_view_settingsz"NamespaceBrowser.get_view_settingsi   s2    # 	1 	1D!]]400HTNNr-   c                 >    || _         |                    |            dS )z.Bind shellwidget instance to namespace browserN)r)   set_namespacebrowser)r*   r)   s     r,   set_shellwidgetz NamespaceBrowser.set_shellwidgetq   s$    &((.....r-   c                     || _         | j        r| j                             | j                   || j        _        | j        S )z2Bind NamespaceBrowsersFinder to namespace browser.)r%   r'   setTextr&   r(   finder)r*   r%   s     r,   set_text_finderz NamespaceBrowser.set_text_finderv   sA    &! 	5$$T^444(%%r-   c                 *    |r	|r|| _         || _        dS )z9Save last finder/search text input and finder visibility.N)r&   r'   )r*   r&   finder_visibilitys      r,   save_finder_statez"NamespaceBrowser.save_finder_state   s'     	'* 	'&DN!2r-   c                     | j                                          	 | j                                         dS # t          $ r Y dS w xY w)zRefresh variable table.N)r)   refresh_namespacebrowserr(   resizeRowToContents	TypeErrorr*   s    r,   r2   zNamespaceBrowser.refresh_table   sX    11333	K++----- 	 	 	DD	s   6 
AAc                 P    d| j         _        ||                     |           dS dS )zProcess remote viewFN)r%   load_allset_data)r*   remote_views     r,   process_remote_viewz$NamespaceBrowser.process_remote_view   s5     %*!"MM+&&&&& #"r-   c                 &    ||| j         _        dS dS )zSet properties of variablesN)r(   var_properties)r*   
propertiess     r,   set_var_propertiesz#NamespaceBrowser.set_var_properties   s     !)3DK&&& "!r-   c                     || j         j                                        k    r5| j                             |           | j                                          dS dS )z	Set data.N)r(   source_modelget_datarV   adjust_columns)r*   r/   s     r,   rV   zNamespaceBrowser.set_data   sV    4;+446666K  &&&K&&((((( 76r-   Nc           	         t          d          }|S| j        t                      }nt          j        | j                  }t          | ||t          j                  \  }}|sdS nt          |t                    r|g}|D ]W}t          |          | _        t          j        dk    rt          | j                  | _        t          j        | j                  d                                         }|dk    rSt          j        t          j        z  }t          j        | |t          d          |z  |          }|t          j        k    r dS |t          j        vrt          j        t          j        z  }t          j        | |t          d          |z  |          }|t          j        k    r dS t+          t          j                                                  }	t1          j        | |t          d          |	d	d
          \  }
}|r t          j        t          |
                   }n dS t          j        |         }t          |t                    rd}	 t5          j        | j                  \  }}t          j        | j                  }t;          | ||t=          |                    }|                                r2|                                 \  }}| j!        "                    ||           n# tF          $ r}t          |          }Y d}~nd}~ww xY wtI          j%        tM          tN          j(                             tI          j)                     | j*        +                    | j        |          }tI          j,                     tI          j)                     |-t          j-        | |t          d          | j        |fz             | .                                 YdS )zImport data from text file.zImport dataNnt   .spydataz<b>Warning: %s files can contain malicious code!</b><br><br>Do not continue unless this file is from a trusted source. Would you like to import it anyway?zr<b>Unsupported file extension '%s'</b><br><br>Would you like to import it anyway by selecting a known file format?zOpen file as:r   F)titlevarnamez><b>Unable to load '%s'</b><br><br>The error message was:<br>%s)/r   r$   r   ospdirnamer   r   load_filters
isinstancestrosrC   r   splitextlowerr   YesCancelwarning
load_funcsquestionlistload_extensionskeysr   getItemr   readbasenamer   r   exec_r_   r(   	new_value	Exceptionr
   setOverrideCursorr	   r   
WaitCursorprocessEventsr)   	load_datarestoreOverrideCursorcriticalr2   )r*   	filenamesre   basedir
_selfilterr$   	extensionbuttonsanswerformatsitemok	load_funcerror_messagetext	_encoding	base_namer(   var_name	clip_dataerrors                        r,   r5   zNamespaceBrowser.import_data   s    -  }$(**+dm44$4T5'5@5M%O %O!Iz 	3'' 	$"I! I	! I	!HMMDMw$ 24= A AT]33A6<<>>IJ&&%/K,>>$,   ! ! $-	-
 	 	 [///FF 666%/K,>>$- + , , /88   [///FF{:??AABB'/e01/0B0B07EC Cb   + ;CII FIIFF#.y9I )S)) - $	/&.mDM&B&BOD) #T] ; ;I)$I*<Y*G*GI I IF||~~ C.4oo.?.?+)--h	BBB  / / /$'JJMMMMMM/ .wr}/E/EFFF*,,, $ 0 : :4=;D!F !F2444*,,,($T5%& (F &) &) -1M=+I&JK K K
     SI	! I	!s   BK))
L3LLc                     |                      dd          }| j                            |d           d| j        _        d S )Nipython_consoleshow_reset_namespace_warning)sectionoptionT)rq   message)rA   r)   reset_namespacer(   automatic_column_width)r*   rq   s     r,   r   z NamespaceBrowser.reset_namespace   sN    --%1   
 
 	(($(GGG-1***r-   c                 
   | j         }|t                      }t          j        |          d                                         }|s|dz   }t          | t          d           |t          j                  \  }}|r|| _         ndS t          j
        t          t          j                             t          j                     | j                            | j                   }t          j                     t          j                     |{d|v r@t          d          d                    |                    d          d         	          z   }nt          d
          |z   }t)          j        | t          d           |           dS dS )z	Save dataNrc   rd   Fz Some objects could not be saved:z'<b>Some objects could not be saved:</b>z<br><br><code>{obj_list}</code>z: )obj_listzI<b>Unable to save current workspace</b><br><br>The error message was:<br>)r$   r   rg   rm   rn   r   r   r   save_filtersr
   r}   r	   r   r~   r   r)   save_namespacer   formatsplitr   r   )r*   r$   r   r   r   save_data_messages         r,   	save_datazNamespaceBrowser.save_data  s   =%''HL**1-3355	 	-  *,H.tQ{^^/7/:/G I  I*  	$DMM5&wr}'='=>>>"$$$(77FF*,,,"$$$$1]BB?@@7>>!.!4!4T!:!:1!= ? ? ?? "!
 %&1%2 %2 5B%B!
  q~~7HIIIII %$r-   N)__name__
__module____qualname____doc__CONF_SECTIONr   r6   r8   r:   sig_hide_finder_requestedr#   r?   rD   rG   rK   rN   r2   rX   r\   rV   r   rt   r5   r   r   __classcell__r+   s   @r,   r   r   *   sU         'L !'"(&((!' &         "# # #B  / / /
& & &3 3 3  ' ' '4 4 4
) ) ) 
T$ZZX! X! X! ZX!t2 2 2%J %J %J %J %J %J %Jr-   r   c                   4     e Zd ZdZdZddZd Z fdZ xZS )NamespacesBrowserFinderz4Textbox for filtering listed variables in the table.FNc                     || _         || _        	 | j                                         n# t          $ r Y nw xY w|r| j                            |           d S d S r   )_parentmaintextChanged
disconnectrR   r4   )r*   r   callbackr   s       r,   update_parentz%NamespacesBrowserFinder.update_parent1  s|    		'')))) 	 	 	D	 	/$$X.....	/ 	/s   * 
77c                     | j         s5| j                                        j        j                                          d| _         dS )z,Load all variables to correctly filter them.TN)rU   r   r   r(   r^   rS   s    r,   load_all_variablesz*NamespacesBrowserFinder.load_all_variables;  s>    } 	AL!!(5>>@@@r-   c                 6   |                                 }|t          j        fv r/|                                  | j                                         dS |t          j        fv r/|                                  | j                                         dS |t          j        fv r | j	        j
                                         dS |t          j        t          j        fv rdS |                                  t          t          |                               |           dS )zQt and FilterLineEdit Override.N)keyr   Key_Upr   r   previous_rowKey_Downnext_row
Key_Escaper   r   emit	Key_Enter
Key_Returnr"   r   keyPressEvent)r*   eventr   r+   s      r,   r   z%NamespacesBrowserFinder.keyPressEventA  s   iikk29+##%%%L%%'''''R[M!!##%%%L!!#####R]O##I/4466666R\2=111D##%%%)400>>uEEEEEr-   )NN)	r   r   r   r   rU   r   r   r   r   r   s   @r,   r   r   ,  so        >>H/ / / /  F F F F F F F F Fr-   r   )/r   rl   os.pathpathrg   qtpyr   qtpy.compatr   r   qtpy.QtCorer   r   r   
qtpy.QtGuir	   qtpy.QtWidgetsr
   r   r   r   r   r   spyder_kernels.utils.iofuncsr   spyder_kernels.utils.miscr   spyder_kernels.utils.nsviewr   spyder.api.translationsr   spyder.api.widgets.mixinsr    spyder.widgets.collectionseditorr   4spyder.plugins.variableexplorer.widgets.importwizardr   spyder.utilsr   spyder.utils.miscr   r   spyder.widgets.helperwidgetsr   VALID_VARIABLE_CHARSr   r    r-   r,   <module>r      s    
			             9 9 9 9 9 9 9 9 ( ( ( ( ( ( ( ( ( (      ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 4 4 4 4 4 8 8 8 8 8 8 7 7 7 7 7 7 & % % % % % 7 7 7 7 7 7 M M M M M M M M M M M M ! ! ! ! ! ! @ @ @ @ @ @ @ @ 7 7 7 7 7 7 I J J J J Jw 1 J J JD%F %F %F %F %Fn %F %F %F %F %Fr-   