[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