CraftLaunch APIリファレンス

clnch_statusbar.py

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 )

Copyright © 2009 craftware. All rights reserved.