Mini Shell

Direktori : /proc/self/root/lib/python3.6/site-packages/orca/__pycache__/
Upload File :
Current File : //proc/self/root/lib/python3.6/site-packages/orca/__pycache__/bookmarks.cpython-36.pyc

3

�2[}!�@sbdZddlZddlZddlZddlZddlmZddlmZddlm	Z	e	j
�ZGdd�d�ZdS)	z:Provides the default implementation for bookmarks in Orca.�N�)�messages)�
orca_state)�settings_managerc@s�eZdZdZdd�Zdd�Zdd�Zd#d	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zd$dd�Z
d%dd�Zdd�Zdd�Zdd�Zdd �Zd&d!d"�ZdS)'�	Bookmarksz&Represents a default bookmark handler.cCs*||_i|_g|_g|_|j�d|_dS)N)�_script�
_bookmarks�_saveObservers�_loadObservers�_loadBookmarks�_currentbookmarkindex)�selfZscript�r�/usr/lib/python3.6/bookmarks.py�__init__#szBookmarks.__init__cCs|jj|�dS)N)r	�append)r
�observerrrr�addSaveObserver+szBookmarks.addSaveObservercCs|jj|�dS)N)r
r)r
rrrr�addLoadObserver.szBookmarks.addLoadObserverNcCs�|p|j}yB|jj�}|j|}|j|d|d|d|d�||j|<Wntk
rj|jj�dSX||j_|jj|�||_	dS)z2 Go to the bookmark indexed by inputEvent.hw_code �line�zone�word�charN)
�hw_coder�getFlatReviewContextr�
setCurrent�KeyError�
systemBeepZflatReviewContextZreviewCurrentItemr)r
�
inputEvent�index�context�context_inforrr�goToBookmark1s



zBookmarks.goToBookmarkcCs.|jj�}|j|�|j|j<|jjtj�dS)z9 Add an in-page accessible object bookmark for this key. N)rr�_contextToBookmarkrr�presentMessagerZBOOKMARK_ENTERED)r
rr rrr�addBookmarkFs
zBookmarks.addBookmarkcCs\y|j|j�|jjtj�Wn"tk
r@|jjtj�YnXx|jD]
}|�qJWdS)z% Save the bookmarks for this script. N)	�saveBookmarksToDiskrrr$rZBOOKMARKS_SAVED�IOErrorZBOOKMARKS_SAVED_FAILUREr	)r
r�orrr�
saveBookmarksLszBookmarks.saveBookmarksc
Cs�t|jj��}t|�dkr(|jj�dSt|�dks>|jdkrT|jd|dd�dSy&|j|j�}|jd||dd�Wn,t	t
tfk
r�|jd|dd�YnXdS)zu Go to the next bookmark location.  If no bookmark has yet to be
        selected, the first bookmark will be used.  rNr)r)�sortedr�keys�lenrrrr"r�
ValueErrorr�
IndexError)r
r�hwkeysrrrr�goToNextBookmarkXs
zBookmarks.goToNextBookmarkc
Cs�t|jj��}t|�dkr(|jj�dSt|�dks>|jdkrT|jd|dd�dSy&|j|j�}|jd||dd�Wn,t	t
tfk
r�|jd|dd�YnXdS)Nrr)r)r*rr+r,rrrr"rr-rr.)r
rr/rrrr�goToPrevBookmarkps
zBookmarks.goToPrevBookmarkcCs(|j�p
i|_x|jD]
}|�qWdS)z# Load this scripts saved bookmarks.N)�readBookmarksFromDiskrr
)r
r(rrrr�szBookmarks._loadBookmarksc
Cs�|p|jjjd�d}tj�}|s&dStjj|d�}y0ttjj|d|�d�}t	j
|j�}|j�|St
ttfk
r~dSXdS)zc Read saved bookmarks from disk.  Currently an unpickled object
        that represents a bookmark � rN�	bookmarksz%s.pkl�r)r�name�split�_settingsManager�getPrefsDir�os�path�join�open�pickle�load�buffer�closer'�EOFError�OSError)r
�filename�orcaDir�orcaBookmarksDirZ	inputFiler4rrrr2�s
zBookmarks.readBookmarksFromDiskc
Cs�|p|jjjd�d}tj�}tjj|d�}ytj|�Wnt	k
rXtj
|�YnXttjj|d|�dtj�}t
j||j�|j�dS)zN Write bookmarks to disk.  bookmarksObj must be a pickleable 
        object. r3rr4z%s.pkl�wN)rr6r7r8r9r:r;r<�statrC�mkdirr=�O_CREATr>�dumpr@rA)r
ZbookmarksObjrDrErF�outputrrrr&�s
zBookmarks.saveBookmarksToDiskcCs0i}|j|d<|j|d<|j|d<|j|d<|S)z6Converts a flat_review.Context object into a bookmark.rrrr)Z	zoneIndexZ	charIndexZ	wordIndexZ	lineIndex)r
r r!rrrr#�s



zBookmarks._contextToBookmarkcCs.|jj�}|j|d|d|d|d�|S)z6Converts a bookmark into a flat_review.Context object.rrrr)rrr)r
Zbookmarkr rrr�_bookmarkToContext�s
zBookmarks._bookmarkToContextcCs6|jjj�}|r.tjj|�}dj|dd��SdSdS)zpReturns the URI key for a given page as a URI stripped of
        parameters?query#fragment as seen in urlparse.�r�N)r�	utilitiesZdocumentFrameURI�urllib�parseZurlparser<)r
ZuriZ
parsed_urirrr�	getURIKey�s
zBookmarks.getURIKeycCs@|jjj�}x.|D]&}y||}Wqtk
r6dSXqW|S)zPReturn the object with the given path (relative to the
        document frame). N)rrPZ
documentFramer.)r
r;Z	returnobjZchildnumberrrr�	pathToObj�s

zBookmarks.pathToObjcCs�|s|jjj�\}}|sgS|jjj|�r.gSg}|j|j��|j}x6|r||jjj|�rf|j�|S|j|j��|j}qHWgS)z�Given an object, return it's path from the root accessible.  If obj
        is not provided, the current caret context is used. )rrPZgetCaretContextZ
isDocumentrZgetIndexInParent�parent�reverse)r
Z	start_objZcharacterOffsetr;�prrr�
_objToPath�s 
zBookmarks._objToPath)N)N)N)N)�__name__�
__module__�__qualname__�__doc__rrrr"r%r)r0r1rr2r&r#rMrSrTrXrrrrr!s"


	
r)
r\r>Zpyatspir:Zurllib.parserQrNrrrZ
getManagerr8rrrrr�<module>s