ó
ÉÝ{Tc           @   s”   d  Z  d d l m Z m Z d d l Z d d l Td e j f d „  ƒ  YZ d e j f d „  ƒ  YZ	 d	 e	 f d
 „  ƒ  YZ
 d e	 f d „  ƒ  YZ d S(   s}  
     qtgui/MGSimpleDialog.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009-2011 University of York

     This library is free software: you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public License
     version 3, modified in accordance with the provisions of the 
     license to address the requirements of UK law.
 
     You should have received a copy of the modified GNU Lesser General 
     Public License along with this library.  If not, copies may be 
     downloaded from http://www.ccp4.ac.uk/ccp4license.php
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU Lesser General Public License for more details.
iÿÿÿÿ(   t   QtCoret   QtGuiN(   t   *t   MGAbstractGUIc           B   s/   e  Z d  Z d d „ Z d „  Z d d „ Z RS(   sX   
    Class for generating GUIs somewhat more complex than 
    a single dialog box.
    i    c         C   sO   |  j  d |  j d <|  j  |  j d <t ƒ  j |  j  |  j |  j | ƒ |  _ d  S(   Ns   ..t   textt   tip(   t   titlet	   menu_defnt
   MAINWINDOWt   addMenuDefinitiont   menut   window_item(   t   selft   force(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   CreateMenuEntry   s    c         C   s   d  S(   N(    (   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   handleTrigger"   s    c         C   sk   d |  _  d |  _ t d d d d d d d d d	 |  j d
 d d d ƒ |  _ t j j |  | ƒ d  |  _	 d  S(   Nt   Toolss   Simple ActionR   t   shortcutt    R   t   signals   triggered()t   slott	   checkablei   t
   initialise(
   R
   R   t   dictR   R   R    t   QObjectt   __init__t   NoneR   (   R   t   parent(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   %   s    			N(   t   __name__t
   __module__t   __doc__R   R   R   R   (    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR      s   	t   MGSimpleDialogc           B   sV   e  Z d  d „ Z d „  Z d „  Z d „  Z d	 d d	 d „ Z i  d „ Z d „  Z	 RS(
   i    c         C   sÙ   t  ƒ  } | s d  St  ƒ  j ƒ  j t j |  j ƒ } |  j rV | rV | j |  j ƒ n  |  j ƒ  d |  j	 d <|  j ƒ  |  j	 d <t  ƒ  j
 |  j ƒ  |  j	 |  j | d |  j ƒ|  _ |  j |  j t j d ƒ |  j ƒ d  S(   Ns   ..R   R   t   submenus   triggered()(   R   t   menuBart	   findChildR   t   QMenuR
   R   t   removeActiont   windowTitleR   R	   R    t   connectR    t   SIGNALt   raise_(   R   R   t   mainwint   win_menu(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   7   s    	 !3c         C   s”   t  ƒ  r| t  ƒ  j ƒ  j t j d ƒ } | r| t  ƒ  j |  j ƒ  |  j d ƒ } | ry |  j | t	 j
 d ƒ |  j ƒ qy q| n  |  j ƒ  |  j ƒ  d  S(   Nt   Windowss   triggered()(   R   R!   R"   R   R#   R	   R%   R   R&   R    R'   R(   t   show(   R   R*   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   UnCloseC   s    	! (
c         C   sp   t  ƒ  rb t  ƒ  j ƒ  j t j d ƒ } | rb t  ƒ  j |  j ƒ  |  j d ƒ | j |  j	 ƒ qb n  |  j
 ƒ  d  S(   NR+   (   R   R!   R"   R   R#   t   removeMenuDefinitionR%   R   R$   R   t   hide(   R   R*   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   CloseL   s    	c         C   s   t  j d d ƒ S(   Ni2   (   R    t   QSize(   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   minimumSizeHintT   s    R   c         C   sò   | |  _  | |  _ t d d d d d d d d d |  j d	 d
 d d ƒ |  _ t j j |  | ƒ |  j t	 j
 j ƒ |  j d
 ƒ |  j d
 ƒ d  |  _ |  j |  t	 j d ƒ |  j ƒ |  j t	 j
 j ƒ |  j t j j ƒ  t	 j d ƒ |  j ƒ d  S(   NR   s   Simple DialogR   R   R   R   s   triggered()R   R   i    R   s   finished(int)s   aboutToQuit()(   R
   R    R   R-   R   R   t   QDialogR   t   setWindowFlagsR    t   Qtt   Dialogt   setModalt   setSizeGripEnabledR   R   R&   R'   R0   t   Windowt   QApplicationt   instancet   close(   R   R   R
   R    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   Z   s$    				c         C   sä  d d  l  } | j ƒ  } xÅ| D]½} |  j t j | ƒ } d } | rÒt | t j ƒ r— t | j | j	 ƒ  ƒ j
 ƒ  ƒ } | sÏt | j ƒ  ƒ } qÏqÒt | t j ƒ r¾ t | j ƒ  ƒ } qÒt | t j ƒ rå t | j ƒ  ƒ } qÒt | t j ƒ rt | j ƒ  ƒ } qÒt | | j ƒ r3t | j ƒ  ƒ } qÒt | | j ƒ rZt | j ƒ  ƒ } qÒt | | j ƒ r�t | j ƒ  ƒ } qÒt | t j ƒ r¨t | j ƒ  ƒ } qÒt | t j ƒ rÒt | j ƒ  ƒ } qÒn  | | | <q W| S(   NiÿÿÿÿR   (   t	   mgWidgetst   keysR"   R   t   QWidgett
   isinstancet	   QComboBoxt   strt   itemDatat   currentIndext   toStringt   currentTextt   QLabelR   t	   QLineEditt   QAbstractButtont   intt	   isCheckedt   mgSelectionCombot   mgColourCombot
   get_colourt   mgAtomPickert	   selectiont   QDoubleSpinBoxt   floatt   valuet   QSpinBox(   R   t   paramsR=   t   keyListt   keyt   widgetRS   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt	   getParamsq   s8    ! c         C   s
  d d  l  } | j ƒ  } xë| D]ã} |  j t j | ƒ } | r t | t j ƒ r¸ | j t j	 | | ƒ ƒ } | d k  r™ | j
 t j | | ƒ ƒ } n  | d k rÿ| j | ƒ qÿqt | t j ƒ rä | j t | | ƒ ƒ qt | t j ƒ r| j t | | ƒ ƒ qt | t j ƒ r6| j | | ƒ qt | | j ƒ r\| j | | ƒ qt | | j ƒ r‚| j | | ƒ qt | | j ƒ r§| j d t ƒ qt | t j ƒ rÓ| j t | | ƒ ƒ qt | t j ƒ r| j t | | ƒ ƒ qq q Wd  S(   Niÿÿÿÿi    t   atomName(   R=   R>   R"   R   R?   R@   RA   t   findTextR    t   QStringt   findDatat   QVariantt   setCurrentIndexRH   t   setTextRB   RG   RI   t
   setCheckedRL   RM   t
   set_colourRO   t   setSelectionRS   RQ   t   setValueRR   RT   RJ   (   R   RU   R=   RV   RW   RX   t   ic(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt	   setParams“   s6     N(
   R   R   R   R-   R0   R2   R   R   RY   Rf   (    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   5   s   				"t   MultiDialogc           B   s2   e  Z d  Z d „  Z d d „ Z d d d „ Z RS(   sS   
    For dialogs we expect to have possible multiple copies of simultaneously.
    c         C   sÂ  t  ƒ  j ƒ  j t j |  j ƒ } d } d } x	| j ƒ  D]û } | j ƒ  t | ƒ  | k r: d } t	 |  d ƒ r5|  j
 | k	 r5t | j ƒ  ƒ j d ƒ d k r2t | j ƒ  ƒ j d ƒ d k r2y` t | j ƒ  t | j ƒ  ƒ j d ƒ d t | j ƒ  ƒ j d ƒ !ƒ } | | k r!| } n  Wq/q/Xq2q5q: q: W| rw| d k rX| d } qw| d t | d ƒ d } n  t	 |  d ƒ r«t	 |  j
 d	 ƒ r«|  j
 j | ƒ n  t j j |  | ƒ d  S(
   Ni    i   R   t   (iÿÿÿÿt   )s    (2)s    (R`   (   R   R!   R"   R   R#   R
   t   actionsR   t   lent   hasattrR   RB   t   rfindRJ   R`   R3   t   setWindowTitle(   R   R   R*   t   max_dup_idxt	   duplicatet   actiont   idx(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyRn   ¼   s*    !BG!i    c         C   sz   |  j  ƒ  d |  j d <|  j  ƒ  |  j d <t ƒ  j |  j  ƒ  |  j |  j | ƒ |  _ |  j |  j t j d ƒ |  j	 ƒ d  S(   Ns   ..R   R   s   triggered()(
   R%   R   R   R	   R
   R   R&   R    R'   R(   (   R   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   Ô   s    *R   c         C   s'   t  j |  | d | ƒ|  j d ƒ d  S(   NR
   i    (   R   R   R8   (   R   R   R
   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   Ü   s    N(   R   R   R   Rn   R   R   R   (    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyRg   ·   s   	t   MGSimpleDockDialogc           B   s_   e  Z d  „  Z d „  Z d „  Z d d d e j j e	 e	 d „ Z
 d „  Z d „  Z d „  Z RS(	   c         C   s   d  S(   N(    (   R   t   e(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   keyPressEventá   s    c         C   sŠ   t  ƒ  } | j t j ƒ } xh | D]` } | |  j k	 r" | j | ƒ | k r" |  j j t ƒ | j | |  j ƒ |  j j t	 ƒ q" q" Wd  S(   N(
   R   t   findChildrenR   t   QDockWidgett
   dockWidgett   dockWidgetAreat   blockSignalst   Truet   tabifyDockWidgett   False(   R   t   areaR)   t   otherst   other(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   tabifyä   s    	$c         C   s$   t  j |  | ƒ |  j j | ƒ d  S(   N(   R   Rn   Rx   (   R   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyRn   í   s    R   c         C   sü   t  j |  | | | ƒ t j | ƒ |  _ |  j j |  ƒ | t j j k rc t	 ƒ  j
 | |  j ƒ n  |  j j ƒ  | r† |  j | ƒ n  |  j |  j j ƒ  t j d ƒ |  j j ƒ |  j |  j t j d ƒ |  j ƒ | t j j k rø |  j j t ƒ n  d  S(   Ns   triggered(bool)s   visibilityChanged(bool)(   R   R   R   Rw   Rx   t	   setWidgetR    R5   t   NoDockWidgetAreaR   t   addDockWidgetR/   R�   R&   t   toggleViewActionR'   R(   t
   visChangedt   setFloatingR{   (   R   R   R
   R    t   defaultDockAreaR�   t   dockable(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR   ò   s    +"c         C   sÁ   | s½ t  |  j j ƒ  d ƒ ra t  |  j j ƒ  j d ƒ ra |  j j ƒ  j j ƒ  t ƒ  k ra d  Sn  t ƒ  j j j ƒ  r½ t ƒ  j |  j ƒ t ƒ  j t ƒ  j j ƒ k r½ t ƒ  j j	 ƒ  q½ n  d  S(   Nt
   scrollareaRX   (
   Rl   Rx   RX   RŠ   t   DISPLAYTABLER   t   wMGDisplayTablet
   isFloatingRy   t   UnCloseNoUpdate(   R   t   truth(    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR†     s    3!Fc         C   sH   t  |  d ƒ r: |  j j ƒ  |  j j ƒ  t j j ƒ  d  S|  j ƒ  d  S(   NRx   (   Rl   Rx   R,   R(   t   syst   stdoutt   flush(   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR-     s    c         C   s   |  j  j ƒ  d  S(   N(   Rx   R/   (   R   (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyR0     s    N(   R   R   Ru   R�   Rn   R   R    R5   t   BottomDockWidgetAreaR{   R   R†   R-   R0   (    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyRs   à   s   				!			(   R   t   PyQt4R    R   R�   t   global_definitionsR   R   R3   R   Rg   Rs   (    (    (    sA   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/MGSimpleDialog.pyt   <module>   s   
‚)