ó
¡¹FOc           @   sÃ   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d Z	 d Z
 d e j f d „  ƒ  YZ d d d „  ƒ  YZ d „  Z d	 „  Z d
 „  Z d S(   iÿÿÿÿNs	   127.0.0.1i“ù  t   ServerThreadc           B   s    e  Z d  Z d „  Z d „  Z RS(   s3   Server listening for requests to open new documentsc         C   s)   t  t |  ƒ j ƒ  | |  _ | |  _ d  S(   N(   t   superR    t   __init__t	   semaphoret   msg_server_to_core(   t   selfR   R   (    (    s   modules/main.pyR       s    	c         C   s=  t  j  t  j t  j ƒ } y | j t t f ƒ Wn d t GHd  SX| j d ƒ xæ t r8y | j ƒ  \ } } Wn
 qS n Xd G| GHx£ t r*| j	 d ƒ } | s§ Pn  t
 | ƒ d k  sÉ | d  d k rÖ d G| GHPn  | j d ƒ t | d ƒ } |  j j ƒ  | |  j d	 <d |  j d
 <|  j j ƒ  qˆ W| j ƒ  qS Wd  S(   NsJ   port %s busy => cherrytree multiple instances centralized control disabledi   s   connected withi   i   s   ct*=s
   bad data =t   okzt   pt   f(   t   sockett   AF_INETt   SOCK_STREAMt   bindt   HOSTt   PORTt   listent   Truet   acceptt   recvt   lent   sendt   filepath_fixR   t   acquireR   t   releaset   close(   R   t   sock_srvt   connt   addrt   datat   filepath(    (    s   modules/main.pyt   run%   s6     		  		 "	(   t   __name__t
   __module__t   __doc__R   R   (    (    (    s   modules/main.pyR       s   	t   CherryTreeHandlerc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sY   | |  _  | |  _ | |  _ g  |  _ t | ƒ } |  j | ƒ t j d |  j ƒ |  _	 d  S(   Niè  (
   R   R   t   lang_strt   running_windowsR   t   window_open_newt   gobjectt   timeout_addt   server_periodic_checkt   server_check_timer_id(   R   R   R   R   R#   (    (    s   modules/main.pyR   @   s    				c         C   s5   t  j |  j | |  ƒ } |  j j | ƒ d |  _ d S(   s   Open a new top level WindowiÿÿÿÿN(   t   coret
   CherryTreeR#   R$   t   appendt   curr_win_idx(   R   R   t   window(    (    s   modules/main.pyR%   I   s    c         C   s6   |  j  j |  j ƒ d |  _ |  j  s2 t j ƒ  n  d S(   s=   Before close the application (from the window top right X)...iÿÿÿÿN(   R$   t   popR-   t   gtkt	   main_quit(   R   t   widget(    (    s   modules/main.pyt   on_window_destroy_eventO   s    		 c         C   sƒ  |  j  j ƒ  |  j d rrd |  j d <x2 t |  j ƒ D]! \ } } d | j | j f GHq7 Wxt |  j ƒ D]t \ } } |  j d rl | j rl |  j d t j j	 | j | j ƒ k rl d |  j d GH| |  _
 | j j ƒ  Pql ql Wx‹ t |  j ƒ D]S \ } } | j sô d |  j d GH| |  _
 | j j ƒ  | j |  j d ƒ Pqô qô Wd |  j d GH|  j |  j d ƒ n  |  j  j ƒ  t S(   s(   Check Whether the server posted messagesR   i    s   already running '%s' - '%s'R   s   1 rise existing '%s's   2 rise existing '%s's
   3 run '%s'(   R   R   R   t	   enumerateR$   t   file_dirt	   file_namet   ost   patht   joinR-   R.   t   presentt   file_startup_loadR%   R   R   (   R   t   it   runn_win(    (    s   modules/main.pyR(   U   s0    	(			(   R   R    R   R%   R3   R(   (    (    (    s   modules/main.pyR"   ?   s   				c          C   sw  t  j d d !d k r2 d d l }  |  j d ƒ nß t j j t j j d ƒ d ƒ } t j j | ƒ su t j	 | ƒ n  t j j | d	 ƒ } t j j | ƒ s¬ t j	 | ƒ n  yV d d l
 } d d l } | j j | j j d
 ƒ ƒ } | j d t j d d d ƒ Wn d GHn Xy& d d l } | j t j t j ƒ Wn y3 d d l
 m } | j } | j t j t j ƒ Wn d GHn Xy7 d d l
 m } | j j ƒ  }	 t j |	 t j d <WqÉd GHqÉXn Xt j j t j ƒ r%t t j d ƒ }
 |
 j ƒ  } |
 j  ƒ  | d k r+| t j d <q+n d } y  t! j" t j t j ƒ j# ƒ  Wn% d d l$ } d „  } | | _% n X| S(   t   Initializationsi    i   t   winiÿÿÿÿNt   ignoret   ~s   .configt
   cherrytreet   libci   sL   libc.prctl not available, the process name will be python and not cherrytree(   t   cdllsT   ctypes.cdll.intl.bindtextdomain not available, the glade i18n will not work properly(   t   windllt   LANGUAGEsO   ctypes.windll.kernel32.GetUserDefaultUILanguage, the i18n may not work properlyt   rt   defaultc         S   s   |  S(   N(    (   t
   transl_str(    (    s   modules/main.pyt   _¥   s    (&   t   syst   platformt   warningst   filterwarningsR7   R8   R9   t
   expandusert   isdirt   mkdirt   ctypest   ctypes.utilRD   t   LoadLibraryt   utilt   find_libraryt   prctlt   const   APP_NAMEt   localet   bindtextdomaint   LOCALE_PATHt   intlRE   t   kernel32t   GetUserDefaultUILanguaget"   MICROSOFT_WINDOWS_LCID_to_ISO_LANGt   environt   isfilet	   LANG_PATHt   filet   readR   t   gettextt   translationt   installt   __builtin__RJ   (   RM   t   all_apps_config_dirt   cherrytree_config_dirRR   RC   RZ   RD   t   libintlRE   t   lcidt   lang_file_descriptorR#   Ri   RJ   (    (    s   modules/main.pyt   initializationsx   sZ    !   			
   	c         C   sP   |  s
 d St  j j |  ƒ s: t  j j t  j ƒ  |  ƒ }  n t  j j |  ƒ }  |  S(   s"   Fix a FilePath to an Absolute Patht    (   R7   R8   t   dirnameR9   t   getcwdt   abspath(   R   (    (    s   modules/main.pyR   «   s      c         C   s|  yk t  j  t  j t  j ƒ } | j t t f ƒ | j d |  ƒ | j d ƒ } | j ƒ  | d k rj ‚  n  Wn
t	 ƒ  } t
 j ƒ  t j ƒ  } i d d 6d d 6} t | | ƒ } | j ƒ  t |  | | | ƒ t j ƒ  t j d d !d	 k rOd
 d l } d } | j j j | t t j ƒ  ƒ }	 | j j j |	 d
 ƒ | j j j |	 ƒ qxd
 d l }
 t j t j ƒ  |
 j  ƒ n Xd S(   s   Everything Starts from Heres   ct*=%si   R   i    R   Rp   R   i   R?   iÿÿÿÿNi   (!   R	   R
   R   t   connectR   R   R   R   R   Ro   R&   t   threads_initt	   threadingt	   SemaphoreR    t   startR"   R0   t   mainRK   RL   RR   RE   R^   t   OpenProcesst   FalseR7   t   getpidt   TerminateProcesst   CloseHandlet   signalt   killt   SIGALRM(   t   OPEN_WITH_FILEt   sock_clnR   R#   R   R   t   server_threadRR   t   PROCESS_TERMINATEt   handleR   (    (    s   modules/main.pyRy   ³   s2    
 
	


!(    (   R0   R&   RK   R7   Rf   R	   Rv   RX   R*   R   R   t   ThreadR    R"   Ro   R   Ry   (    (    (    s   modules/main.pyt   <module>   s   <!9	3	