Mercurial > parpg-source
view gui/tabwidget.py @ 183:7b6aba7839ea
getGameEnvironment of GameState now returns a locals dictionary that is empty at the beginning of the game and will be saved in save games. The vals and funcs are now both in the globals dictionary.
This WILL break old saves.
author | Beliar <KarstenBock@gmx.net> |
---|---|
date | Thu, 15 Mar 2012 16:24:05 +0100 |
parents | 5b880b8cff6d |
children |
line wrap: on
line source
from fife.extensions.pychan.widgets import VBox, HBox, ScrollArea, Button from fife.extensions.pychan.tools import callbackWithArguments class TabWidget(VBox): def min_size(): def fget(self): return self._min_size def fset(self, min_size): self._min_size = min_size self.view.min_size = min_size #HACK: This fixes a problem when the size is set before the Widget #is created proper if hasattr(self, '__parent'): self.adaptLayout() return locals() min_size = property(**min_size()) def max_size(): def fget(self): return self._max_size def fset(self, max_size): self._max_size = max_size self.view.max_size = max_size #HACK: This fixes a problem when the size is set before the Widget #is created proper if hasattr(self, '__parent'): self.adaptLayout() return locals() max_size = property(**max_size()) def opaque(): def fget(self): return self._getOpaque() def fset(self, opaque): self._setOpaque(opaque) self.view.opaque = opaque base_color = self.view.base_color base_red = base_color.r base_green = base_color.g base_blue = base_color.b background_color = self.view.background_color background_red = background_color.r background_green = background_color.g background_blue = background_color.b alpha = 255 if opaque else 0 self.view.base_color = (base_red, base_green, base_blue, alpha) self.view.background_color = (background_red, background_green, background_blue, alpha) return locals() opaque = property(**opaque()) def border_size(): def fget(self): frame = self.findChild(name='frame') return frame.border_size def fset(self, border_size): frame = self.findChild(name='frame') frame.border_size = border_size return locals() border_color = property(**border_size()) def __init__(self, min_size=(0, 0), max_size=(9999, 9999), border_size=1, **kwargs): self._min_size = min_size self._max_size = max_size self.views = {} tab_bar = HBox(name='tabBar') tab_bar.min_size = (0, 20) tab_bar.max_size = (9999, 20) self.view = ScrollArea(name='view') self.view.min_size = self._min_size self.view.max_size = self._max_size self.view.border_size = border_size frame = VBox(name='frame') frame.border_size = border_size frame.opaque = 0 frame.addChild(self.view) VBox.__init__(self, **kwargs) self.padding = 0 VBox.addChild(self, tab_bar) VBox.addChild(self, frame) self.adaptLayout() def addTab(self, text): text = unicode(text) tab = Button(text=text) tab_bar = self.findChild(name='tabBar') tab_bar.addChild(tab) tab.capture(callbackWithArguments(self.showView, text)) self.adaptLayout() def addChild(self, child): name = child.name or unicode(str(child)) self.addTab(name) self.views[name] = child if len(self.views) == 1: # Show the first view by default. self.showView(name) def showView(self, name): view = self.views[name] self.view.content = view self.adaptLayout()