00001
00003 #ifndef _LGI_INTERFACES_H_
00004 #define _LGI_INTERFACES_H_
00005
00006
00007 #include "GArray.h"
00008
00009
00010 class GXmlTag;
00011 class GMouseHook;
00012 class GFont;
00013 class GRect;
00014 class GdcPt2;
00015 class GRegion;
00016 class GSurface;
00017 class GViewI;
00018 class GMessage;
00019 class GMouse;
00020 class GKey;
00021 class GWindow;
00022 class GViewFill;
00023 class GView;
00024
00025
00026 class GDomI
00027 {
00028 public:
00029 virtual ~GDomI() {}
00030
00031 virtual bool GetValue(char *Var, GVariant &Value) = 0;
00032 virtual bool SetValue(char *Var, GVariant &Value) = 0;
00033 };
00034
00035 class GStreamI : virtual public GDomI
00036 {
00037 public:
00038 virtual int Open(char *Str = 0, int Int = 0) = 0;
00039 virtual bool IsOpen() = 0;
00040 virtual int Close() = 0;
00041
00042 virtual int64 GetSize() = 0;
00043 virtual int64 SetSize(int64 Size) = 0;
00044 virtual int64 GetPos() = 0;
00045 virtual int64 SetPos(int64 Pos) = 0;
00046 virtual int Read(void *Buffer, int Size, int Flags = 0) = 0;
00047 virtual int Write(void *Buffer, int Size, int Flags = 0) = 0;
00048 virtual GStreamI *Clone() = 0;
00049
00050 };
00051
00053 enum GSocketLogTypes
00054 {
00056 NET_LOG_NONE = 0,
00058 NET_LOG_HEX_DUMP = 1,
00060 NET_LOG_ALL_BYTES = 2
00061 };
00062
00064 enum GSocketProp
00065 {
00067 GReadable,
00069 GWriteable,
00071 GAcceptable,
00073 GAsync,
00074 GException,
00075 GNoDelay,
00076 };
00077
00080 class GSocketI : virtual public GStreamI
00081 {
00082 public:
00083 virtual ~GSocketI() {}
00084
00086 virtual OsSocket Handle(OsSocket Set = INVALID_SOCKET) = 0;
00088 virtual bool WhatsMyIp
00089 (
00091 char *IpAddr
00092 ) = 0;
00094 virtual int WhatsMyPort() = 0;
00096 virtual bool GetRemoteIp(char *IpAddr) = 0;
00098 virtual bool IsReadable() = 0;
00100 virtual bool Cancel() = 0;
00102 virtual void Cancel(bool i) = 0;
00104 virtual int Is
00105 (
00107 GSocketProp p
00108 ) = 0;
00110 virtual void Is(GSocketProp p, int i) = 0;
00112 virtual void SetLogFile(char *FileName = 0, int Type = NET_LOG_HEX_DUMP) = 0;
00113
00115 virtual bool Listen(int Port = 0) = 0;
00117 virtual bool Accept(GSocketI *c) = 0;
00118
00120 virtual int Error() = 0;
00121
00123 virtual void OnDisconnect() = 0;
00125 virtual void OnRead(char *Data, int Len) = 0;
00127 virtual void OnWrite(char *Data, int Len) = 0;
00129 virtual void OnError(int ErrorCode, char *ErrorDescription) = 0;
00131 virtual void OnInformation(char *Str) = 0;
00133 virtual int SetParameter(int Param, int Value) = 0;
00134 };
00135
00136 class GAppI
00137 {
00138 public:
00140 virtual ~GAppI() {}
00141
00142 virtual bool IsOk() = 0;
00143
00145 virtual OsProcessId GetProcessId() = 0;
00146
00148 virtual OsThreadId GetGuiThread() = 0;
00149
00151 virtual void SetAppArgs(OsAppArguments &AppArgs) = 0;
00152
00154 virtual OsAppArguments *GetAppArgs() = 0;
00155
00157 virtual char *GetArgumentAt(int n) = 0;
00158
00160 virtual bool Run
00161 (
00164 bool Loop = true
00165 ) = 0;
00166
00168 virtual void OnCommandLine() = 0;
00169
00171 virtual void OnReceiveFiles(GArray<char*> &Files) = 0;
00172
00174 virtual void Exit
00175 (
00177 int Code = 0
00178 ) = 0;
00179
00182 virtual bool GetOption
00183 (
00185 char *Option,
00187 GArray<char> &Buf
00188 ) = 0;
00189
00192 virtual bool GetOption
00193 (
00195 char *Option,
00197 char *Dst = 0,
00199 int DstSize = 0
00200 ) = 0;
00201
00203 virtual GXmlTag *GetConfig(char *Tag) = 0;
00204
00206 virtual void SetConfig(GXmlTag *Tag) = 0;
00207
00209 virtual GViewI *GetFocus() = 0;
00210
00212 virtual bool GetFileMimeType
00213 (
00215 char *File,
00217 char *Mime,
00219 int BufLen
00220 ) = 0;
00221
00223 virtual int32 GetMetric
00224 (
00226 int Metric
00227 ) = 0;
00228
00230 virtual GMouseHook *GetMouseHook() = 0;
00231 };
00232
00233 class GEventsI
00234 {
00235 public:
00236 virtual ~GEventsI() {}
00237
00238
00239 virtual bool OnScriptEvent(GViewI *Ctrl) = 0;
00240
00241
00242 virtual int OnEvent(GMessage *Msg) = 0;
00243 virtual void OnMouseClick(GMouse &m) = 0;
00244 virtual void OnMouseEnter(GMouse &m) = 0;
00245 virtual void OnMouseExit(GMouse &m) = 0;
00246 virtual void OnMouseMove(GMouse &m) = 0;
00247 virtual void OnMouseWheel(double Lines) = 0;
00248 virtual bool OnKey(GKey &k) = 0;
00249 virtual void OnAttach() = 0;
00250 virtual void OnCreate() = 0;
00251 virtual void OnDestroy() = 0;
00252 virtual void OnFocus(bool f) = 0;
00253 virtual void OnPulse() = 0;
00254 virtual void OnPosChange() = 0;
00255 virtual bool OnRequestClose(bool OsShuttingDown) = 0;
00256 virtual int OnHitTest(int x, int y) = 0;
00257 virtual void OnChildrenChanged(GViewI *Wnd, bool Attaching) = 0;
00258 virtual void OnPaint(GSurface *pDC) = 0;
00259 virtual int OnNotify(GViewI *Ctrl, int Flags) = 0;
00260 virtual int OnCommand(int Cmd, int Event, OsView Wnd) = 0;
00261 };
00262
00263 class GViewIterator
00264 {
00265 public:
00266 virtual GViewI *First() = 0;
00267 virtual GViewI *Last() = 0;
00268 virtual GViewI *Next() = 0;
00269 virtual GViewI *Prev() = 0;
00270 virtual int Length() = 0;
00271 virtual int IndexOf(GViewI *view) = 0;
00272 virtual GViewI *operator [](int Idx) = 0;
00273 };
00274
00275 class GViewI : public GEventsI
00276 {
00277 friend class GView;
00278
00279 public:
00280
00281 virtual OsView Handle() = 0;
00282 virtual OsWindow WindowHandle() = 0;
00283
00284
00285 virtual bool Attach(GViewI *p) = 0;
00286 virtual bool AttachChildren() = 0;
00287 virtual bool Detach() = 0;
00288 virtual bool IsAttached() = 0;
00289 virtual GWindow *GetWindow() = 0;
00290 virtual GViewI *GetParent() = 0;
00291 virtual void SetParent(GViewI *p) = 0;
00292 virtual void Quit(bool DontDelete = false) = 0;
00293 virtual bool AddView(GViewI *v, int Where = -1) = 0;
00294 virtual bool DelView(GViewI *v) = 0;
00295 virtual bool HasView(GViewI *v) = 0;
00296 virtual GViewIterator *IterateViews() = 0;
00297
00298
00299 virtual bool Lock(int TimeOut = -1) = 0;
00300 virtual void Unlock() = 0;
00301 virtual bool InThread() = 0;
00302
00303
00304 virtual bool Enabled() = 0;
00305 virtual void Enabled(bool e) = 0;
00306 virtual bool Visible() = 0;
00307 virtual void Visible(bool v) = 0;
00308 virtual bool Focus() = 0;
00309 virtual void Focus(bool f) = 0;
00310 virtual bool DropTarget() = 0;
00311 virtual bool DropTarget(bool t) = 0;
00312 virtual bool Sunken() = 0;
00313 virtual void Sunken(bool i) = 0;
00314 virtual bool Flat() = 0;
00315 virtual void Flat(bool i) = 0;
00316 virtual bool Raised() = 0;
00317 virtual void Raised(bool i) = 0;
00318 virtual GViewFill *GetBackgroundFill() = 0;
00319 virtual bool SetBackgroundFill(GViewFill *Fill) = 0;
00320 virtual bool Name(char *n) = 0;
00321 virtual char *Name() = 0;
00322 virtual bool NameW(char16 *n) = 0;
00323 virtual char16 *NameW() = 0;
00324 virtual GFont *GetFont() = 0;
00325 virtual void SetFont(GFont *Fnt, bool OwnIt = false) = 0;
00326 virtual GRect &GetPos() = 0;
00327 virtual GRect &GetClient() = 0;
00328 virtual bool SetPos(GRect &p, bool Repaint = false) = 0;
00329 virtual int X() = 0;
00330 virtual int Y() = 0;
00331 virtual GdcPt2 GetMinimumSize() = 0;
00332 virtual void SetMinimumSize(GdcPt2 Size) = 0;
00333 virtual int GetId() = 0;
00334 virtual void SetId(int i) = 0;
00335 virtual bool GetTabStop() = 0;
00336 virtual void SetTabStop(bool b) = 0;
00337 virtual int Value() = 0;
00338 virtual void Value(int i) = 0;
00339
00340
00341 virtual void SendNotify(int Data = 0) = 0;
00342 virtual GViewI *GetNotify() = 0;
00343 virtual void SetNotify(GViewI *n) = 0;
00344 virtual bool PostEvent(int Cmd, int a = 0, int b = 0) = 0;
00345
00346
00347 virtual bool SetCursor(int Cursor) = 0;
00348 virtual bool Capture(bool c) = 0;
00349 virtual bool IsCapturing() = 0;
00350 virtual bool GetMouse(GMouse &m, bool ScreenCoords = false) = 0;
00351
00352
00353 virtual void MoveOnScreen() = 0;
00354 virtual void MoveToCenter() = 0;
00355 virtual void MoveToMouse() = 0;
00356 virtual GViewI *FindControl(OsView hnd) = 0;
00357 virtual GViewI *FindControl(int Id) = 0;
00358 virtual int GetCtrlValue(int Id) = 0;
00359 virtual void SetCtrlValue(int Id, int i) = 0;
00360 virtual char *GetCtrlName(int Id) = 0;
00361 virtual void SetCtrlName(int Id, char *s) = 0;
00362 virtual bool GetCtrlEnabled(int Id) = 0;
00363 virtual void SetCtrlEnabled(int Id, bool Enabled) = 0;
00364 virtual bool GetCtrlVisible(int Id) = 0;
00365 virtual void SetCtrlVisible(int Id, bool Visible) = 0;
00366 virtual bool Pour(GRegion &r) = 0;
00367
00368
00369 virtual void PointToScreen(GdcPt2 &p) = 0;
00370 virtual void PointToView(GdcPt2 &p) = 0;
00371 virtual bool WindowVirtualOffset(GdcPt2 *Offset) = 0;
00372 virtual GViewI *WindowFromPoint(int x, int y) = 0;
00373 virtual GdcPt2 &GetWindowBorderSize() = 0;
00374 virtual bool IsOver(GMouse &m) = 0;
00375
00376
00377 virtual bool Invalidate(GRect *r = 0, bool Repaint = false, bool NonClient = false) = 0;
00378 virtual bool Invalidate(GRegion *r, bool Repaint = false, bool NonClient = false) = 0;
00379 virtual void SetPulse(int Ms = -1) = 0;
00380
00381 protected:
00382 virtual bool OnViewMouse(GView *v, GMouse &m) = 0;
00383 virtual bool OnViewKey(GView *v, GKey &k) = 0;
00384 };
00385
00386 #endif