00001 import cterm
00002 from cterm.cterm_const import *
00003
00004 import clnch_misc
00005 import clnch_colortable
00006 from clnch_resource import *
00007
00008
00009
00010 class StatusBarLayer:
00011
00012 def __init__( self, priority ):
00013 self.priority = priority
00014
00015 def paint( self, window, x, y, width, height ):
00016 attr = cterm.Attribute( fg=clnch_colortable.bar_fg )
00017 window.putString( x, y, width, height, attr, u" " * width )
00018
00019
00020 class SimpleStatusBarLayer(StatusBarLayer):
00021
00022 def __init__( self, priority=-1, message=u"" ):
00023 StatusBarLayer.__init__( self, priority )
00024 self.message = message
00025 self.error = False
00026
00027 def setMessage( self, message, error=False ):
00028 self.message = message
00029 self.error = error
00030
00031 def paint( self, window, x, y, width, height ):
00032 s = u" %s" % ( self.message )
00033 s = clnch_misc.adjustStringWidth( window, s, width-1 )
00034 if self.error:
00035 attr = cterm.Attribute(fg=clnch_colortable.bar_error_fg)
00036 else:
00037 attr = cterm.Attribute( fg=clnch_colortable.bar_fg )
00038 window.putString( x, y, width, height, attr, s )
00039
00040
00041 class StatusBar:
00042
00043 def __init__(self):
00044 self.layer_list = []
00045
00046 def registerLayer( self, layer ):
00047 self.layer_list.append(layer)
00048 def cmp_priority( left, right ):
00049 return cmp( left.priority, right.priority )
00050 self.layer_list.sort(cmp_priority)
00051
00052 def unregisterLayer( self, layer ):
00053 self.layer_list.remove(layer)
00054
00055 def isActiveLayer( self, layer ):
00056 if len(self.layer_list)>0:
00057 active_layer = self.layer_list[0]
00058 else:
00059 active_layer = None
00060 return ( layer == active_layer )
00061
00062 def paint( self, window, x, y, width, height ):
00063 if len(self.layer_list)>0:
00064 self.layer_list[0].paint( window, x, y, width, height )
00065 else:
00066 attr = cterm.Attribute( fg=clnch_colortable.bar_fg )
00067 window.putString( x, y, width, height, attr, u" " * width )