#include "acidlaunch.h"
#include <stdio.h>

ButtonBar::ButtonBar(LauncherTabNode* tab, bool vert, 
	int xsize, int ysize, int width, int bgcolor)
{
	AppButton* but;
	unsigned int appwidth, appheight, x, y;
	list<ConfigNode*>::const_iterator iter;
	
	/* create the horizontal or vertical bar to place all the buttons in */
	/* create the tooltips object that's used to reference all the tooltips
	   for the bar */
	tooltips = gtk_tooltips_new();

	for(iter=tab->children().begin(); iter!=tab->children().end(); iter++)
	{
		AppIconNode* app = (AppIconNode*)(*iter);
		but = new AppButton(app, xsize, ysize, bgcolor, tooltips);

		appicons.push_back(but);
	}

	/* calculate width and height (in app icons) of the tab */
	if(vert)
	{
		appwidth = width;
		appheight = (appicons.size() / width) + ((appicons.size() % width) ? 1 : 0);
	} else {
		appheight = width;
		appwidth = (appicons.size() / width) + ((appicons.size() % width) ? 1 : 0);
	}

	/* create table widget */
	box = gtk_table_new(appheight, appwidth, TRUE);

	/* loop through the widgets and put them all in the table */
	for(y=0; y < appheight; y++)
	{
		for(x=0; x < appwidth; x++)
		{
			unsigned int appnum = (y * appwidth) + x;
			
			if(appnum < appicons.size())
			{
				gtk_table_attach_defaults(GTK_TABLE(box), appicons[appnum]->widget(),
					x, x+1, y, y+1);
			}
		}
	}
	gtk_widget_show(box);
}

ButtonBar::~ButtonBar()
{
	for(int i=0; i<appicons.size(); i++)
	{
		delete appicons[i];
	}
	gtk_object_destroy(GTK_OBJECT(tooltips));
	gtk_widget_destroy(box);
}


syntax highlighted by Code2HTML, v. 0.9.1