403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.156
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3/dist-packages/orca/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/orca/__pycache__/liveregions.cpython-310.pyc
o

S�bW�@s�ddlZddlZddlZddlZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlmZdd	lmZdd
lm
Z
ddlmZe��ZdZdZdZd
ZdZdZdZGdd�d�ZGdd�d�ZdS)�N)�GLib�)�cmdnames)�chnames)�debug)�keybindings)�messages)�input_event)�
orca_state)�settings_manager������-�	c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�
PriorityQueuez� This class represents a thread **UNSAFE** priority queue where priority
    is determined by the given integer priority.  The entries are also   
    maintained in chronological order. 

    TODO: experiment with Queue.Queue to make thread safe
    cCs
g|_dS�N��queue��self�r�2/usr/lib/python3/dist-packages/orca/liveregions.py�__init__'s
zPriorityQueue.__init__cCst�|j|t��||f�dS)zS Add a new element to the queue according to 1) priority and
        2) timestamp. N)�bisect�insort_leftr�time)r�data�priority�objrrr�enqueue*szPriorityQueue.enqueuecCs|j�d�S)z2get the highest priority element from the queue.  r)r�poprrrr�dequeue/szPriorityQueue.dequeuecCs
g|_dS)z Clear the queue Nrrrrr�clear3�
zPriorityQueue.clearcs*t����fdd�}tt||j��|_dS)zL Purge items from the queue that are older than the keepalive 
        time cs|dt�kS)Nr)�MSG_KEEPALIVE_TIME��item��currenttimerr�<lambda>;�z0PriorityQueue.purgeByKeepAlive.<locals>.<lambda>N)r�list�filterr)r�myfilterrr(r�purgeByKeepAlive7szPriorityQueue.purgeByKeepAlivecs"�fdd�}tt||j��|_dS)ze Purge items from the queue that have a lower than or equal priority
        than the given argument cs|d�kS�Nrrr&�rrrr*Asz/PriorityQueue.purgeByPriority.<locals>.<lambda>N)r,r-r)rrr.rr1r�purgeByPriority>szPriorityQueue.purgeByPrioritycCs
t|j�S)z  Return the length of the queue )�lenrrrrr�__len__Dr$zPriorityQueue.__len__N)�__name__�
__module__�__qualname__�__doc__rr r"r#r/r2r4rrrrr src@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd6d,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd+S)7�LiveRegionManagercCs~||_t�|_|��|_|��|_|j|j|j	|j
g|_g|_d|_
d|_d|_d|_|��|j�|j�|j�|j�dS)NT)�_scriptr�	msg_queue�_getInputEventHandlers�inputEventHandlers�_getKeyBindings�keyBindings�advancePoliteness�setLivePolitenessOff�toggleMonitoring�reviewLiveAnnouncement�	functions�	msg_cache�_politenessOverrides�_restoreOverrides�lastliveobj�
monitoring�bookmarkLoadHandler�	bookmarks�addSaveObserver�bookmarkSaveHandler�addLoadObserver)r�scriptrrrrJs"

�zLiveRegionManager.__init__cCsXi}t�|jtj�|d<t�|jtj�|d<t�|jtj�|d<t�|j	tj
�|d<|S)N�advanceLivePolitenessrA�monitorLiveRegionsrC)r	�InputEventHandlerr@r�LIVE_REGIONS_ADVANCE_POLITENESSrA�LIVE_REGIONS_SET_POLITENESS_OFFrB�LIVE_REGIONS_MONITORrC�LIVE_REGIONS_REVIEW)r�handlersrrrr<ss,��������z(LiveRegionManager._getInputEventHandlerscCs�t��}|�t�dtjtj|j�d���|�t�dtjtj|j�d���|�t�dtjtj	|j�d���dD]}|�t�|tjtj
|j�d���q9|S)N�	backslashrPrArQ)	�F1�F2�F3�F4�F5�F6�F7�F8�F9rC)r�KeyBindings�add�
KeyBinding�defaultModifierMask�NO_MODIFIER_MASKr=�get�SHIFT_MODIFIER_MASK�ORCA_SHIFT_MODIFIER_MASK�ORCA_MODIFIER_MASK)rr?�keyrrrr>�sF
��
��
��
��z!LiveRegionManager._getKeyBindingscCsJi}|jj��}|j��D]\}}|d|ks|tkr|||<q
||_dSr0)r:rK�	getURIKeyrF�items�	LIVE_NONE)r�
newpoliteness�
currenturirk�valuerrr�reset�s�
zLiveRegionManager.resetcCs|jjj|jdd�dS)zBookmark save callback�
politeness��filenameN)r:rK�saveBookmarksToDiskrFrrrrrM�s
�z%LiveRegionManager.bookmarkSaveHandlercCs|jjjdd�p	i|_dS)zBookmark load callbackrsrtN)r:rK�readBookmarksFromDiskrFrrrrrJ�s�z%LiveRegionManager.bookmarkLoadHandlercCs�|�|j�}|tkrdS|tkr|jsdSn|tkrn|tkr&|j�t�n
|t	kr0|j�t�|�
|�}|rPt|j�dkrEt�
d|j�|j�|||j�dSdS)zMain live region event handlerNr�d)�_getLiveType�source�LIVE_OFFrnrI�LIVE_POLITE�LIVE_ASSERTIVEr;r2�	LIVE_RUDE�_getMessager3r�timeout_add�pumpMessagesr )r�eventrs�messagerrr�handleEvent�s&�
�zLiveRegionManager.handleEventcCs�t|j�dkrMt�tjd�|j��|j��\}}}}|d|dkr)|d}n|d|d}|jr;|j�	|�n
d}t�tj
|d�||_|�|�|jsU|j��dt|j�}t�tj
|d�t�tjd�t|j�dkS)	z� Main gobject callback for live region support.  Handles both 
        purging the message queue and outputting any queued messages that
        were queued up in the handleEvent() method.
        rz(
vvvvv PRESENT LIVE REGION MESSAGE vvvvv�labels�contentz6INFO: Not presenting message because monitoring is offTz#LIVE REGIONS: messages in queue: %iz(^^^^^ PRESENT LIVE REGION MESSAGE ^^^^^
)
r3r;r�println�eventDebugLevelr/r"rIr:�presentMessage�
LEVEL_INFOrH�
_cacheMessage)rrs�	timestampr�r�utts�msgrrrr��s&



zLiveRegionManager.pumpMessagescCsJg}|jj��}|jD]\}}||kr"t|t�r"|�|jj�|��q|S)zXReturn the live objects that are registered and have a politeness
        of LIVE_NONE. )r:rKrlrF�
isinstance�tuple�append�	pathToObj)r�retvalrp�uri�objectidrrr�getLiveNoneObjectss�z$LiveRegionManager.getLiveNoneObjectscCst�d�s|j�tj�dStj}|�|�}|jj	�
�}z	|j||f}Wnty3|�
|�}Ynw|tks<|tkrLt|j||f<|j�tj�dS|tkr`t|j||f<|j�tj�dS|tkrtt|j||f<|j�tj�dS|tkr�t|j||f<|j�tj�dSdS)z0Advance the politeness level of the given object�inferLiveRegionsN)�_settingsManager�
getSettingr:r�r�LIVE_REGIONS_OFFr
�locusOfFocus�_getObjectIdrKrlrF�KeyError�_liveStringToTyper{rnr|�LIVE_REGIONS_LEVEL_POLITEr}�LIVE_REGIONS_LEVEL_ASSERTIVEr~�LIVE_REGIONS_LEVEL_RUDE�LIVE_REGIONS_LEVEL_OFF)rrO�
inputEventrr�r��cur_priorityrrrr@s0

��z#LiveRegionManager.advancePolitenesscCs:|jr|jj�|jd�|j�|jj�|jd��dSdS)z_Move the caret to the last announced live region and speak the 
        contents of that objectrN)rHr:�	utilities�setCaretPosition�
speakContents�getObjectContentsAtOffsetrrrr�goLastLiveRegion3s
��z"LiveRegionManager.goLastLiveRegioncCsft|jdd��}t�d�s|j�tj�dS|t|j	�kr'|j�tj
�dS|j�|j	|�dS)z%Speak the given number cached messagerNr�)�int�event_stringr�r�r:r�rr�r3rE�LIVE_REGIONS_NO_MESSAGE)rrOr��msgnumrrrrC;s
z(LiveRegionManager.reviewLiveAnnouncementcCs�t�d�s|j�tj�dS|jj��}|jj�	�}|j
r\|j�tj�|j�
�t�|j�|_|j��D]}t|j|<q5|jj�||j�}|D]}|�|�}t|j||f<qHd|_
dS|j��D]	\}	}
|
|j|	<qa|j�tj�d|_
dS)z]User toggle to set all live regions to LIVE_OFF or back to their
        original politeness.r�NFT)r�r�r:r�rr�r��
documentFramerKrlrI�LIVE_REGIONS_ALL_OFFr;r#�copyrFrG�keysr{�findAllDescendants�matchLiveRegionr�rm�LIVE_REGIONS_ALL_RESTORED)rrOr��docframer��override�matches�matchr�rkrqrrrrAHs,

�


z&LiveRegionManager.setLivePolitenessOffc	Ks�|�|�}|jj��}g}|��D]2}|��}|tjkrC|�d�}z|�	��
dd�}	|	��|j��kr8|�
|	�WqtyBYqwqz|j||f}
|�|
�}Wnty]d}Ynw|sd|dkrl|�
tj|�|S)zoUsed in conjunction with whereAmI to output description and 
        politeness of the given live region objectrr�none)r�r:rKrl�getRelationSet�getRelationType�pyatspi�RELATION_DESCRIBED_BY�	getTarget�	queryText�getText�strip�descriptionr��NotImplementedrF�_liveTypeToStringr�r�LIVE_REGIONS_LEVEL)rr�argsr�r��results�relation�relationtype�	targetobjr��livepriority�liveprioritystrrrr�generateLiveRegionDescriptionvs2



����z/LiveRegionManager.generateLiveRegionDescriptioncCs|�|�}d|vS)z$Predicate used to find a live region�container-live)�_getAttrDictionary�rr�attrsrrrr��s
z!LiveRegionManager.matchLiveRegioncs$�fdd�}||�r|St�||�S)Ncs��|��d�S)N�atomic)r�rg)�xrrrr*�r+z2LiveRegionManager._findContainer.<locals>.<lambda>)r��findAncestor)rr�isContainerrrr�_findContainer�sz LiveRegionManager._findContainercCs@|�|j�}d}d}|j�d�r)|�d�dkr |jj�|j�}n<|jj�|j�}n3|j�d�r\|�d�dkrOd|jvr?|j}n|jj�|j|j	|j	|j
�}n
|�|j�}|jj�|�}|s`dS|��}t
|�dkrot�|�}|jjpv|jj��}|r�||kr�|}|�d	�d
kr�||}|j��|j�|�dS|g|gd�S)z4Gets the message associated with a given live event.�zobject:children-changed:addzcontainer-atomic�truezobject:text-changed:insertuNr�channel�notify)r�r�)r�rz�type�
startswithrgr:r��
expandEOCs�any_data�detail1�detail2r�r�r3r�getCharacterName�namer��presentationInterruptr�)rr�r�r�r��	containerr�r�rrrr�s<
�

zLiveRegionManager._getMessagecCs|j��dSr)r;r#rrrr�
flushMessages��zLiveRegionManager.flushMessagescCs.|j�|�t|j�tkr|j�d�dSdS)z6Cache a message in our cache list of length CACHE_SIZErN)rEr�r3�
CACHE_SIZEr!)rr�rrrr��s�zLiveRegionManager._cacheMessagecCs\|�|�}|jj��}||f|jvr|j||fS|�|�}|tkr,|jr,||j||f<|S)z�Returns the live politeness setting for a given object. Also,
        registers LIVE_NONE objects in politeness overrides when monitoring.)r�r:rKrlrFr�rnrI)rrr�r��livetyperrrry�s

zLiveRegionManager._getLiveTypecCsD|�|�}|dur|�|�Sz|dWSty!|�|�YSw)zRReturns the HTML 'id' or a path to the object is an HTML id is
        unavailableN�id)r��_getPathr�r�rrrr��s


�zLiveRegionManager._getObjectIdNcCst|p|�|�}z'|ddkrtWS|ddkrtWS|ddkr#tWS|ddkr,tWStWSty9tYSw)z.Returns the politeness enum for a given objectr��off�polite�	assertive�rude)r�r{r|r}r~rnr�)rr�
attributesr�rrrr��s�z#LiveRegionManager._liveStringToTypecCs@|tkrdS|tkrdS|tkrdS|tkrdS|tkrdSdS)z@Returns the politeness level as a string given a politeness enumr�r�r�r�r��unknown)r{r|r}r~rn)rrsrrrr�sz#LiveRegionManager._liveTypeToStringcCs|jj�|�Sr)r:r��objectAttributes)rrrrrr�r�z$LiveRegionManager._getAttrDictionarycCsb|jj��}g}	|jdus||kr|��t|�Sz	|�|���Wn	ty,t	�w|j}q	)z` Returns, as a tuple of integers, the path from the given object 
        to the document frame.TN)
r:r�r��parent�reverser�r��getIndexInParent�	Exception�LookupError)rrr��pathrrrr� s��zLiveRegionManager._getPathcCsNt�d�st�dd�|j�tj�dSt�dd�|��|j�tj�dS)Nr�TF)	r�r��
setSettingr:r�r�LIVE_REGIONS_MONITORING_ONr��LIVE_REGIONS_MONITORING_OFF)rrOr�rrrrB/s
z"LiveRegionManager.toggleMonitoringr)r5r6r7rr<r>rrrMrJr�r�r�r@r�rCrAr�r�r�rr�r�ryr�r�r�r�r�rBrrrrr9Is6)"
)
"
.'1
r9)rr�r�r�
gi.repositoryrr�rrrrrr	r
r�
getManagerr�r{rnr|r}r~r%r�rr9rrrr�<module>s.)

Youez - 2016 - github.com/yon3zu
LinuXploit