Difference between revisions of "Console Framework Classes 20103 - OOP344"
(→Border Tester) |
(→FWField) |
||
Line 117: | Line 117: | ||
FWDialog* container(); | FWDialog* container(); | ||
}; | }; | ||
+ | </syntaxhighlight></big> | ||
+ | ===FWLabel=== | ||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | |||
+ | class FWLabel: public FWField{ | ||
+ | |||
+ | int _length; | ||
+ | |||
+ | void aloCpy(const char* str, int len = -1); | ||
+ | |||
+ | public: | ||
+ | |||
+ | FWLabel(const char *Str, int Row, int Col, | ||
+ | |||
+ | int Len = -1); | ||
+ | |||
+ | FWLabel(int Row, int Col, int Len); | ||
+ | |||
+ | ~FWLabel(); | ||
+ | |||
+ | void draw(int Refresh = FW_NO_REFRESH) const; | ||
+ | |||
+ | int edit(); | ||
+ | |||
+ | bool editable()const; | ||
+ | |||
+ | void set(const void* str); | ||
+ | |||
+ | }; | ||
+ | |||
+ | </syntaxhighlight></big> | ||
+ | |||
+ | ===FWDialog=== | ||
+ | |||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | |||
+ | class FWDialog: public FWBorder{ | ||
+ | private: | ||
+ | int _fnum; | ||
+ | int _curidx; | ||
+ | FWField* _fld[FW_MAX_NO_FIELDS]; | ||
+ | bool _dyn[FW_MAX_NO_FIELDS]; | ||
+ | bool _editable; | ||
+ | public: | ||
+ | FWDialog(FWBorder *Container = (FWBorder*)0, | ||
+ | int Row = -1, int Col = -1, | ||
+ | int Width = -1, int Height = -1, | ||
+ | bool Borderd = false, | ||
+ | const char* Border=FW_BORDER_CHARS); | ||
+ | virtual ~FWDialog(); | ||
+ | void draw(int fn = FW_NO_REFRESH)const; | ||
+ | int edit(int fn = FW_NO_REFRESH); | ||
+ | |||
+ | |||
+ | int add(FWField* field, bool dynamic = true); | ||
+ | int add(FWField& field, bool dynamic = false); | ||
+ | FWDialog& operator<<(FWField* field); | ||
+ | FWDialog& operator<<(FWField& field); | ||
+ | |||
+ | |||
+ | bool editable(); | ||
+ | int fieldNum()const; | ||
+ | int curIndex()const; | ||
+ | |||
+ | |||
+ | FWField& operator[](unsigned int index); | ||
+ | FWField& curField(); | ||
+ | }; | ||
+ | |||
+ | |||
+ | </syntaxhighlight></big> | ||
+ | |||
+ | |||
+ | ===FWLineEdit=== | ||
+ | |||
+ | |||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | |||
+ | class FWLineEdit: public FWField{ | ||
+ | bool _dyn; | ||
+ | int _maxdatalen; | ||
+ | int* _insertmode; | ||
+ | int _curpos; | ||
+ | int _offset; | ||
+ | public: | ||
+ | FWLineEdit(char* Str, int Row, int Col, int Width, | ||
+ | int Maxdatalen, int* Insertmode, | ||
+ | bool Bordered = false, | ||
+ | const char* Border=FW_BORDER_CHARS); | ||
+ | FWLineEdit(int Row, int Col, int Width, | ||
+ | int Maxdatalen, int* Insertmode, | ||
+ | bool Bordered = false, | ||
+ | const char* Border=FW_BORDER_CHARS); | ||
+ | ~FWLineEdit(); | ||
+ | void draw(int Refresh = FW_NO_REFRESH)const; | ||
+ | |||
+ | int edit(); | ||
+ | bool editable()const; | ||
+ | |||
+ | void set(const void* Str); | ||
+ | }; | ||
+ | |||
+ | </syntaxhighlight></big> | ||
+ | ===FWButton=== | ||
+ | |||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | |||
+ | class FWButton: public FWField{ | ||
+ | int _length; | ||
+ | public: | ||
+ | FWButton(const char *Str, int Row, int Col, | ||
+ | bool Bordered = true, | ||
+ | const char* Border=FW_BORDER_CHARS); | ||
+ | virtual ~FWButton(); | ||
+ | void draw(int Refresh = FW_NO_REFRESH) const; | ||
+ | int edit(); | ||
+ | bool editable()const; | ||
+ | void set(const void* str); | ||
+ | }; | ||
+ | |||
+ | </syntaxhighlight></big> | ||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | </syntaxhighlight></big> | ||
+ | <big><syntaxhighlight lang="cpp"> | ||
+ | </syntaxhighlight></big> | ||
+ | <big><syntaxhighlight lang="cpp"> | ||
</syntaxhighlight></big> | </syntaxhighlight></big> |
Revision as of 12:35, 8 November 2010
Contents
The Frame work
General Internal Header file
#ifndef ___CONFW_H__
#define ___CONFW_H__
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <string.h>
extern "C"{
#include "iol.h"
};
#define FW_BORDER_CHARS "/-\\|/-\\|"
#define FW_MAX_NO_FIELDS 100
#define FW_BUTTON_HIT 1
#define FW_MAX_LINE_CHARS (1024u)
#define FW_REFRESH -2
#define FW_FULL_FRAME -1
#define FW_NO_REFRESH 0
enum MessageStatus{ClearMessage,SetMessage};
#ifdef NO_HELPFUNC
# undef NO_HELPFUNC
#endif
#define NO_HELPFUNC ((void(*)(MessageStatus, FWDialog&))(0))
#ifdef NO_VALDFUNC
# undef NO_VALDFUNC
#endif
#define NO_VALDFUNC ((bool(*)(const char*, FWDialog&))(0))
#endif
Classes
FWBorder
Class Definition
class FWBorder {
int _row;
int _col;
int _height;
int _width;
char _border[9];
bool _visible;
FWBorder* _container;
protected:
int absRow()const;
int absCol()const;
public:
FWBorder(int Row=-1, int Col=-1, int Width=-1,int Height=-1,
bool Visible = false,
const char* Border=FW_BORDER_CHARS,
FWBorder* Container = (FWBorder*)0);
virtual void draw(int refresh = FW_NO_REFRESH)const;
virtual ~FWBorder();
void visible(bool val);
bool visible()const;
void container(FWBorder* theContainer);
FWBorder* container();
bool fullscreen()const;
void row(int val);
int row()const;
void col(int val);
int col()const;
void size(int height, int width);
int height()const;
int width()const;
};
Border Tester
FWField
class FWField: public FWBorder{
protected:
void* _data;
public:
FWField(int Row = 0, int Col = 0,
int Width = 0, int Height =0,
void* Data = (void*) 0,
bool Bordered = false,
const char* Border=FW_BORDER_CHARS);
~FWField();
virtual int edit() = 0;
virtual bool editable() const = 0;
virtual void set(const void* data) = 0;
virtual void* data();
void container(FWDialog* theOwner);
FWDialog* container();
};
FWLabel
class FWLabel: public FWField{
int _length;
void aloCpy(const char* str, int len = -1);
public:
FWLabel(const char *Str, int Row, int Col,
int Len = -1);
FWLabel(int Row, int Col, int Len);
~FWLabel();
void draw(int Refresh = FW_NO_REFRESH) const;
int edit();
bool editable()const;
void set(const void* str);
};
FWDialog
class FWDialog: public FWBorder{
private:
int _fnum;
int _curidx;
FWField* _fld[FW_MAX_NO_FIELDS];
bool _dyn[FW_MAX_NO_FIELDS];
bool _editable;
public:
FWDialog(FWBorder *Container = (FWBorder*)0,
int Row = -1, int Col = -1,
int Width = -1, int Height = -1,
bool Borderd = false,
const char* Border=FW_BORDER_CHARS);
virtual ~FWDialog();
void draw(int fn = FW_NO_REFRESH)const;
int edit(int fn = FW_NO_REFRESH);
int add(FWField* field, bool dynamic = true);
int add(FWField& field, bool dynamic = false);
FWDialog& operator<<(FWField* field);
FWDialog& operator<<(FWField& field);
bool editable();
int fieldNum()const;
int curIndex()const;
FWField& operator[](unsigned int index);
FWField& curField();
};
FWLineEdit
class FWLineEdit: public FWField{
bool _dyn;
int _maxdatalen;
int* _insertmode;
int _curpos;
int _offset;
public:
FWLineEdit(char* Str, int Row, int Col, int Width,
int Maxdatalen, int* Insertmode,
bool Bordered = false,
const char* Border=FW_BORDER_CHARS);
FWLineEdit(int Row, int Col, int Width,
int Maxdatalen, int* Insertmode,
bool Bordered = false,
const char* Border=FW_BORDER_CHARS);
~FWLineEdit();
void draw(int Refresh = FW_NO_REFRESH)const;
int edit();
bool editable()const;
void set(const void* Str);
};
FWButton
class FWButton: public FWField{
int _length;
public:
FWButton(const char *Str, int Row, int Col,
bool Bordered = true,
const char* Border=FW_BORDER_CHARS);
virtual ~FWButton();
void draw(int Refresh = FW_NO_REFRESH) const;
int edit();
bool editable()const;
void set(const void* str);
};