Refactored the height/width members of displays and actors from integers to methods that compute based on the type of display (e.g., a text object is differently sized in curses than on gtk or whatever)

This commit is contained in:
2013-12-15 10:30:30 -05:00
parent c56e0e963d
commit 2265107d6e
3 changed files with 38 additions and 13 deletions

View File

@@ -25,8 +25,6 @@ class Display(event.EventHandler, registry.Registerable):
def __init__(self, *args, **kwargs):
registry.Registerable.__init__(self, *args, **kwargs)
event.EventHandler.__init__(self, *args, **kwargs)
self.width = 0
self.height = 0
self.__lock_actors__ = threading.RLock()
self.__lock_timer__ = threading.RLock()
self.__lock_drawing__ = threading.RLock()
@@ -42,6 +40,12 @@ class Display(event.EventHandler, registry.Registerable):
# ---
def width(self, actorObj=None):
raise Exception("lol implement me")
def height(self, actorObj=None):
raise Exception("lol implement me")
def checkInput(self):
raise Exception("lol implement me")
@@ -75,9 +79,6 @@ class CursesDisplay(Display):
self.logger.info("CursesDisplay starting")
Display.__init__(self, *args, **kwargs)
self.__screen__ = curses.initscr()
maxyx = self.__screen__.getmaxyx()
self.width = maxyx[1]
self.height = maxyx[0]
self.__screen__.keypad(1)
try:
curses.curs_set(0)
@@ -94,6 +95,16 @@ class CursesDisplay(Display):
curses.endwin()
Display.cleanup(self)
def width(self, actorObj=None):
if actorObj:
return actor.width(self)
return self.__screen__.getmaxyx()[1]
def height(self, actorObj=None):
if actorObj:
return actorObj.height(self)
return self.__screen__.getmaxyx()[1]
def refresh(self):
Display.refresh(self)
self.__screen__.refresh()