Defining a New Buffer Class
Define a subclass MyGadgetBuffer from IlvStGadgetBuffer. Below is a header example:
class MyGadgetBuffer
: public IlvStGadgetBuffer {
public:
MyGadgetBuffer(IlvStudio*, const char* name, IlvManager* = 0);
virtual const char* getType () const;
virtual const char* getTypeLabel() const;
virtual void setUpPanelClass(IlvStPanelClass*) const;
};
You provide:
The constructor, which calls the
IlvStGadgetBuffer constructor. If the manager parameter is not yet created, it creates a
MyManager instance.
The virtual member function
getType, which returns the class name
MyGadgetBuffer.
The virtual member function
getTypeLabel, which returns the class name label. This label is used by Rogue Wave Views Studio to display the type of the buffer in the Main window. It may be different from the label returned by the
getType member function that is used as the identifier of the buffer type.
The virtual member function
setUpPanelClass, which is called when a Rogue Wave Views Studio panel class is made for your buffer.
The MyGadgetBuffer class can be defined like this:
#include <ivstudio/studio.h>
#include <ivstudio/stdesc.h>
#include <mybuf.h>
#include <myman.h>
#include <mycont.h>
MyGadgetBuffer::MyGadgetBuffer(IlvStudio* editor,
const char* name,
IlvManager* mgr)
: IlvStGadgetBuffer(editor,
name,
mgr ? mgr : new MyManager(editor->getDisplay()))
{
}
const char*
MyGadgetBuffer::getType () const
{
return "MyGadgetBuffer";
}
const char*
MyGadgetBuffer::getTypeLabel () const
{
return "Mine";
}
void
MyGadgetBuffer::setUpPanelClass(IlvStPanelClass* pclass) const
{
IlvStGadgetBuffer::setUpPanelClass(pclass);
pclass->setBaseClass(“MyContainer”);
}
Once you have the new class, you have to integrate it into the editor; that is, tell the editor that the file saved with the new descriptor needs to be loaded in the new buffer type.
To do so, add a call to registerType in your initializeBuffers method of your extension class. The following is an example:
#include <mybuf.h>
static IlvStBuffer*
MakeMyBuffer(IlvStudio* editor, const char* name, const char*)
{
return new MyGadgetBuffer(editor, name);
}
IlBoolean
MyStudioExtension::initializeBuffers()
{
IlvStudio* editor = getEditor();
// ...
editor->buffers().registerType("MyGadgetManagerOutput",
MakeMyBuffer);
// ...
return IlTrue;
}
Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.