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(const char *Var, GVariant &Value) { return false; }
00035 virtual bool SetValue(const char *Var, GVariant &Value) { return false; }
00036 };
00037
00046 class GStreamI : virtual public GDomI
00047 {
00048 public:
00051 virtual int Open
00052 (
00054 const char *Str = 0,
00056 int Int = 0
00057 )
00058 { return false; }
00059
00061 virtual bool IsOpen() { return false; }
00062
00065 virtual int Close() { return 0; }
00066
00069 virtual int64 GetSize() { return -1; }
00070
00073 virtual int64 SetSize(int64 Size) { return -1; }
00074
00077 virtual int64 GetPos() { return -1; }
00078
00081 virtual int64 SetPos(int64 Pos) { return -1; }
00082
00085 virtual int Read(void *Buffer, int Size, int Flags = 0) = 0;
00086
00089 virtual int Write(const void *Buffer, int Size, int Flags = 0) = 0;
00090
00094 virtual GStreamI *Clone() { return 0; }
00095 };
00096
00098 enum GSocketLogTypes
00099 {
00101 NET_LOG_NONE = 0,
00103 NET_LOG_HEX_DUMP = 1,
00105 NET_LOG_ALL_BYTES = 2
00106 };
00107
00110 class GSocketI : virtual public GStreamI
00111 {
00112 public:
00113 virtual ~GSocketI() {}
00114
00116 virtual OsSocket Handle(OsSocket Set = INVALID_SOCKET) = 0;
00117
00118
00120 virtual bool GetLocalIp
00121 (
00123 char *IpAddr
00124 ) { return false; }
00126 virtual int GetLocalPort() { return 0; }
00128 virtual bool GetRemoteIp(char *IpAddr) { return false; }
00130 virtual int GetRemotePort() { return 0; }
00131
00132
00134 virtual int GetTimeout() { return -1; }
00136 virtual void SetTimeout(int ms) {}
00137
00138
00139
00141 virtual bool IsReadable(int TimeoutMs = 0) { return false; }
00143 virtual bool IsWritable(int TimeoutMs = 0) { return false; }
00145 virtual bool CanAccept(int TimeoutMs = 0) { return false; }
00147 virtual bool IsBlocking() { return true; }
00149 virtual void IsBlocking(bool block) {}
00151 virtual bool IsDelayed() { return true; }
00153 virtual void IsDelayed(bool Delay) {}
00154
00155
00156
00158 virtual bool GetUdp() { return false; }
00160 virtual void SetUdp(bool b) {}
00162 virtual int ReadUdp(void *Buffer, int Size, int Flags, uint32 *Ip = 0, uint16 *Port = 0) { return 0; }
00164 virtual int WriteUdp(void *Buffer, int Size, int Flags, uint32 Ip, uint16 Port) { return 0; }
00165
00166
00167
00169 virtual bool Listen(int Port = 0) { return false; }
00171 virtual bool Accept(GSocketI *c) { return false; }
00172
00173
00174
00175
00177 virtual void OnDisconnect() {}
00179 virtual void OnRead(char *Data, int Len) {}
00181 virtual void OnWrite(const char *Data, int Len) {}
00183 virtual void OnError(int ErrorCode, const char *ErrorDescription) {}
00185 virtual void OnInformation(const char *Str) {}
00186
00188 virtual int Error(void *Param) { return 0; }
00189 };
00190
00191 class GAppI
00192 {
00193 public:
00197 typedef bool (*OnIdleProc)(void *Param);
00198
00200 virtual ~GAppI() {}
00201
00202 virtual bool IsOk() = 0;
00203
00205 virtual OsProcessId GetProcessId() = 0;
00206
00208 virtual OsThreadId GetGuiThread() = 0;
00209
00211 virtual void SetAppArgs(OsAppArguments &AppArgs) = 0;
00212
00214 virtual OsAppArguments *GetAppArgs() = 0;
00215
00217 virtual char *GetArgumentAt(int n) = 0;
00218
00220 virtual bool Run
00221 (
00224 bool Loop = true,
00226 OnIdleProc IdleCallback = 0,
00228 void *IdleParam = 0
00229 ) = 0;
00230
00232 virtual void OnCommandLine() = 0;
00233
00235 virtual void OnReceiveFiles(GArray<char*> &Files) = 0;
00236
00238 virtual void Exit
00239 (
00241 int Code = 0
00242 ) = 0;
00243
00246 virtual bool GetOption
00247 (
00249 const char *Option,
00251 GAutoString &Buf
00252 ) = 0;
00253
00256 virtual bool GetOption
00257 (
00259 const char *Option,
00261 char *Dst = 0,
00263 int DstSize = 0
00264 ) = 0;
00265
00267 virtual GXmlTag *GetConfig(const char *Tag) = 0;
00268
00270 virtual void SetConfig(GXmlTag *Tag) = 0;
00271
00273 virtual GViewI *GetFocus() = 0;
00274
00276 virtual GAutoString GetFileMimeType
00277 (
00279 const char *File
00280 ) = 0;
00281
00283 virtual int32 GetMetric
00284 (
00286 int Metric
00287 ) = 0;
00288
00290 virtual GMouseHook *GetMouseHook() = 0;
00291 };
00292
00293 class GEventsI
00294 {
00295 public:
00296 virtual ~GEventsI() {}
00297
00298
00299 virtual bool OnScriptEvent(GViewI *Ctrl) = 0;
00300
00301
00302 virtual int OnEvent(GMessage *Msg) = 0;
00303 virtual void OnMouseClick(GMouse &m) = 0;
00304 virtual void OnMouseEnter(GMouse &m) = 0;
00305 virtual void OnMouseExit(GMouse &m) = 0;
00306 virtual void OnMouseMove(GMouse &m) = 0;
00307 virtual void OnMouseWheel(double Lines) = 0;
00308 virtual bool OnKey(GKey &k) = 0;
00309 virtual void OnAttach() = 0;
00310 virtual void OnCreate() = 0;
00311 virtual void OnDestroy() = 0;
00312 virtual void OnFocus(bool f) = 0;
00313 virtual void OnPulse() = 0;
00314 virtual void OnPosChange() = 0;
00315 virtual bool OnRequestClose(bool OsShuttingDown) = 0;
00316 virtual int OnHitTest(int x, int y) = 0;
00317 virtual void OnChildrenChanged(GViewI *Wnd, bool Attaching) = 0;
00318 virtual void OnPaint(GSurface *pDC) = 0;
00319 virtual int OnNotify(GViewI *Ctrl, int Flags) = 0;
00320 virtual int OnCommand(int Cmd, int Event, OsView Wnd) = 0;
00321 };
00322
00323 class GViewIterator
00324 {
00325 public:
00326 virtual ~GViewIterator() {}
00327 virtual GViewI *First() = 0;
00328 virtual GViewI *Last() = 0;
00329 virtual GViewI *Next() = 0;
00330 virtual GViewI *Prev() = 0;
00331 virtual int Length() = 0;
00332 virtual int IndexOf(GViewI *view) = 0;
00333 virtual GViewI *operator [](int Idx) = 0;
00334 };
00335
00336 class GViewLayoutInfo
00337 {
00338 public:
00339 struct Range
00340 {
00341
00342 int32 Min, Max;
00343
00344 Range()
00345 {
00346 Min = Max = 0;
00347 }
00348 };
00349
00350 Range Width;
00351 Range Height;
00352 };
00353
00354 class GViewI : public GEventsI
00355 {
00356 friend class GView;
00357
00358 public:
00359
00360 virtual OsView Handle() = 0;
00361 virtual OsWindow WindowHandle() = 0;
00362 virtual GView *GetGView() { return 0; }
00363
00364
00365 virtual bool Attach(GViewI *p) = 0;
00366 virtual bool AttachChildren() = 0;
00367 virtual bool Detach() = 0;
00368 virtual bool IsAttached() = 0;
00369 virtual GWindow *GetWindow() = 0;
00370 virtual GViewI *GetParent() = 0;
00371 virtual void SetParent(GViewI *p) = 0;
00372 virtual void Quit(bool DontDelete = false) = 0;
00373 virtual bool AddView(GViewI *v, int Where = -1) = 0;
00374 virtual bool DelView(GViewI *v) = 0;
00375 virtual bool HasView(GViewI *v) = 0;
00376 virtual GViewIterator *IterateViews() = 0;
00377
00378
00379 virtual bool Lock(const char *file, int line, int TimeOut = -1) = 0;
00380 virtual void Unlock() = 0;
00381 virtual bool InThread() = 0;
00382
00383
00384 virtual bool Enabled() = 0;
00385 virtual void Enabled(bool e) = 0;
00386 virtual bool Visible() = 0;
00387 virtual void Visible(bool v) = 0;
00388 virtual bool Focus() = 0;
00389 virtual void Focus(bool f) = 0;
00390 virtual bool DropTarget() = 0;
00391 virtual bool DropTarget(bool t) = 0;
00392 virtual bool Sunken() = 0;
00393 virtual void Sunken(bool i) = 0;
00394 virtual bool Flat() = 0;
00395 virtual void Flat(bool i) = 0;
00396 virtual bool Raised() = 0;
00397 virtual void Raised(bool i) = 0;
00398 virtual GViewFill *GetForegroundFill() = 0;
00399 virtual bool SetForegroundFill(GViewFill *Fill) = 0;
00400 virtual GViewFill *GetBackgroundFill() = 0;
00401 virtual bool SetBackgroundFill(GViewFill *Fill) = 0;
00402
00403 virtual bool Name(const char *n) = 0;
00404 virtual bool NameW(const char16 *n) = 0;
00405
00406 virtual char *Name() = 0;
00407 virtual char16 *NameW() = 0;
00408
00409 virtual GFont *GetFont() = 0;
00410 virtual void SetFont(GFont *Fnt, bool OwnIt = false) = 0;
00411 virtual GRect &GetPos() = 0;
00412 virtual GRect &GetClient(bool InClientSpace = true) = 0;
00413 virtual bool SetPos(GRect &p, bool Repaint = false) = 0;
00414 virtual int X() = 0;
00415 virtual int Y() = 0;
00416 virtual GdcPt2 GetMinimumSize() = 0;
00417 virtual void SetMinimumSize(GdcPt2 Size) = 0;
00418 virtual int GetId() = 0;
00419 virtual void SetId(int i) = 0;
00420 virtual bool GetTabStop() = 0;
00421 virtual void SetTabStop(bool b) = 0;
00422 virtual int64 Value() = 0;
00423 virtual void Value(int64 i) = 0;
00424 virtual const char *GetClass() { return "GViewI"; }
00425
00426
00427 virtual void SendNotify(int Data = 0) = 0;
00428 virtual GViewI *GetNotify() = 0;
00429 virtual void SetNotify(GViewI *n) = 0;
00430 virtual bool PostEvent(int Cmd, int a = 0, int b = 0) = 0;
00431
00432
00433 virtual bool SetCursor(int Cursor) = 0;
00434 virtual bool Capture(bool c) = 0;
00435 virtual bool IsCapturing() = 0;
00436 virtual bool GetMouse(GMouse &m, bool ScreenCoords = false) = 0;
00437
00438
00439 virtual void MoveOnScreen() = 0;
00440 virtual void MoveToCenter() = 0;
00441 virtual void MoveToMouse() = 0;
00442 virtual GViewI *FindControl(OsView hnd) = 0;
00443 virtual GViewI *FindControl(int Id) = 0;
00444 virtual int64 GetCtrlValue(int Id) = 0;
00445 virtual void SetCtrlValue(int Id, int64 i) = 0;
00446 virtual char *GetCtrlName(int Id) = 0;
00447 virtual void SetCtrlName(int Id, const char *s) = 0;
00448 virtual bool GetCtrlEnabled(int Id) = 0;
00449 virtual void SetCtrlEnabled(int Id, bool Enabled) = 0;
00450 virtual bool GetCtrlVisible(int Id) = 0;
00451 virtual void SetCtrlVisible(int Id, bool Visible) = 0;
00452 virtual bool Pour(GRegion &r) = 0;
00453
00454 template<class T>
00455 bool GetViewById(int Id, T *&Ptr)
00456 {
00457 GViewI *Ctrl = FindControl(Id);
00458 Ptr = dynamic_cast<T*>(Ctrl);
00459 return Ptr != NULL;
00460 }
00461
00462
00463 virtual void PointToScreen(GdcPt2 &p) = 0;
00464 virtual void PointToView(GdcPt2 &p) = 0;
00465 virtual bool WindowVirtualOffset(GdcPt2 *Offset) = 0;
00466 virtual GViewI *WindowFromPoint(int x, int y, bool Debug = false) = 0;
00467 virtual GdcPt2 &GetWindowBorderSize() = 0;
00468 virtual bool IsOver(GMouse &m) = 0;
00469
00470
00471 virtual bool Invalidate(GRect *r = 0, bool Repaint = false, bool NonClient = false) = 0;
00472 virtual bool Invalidate(GRegion *r, bool Repaint = false, bool NonClient = false) = 0;
00473 virtual void SetPulse(int Ms = -1) = 0;
00474 virtual bool OnLayout(GViewLayoutInfo &Inf) = 0;
00475
00476 protected:
00477 virtual bool OnViewMouse(GView *v, GMouse &m) = 0;
00478 virtual bool OnViewKey(GView *v, GKey &k) = 0;
00479 };
00480
00481 #endif