00001 #ifndef _LGI_CLASS_H_
00002 #define _LGI_CLASS_H_
00003
00004 #include "LgiInc.h"
00005
00006
00007 class GKey;
00008 class GMouse;
00009
00010
00011 class GTarget;
00012 class GComponent;
00013 class GEvent;
00014 class GId;
00015 class GApp;
00016 class GWindow;
00017 class GWin32Class;
00018 class GView;
00019 class GLayout;
00020 class GFileType;
00021 class GFileSelect;
00022 class GFindReplace;
00023 class GSubMenu;
00024 class GMenuItem;
00025 class GMenu;
00026 class GToolBar;
00027 class GToolButton;
00028 class GSplitter;
00029 class GStatusPane;
00030 class GStatusBar;
00031 class GToolColour;
00032 class GScrollBar;
00033 class GImageList;
00034 class GDialog;
00035
00036
00037 class LgiClass GObject
00038 {
00039 char *_Name8;
00040 char16 *_Name16;
00041
00042 public:
00043 GObject();
00044 virtual ~GObject();
00045
00046 virtual char *Name();
00047 virtual bool Name(char *n);
00048 virtual char16 *NameW();
00049 virtual bool NameW(char16 *n);
00050
00051 virtual int Sizeof() { return 0; }
00052 };
00053
00054 #define AssignFlag(f, bit, to) ( (to) ) ? f |= bit : f &= ~(bit)
00055
00057 class LgiClass GUiEvent
00058 {
00059 public:
00060 int Flags;
00061
00062 GUiEvent()
00063 {
00064 Flags = 0;
00065 }
00066
00068 bool Down() { return TestFlag(Flags, LGI_EF_DOWN); }
00070 bool Double() { return TestFlag(Flags, LGI_EF_DOUBLE); }
00072 bool Ctrl() { return TestFlag(Flags, LGI_EF_CTRL); }
00074 bool Alt() { return TestFlag(Flags, LGI_EF_ALT); }
00076 bool Shift() { return TestFlag(Flags, LGI_EF_SHIFT); }
00077
00078
00079 void Down(bool i) { AssignFlag(Flags, LGI_EF_DOWN, i); }
00080 void Double(bool i) { AssignFlag(Flags, LGI_EF_DOUBLE, i); }
00081 void Ctrl(bool i) { AssignFlag(Flags, LGI_EF_CTRL, i); }
00082 void Alt(bool i) { AssignFlag(Flags, LGI_EF_ALT, i); }
00083 void Shift(bool i) { AssignFlag(Flags, LGI_EF_SHIFT, i); }
00084 };
00085
00087 class LgiClass GKey : public GUiEvent
00088 {
00089 public:
00092 uchar c;
00094 char16 c16;
00096 int Data;
00098 bool IsChar;
00099
00100 GKey()
00101 {
00102 c = 0;
00103 c16 = 0;
00104 Data = 0;
00105 IsChar = 0;
00106 }
00107
00108 GKey(int vkey);
00109
00111 char16 GetChar()
00112 {
00113 if (Shift() ^ TestFlag(Flags, LGI_EF_CAPS_LOCK))
00114 {
00115 return (c16 >= 'a' AND c16 <= 'z') ? c16 - 'a' + 'A' : c16;
00116 }
00117 else
00118 {
00119 return (c16 >= 'A' AND c16 <= 'Z') ? c16 - 'A' + 'a' : c16;
00120 }
00121 }
00122 };
00123
00134 class LgiClass GMouse : public GUiEvent
00135 {
00136 public:
00138 GView *Target;
00140 bool ViewCoords;
00142 int x;
00144 int y;
00145
00146 GMouse()
00147 {
00148 Target = 0;
00149 ViewCoords = true;
00150 x = y = 0;
00151 }
00152
00154 bool Left() { return TestFlag(Flags, LGI_EF_LEFT); }
00156 bool Middle() { return TestFlag(Flags, LGI_EF_MIDDLE); }
00158 bool Right() { return TestFlag(Flags, LGI_EF_RIGHT); }
00159
00161 void Left(bool i) { AssignFlag(Flags, LGI_EF_LEFT, i); }
00163 void Middle(bool i) { AssignFlag(Flags, LGI_EF_MIDDLE, i); }
00165 void Right(bool i) { AssignFlag(Flags, LGI_EF_RIGHT, i); }
00166
00168 bool ToScreen();
00170 bool ToView();
00171 };
00172
00173 #endif