[Scummvm-cvs-logs] CVS: scummvm/gui TabWidget.cpp,1.2,1.3

Max Horn fingolfin at users.sourceforge.net
Sun Nov 2 16:19:04 CET 2003


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv2496

Modified Files:
	TabWidget.cpp 
Log Message:
automatically compute tab width

Index: TabWidget.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/TabWidget.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- TabWidget.cpp	2 Nov 2003 22:31:19 -0000	1.2
+++ TabWidget.cpp	3 Nov 2003 00:18:33 -0000	1.3
@@ -28,7 +28,8 @@
 	kTabHeight = 14,
 	
 	kTabLeftOffset = 4,
-	kTabSpacing = 2
+	kTabSpacing = 2,
+	kTabPadding = 3
 };
 
 TabWidget::TabWidget(GuiObject *boss, int x, int y, int w, int h)
@@ -38,15 +39,7 @@
 	_type = kTabWidget;
 	_activeTab = -1;
 	
-	_tabWidth = 50;
-	
-	// TODO: Dummy for now
-	addTab("Tab 1");
-	new ButtonWidget(this, 10, 20, kButtonWidth, 16, "Foo", 0, 0);
-	addTab("Tab 2");
-	new ButtonWidget(this, 20, 30, kButtonWidth, 16, "Bar", 0, 0);
-	addTab("Tab 3");
-	new PushButtonWidget(this, 30, 10, kButtonWidth, 16, "Qux", 0, 0);
+	_tabWidth = 40;
 }
 
 int16 TabWidget::getChildY() const {
@@ -54,18 +47,25 @@
 }
 
 int TabWidget::addTab(const String &title) {
-	// TODO
+	// Add a new tab page
 	Tab newTab = { title, NULL };
 	_tabs.push_back(newTab);
-	setActiveTab(_tabs.size() - 1);
-	return _activeTab;
-}
+	
+	int numTabs = _tabs.size();
 
-/*
-void TabWidget::removeTab(int tabID) {
-	// TODO
+	// Determine the new tab width
+	int newWidth = g_gui.getStringWidth(title) + 2 * kTabPadding;
+	if (_tabWidth < newWidth)
+		_tabWidth = newWidth;
+	int maxWidth = (_w - kTabLeftOffset) / numTabs - kTabLeftOffset;
+	if (_tabWidth > maxWidth)
+		_tabWidth = maxWidth;
+	
+	// Activate the new tab
+	setActiveTab(numTabs - 1);
+	
+	return _activeTab;
 }
-*/
 
 void TabWidget::setActiveTab(int tabID) {
 	assert(0 <= tabID && tabID < _tabs.size());
@@ -106,8 +106,6 @@
 }
 
 void TabWidget::drawWidget(bool hilite) {
-	// TODO
-
 	NewGui *gui = &g_gui;
 	
 	// Draw horizontal line
@@ -118,7 +116,7 @@
 	for (i = 0; i < _tabs.size(); ++i) {
 		NewGuiColor color = (i == _activeTab) ? gui->_color : gui->_shadowcolor;
 		gui->box(x, _y, _tabWidth, kTabHeight, color, color);
-		gui->drawString(_tabs[i].title, x, _y + 4, _tabWidth, gui->_textcolor, kTextAlignCenter);
+		gui->drawString(_tabs[i].title, x + kTabPadding, _y + 4, _tabWidth - 2 * kTabPadding, gui->_textcolor, kTextAlignCenter);
 		x += _tabWidth + kTabSpacing;
 	}
 





More information about the Scummvm-git-logs mailing list