Package Gnumed :: Package wxpython :: Module gmShadow |
[frames] | no frames]

# Source Code for Module Gnumed.wxpython.gmShadow

     1  """GNUmed widget shadowing.
     2
     3  A module to add shadowing to an arbitrary widget.
     4  """
     5  ##############################################################################
     6  # $Source: /home/ncq/Projekte/cvs2git/vcs-mirror/gnumed/gnumed/client/wxpython/gmShadow.py,v $
     7  __version__ = "$Revision: 1.13 $"
     8  __author__  = "H.Berger <Hilmar.Berger@gmx.de>, I. Haywood <i.haywood@ugrad.unimelb.edu.au>, R.Terry <rterry@gnumed.net>"
     9
    10  try:
    11          import wxversion
    12          import wx
    13  except ImportError:
    14          from wxPython import wx
    15
    16  from Gnumed.pycommon import gmGuiBroker
    17  #=========================================================
    18 -class Shadow (wx.Panel):
    19 -        def __init__(self, parent, id):
    20                  """Create a new shadow.
    21                  """
    22                  wx.Panel.__init__ (self, parent, id)
    23                  self.sh_width = gmGuiBroker.config['main.shadow.width']
    24                  wx.EVT_SIZE (self, self.OnSize)
    25                  wx.EVT_PAINT (self, self.OnPaint)
    26          #-----------------------------------------------------
    27 -        def SetContents (self, widget):
    28                  """Marry a widget and a shadow.
    29
    30                  Widget MUST have parent=Shadow widget, and pos=(0,0)
    31                  """
    32                  self.contents = widget
    33          #-----------------------------------------------------
    34 -        def OnSize (self, event):
    35                  w, h = self.GetClientSizeTuple ()
    36                  self.contents.SetClientSizeWH (w-self.sh_width, h-self.sh_width)
    37          #-----------------------------------------------------
    38 -        def OnPaint (self, event):
    39                  dc = wxPaintDC (self)
    40                  w, h = self.GetClientSizeTuple ()
    41                  dc.SetPen (wx.TRANSPARENT_PEN)
    42                  #dc.SetBrush (wxWHITE_BRUSH)
    43                  dc.SetBrush (wx.Brush (wx.Colour (240, 240, 240), wx.SOLID))
    44                  # draw white bars
    45                  dc.DrawRectangle (0, h-self.sh_width, w, self.sh_width)
    46                  dc.DrawRectangle (w-self.sh_width, 0, self.sh_width, h)
    47                  r, g, b = gmGuiBroker.config['main.shadow.colour']
    48                  dc.SetBrush (wx.Brush (wx.Colour (r, g, b), wx.SOLID))
    49                  # draw grey bars half as thick
    50                  dc.DrawRectangle (
    51                          self.sh_width/2,
    52                          h-self.sh_width,
    53                          w-self.sh_width,
    54                          self.sh_width/2
    55                  )
    56                  dc.DrawRectangle (
    57                          w-self.sh_width,
    58                          self.sh_width/2,
    59                          self.sh_width/2,
    60                          h-self.sh_width-self.sh_width/2
    61                  )
    62  #=======================================================================
    63