Added amb1167: menu_addtext(menu, const text[], slot=1)

This commit is contained in:
Steve Dudenhoeffer
2008-04-27 19:19:53 +00:00
parent 1d7cbd4203
commit 9100ec753c
3 changed files with 104 additions and 7 deletions

View File

@@ -54,6 +54,46 @@
typedef int (*MENUITEM_CALLBACK)(int, int, int);
class BlankItem
{
private:
char *m_text;
bool m_num;
public:
BlankItem() : m_text(NULL), m_num(false) { }
BlankItem(BlankItem &src) { this->copyFrom(src); }
~BlankItem() { free(m_text); }
void copyFrom(BlankItem &src)
{
m_text = src.m_text;
m_num = src.m_num;
src.m_text = NULL; // stop the src from freeing the buffer
}
BlankItem &operator = (const BlankItem &src) { this->copyFrom(const_cast<BlankItem&>(src)); return *this; }
/* is this text instead of a blank */
bool IsText() { return m_text != NULL; }
/* is this a blank instead of text */
bool IsBlank() { return m_text == NULL; }
/* does this item take up a number */
bool EatNumber() { return m_num; }
/* the text this item is to display */
const char *GetDisplay() { return m_text == NULL ? "" : m_text; }
/* sets this item to use a blank */
void SetBlank() { free(m_text); m_text = NULL; }
/* sets this item to display text */
void SetText(const char *text) { free(m_text); m_text = strdup(text); }
/* sets whether or not this item takes up a line */
void SetEatNumber(bool val) { m_num = val; }
};
struct menuitem
{
String name;
@@ -65,7 +105,7 @@ struct menuitem
MENUITEM_CALLBACK pfn;
size_t id;
CVector<int> blanks;
CVector<BlankItem> blanks;
};
typedef unsigned int menu_t;