Package Gnumed :: Package pycommon :: Module gmGuiBroker |
[frames] | no frames]

# Source Code for Module Gnumed.pycommon.gmGuiBroker

      1  """GNUMed GUI element brokerage
      2
      3  This module provides wrappers for the equivalent of global
      4  variables needed for a gnumed GUI client interface
      5
      6  @author: Dr. Horst Herb
      7  @version: 0.2
      8  @copyright: GPL v2 or later
      9  """
     10  #-----------------------------------------------------------
     11  # $Source: /home/ncq/Projekte/cvs2git/vcs-mirror/gnumed/gnumed/client/pycommon/gmGuiBroker.py,v $
     12  # $Id: gmGuiBroker.py,v 1.4 2004-06-20 15:44:28 ncq Exp $
     13  __version__ = "$Revision: 1.4 $"
     14  __author__ = "H.Herb <hherb@gnumed.net>, H.Berger <Hilmar.Berger@gmx.de>"
     15  #===========================================================
     16  if __name__ == '__main__':
     17          _ = lambda x:x
     18
     19  # FIXME !!! hack moved here from gmConf. This definitely must be replaced by some
     20  # structure getting data from the backend
     21  # FIXME: hardcoded color/width !?! move to DB (?)
     22  config = {'main.use_notebook':1, 'main.shadow.colour':(131, 129, 131), 'main.shadow.width':10}
     23
     24  #===========================================================
     25 -class GuiBroker:
     26          "Wrapper for global objects needed by GNUMmed GUI clients"
     27
     28          #This class wraps all global gui objects (variables)for a gnumed
     29          #application. The static (at application level)dictionary
     30          #__objects can be accessed through the method addobject
     31          #and getobject.
     32          #So, if you need to access the main window frame, you would
     33          #query an instance of GuiBroker for it.
     34
     35          __objects = {}
     36          __keycounter=0
     37
     38
     39 -        def __init__(self):
     40                  pass
     41
     42
     43 -        def addobject(self, widget, key=None):
     44                  "Add an object to the gnumed gui object dictionary"
     45
     46                  #An object can be anything (class, variable, widget)
     47                  #The "key" is a key expression (number, text) that
     48                  #allows you to retrieve the object.
     49                  #Convention for keys is the widget or variable name
     50                  #as a text string
     51                  #If key is not passed as parameter, a unique serial
     52                  #number is allocated as key and returned
     53
     54                  if not key:
     55                  # create a new sequential key that doesn't exist yet
     56                          key = GuiBroker.__keycounter + 1
     57                          while GuiBroker.__objects.has_key(key):
     58                                  key +=1
     59                  GuiBroker.__keycounter = key
     60                  GuiBroker.__objects[key]=widget
     61                  return key
     62
     63
     64
     65 -        def getobject(self, key):
     66                  "allows to retrieve a gnumed gui element; see addobject() regarding the key parameter"
     67                  return GuiBroker.__objects[key]
     68
     69 -        def has_key( self, key):
     70                  return GuiBroker.__objects.has_key(key)
     71
     72
     73
     74 -        def keylist(self):
     75                  " returns a list of all keys; see documentation for the dictionary data type"
     76                  return GuiBroker.__objects.keys()
     77
     78
     79
     80 -        def valuelist(self):
     81                  "returns a list of all values; see documentation for the dictionary data type"
     82                  return GuiBroker.__objects.values()
     83
     84
     85
     86 -        def itemlist(self):
     87                  "returns a list of all key:value pairs; see documentation for the dictionary data type"
     88                  return GuiBroker.__objects.items()
     89
     90
     91
     92 -        def __getitem__(self, key):
     93                  "Allows retrieving the value via value = instance[key]"
     94                  return self.getobject(key)
     95
     96
     97
     98 -        def __setitem__(self, key, object):
     99                  "Allows access in the style of instance[key]=value"
    100                  return self.addobject(object, key)
    101
    102  #===========================================================
    103  # you can test this module by invoking it as main program
    104  if __name__ == "__main__":
    105      print '>>> gmGuiBroker.GuiBroker test'
    106      test = GuiBroker()
    107
    108      print '>>> test.addobject("something", 3)'
    109      var = test.addobject("something", 3)
    110      print var, "\n"
    111
    112      print '>>> test.addobject("something else without a specified key")'
    113      var = test.addobject("something else without a specified key")
    114      print var, "\n"
    115
    116      print '>>> test.addobject(test)'
    117      testreference = test.addobject(test)
    118      print testreference, "\n"
    119
    120      print '>>> test.addobject(100, "hundred)'
    121      var = test.addobject(100, "hundred")
    122      print var, "\n"
    123
    124      print ">>> test.keylist()"
    125      var = test.keylist()
    126      print var, "\n"
    127
    128      print ">>> test.valuelist()"
    129      var = test.valuelist()
    130      print var, "\n"
    131
    132      print ">>> test.itemlist()"
    133      var = test.itemlist()
    134      print var, "\n"
    135
    136      print ">>> test[3]"
    137      var = test[3]
    138      print var, "\n"
    139
    140      print ">>> test[testreference].getobject('hundred')"
    141      var = test[testreference].getobject('hundred')
    142      print var, "\n"
    143
    144      print ">>> var = test[testreference]"
    145      var = test[testreference]
    146      print var, "\n"
    147
    148      print ">>> var = var['hundred']"
    149      var = var['hundred']
    150      print var, "\n"
    151
    152      print '>>> try: test.addobject["duplicate key", 3]'
    153      print '>>> except KeyError: print "Duplicate keys not allowed!"'
    154      try: test["duplicate key", 3]
    155      except KeyError: print "Duplicate keys not allowed!"
    156
    157      print ">>> test['key']='value'"
    158      test['key']='value'
    159      print test['key']
    160
    161  #===========================================================
    162  # $Log: gmGuiBroker.py,v $
    163  # Revision 1.4  2004-06-20 15:44:28  ncq
    164  # - we need to be more careful in pleasing epydoc
    165  #
    166  # Revision 1.3  2004/06/20 06:49:21  ihaywood
    167  # changes required due to Epydoc's OCD
    168  #
    169  # Revision 1.2  2004/03/10 00:14:04  ncq
    170  # - fix imports
    171  #
    172  # Revision 1.1  2004/02/25 09:30:13  ncq
    173  # - moved here from python-common
    174  #
    175  # Revision 1.8  2003/11/17 10:56:36  sjtan
    176  #
    177  # synced and commiting.
    178  #
    179  # Revision 1.1  2003/10/23 06:02:39  sjtan
    180  #
    181  # manual edit areas modelled after r.terry's specs.
    182  #
    183  # Revision 1.7  2003/02/09 11:48:59  ncq
    184  # - just some silly cvs keyword
    185  #
    186  # Revision 1.6  2003/02/09 09:41:57  sjtan
    187  #
    188  # clean up new code, make it less intrusive.
    189  #
    190  # Revision 1.5  2003/01/16 14:45:03  ncq
    191  # - debianized
    192  #
    193  # Revision 1.4  2003/01/12 00:20:04  ncq
    194  # - fixed __author__
    195  #
    196  # Revision 1.3  2003/01/12 00:17:44  ncq
    197  # - fixed typo, added CVS keywords
    198  #
    199