HOME


Mini Shell 1.0
DIR: /snap/core20/current/usr/share/subiquity/subiquitycore/ui/__pycache__/
Upload File :
Current File : //snap/core20/current/usr/share/subiquity/subiquitycore/ui/__pycache__/form.cpython-38.pyc
U

K��^�:�@sJddlZddlZddlmZddlmZmZmZmZm	Z	m
ZmZm
Z
mZddlmZmZddlmZmZddlmZmZmZmZddlmZddlmZmZmZdd	l m!Z!m"Z"m#Z#m$Z$dd
l%m&Z&e�'d�Z(e)�Z*e)�Z+Gdd
�d
ed�e�Z,Gdd�de�Z-Gdd�dej.�Z/Gdd�de)�Z0dedd�iZ1Gdd�de)�Z2dd�Z3e3e�Z4e3e�Z5e3e�Z6e3e�Z7Gdd�de�Z8Gdd�de/�Z9Gd d!�d!ee0�Z:e3e:�Z;Gd"d#�d#e/�Z<Gd$d%�d%e
�Z=Gd&d'�d'e/�Z>Gd(d)�d)e�Z?Gd*d+�d+e/�Z@Gd,d-�d-e	�ZAGd.d/�d/e)eAd0�ZBGd1d2�d2e�ZCGd3d4�d4e/�ZDGd5d6�d6eB�ZEdS)7�N)�urlparse)	�CheckBox�connect_signal�delegate_to_widget_mixin�emit_signal�MetaSignals�Padding�RadioButton�Text�WidgetDecoration)�
cancel_btn�done_btn)�Pile�
WidgetWrap)�PasswordEditor�
IntegerEditor�StringEditor�EmailEditor)�Selector)�ColSpec�	TablePile�TableRow)�button_pile�Color�disabled�screen)�widget_widthzsubiquitycore.ui.formc@s2eZdZdZdd�Zedd��Zejdd��ZdS)�
ToggleableTcCs||_d|_d|_dS)NFT)�original�_enabled�enabled)�selfr�r"�-/usr/share/subiquity/subiquitycore/ui/form.py�__init__NszToggleable.__init__cCs|jS�N�r�r!r"r"r#r SszToggleable.enabledcCs4|r|js|j|_n|s*|jr*t|j�|_||_dSr%)rrZoriginal_widgetr�r!�valr"r"r#r Ws



N)�__name__�
__module__�__qualname__Zhas_original_widthr$�propertyr �setterr"r"r"r#rIs
rZ_original_widgetcs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�
_Validatorcs||_t��|�dSr%)�field�superr$)r!r0�w��	__class__r"r#r$bsz_Validator.__init__cCs
t|j�Sr%)r�_wr'r"r"r#�get_natural_widthfsz_Validator.get_natural_widthcCs4d|j_t|jjdd�}|dk	r&|�|j��dS)NF�
lost_focus)r0�
showing_extra�getattrr5�base_widget�validate)r!Zlfr"r"r#r7is
z_Validator.lost_focus)r*r+r,r$r6r7�
__classcell__r"r"r3r#r/`sr/c@s8eZdZdZdZdZd
dd�Zejdd��Z	dd	�Z
dS)�	FormFieldrTNcCs&||_||_tj|_tjd7_dS)N�)�caption�helpr=�
next_index�index)r!r?r@r"r"r#r$wszFormField.__init__cCsdSr%r"�r!�formr"r"r#�_make_widget}szFormField._make_widgetcCs|�|�}t|||�Sr%)rE�BoundFormField)r!rD�widgetr"r"r#�bind�s
zFormField.bind)NN)r*r+r,rA�takes_default_style�
caption_firstr$�abc�abstractmethodrErHr"r"r"r#r=qs

r=c@seZdZdZdd�ZdS)�WantsToKnowFormFieldzA marker class.cCs
||_dSr%)�bff)r!rNr"r"r#�set_bound_form_field�sz)WantsToKnowFormField.set_bound_form_fieldN)r*r+r,�__doc__rOr"r"r"r#rM�srMr>F)Zpackc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	e
dd��Zejdd��Ze
dd��Z
e
jdd��Z
e
dd��Zejdd��Ze
dd��Zejdd��ZdS)rFcCsh||_||_||_d|_d|_d|_d|_|��dt|dg�krPt	|d|j
�t|t�rd|�
|�dS)NFTZchange�signals)r0rDrG�in_errorr�_helpr8�_build_tabler9r�_change�
isinstancerMrO)r!r0rDrGr"r"r#r$�s
zBoundFormField.__init__cCs|j}|jjrt�|�}|jtk	r0t|j�|_n
td�|_|jj	t
krddt||�fg}d|jfg}n`tt|jj	��|_
|jjr�d|j
_|j
t||�g}nt|t|dt|�d��|j
g}td�|jg}|g}|jtk	r�|�|�dd�|D�|_t|jdtd�|_dS)N���right)�align�widthcSsg|]}tt|���qSr")rr)�.0�rowr"r"r#�
<listcomp>�sz/BoundFormField._build_table.<locals>.<listcomp>)ZspacingZcolspecs)rGr0rIrZstring_inputr@�NO_HELPr
�
under_textr?�
NO_CAPTIONr/�_�caption_textrJrZ�UrwidPaddingr�append�_rowsr�
form_colspecs�_table)r!rGZ	first_rowZ
second_row�rowsr"r"r#rT�s:


���

zBoundFormField._build_tablecCs*t|jd|jjd�}|dk	r&||�}|S)NZclean_)r9rDr0�name)r!�valueZcleanerr"r"r#�clean�szBoundFormField.cleancCsb|js|jr^d|_||_|��}|`|dk	r0dSd|_|jsT|jtk	rT|j�|j�|j�	�dS)NF)
rRr8�tmpval�	_validater@r_r`�set_textrD�	validated)r!�senderZnew_val�rr"r"r#rU�szBoundFormField._changec
Csl|js
dSz
|jWn.tk
rB}zt|�WY�Sd}~XYnXt|jd|jjd�}|dk	rh|�SdS)NZ	validate_)rrk�
ValueError�strr9rDr0rj)r!�eZ	validatorr"r"r#rn�s
zBoundFormField._validateTcCs\|��}|dkr6d|_|jsN|jtk	rN|j�|j�nd|_|rN|�d|f�|j�	�dS)NFTZ
info_error)
rnrRr8r@r_r`ro�
show_extrarDrp)r!�
show_errorrrr"r"r#r;�szBoundFormField.validatecCsd|_|j�|�dS)NT)r8r`ro)r!Zextra_markupr"r"r#rv�szBoundFormField.show_extracCs|�t|d|jj��S)Nrm)rlr9rGrkr'r"r"r#rk�szBoundFormField.valuecCs||j_dSr%)rGrkr(r"r"r#rkscCsH|jdk	r|jS|jjdk	r@t|jjt�r6t|jj�S|jjSndSdS�NrW)rSr0r@rVrtrbr'r"r"r#r@s

zBoundFormField.helpcCs"|dkrd}||_|j�|�dSrx)rSr`ror(r"r"r#r@scCs|jjSr%)rc�textr'r"r"r#r?szBoundFormField.captioncCs|j�|�dSr%)rcror(r"r"r#r?scCs|jSr%r&r'r"r"r#r !szBoundFormField.enabledcCs||_|jD]
}||_qdSr%)rrfr )r!r)r]r"r"r#r %s
N)T)r*r+r,r$rTrlrUrnr;rvr-rkr.r@r?r r"r"r"r#rF�s.%







rFcsG�fdd�dt�}|S)NcseZdZ�fdd�ZdS)zsimple_field.<locals>.Fieldcs��Sr%r"rC��widget_makerr"r#rE.sz(simple_field.<locals>.Field._make_widgetN)r*r+r,rEr"rzr"r#�Field-sr|)r=)r{r|r"rzr#�simple_field,sr}c@s*eZdZdZedd��Zejdd��ZdS)�RadioButtonEditor�cCs|jSr%��stater'r"r"r#rk=szRadioButtonEditor.valuecCs
||_dSr%r�r(r"r"r#rkAsN�r*r+r,Zreserve_columnsr-rkr.r"r"r"r#r~9s

r~cs.eZdZdZdZd�fdd�	Zdd�Z�ZS)�RadioButtonFieldFNcs.|dkrg}|�|�||_t��||�dSr%)re�groupr1r$)r!r�r?r@r3r"r#r$Ks

zRadioButtonField.__init__cCs2|jD]}|j|jkr|jj}q(qg}t|d�Srx)�_fieldsr0r�rGr~)r!rD�bfr�r"r"r#rERs
zRadioButtonField._make_widget)NN)r*r+r,rJrIr$rEr<r"r"r3r#r�Fsr�cs8eZdZeddg�f�fdd�	Zejjdd��Z�ZS)�	URLEditorZhttpZhttpscs||_t���dSr%)�allowed_schemesr1r$)r!r�r3r"r#r$]szURLEditor.__init__cCs�|��}|dkr|St|�}|j|jkr�g}t|j�D]}|�|�q6t|�dkrvd�|dd��td�|d}n.t|�dkr�|dtd�|d}n|d}t	td	�j
|d
���|S)NrWrXz, ���z, or rz or r>z#This field must be a {schemes} URL.)�schemes)Z
get_edit_textrZschemer��sortedre�len�joinrbrs�format)r!�vZparsedr��sr"r"r#rkas&$��zURLEditor.value)	r*r+r,�	frozensetr$rrk�getterr<r"r"r3r#r�\sr�cs0eZdZdZddgf�fdd�	Zdd�Z�ZS)�ChoiceFieldFNcst��||�||_dSr%)r1r$�choices)r!r?r@r�r3r"r#r$~szChoiceField.__init__cCs
t|j�Sr%)rr�rCr"r"r#rE�szChoiceField._make_widget�r*r+r,rIr$rEr<r"r"r3r#r�zsr�c@s&eZdZedd��Zejdd��ZdS)�ReadOnlyWidgetcCs|jSr%)ryr'r"r"r#rk�szReadOnlyWidget.valuecCs|�|�dSr%)ror(r"r"r#rk�sN)r*r+r,r-rkr.r"r"r"r#r��s
r�c@seZdZdZdd�ZdS)�
ReadOnlyFieldFcCstd�Srx)r�rCr"r"r#rE�szReadOnlyField._make_widgetN)r*r+r,rIrEr"r"r"r#r��sr�c@s*eZdZdZedd��Zejdd��ZdS)�CheckBoxEditorrcCs|jSr%r�r'r"r"r#rk�szCheckBoxEditor.valuecCs
||_dSr%r�r(r"r"r#rk�sNr�r"r"r"r#r��s

r�c@seZdZdZdZdd�ZdS)�BooleanFieldFcCstd�Srx)r�rCr"r"r#rE�szBooleanField._make_widgetN)r*r+r,rJrIrEr"r"r"r#r��sr�cseZdZ�fdd�Z�ZS)�MetaFormcsnt��|||�g}|��D]6\}}t|t�r||_|jdkrH|d|_|�|�q|jdd�d�||_	dS)N�:cSs|jSr%)rB)�fr"r"r#�<lambda>��z#MetaForm.__init__.<locals>.<lambda>)�key)
r1r$�itemsrVr=rjr?re�sort�_unbound_fields)r!rj�basesZattrsr��kr�r3r"r#r$�s


zMetaForm.__init__�r*r+r,r$r<r"r"r3r#r��sr�c@sreZdZddgZed�Zed�Zifdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zddd�Z
dd�Zdd�ZdS)�Form�submit�cancelZDoneZCancelcCs�ttt|j�|jd��|_ttt|j�|jd��|_t|j|jg�|_	g|_
|jD]@}|�|�}t
||jj|�|j
�|�|j|krR||j|_qR|j
D]}|jdd�q�|��dS)N)Zon_pressF)rw)rr
rb�ok_label�_click_doner�cancel_label�
_click_cancelr�buttonsr�r�rH�setattrr0rjrerkr;rp)r!�initialr0r�r"r"r#r$�s"�
�




z
Form.__init__cCs,|jD] }|jj|kr||jj|j_qdSr%)r�r0rjrk)r!�datar�r"r"r#�
enter_data�s
zForm.enter_datacCst|d|�dS)Nr��r�r!rqr"r"r#r��szForm._click_donecCst|d|�dS)Nr�r�r�r"r"r#r��szForm._click_cancelcCs8g}|jD]}|jj|kr
|�|�q
||jdd�<dSr%)r�r0rjre)r!Z
field_nameZ
new_fieldsr�r"r"r#�remove_field�s

zForm.remove_fieldcCsdt|j�dkrgS|jdj}|g}|jdd�D],}|�td��|j}|�|�|�|�q2|S)Nrr>rW)r�r�rhrer
rH)r!Zt0rir0�tr"r"r#�as_rows�s
zForm.as_rowsTNFcCst|��|j|||d�S)N)�
focus_buttons�excerpt�narrow_rows)rr�r�)r!r�r�r�r"r"r#�	as_screen�s�zForm.as_screencCsZd}|jD]}|jr
d}qq
|rBd|jjjdd_d|jj_nd|jjjdd_dS)NFTrr>)r�rRr�r:�contentsr Zfocus_position)r!rRr�r"r"r#rp�s
zForm.validatedcCs(i}|jD]}|jr
|j||jj<q
|Sr%)r�r rkr0rj)r!r�r0r"r"r#�as_datas

zForm.as_data)TNF)r*r+r,rQrbr�r�r$r�r�r�r�r�r�rpr�r"r"r"r#r��s
r�)�	metaclasscs6eZdZ�fdd�Zedd��Zejdd��Z�ZS)�
SubFormWidgetcs||_t��t|����dSr%)rDr1r$rr�rCr3r"r#r$szSubFormWidget.__init__cCs
|j��Sr%)rDr�r'r"r"r#rkszSubFormWidget.valuecCs$|��D]\}}|t|j|�_qdSr%)r�r9rDrk)r!r�r�r�r"r"r#rks)r*r+r,r$r-rkr.r<r"r"r3r#r�s

r�cs*eZdZdZd�fdd�	Zdd�Z�ZS)�SubFormFieldFNcst�j||d�||_dS)N)r?r@)r1r$�form_cls)r!r�r?r@r3r"r#r$"szSubFormField.__init__cCs|�|�}t|�Sr%)r�r�rCr"r"r#rE&s
zSubFormField._make_widget)NNr�r"r"r3r#r�sr�cseZdZ�fdd�Z�ZS)�SubFormcs||_t�jf|�dSr%)�parentr1r$)r!r��kwr3r"r#r$-szSubForm.__init__r�r"r"r3r#r�+sr�)FrKZloggingZurllib.parserZurwidrrrrrrrdr	r
rZsubiquitycore.ui.buttonsrr
Zsubiquitycore.ui.containerrrZsubiquitycore.ui.interactiverrrrZsubiquitycore.ui.selectorrZsubiquitycore.ui.tablerrrZsubiquitycore.ui.utilsrrrrZsubiquitycore.ui.widthrZ	getLogger�log�objectrar_rr/�ABCr=rMrgrFr}ZStringFieldZ
PasswordFieldZIntegerFieldZ
EmailFieldr~r�r�ZURLFieldr�r�r�r�r�r�r�r�r�r�r"r"r"r#�<module>sR,
�

	P