diff clients/editor/scripts/gui/faketabwidget.py @ 255:51cc05d862f2

Merged editor_rewrite branch to trunk. This contains changes that may break compatibility against existing clients. For a list of changes that may affect your client, see: http://wiki.fifengine.de/Changes_to_pychan_and_FIFE_in_editor_rewrite_branch
author cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
date Mon, 08 Jun 2009 16:00:02 +0000
parents
children 6add14ebe9f5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clients/editor/scripts/gui/faketabwidget.py	Mon Jun 08 16:00:02 2009 +0000
@@ -0,0 +1,77 @@
+from pychan import widgets
+from pychan.tools import callbackWithArguments as cbwa
+from resizablebase import ResizableBase
+
+import scripts
+
+class FakeTabWidget(widgets.VBox, ResizableBase):
+	def __init__(self, resizable=None, *args, **kwargs):
+		if resizable == None:
+			resizable = False
+
+		widgets.VBox.__init__(self, *args, **kwargs)
+		ResizableBase.__init__(self, resizable, *args, **kwargs)
+		
+		self.tabs = []
+		
+		self.buttonbox = widgets.HBox()
+		self.widgetarea = widgets.VBox()
+		self.buttonbox.hexpand = 1
+		self.buttonbox.vexpand = 0
+		self.widgetarea.hexpand = 1
+		self.widgetarea.vexpand = 1
+		
+		self.addChild(self.buttonbox)
+		self.addChild(self.widgetarea)
+	
+		self.resizable_top = False
+		self.resizable_left = False
+		self.resizable_right = False
+		self.resizable_bottom = False
+		
+	def __del__(self):
+		# Force deletion of C++ object
+		if self.real_widget:
+			self.real_widget.__del__()
+			self.real_widget = None
+		
+	def addTab(self, widget, title):
+		for tab in self.tabs:
+			if tab[1] == widget:
+				return
+	
+		widget.max_size = (5000, 5000)
+		widget.hexpand = 1
+		widget.vexpand = 1
+	
+		button = widgets.ToggleButton(text=title, group="faketab_"+str(id(self)))
+		self.buttonbox.addChild(button)
+		
+		tab = (title, widget, button)
+		self.tabs.append( tab )
+
+		button.capture(cbwa(self.showTab, tab))
+		self.showTab(tab)
+		
+		return tab
+		
+	def removeTab(self, widget):
+		for i, tab in enumerate(self.tabs):
+			if tab[1] == widget:
+				if widget.parent == self.widgetarea:
+					self.widgetarea.removeChild(widget)
+				self.buttonbox.removeChild(tab[2])
+				del self.tabs[i]
+				break
+		else: return
+			
+		if len(self.tabs) > 0:
+			self.showTab(self.tabs[0])
+		
+	def showTab(self, tab):
+		tab[2].toggled = True
+		self.widgetarea.removeAllChildren()
+		self.widgetarea.addChild(tab[1])
+		self.widgetarea.adaptLayout()
+		
+	
\ No newline at end of file