Your IP : 216.73.216.213
�
e f� � @ s5 d Z d d l Z d d l Z Gd d � d � Z d S)a� Switchboard class.
This class is used to coordinate updates among all Viewers. Every Viewer must
conform to the following interface:
- it must include a method called update_yourself() which takes three
arguments; the red, green, and blue values of the selected color.
- When a Viewer selects a color and wishes to update all other Views, it
should call update_views() on the Switchboard object. Note that the
Viewer typically does *not* update itself before calling update_views(),
since this would cause it to get updated twice.
Optionally, Viewers can also implement:
- save_options() which takes an optiondb (a dictionary). Store into this
dictionary any values the Viewer wants to save in the persistent
~/.pynche file. This dictionary is saved using marshal. The namespace
for the keys is ad-hoc; make sure you don't clobber some other Viewer's
keys!
- withdraw() which takes no arguments. This is called when Pynche is
unmapped. All Viewers should implement this.
- colordb_changed() which takes a single argument, an instance of
ColorDB. This is called whenever the color name database is changed and
gives a chance for the Viewers to do something on those events. See
ListViewer for details.
External Viewers are found dynamically. Viewer modules should have names such
as FooViewer.py. If such a named module has a module global variable called
ADDTOVIEW and this variable is true, the Viewer will be added dynamically to
the `View' menu. ADDTOVIEW contains a string which is used as the menu item
to display the Viewer (one kludge: if the string contains a `%', this is used
to indicate that the next character will get an underline in the menu,
otherwise the first character is underlined).
FooViewer.py should contain a class called FooViewer, and its constructor
should take two arguments, an instance of Switchboard, and optionally a Tk
master window.
� Nc @ s� e Z d Z d d � Z d d � Z d d � Z d d � Z d d
� Z d d � Z d
d � Z d d � Z
d d � Z d d � Z d d d � Z
d d � Z d S)�Switchboardc C s� | | _ d | _ i | _ g | _ d | _ d | _ d | _ d | _ d } | r� z{ yY t | d � } t j
| � | _ t | j t � s� t
d | d t j �i | _ n Wn t t t f k
r� Yn XWd | r� | j � n Xn d S)Nr �rbz"Problem reading options from file:�file)�_Switchboard__initfile�_Switchboard__colordb�_Switchboard__optiondb�_Switchboard__views�_Switchboard__red�_Switchboard__green�_Switchboard__blue�_Switchboard__canceled�open�marshal�load�
isinstance�dict�print�sys�stderr�IOError�EOFError�
ValueError�close)�selfZinitfile�fp� r �=/opt/alt/python34/lib64/python3.4/Tools/pynche/Switchboard.py�__init__2 s,
zSwitchboard.__init__c C s | j j | � d S)N)r �append)r Zviewr r r �add_viewL s zSwitchboard.add_viewc C sF | | _ | | _ | | _ x$ | j D] } | j | | | � q% Wd S)N)r r
r r Zupdate_yourself)r ZredZgreenZblue�vr r r �update_viewsO s
zSwitchboard.update_viewsc C s | j | j | j | j � d S)N)r! r r
r )r r r r �update_views_currentV s z Switchboard.update_views_currentc C s | j | j | j f S)N)r r
r )r r r r �current_rgbY s zSwitchboard.current_rgbc C s | j S)N)r )r r r r �colordb\ s zSwitchboard.colordbc C sJ | | _ x0 | j D]% } t | d � r | j | � q q W| j � d S)N�colordb_changed)r r �hasattrr% r"