łň
ŘkBIc        	   @   sr   d  Z  d d k Z d d k Z d d k Z d d k Z d d k Z d d k l Z d f  d     YZ d   Z d S(   sž   event.py - Event handling (keyboard, mouse, etc.) for the main window.

Logically this isn't really a separate module from main.py, but it is
given its own file for the sake of readability.
i˙˙˙˙N(   t   prefst   EventHandlerc           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   s:   | |  _  d |  _ d |  _ d |  _ d |  _ d |  _ d  S(   Ni    (   t   _windowt   _last_pointer_pos_xt   _last_pointer_pos_yt   _pressed_pointer_pos_xt   _pressed_pointer_pos_yt   _extra_scroll_events(   t   selft   window(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   __init__   s    					c         C   sž   |  i  i p! |  i  i   \ t d <t d <n | i |  i  i j p | i |  i  i j o` |  i  i p | i t d <| i t d <n | i |  i  _ | i |  i  _ |  i  i d t  n d S(   s7   Handle events from resizing and moving the main window.s   window xs   window ys   window widths   window heightt   scrollN(   R   t   is_fullscreent   get_positionR    t   widtht   heightt
   draw_imaget   False(   R   t   widgett   event(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   resize_event   s    !c         G   sp	  | i  t i i t i i f j o |  i i   n| i  t i i j o |  i i   nh| i  t i i	 j o |  i i
 d d d d  n5| i  t i i j o |  i i
 d d d d  n| i  t i i j o |  i i
 d d d d  nĎ| i  t i i j o |  i i
 d d d d  n| i  t i i j o |  i i
 d d d d  ni| i  t i i j o |  i i
 d d d d  n6| i  t i i j o |  i i
 d d d d  n| i  t i i j o |  i i
 d d d d  nĐ| i  t i i j o |  i i
 d d d d  n| i  t i i j o  |  i i i d  i t  ng| i  t i i j o |  i i i d  i   n4| i  t i i t i i f j o |  i i i d	  i   nő| i  t i i j o |  i i i d
  i   nÂ| i  t i i t i i f j o0 d | i i  j o |  i i i d  i   np| i  t i i! t i i" f j o; |  i i# t$ i% j p |  i& d d  qÁ|  i i   n| i  t i i' t i i( f j o; |  i i# t$ i% j p |  i& d d  qÁ|  i i   nś| i  t i i) t i i* f j o; |  i i# t$ i% j p |  i& d d  qÁ|  i i   nY| i  t i i+ t i i, f j o; |  i i# t$ i% j p |  i& d d  qÁ|  i i   nü| i  t i i- t i i. t i i/ g j oĐ|  i i0   \ } } t1 | d  } t1 | d  } |  i i2 o | d 9} n d | i i  j p | i  t i i. j oŻt3 d oa|  i i4   o÷ |  i i5   o] |  i i6 | d d  p? |  i i6 d |  p |  i i   qî|  i i
 d d  qxqŇ|  i i6 | d d  pl |  i i6 d |  p> |  i i
 d d  p |  i i   qt|  i i
 d d  qx|  i i
 d d  qŇq|  i i6 | d  p? |  i i6 d |  p |  i i   qŇ|  i i
 d d  qq˝|  i i# t$ i% j p |  i i6 d |  o |  i i   q˝qÁt3 d o[|  i i4   oó |  i i5   o |  i i6 | d d  pk |  i i6 d |  p> |  i i
 d d  p |  i i   qÄ|  i i
 d d  qČ|  i i
 d d  q#q{|  i i6 | d d  p> |  i i6 d |  p |  i i   q#|  i i
 d d  q{q˝|  i i6 | d  p> |  i i6 d |  p |  i i   q{|  i i
 d d  q˝qÁ|  i i# t$ i% j p |  i i6 d |  o |  i i   qÁn | i  t i i' t i i! t i i- t i i7 t i i( t i i" t i i. t i i/ t i i t i i f
 j p) | i  t i i8 j o+ d | i i  j o |  i i9 d  t: Sn d S(   s+   Handle key press events on the main window.t   horizt   leftt   vertt   bottomt   middlet   rightt   topt
   fullscreent   zoom_int   zoom_outt   GDK_CONTROL_MASKt   zoom_originali    i2   iÎ˙˙˙gÍĚĚĚĚĚě?i˙˙˙˙t   GDK_SHIFT_MASKs   smart space scrollt   firstt   endfirstt   secondt	   endsecondt   startsecondt
   startfirstt   GDK_MOD1_MASKt   key_press_eventN(;   t   keyvalt   gtkt   keysymst
   KP_Page_Upt	   BackSpaceR   t   previous_paget   KP_Page_Downt	   next_paget   KP_1t   scroll_to_fixedt   KP_2t   KP_3t   KP_4t   KP_5t   KP_6t   KP_7t   KP_8t   KP_9t   Escapet   actiongroupt
   get_actiont
   set_activeR   t   F11t   activatet   plust   equalt   minust   _0t   KP_0t   statet   value_namest   Downt   KP_Downt	   zoom_modet   preferencest   ZOOM_MODE_BESTt   _scroll_with_flippingt   Upt   KP_Upt   Rightt   KP_Rightt   Leftt   KP_Leftt   spacet   KP_Homet   KP_Endt   get_visible_area_sizet   intt   is_manga_modeR    t   displayed_doublet   is_on_first_pageR   t   KP_Entert   Returnt   emit_stop_by_namet   True(   R   R   R   t   argst   x_stept   y_step(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyR)   (   sć    " """"""

c         G   sĽ  d | i  i j o d Sn | i t i i j o |  i i t i	 j o |  i i
   qĄ|  i i t i j o5 |  i i o |  i d d  qł |  i d d  qĄ|  i d d  në | i t i i j o |  i i t i	 j o |  i i   qĄ|  i i t i j o5 |  i i o |  i d d  qO|  i d d  qĄ|  i d d  nO | i t i i j o |  i i   n( | i t i i j o |  i i
   n d S(   s    Handle scroll wheel events on the maon layout area. The scroll
        wheel flips pages in best fit mode and scrolls the scrollbars
        otherwise.
        t   GDK_BUTTON2_MASKNiF   i    iş˙˙˙(   RG   RH   t	   directionR+   t   gdkt	   SCROLL_UPR   RK   RL   RM   R/   t   ZOOM_MODE_HEIGHTRZ   RN   t   SCROLL_DOWNR1   t   SCROLL_RIGHTt   SCROLL_LEFT(   R   R   R   Ra   (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   scroll_wheel_eventŘ   s,    c         C   sÇ   | i  d j o4 | i |  _ | i |  _ | i |  _ | i |  _ n | i  d j o  |  i i i	 d  i
 t  nP | i  d j o? |  i i i t i  |  i i i d d d | i  | i  n d S(   s2   Handle mouse click events on the main layout area.i   i   t   lensi   N(   t   buttont   x_rootR   t   y_rootR   R   R   R   R=   R>   R?   R`   t   cursor_handlert   set_cursor_typet   cursort   NORMALt   popupt   Nonet   time(   R   R   R   (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   mouse_press_eventř   s     c         C   s   |  i  i i t i  | i d j o7 | i |  i j o$ | i |  i	 j o |  i  i
   n | i d j o  |  i  i i d  i t  n d S(   s;   Handle mouse button release events on the main layout area.i   i   Rm   N(   R   Rq   Rr   Rs   Rt   Rn   Ro   R   Rp   R   R1   R=   R>   R?   R   (   R   R   R   (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   mouse_release_event  s    c         C   sÔ   t  |  } d | i i j oe |  i i i t i  |  i i |  i	 | i
 |  i | i  | i
 |  _	 | i |  _ | i |  _ nM |  i i i d  i   o  |  i i i | i | i  n |  i i i   d S(   s%   Handle mouse pointer movement events.t   GDK_BUTTON1_MASKRm   N(   t   _get_latest_event_of_same_typeRG   RH   R   Rq   Rr   Rs   t   GRABR   R   Ro   R   Rp   Rw   t   _drag_timerR=   R>   t
   get_activet   glasst   set_lens_cursort   xt   yt   refresh(   R   R   R   (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   mouse_move_event  s     c         C   sŔ   | i    d j	 o d Sn | i   } | p d Sn | d }	 |	 i d  o |	 d }	 n= |	 i d  o |	 d }	 n |	 i d  o |	 d }	 n t i |	  }
 |  i i i |
  d S(	   s2   Handle drag-n-drop events on the main layout area.Ni    s   file://localhost/i   s   file:///i   s   file:/i   (	   t   get_source_widgetRv   t   get_urist
   startswitht   urllibt   url2pathnameR   t   file_handlert	   open_file(   R   R   t   contextR   R   t	   selectiont   drag_idt	   eventtimet   urist   urit   path(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyt   drag_n_drop_event  s    
c         C   s  |  i  i | |  p t d o d |  _ d Sn | d j p5 |  i  i o | d j  p |  i  i o | d j o
 t } n t } | oG t d |  i d  |  _ |  i d j o d |  _ |  i  i   qnD t	 d |  i d  |  _ |  i d j o d |  _ |  i  i
   n d S(   s   Handle scrolling with the scroll wheel or the arow keys, for which
        the pages might be flipped depending on the preferences.
        s   flip with wheeli    Ni   i   i˙˙˙˙iý˙˙˙(   R   R   R    R   RZ   R`   R   t   maxR1   t   minR/   (   R   R   R   t   forwards_scroll(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyRN   2  s     "	'
		(   t   __name__t
   __module__R
   R   R)   Rl   Rx   Ry   R   R   RN   (    (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyR      s   			°	 		
		c         C   s   g  } x_ t  i i   oN t  i i   } | d j	 o. | i |  i j o
 | }  qc | i |  q	 q	 Wx | D] } | i   qo W|  S(   sĐ   Return the latest event in the event queue that is of the same type
    as <event>, or <event> itself if no such events are in the queue. All
    events of that type will be removed from the event queue.
    N(   R+   Rf   t   events_pendingt	   event_getRv   t   typet   appendt   put(   R   t   eventst   queued_event(    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pyR{   J  s     
 (	   t   __doc__R   R+   t   gobjectRs   RL   R    R   R{   (    (    (    sE   /home/sork/Pontus/Programmering/Python/Comix/comix-4.0.4/src/event.pys   <module>   s   ˙ :