<s> from . log_utils import logger <EOL> try : <EOL> from . _ffi_xcursors import ffi <EOL> except ImportError : <EOL> import cffi <EOL> if cffi . __version_info__ [ <NUM_LIT:0> ] == <NUM_LIT:0> : <EOL> from . ffi_build import xcursors_ffi as ffi <EOL> else : <EOL> raise ImportError ( "<STR_LIT>" ) <EOL> class Cursors ( dict ) : <EOL> def __init__ ( self , conn ) : <EOL> self . conn = conn <EOL> cursors = ( <EOL> ( b'<STR_LIT>' , <NUM_LIT:0> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:2> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:4> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:6> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:8> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:10> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:12> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:16> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:20> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:30> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:32> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:50> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:64> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT:100> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT:target>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT>' , <NUM_LIT> ) <EOL> ) <EOL> self . xcursor = self . _setup_xcursor_binding ( ) <EOL> for name , cursor_font in cursors : <EOL> self . _new ( name , cursor_font ) <EOL> if self . xcursor : <EOL> self . xcursor . xcb_cursor_context_free ( self . _cursor_ctx [ <NUM_LIT:0> ] ) <EOL> def finalize ( self ) : <EOL> self . _cursor_ctx = None <EOL> def _setup_xcursor_binding ( self ) : <EOL> try : <EOL> xcursor = ffi . dlopen ( '<STR_LIT>' ) <EOL> except OSError : <EOL> logger . warning ( "<STR_LIT>" ) <EOL> return False <EOL> conn = self . conn . conn <EOL> screen_pointer = conn . get_screen_pointers ( ) [ <NUM_LIT:0> ] <EOL> self . _cursor_ctx = ffi . new ( '<STR_LIT>' ) <EOL> xcursor . xcb_cursor_context_new ( conn . _conn , screen_pointer , <EOL> self . _cursor_ctx ) <EOL> return xcursor <EOL> def get_xcursor ( self , name ) : <EOL> """<STR_LIT>""" <EOL> cursor = self . xcursor . xcb_cursor_load_cursor ( self . _cursor_ctx [ <NUM_LIT:0> ] , name ) <EOL> return cursor <EOL> def get_font_cursor ( self , name , cursor_font ) : <EOL> """<STR_LIT>""" <EOL> fid = self . conn . conn . generate_id ( ) <EOL> self . conn . conn . core . OpenFont ( fid , len ( "<STR_LIT>" ) , "<STR_LIT>" ) <EOL> cursor = self . conn . conn . generate_id ( ) <EOL> self . conn . conn . core . CreateGlyphCursor ( <EOL> cursor , fid , fid , <EOL> cursor_font , cursor_font + <NUM_LIT:1> , <EOL> <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <EOL> <NUM_LIT> , <NUM_LIT> , <NUM_LIT> <EOL> ) <EOL> return cursor <EOL> def _new ( self , name , cursor_font ) : <EOL> if self . xcursor : <EOL> cursor = self . get_xcursor ( name ) <EOL> else : <EOL> cursor = self . get_font_cursor ( name , cursor_font ) <EOL> self [ name . decode ( ) ] = cursor </s>
