00001
00003 #ifndef _LGI_INTERFACES_H_
00004 #define _LGI_INTERFACES_H_
00005
00006
00007 #include "GArray.h"
00008 #include "LgiOsDefs.h"
00009
00010
00011 class GXmlTag;
00012 class GMouseHook;
00013 class GFont;
00014 class GRect;
00015 class GdcPt2;
00016 class GRegion;
00017 class GSurface;
00018 class GViewI;
00019 #ifndef BEOS
00020 class GMessage;
00021 #endif
00022 class GMouse;
00023 class GKey;
00024 class GWindow;
00025 class GViewFill;
00026 class GView;
00027
00028
00029 class GDomI
00030 {
00031 public:
00032 virtual ~GDomI() {}
00033
00034 virtual bool GetValue(char *Var, GVariant &Value) { return false; }
00035 virtual bool SetValue(char *Var, GVariant &Value) { return false; }
00036 };
00037
00038 class GStreamI : virtual public GDomI
00039 {
00040 public:
00041 virtual int Open(char *Str = 0, int Int = 0) { return false; }
00042 virtual bool IsOpen() { return false; }
00043 virtual int Close() { return 0; }
00044
00045 virtual int64 GetSize() { return -1; }
00046 virtual int64 SetSize(int64 Size) { return -1; }
00047 virtual int64 GetPos() { return -1; }
00048 virtual int64 SetPos(int64 Pos) { return -1; }
00049 virtual int Read(void *Buffer, int Size, int Flags = 0) { return 0; }
00050 virtual int Write(void *Buffer, int Size, int Flags = 0) { return 0; }
00051 virtual GStreamI *Clone() { return 0; }
00052 };
00053
00055 enum GSocketLogTypes
00056 {
00058 NET_LOG_NONE = 0,
00060 NET_LOG_HEX_DUMP = 1,
00062 NET_LOG_ALL_BYTES = 2
00063 };
00064
00067 class GSocketI : virtual public GStreamI
00068 {
00069 public:
00070 virtual ~GSocketI() {}
00071
00073 virtual OsSocket Handle(OsSocket Set = INVALID_SOCKET) = 0;
00074
00075
00077 virtual bool GetLocalIp
00078 (
00080 char *IpAddr
00081 ) { return false; }
00083 virtual int GetLocalPort() { return 0; }
00085 virtual bool GetRemoteIp(char *IpAddr) { return false; }
00087 virtual int GetRemotePort() { return 0; }
00088
00089
00091 virtual int GetTimeout() { return -1; }
00093 virtual void SetTimeout(int ms) {}
00094
00095
00096
00098 virtual bool IsReadable(int TimeoutMs = 0) { return false; }
00100 virtual bool IsWritable(int TimeoutMs = 0) { return false; }
00102 virtual bool CanAccept(int TimeoutMs = 0) { return false; }
00104 virtual bool IsBlocking() { return true; }
00106 virtual void IsBlocking(bool block) {}
00108 virtual bool IsDelayed() { return true; }
00110 virtual void IsDelayed(bool Delay) {}
00111
00112
00113
00115 virtual bool GetUdp() { return false; }
00117 virtual void SetUdp(bool b) {}
00119 virtual int ReadUdp(void *Buffer, int Size, int Flags, uint32 *Ip = 0, uint16 *Port = 0) { return 0; }
00121 virtual int WriteUdp(void *Buffer, int Size, int Flags, uint32 Ip, uint16 Port) { return 0; }
00122
00123
00124
00126 virtual bool Listen(int Port = 0) { return false; }
00128 virtual bool Accept(GSocketI *c) { return false; }
00129
00130
00131
00132
00134 virtual void OnDisconnect() {}
00136 virtual void OnRead(char *Data, int Len) {}
00138 virtual void OnWrite(char *Data, int Len) {}
00140 virtual void OnError(int ErrorCode, char *ErrorDescription) {}
00142 virtual void OnInformation(char *Str) {}
00143
00145 virtual int Error(void *Param) { return 0; }
00146 };
00147
00148 class GAppI
00149 {
00150 public:
00154 typedef bool (*OnIdleProc)(void *Param);
00155
00157 virtual ~GAppI() {}
00158
00159 virtual bool IsOk() = 0;
00160
00162 virtual OsProcessId GetProcessId() = 0;
00163
00165 virtual OsThreadId GetGuiThread() = 0;
00166
00168 virtual void SetAppArgs(OsAppArguments &AppArgs) = 0;
00169
00171 virtual OsAppArguments *GetAppArgs() = 0;
00172
00174 virtual char *GetArgumentAt(int n) = 0;
00175
00177 virtual bool Run
00178 (
00181 bool Loop = true,
00183 OnIdleProc IdleCallback = 0,
00185 void *IdleParam = 0
00186 ) = 0;
00187
00189 virtual void OnCommandLine() = 0;
00190
00192 virtual void OnReceiveFiles(GArray<char*> &Files) = 0;
00193
00195 virtual void Exit
00196 (
00198 int Code = 0
00199 ) = 0;
00200
00203 virtual bool GetOption
00204 (
00206 char *Option,
00208 GArray<char> &Buf
00209 ) = 0;
00210
00213 virtual bool GetOption
00214 (
00216 char *Option,
00218 char *Dst = 0,
00220 int DstSize = 0
00221 ) = 0;
00222
00224 virtual GXmlTag *GetConfig(char *Tag) = 0;
00225
00227 virtual void SetConfig(GXmlTag *Tag) = 0;
00228
00230 virtual GViewI *GetFocus() = 0;
00231
00233 virtual GAutoString GetFileMimeType
00234 (
00236 char *File
00237 ) = 0;
00238
00240 virtual int32 GetMetric
00241 (
00243 int Metric
00244 ) = 0;
00245
00247 virtual GMouseHook *GetMouseHook() = 0;
00248 };
00249
00250 class GEventsI
00251 {
00252 public:
00253 virtual ~GEventsI() {}
00254
00255
00256 virtual bool OnScriptEvent(GViewI *Ctrl) = 0;
00257
00258
00259 virtual int OnEvent(GMessage *Msg) = 0;
00260 virtual void OnMouseClick(GMouse &m) = 0;
00261 virtual void OnMouseEnter(GMouse &m) = 0;
00262 virtual void OnMouseExit(GMouse &m) = 0;
00263 virtual void OnMouseMove(GMouse &m) = 0;
00264 virtual void OnMouseWheel(double Lines) = 0;
00265 virtual bool OnKey(GKey &k) = 0;
00266 virtual void OnAttach() = 0;
00267 virtual void OnCreate() = 0;
00268 virtual void OnDestroy() = 0;
00269 virtual void OnFocus(bool f) = 0;
00270 virtual void OnPulse() = 0;
00271 virtual void OnPosChange() = 0;
00272 virtual bool OnRequestClose(bool OsShuttingDown) = 0;
00273 virtual int OnHitTest(int x, int y) = 0;
00274 virtual void OnChildrenChanged(GViewI *Wnd, bool Attaching) = 0;
00275 virtual void OnPaint(GSurface *pDC) = 0;
00276 virtual int OnNotify(GViewI *Ctrl, int Flags) = 0;
00277 virtual int OnCommand(int Cmd, int Event, OsView Wnd) = 0;
00278 };
00279
00280 class GViewIterator
00281 {
00282 public:
00283 virtual ~GViewIterator() {}
00284 virtual GViewI *First() = 0;
00285 virtual GViewI *Last() = 0;
00286 virtual GViewI *Next() = 0;
00287 virtual GViewI *Prev() = 0;
00288 virtual int Length() = 0;
00289 virtual int IndexOf(GViewI *view) = 0;
00290 virtual GViewI *operator [](int Idx) = 0;
00291 };
00292
00293 class GViewLayoutInfo
00294 {
00295 public:
00296 struct Range
00297 {
00298
00299 int32 Min, Max;
00300
00301 Range()
00302 {
00303 Min = Max = 0;
00304 }
00305 };
00306
00307 Range Width;
00308 Range Height;
00309 };
00310
00311 class GViewI : public GEventsI
00312 {
00313 friend class GView;
00314
00315 public:
00316
00317 virtual OsView Handle() = 0;
00318 virtual OsWindow WindowHandle() = 0;
00319 virtual GView *GetGView() { return 0; }
00320
00321
00322 virtual bool Attach(GViewI *p) = 0;
00323 virtual bool AttachChildren() = 0;
00324 virtual bool Detach() = 0;
00325 virtual bool IsAttached() = 0;
00326 virtual GWindow *GetWindow() = 0;
00327 virtual GViewI *GetParent() = 0;
00328 virtual void SetParent(GViewI *p) = 0;
00329 virtual void Quit(bool DontDelete = false) = 0;
00330 virtual bool AddView(GViewI *v, int Where = -1) = 0;
00331 virtual bool DelView(GViewI *v) = 0;
00332 virtual bool HasView(GViewI *v) = 0;
00333 virtual GViewIterator *IterateViews() = 0;
00334
00335
00336 virtual bool Lock(char *file, int line, int TimeOut = -1) = 0;
00337 virtual void Unlock() = 0;
00338 virtual bool InThread() = 0;
00339
00340
00341 virtual bool Enabled() = 0;
00342 virtual void Enabled(bool e) = 0;
00343 virtual bool Visible() = 0;
00344 virtual void Visible(bool v) = 0;
00345 virtual bool Focus() = 0;
00346 virtual void Focus(bool f) = 0;
00347 virtual bool DropTarget() = 0;
00348 virtual bool DropTarget(bool t) = 0;
00349 virtual bool Sunken() = 0;
00350 virtual void Sunken(bool i) = 0;
00351 virtual bool Flat() = 0;
00352 virtual void Flat(bool i) = 0;
00353 virtual bool Raised() = 0;
00354 virtual void Raised(bool i) = 0;
00355 virtual GViewFill *GetForegroundFill() = 0;
00356 virtual bool SetForegroundFill(GViewFill *Fill) = 0;
00357 virtual GViewFill *GetBackgroundFill() = 0;
00358 virtual bool SetBackgroundFill(GViewFill *Fill) = 0;
00359 virtual bool Name(char *n) = 0;
00360 virtual char *Name() = 0;
00361 virtual bool NameW(char16 *n) = 0;
00362 virtual char16 *NameW() = 0;
00363 virtual GFont *GetFont() = 0;
00364 virtual void SetFont(GFont *Fnt, bool OwnIt = false) = 0;
00365 virtual GRect &GetPos() = 0;
00366 virtual GRect &GetClient(bool InClientSpace = true) = 0;
00367 virtual bool SetPos(GRect &p, bool Repaint = false) = 0;
00368 virtual int X() = 0;
00369 virtual int Y() = 0;
00370 virtual GdcPt2 GetMinimumSize() = 0;
00371 virtual void SetMinimumSize(GdcPt2 Size) = 0;
00372 virtual int GetId() = 0;
00373 virtual void SetId(int i) = 0;
00374 virtual bool GetTabStop() = 0;
00375 virtual void SetTabStop(bool b) = 0;
00376 virtual int64 Value() = 0;
00377 virtual void Value(int64 i) = 0;
00378 virtual char *GetClass() { return "GViewI"; }
00379
00380
00381 virtual void SendNotify(int Data = 0) = 0;
00382 virtual GViewI *GetNotify() = 0;
00383 virtual void SetNotify(GViewI *n) = 0;
00384 virtual bool PostEvent(int Cmd, int a = 0, int b = 0) = 0;
00385
00386
00387 virtual bool SetCursor(int Cursor) = 0;
00388 virtual bool Capture(bool c) = 0;
00389 virtual bool IsCapturing() = 0;
00390 virtual bool GetMouse(GMouse &m, bool ScreenCoords = false) = 0;
00391
00392
00393 virtual void MoveOnScreen() = 0;
00394 virtual void MoveToCenter() = 0;
00395 virtual void MoveToMouse() = 0;
00396 virtual GViewI *FindControl(OsView hnd) = 0;
00397 virtual GViewI *FindControl(int Id) = 0;
00398 virtual int64 GetCtrlValue(int Id) = 0;
00399 virtual void SetCtrlValue(int Id, int64 i) = 0;
00400 virtual char *GetCtrlName(int Id) = 0;
00401 virtual void SetCtrlName(int Id, char *s) = 0;
00402 virtual bool GetCtrlEnabled(int Id) = 0;
00403 virtual void SetCtrlEnabled(int Id, bool Enabled) = 0;
00404 virtual bool GetCtrlVisible(int Id) = 0;
00405 virtual void SetCtrlVisible(int Id, bool Visible) = 0;
00406 virtual bool Pour(GRegion &r) = 0;
00407
00408 template<class T>
00409 bool GetViewById(int Id, T *&Ptr)
00410 {
00411 GViewI *Ctrl = FindControl(Id);
00412 Ptr = dynamic_cast<T*>(Ctrl);
00413 return Ptr != NULL;
00414 }
00415
00416
00417 virtual void PointToScreen(GdcPt2 &p) = 0;
00418 virtual void PointToView(GdcPt2 &p) = 0;
00419 virtual bool WindowVirtualOffset(GdcPt2 *Offset) = 0;
00420 virtual GViewI *WindowFromPoint(int x, int y) = 0;
00421 virtual GdcPt2 &GetWindowBorderSize() = 0;
00422 virtual bool IsOver(GMouse &m) = 0;
00423
00424
00425 virtual bool Invalidate(GRect *r = 0, bool Repaint = false, bool NonClient = false) = 0;
00426 virtual bool Invalidate(GRegion *r, bool Repaint = false, bool NonClient = false) = 0;
00427 virtual void SetPulse(int Ms = -1) = 0;
00428 virtual bool OnLayout(GViewLayoutInfo &Inf) = 0;
00429
00430 protected:
00431 virtual bool OnViewMouse(GView *v, GMouse &m) = 0;
00432 virtual bool OnViewKey(GView *v, GKey &k) = 0;
00433 };
00434
00435 #endif