#include "ExtensionsView.h"
#include <Catalog.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <Locale.h>
#include <Message.h>
#include <SpaceLayoutItem.h>
#include <String.h>
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "Extensions"
ExtensionsView::ExtensionsView()
:
BGroupView(B_TRANSLATE("Extensions"), B_VERTICAL),
fExtensionsList(new BColumnListView("ExtensionsList", 0))
{
float availableColWidth = this->StringWidth("M") * 28;
fAvailableColumn = new BStringColumn(B_TRANSLATE("Available extensions"),
availableColWidth, availableColWidth, availableColWidth,
B_TRUNCATE_MIDDLE);
fExtensionsList->AddColumn(fAvailableColumn, 0);
fExtensionsList->SetSortingEnabled(true);
fExtensionsList->SetSortColumn(fAvailableColumn, true, true);
_AddExtensionsList(fExtensionsList, (char*)glGetString(GL_EXTENSIONS));
_AddExtensionsList(fExtensionsList, (char*)gluGetString(GLU_EXTENSIONS));
AddChild(fExtensionsList);
GroupLayout()->SetInsets(5.0, 5.0, 5.0, 5.0);
}
ExtensionsView::~ExtensionsView()
{
BRow *row;
while ((row = fExtensionsList->RowAt((int32)0, NULL)) != NULL) {
fExtensionsList->RemoveRow(row);
delete row;
}
}
void
ExtensionsView::_AddExtensionsList(BColumnListView* fExtensionsList, char* stringList)
{
if (stringList == NULL) {
return;
}
while (*stringList != '\0') {
char extName[255];
int n = strcspn(stringList, " ");
strncpy(extName, stringList, n);
extName[n] = 0;
BRow* row = new BRow();
row->SetField(new BStringField(extName), 0);
fExtensionsList->AddRow(row);
if (!stringList[n])
break;
stringList += (n + 1);
}
}