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 GFileSelect;
00021 class GFindReplace;
00022 class GSubMenu;
00023 class GMenuItem;
00024 class GMenu;
00025 class GToolBar;
00026 class GToolButton;
00027 class GSplitter;
00028 class GStatusPane;
00029 class GStatusBar;
00030 class GToolColour;
00031 class GScrollBar;
00032 class GImageList;
00033 class GDialog;
00034
00035
00036 class LgiClass GBase
00037 {
00038 char *_Name8;
00039 char16 *_Name16;
00040
00041 public:
00042 GBase();
00043 virtual ~GBase();
00044
00045 virtual char *Name();
00046 virtual bool Name(const char *n);
00047 virtual char16 *NameW();
00048 virtual bool NameW(const char16 *n);
00049
00050 virtual int Sizeof() { return 0; }
00051 };
00052
00053 #define AssignFlag(f, bit, to) if (to) f |= bit; else f &= ~(bit)
00054
00056 LgiFunc void LgiTrace(const char *Format, ...);
00057
00059 LgiFunc void LgiStackTrace(const char *Format, ...);
00060
00062 class LgiClass GUiEvent
00063 {
00064 public:
00065 int Flags;
00066
00067 GUiEvent()
00068 {
00069 Flags = 0;
00070 }
00071
00072 virtual ~GUiEvent() {}
00073 virtual void Trace(char *Msg) {}
00074
00076 bool Down() { return TestFlag(Flags, LGI_EF_DOWN); }
00078 bool Double() { return TestFlag(Flags, LGI_EF_DOUBLE); }
00080 bool Ctrl() { return TestFlag(Flags, LGI_EF_CTRL); }
00082 bool Alt() { return TestFlag(Flags, LGI_EF_ALT); }
00084 bool Shift() { return TestFlag(Flags, LGI_EF_SHIFT); }
00086 bool System() { return TestFlag(Flags, LGI_EF_SYSTEM); }
00087
00088
00089 void Down(bool i) { AssignFlag(Flags, LGI_EF_DOWN, i); }
00090 void Double(bool i) { AssignFlag(Flags, LGI_EF_DOUBLE, i); }
00091 void Ctrl(bool i) { AssignFlag(Flags, LGI_EF_CTRL, i); }
00092 void Alt(bool i) { AssignFlag(Flags, LGI_EF_ALT, i); }
00093 void Shift(bool i) { AssignFlag(Flags, LGI_EF_SHIFT, i); }
00094 void System(bool i) { AssignFlag(Flags, LGI_EF_SYSTEM, i); }
00095
00096 bool Modifier()
00097 {
00098 #ifdef MAC
00099 return System();
00100 #else
00101 return Ctrl();
00102 #endif
00103 }
00104 };
00105
00107 class LgiClass GKey : public GUiEvent
00108 {
00109 public:
00111 char16 vkey;
00113 char16 c16;
00115 uint32 Data;
00117 bool IsChar;
00118
00119 GKey()
00120 {
00121 vkey = 0;
00122 c16 = 0;
00123 Data = 0;
00124 IsChar = 0;
00125 }
00126
00127 GKey(int vkey, int flags);
00128
00129 void Trace(char *Msg)
00130 {
00131 LgiTrace("%s GKey vkey=%i(0x%x) c16=%i(%c) IsChar=%i down=%i ctrl=%i alt=%i sh=%i sys=%i\n",
00132 Msg ? Msg : (char*)"",
00133 vkey, vkey,
00134 c16, c16 >= ' ' && c16 < 127 ? c16 : '.',
00135 IsChar, Down(), Ctrl(), Alt(), Shift(), System());
00136 }
00137
00139 char16 GetChar()
00140 {
00141 if (Shift() ^ TestFlag(Flags, LGI_EF_CAPS_LOCK))
00142 {
00143 return (c16 >= 'a' AND c16 <= 'z') ? c16 - 'a' + 'A' : c16;
00144 }
00145 else
00146 {
00147 return (c16 >= 'A' AND c16 <= 'Z') ? c16 - 'A' + 'a' : c16;
00148 }
00149 }
00150
00152 bool IsContextMenu();
00153 };
00154
00165 class LgiClass GMouse : public GUiEvent
00166 {
00167 public:
00169 class GViewI *Target;
00171 bool ViewCoords;
00173 int x;
00175 int y;
00176
00177 GMouse()
00178 {
00179 Target = 0;
00180 ViewCoords = true;
00181 x = y = 0;
00182 }
00183
00184 void Trace(char *Msg)
00185 {
00186 LgiTrace("%s GMouse pos=%i,%i view=%i btns=%i/%i/%i dwn=%i dbl=%i "
00187 "ctrl=%i alt=%i sh=%i sys=%i\n",
00188 Msg ? Msg : (char*)"", x, y, ViewCoords,
00189 Left(), Middle(), Right(),
00190 Down(), Double(),
00191 Ctrl(), Alt(), Shift(), System());
00192 }
00193
00195 bool Left() { return TestFlag(Flags, LGI_EF_LEFT); }
00197 bool Middle() { return TestFlag(Flags, LGI_EF_MIDDLE); }
00199 bool Right() { return TestFlag(Flags, LGI_EF_RIGHT); }
00200
00202 void Left(bool i) { AssignFlag(Flags, LGI_EF_LEFT, i); }
00204 void Middle(bool i) { AssignFlag(Flags, LGI_EF_MIDDLE, i); }
00206 void Right(bool i) { AssignFlag(Flags, LGI_EF_RIGHT, i); }
00207
00209 bool ToScreen();
00211 bool ToView();
00212
00214 bool IsContextMenu();
00215 };
00216
00218 class GAppInfo
00219 {
00220 public:
00222 GAutoString Path;
00224 GAutoString Name;
00226 GAutoString Icon;
00228 GAutoString Params;
00229 };
00230
00231 #endif