## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# iaws/aws.h

Go to the documentation of this file.

    00001 /**************************************************************************
    00002     Copyright (C) 2001 by Christopher Nelson
    00003
    00004     This library is free software; you can redistribute it and/or
    00005     modify it under the terms of the GNU Library General Public
    00006     License as published by the Free Software Foundation; either
    00007     version 2 of the License, or (at your option) any later version.
    00008
    00009     This library is distributed in the hope that it will be useful,
    00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00012     Library General Public License for more details.
    00013
    00014     You should have received a copy of the GNU Library General Public
    00015     License along with this library; if not, write to the Free
    00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00017 *****************************************************************************/
    00018
    00019 #ifndef __AWS_INTERFACE_10_H__
    00020 #define __AWS_INTERFACE_10_H__
    00021
    00022 #ifdef __AWS_INTERFACE_20_H__
    00023 # error "aws2.h included before aws.h.  You cannot mix and match the two versions!"
    00024 #endif
    00025
    00026
    00027
    00032 #include "csutil/scf.h"
    00033 #include "csutil/refarr.h"
    00034 #include "csutil/stringarray.h"
    00035 #include "csgeom/csrect.h"
    00036 #include "csgeom/vector2.h"
    00037 #include "iutil/event.h"
    00038 #include "iutil/string.h"
    00039
    00040 struct iAws;
    00041 struct iAwsCanvas;
    00042 struct iAwsComponent;
    00043 struct iAwsComponentFactory;
    00044 struct iAwsConnectionNodeFactory;
    00045 struct iAwsKeyFactory;
    00046 struct iAwsParmList;
    00047 struct iAwsPrefManager;
    00048 struct iAwsSink;
    00049 struct iAwsSinkManager;
    00050 struct iAwsSlot;
    00051 struct iAwsSource;
    00052
    00053 typedef iAwsComponent iAwsWindow;
    00054
    00055 class awsWindow;
    00056 class awsComponent;
    00057 class awsComponentNode;
    00058 class awsConnectionNode;
    00059 class awsComponentFactory;
    00060 class awsLayoutManager;
    00061
    00062 struct iEngine;
    00063 struct iEvent;
    00064 struct iFont;
    00065 struct iFontServer;
    00066 struct iGraphics2D;
    00067 struct iGraphics3D;
    00068 struct iObjectRegistry;
    00069 struct iStringSet;
    00070 struct iTextureHandle;
    00071 struct iTextureManager;
    00072 struct iView;
    00073
    00074 const bool aws_debug = false;  // set to true to turn on debugging printf()'s
    00075
    00076 // Use of (void*) to store opaque data is now discouraged in order to properly
    00077 // support 64-bit platforms. For backward compatibility with existing client
    00078 // software, we can still provide (void*) API in addition to the new (intptr_t)
    00079 // API. Ideally, clients should convert away from (void*) usage, but doing so
    00080 // may be a large task, so we enable support for the deprecated API for now.
    00081 // In order to aid clients in the conversion, we provide two controls. If
    00082 // AWS_OBSOLETE_VOIDP is defined by the client, then all methods dealing with
    00083 // (void*) will be removed completely from the API. If AWS_DEPRECATE_VOIDP is
    00084 // defined, then invocations of methods dealing with (void*) will emit warnings
    00085 // (from compilers which support deprecation warnings).
    00086 #ifdef AWS_OBSOLETE_VOIDP
    00087 #define AWS_VOIDP_IS_ERROR
    00088 #endif
    00089 #ifdef AWS_DEPRECATE_VOIDP
    00090 #define AWS_VOIDP_IS_WARNING CS_DEPRECATED_METHOD
    00091 #else
    00092 #define AWS_VOIDP_IS_WARNING
    00093 #endif
    00094
    00105 const int AWSF_AlwaysEraseWindows = 1;
    00106
    00114 const int AWSF_AlwaysRedrawWindows = 2;
    00115
    00121 const int AWSF_RaiseOnMouseOver = 4;
    00122
    00128 const int AWSF_KeyboardControl = 8;
    00129
    00132 SCF_VERSION(iAwsKey, 0, 0, 1);
    00133
    00135 struct iAwsKey : public iBase
    00136 {
    00138   virtual uint8 Type () const = 0;
    00139
    00141   virtual unsigned long Name () const = 0;
    00142 };
    00143
    00144 SCF_VERSION(iAwsIntKey, 0, 0, 1);
    00145
    00147 struct iAwsIntKey : public iAwsKey
    00148 {
    00150   virtual int Value () const = 0;
    00151 };
    00152
    00153 SCF_VERSION(iAwsFloatKey, 0, 0, 1);
    00154
    00156 struct iAwsFloatKey : public iAwsKey
    00157 {
    00159   virtual float Value () const = 0;
    00160 };
    00161
    00162 SCF_VERSION(iAwsStringKey, 0, 0, 1);
    00163
    00165 struct iAwsStringKey : public iAwsKey
    00166 {
    00168   virtual iString* Value () const = 0;
    00169 };
    00170
    00171 SCF_VERSION(iAwsRectKey, 0, 0, 1);
    00172
    00174 struct iAwsRectKey : public iAwsKey
    00175 {
    00177   virtual csRect Value () const = 0;
    00178 };
    00179
    00180 SCF_VERSION(iAwsRGBKey, 0, 0, 1);
    00181
    00183 struct iAwsRGBKey : public iAwsKey
    00184 {
    00185   struct RGB
    00186   {
    00187     unsigned char red, green, blue;
    00188   };
    00189
    00191   virtual const iAwsRGBKey::RGB &Value() const = 0;
    00192 };
    00193
    00194 SCF_VERSION(iAwsPointKey, 0, 0, 1);
    00195
    00197 struct iAwsPointKey : public iAwsKey
    00198 {
    00200   virtual csVector2 Value () const = 0;
    00201 };
    00202
    00203 SCF_VERSION(iAwsConnectionKey, 0, 0, 1);
    00204
    00206 struct iAwsConnectionKey : public iAwsKey
    00207 {
    00209   virtual iAwsSink *Sink () const = 0;
    00210
    00212   virtual unsigned long Trigger () const = 0;
    00213
    00215   virtual unsigned long Signal () const = 0;
    00216 };
    00217
    00218 SCF_VERSION(iAwsKeyContainer, 0, 0, 1);
    00219
    00221 struct iAwsKeyContainer : public iAwsKey
    00222 {
    00224   virtual iAwsKey* Find (iString* name) const = 0;
    00225
    00227   virtual iAwsKey* Find (const char* name) const = 0;
    00228
    00230   virtual iAwsKey *Find (unsigned long id) const = 0;
    00231
    00232   virtual const csRefArray<iAwsKey> &Children () const = 0;
    00233
    00235   virtual void Add (iAwsKey *key) = 0;
    00236
    00238   virtual iAwsKey* GetAt (int i) const = 0;
    00239
    00241   virtual int Length () const = 0;
    00242
    00244   virtual void Remove (iString *name) = 0;
    00246   virtual void Remove (const char* name) = 0;
    00248   virtual void Remove (iAwsKey *key) = 0;
    00250   virtual void RemoveAll () = 0;
    00251
    00256   virtual void Consume (iAwsKeyContainer *c) = 0;
    00257 };
    00258
    00259 SCF_VERSION(iAwsComponentNode, 0, 0, 1);
    00260
    00262 struct iAwsComponentNode : public iAwsKeyContainer
    00263 {
    00265   virtual iString *ComponentTypeName () const = 0;
    00266 };
    00267
    00268
    00273 SCF_VERSION (iAws, 0, 2, 4);
    00274
    00276 struct iAws : public iBase
    00277 {
    00278 public:
    00280   virtual iAwsPrefManager *GetPrefMgr() = 0;
    00281
    00283   virtual iAwsSinkManager *GetSinkMgr() = 0;
    00284
    00286   virtual void SetPrefMgr(iAwsPrefManager *pmgr) = 0;
    00287
    00289   virtual iStringSet* GetStringTable() = 0;
    00290
    00295   virtual void RegisterComponentFactory(iAwsComponentFactory *factory,
    00296     const char* name) = 0;
    00297
    00299   virtual iAwsComponentFactory *FindComponentFactory (const char* name) = 0;
    00300
    00302   virtual iAwsComponent *GetTopComponent() = 0;
    00303
    00305   virtual void SetTopComponent(iAwsComponent *win) = 0;
    00306
    00308   virtual iAwsComponent *GetFocusedComponent() = 0;
    00309
    00311   virtual void SetFocusedComponent(iAwsComponent * _focused) = 0;
    00312
    00314   virtual iAwsComponent *GetKeyboardFocusedComponent() = 0;
    00315
    00317   virtual iAwsComponent* ComponentAt(int x, int y) = 0;
    00318
    00320   virtual bool MouseInComponent(int x, int y) = 0;
    00321
    00326   virtual void Print(iGraphics3D *g3d, uint8 Alpha=0) = 0;
    00327
    00329   virtual void Redraw() = 0;
    00330
    00332   virtual void Mark(const csRect &rect) = 0;
    00333
    00335   virtual void Unmark(const csRect &rect) = 0;
    00336
    00341   virtual void Erase(const csRect &rect) = 0;
    00342
    00347   virtual void MaskEraser(const csRect &rect) = 0;
    00348
    00350   virtual void InvalidateUpdateStore() = 0;
    00351
    00356   virtual void CaptureMouse(iAwsComponent *comp) = 0;
    00357
    00359   virtual void ReleaseMouse() = 0;
    00360
    00362   virtual void SetModal(iAwsComponent *comp) = 0;
    00363
    00365   virtual void UnSetModal() = 0;
    00366
    00368   virtual bool HandleEvent(iEvent&) = 0;
    00369
    00382   virtual bool SetupCanvas (iAwsCanvas *newCanvas, iGraphics2D *g2d=0,
    00383         iGraphics3D *g3d=0) = 0;
    00384
    00386   virtual iAwsCanvas* GetCanvas() = 0;
    00387
    00389   //virtual iAwsCanvas *CreateCustomCanvas(iGraphics2D*, iGraphics3D*) = 0;
    00390
    00392   virtual iGraphics2D *G2D() = 0;
    00393
    00395   virtual iGraphics3D *G3D() = 0;
    00396
    00398   virtual iAwsComponent *CreateWindowFrom(const char* defname) = 0;
    00399
    00401   virtual iAwsComponent *CreateEmbeddableComponent(iAwsComponent *covercomp) = 0;
    00402
    00404   virtual iAwsParmList *CreateParmList() = 0;
    00405
    00411   virtual void CreateTransition(iAwsComponent *win, unsigned transition_type,
    00412         csTicks duration=250) = 0;
    00413
    00420   virtual void CreateTransitionEx(iAwsComponent *win,
    00421         unsigned transition_type, csTicks duration, csRect &user) = 0;
    00422
    00428   virtual void SetFlag(unsigned int flags) = 0;
    00429
    00435   virtual void ClearFlag(unsigned int flags) = 0;
    00436
    00442   virtual unsigned int GetFlags() = 0;
    00443
    00445   virtual iObjectRegistry *GetObjectRegistry () = 0;
    00446
    00448   virtual bool AllWindowsHidden() = 0;
    00449
    00451   virtual bool ComponentIsInTransition(iAwsComponent *win) = 0;
    00452
    00454   virtual void ComponentDestroyed(iAwsComponent *comp) = 0;
    00455
    00457   virtual void DeleteMarkedComponents() = 0;
    00458
    00460   virtual void MarkToDeleteRecursively(iAwsComponent *comp) = 0;
    00461
    00463   csEventID PreProcess;
    00464   csEventID MouseDown;
    00465   csEventID MouseUp;
    00466   csEventID MouseClick;
    00467   csEventID MouseMove;
    00468   csEventID KeyboardDown;
    00469   csEventID KeyboardUp;
    00470
    00471   csEventID MouseEnter;
    00472   csEventID MouseExit;
    00473   csEventID LoseFocus;
    00474   csEventID GainFocus;
    00475   csEventID GroupOff;
    00476   csEventID FrameStart;
    00477 };
    00478
    00479 SCF_VERSION (iAwsPrefManager, 0, 0, 4);
    00480
    00482 struct iAwsPrefManager : public iBase
    00483 {
    00484 public:
    00486   virtual bool Setup(iObjectRegistry *object_reg) = 0;
    00487
    00489   virtual bool Load(const char *def_file) = 0;
    00490
    00492   virtual unsigned long NameToId (const char*name) = 0;
    00493
    00498   virtual bool SelectDefaultSkin (const char* skin_name) = 0;
    00499
    00501   virtual bool LookupIntKey (const char* name, int &val) = 0;
    00502
    00504   virtual bool LookupIntKey(unsigned long id, int &val) = 0;
    00505
    00507   virtual bool LookupStringKey(const char* name, iString *&val) = 0;
    00508
    00510   virtual bool LookupStringKey(unsigned long id, iString *&val) = 0;
    00511
    00513   virtual bool LookupRectKey(const char* name, csRect &rect) = 0;
    00514
    00516   virtual bool LookupRectKey(unsigned long id, csRect &rect) = 0;
    00517
    00519   virtual bool LookupRGBKey(const char* name, unsigned char &red,
    00520         unsigned char &green, unsigned char &blue) = 0;
    00521
    00523   virtual bool LookupRGBKey(unsigned long id, unsigned char &red,
    00524         unsigned char &green, unsigned char &blue) = 0;
    00525
    00527   virtual bool LookupPointKey(const char* name, csVector2 &point) = 0;
    00528
    00530   virtual bool LookupPointKey(unsigned long id, csVector2 &point) = 0;
    00531
    00533   virtual bool GetInt(iAwsComponentNode *node, const char* name, int &val) = 0;
    00534
    00536   virtual bool GetFloat(iAwsComponentNode *, const char* name, float &val) = 0;
    00537
    00539   virtual bool GetRect(iAwsComponentNode *node, const char* name,
    00540         csRect &rect) = 0;
    00541
    00546   virtual bool GetString(iAwsComponentNode *node, const char *name,
    00547         iString* val) = 0;
    00548
    00549
    00551   virtual bool GetRGB(iAwsComponentNode *node, const char* name,
    00552         unsigned char& r, unsigned char& g, unsigned char& b) = 0;
    00553
    00558   virtual iAwsComponentNode *FindWindowDef(const char* name) = 0;
    00559
    00561   virtual iAwsKeyContainer *FindSkinDef(const char* name) = 0;
    00562
    00564   virtual bool RemoveWindowDef (const char *name) = 0;
    00565
    00567   virtual void RemoveAllWindowDefs () = 0;
    00568
    00570   virtual bool RemoveSkinDef (const char *name) = 0;
    00571
    00573   virtual void RemoveAllSkinDefs () = 0;
    00574
    00576   virtual void SetColor(int index, int color) = 0;
    00577
    00579   virtual int  GetColor(int index) = 0;
    00580
    00582   virtual int FindColor(unsigned char r, unsigned char g, unsigned char b) = 0;
    00583
    00585   virtual iFont *GetDefaultFont() = 0;
    00586
    00588   virtual iFont *GetFont(const char* filename) = 0;
    00589
    00591   virtual iTextureHandle *GetTexture(const char* name,
    00592         const char* filename=0) = 0;
    00593
    00598   virtual iTextureHandle *GetTexture (const char* name, const char* filename,
    00599                                       unsigned char key_r,
    00600                                       unsigned char key_g,
    00601                                       unsigned char key_b) = 0;
    00602
    00604   virtual void SetTextureManager(iTextureManager *txtmgr) = 0;
    00605
    00607   virtual void SetFontServer(iFontServer *fntsvr) = 0;
    00608
    00610   virtual void SetDefaultFont(iFont* font) = 0;
    00611
    00613   virtual void SetWindowMgr(iAws *wmgr) = 0;
    00614
    00622   virtual void SetupPalette() = 0;
    00623
    00625   virtual void RegisterConstant(const char* name, int value) = 0;
    00626
    00628   virtual bool ConstantExists(const char* name) = 0;
    00629
    00634   virtual int  GetConstantValue(const char* name) = 0;
    00635
    00637   virtual iAwsKeyFactory *CreateKeyFactory() = 0;
    00638
    00640   virtual iAwsConnectionNodeFactory *CreateConnectionNodeFactory() = 0;
    00641
    00643   virtual void AddCustomStringProperty (const char *prop) = 0;
    00644
    00646   virtual const csStringArray &GetCustomStringProperties() = 0;
    00647 };
    00648
    00649
    00650 SCF_VERSION (iAwsSinkManager, 0, 1, 0);
    00651
    00653 struct iAwsSinkManager : public iBase
    00654 {
    00656   virtual bool Setup(iObjectRegistry *object_reg) = 0;
    00657
    00659   virtual void RegisterSink(const char *name, iAwsSink *sink) = 0;
    00660
    00662   virtual bool RemoveSink (iAwsSink* sink) = 0;
    00663
    00665   virtual iAwsSink* FindSink(const char *name) = 0;
    00666
    00671   virtual iAwsSink *CreateSink(intptr_t parm) = 0;
    00672
    00673 #ifndef AWS_VOIDP_IS_ERROR
    00674
    00680   AWS_VOIDP_IS_WARNING
    00681   virtual iAwsSink *CreateSink(void *parm) = 0;
    00682 #endif
    00683
    00685   virtual iAwsSlot *CreateSlot () = 0;
    00686 };
    00687
    00688
    00689 SCF_VERSION (iAwsSink, 0, 1, 0);
    00690
    00692 struct iAwsSink : public iBase
    00693 {
    00695   virtual unsigned long GetTriggerID(const char *name) = 0;
    00696
    00698   virtual void HandleTrigger(int trigger_id, iAwsSource *source) = 0;
    00699
    00708   virtual void RegisterTrigger(const char *name,
    00709         void (*Trigger)(unsigned long, intptr_t, iAwsSource *)) = 0;
    00710
    00711 #ifndef AWS_VOIDP_IS_ERROR
    00712
    00717   AWS_VOIDP_IS_WARNING
    00718   virtual void RegisterTrigger(const char *name,
    00719         void (*Trigger)(unsigned long, void *, iAwsSource *)) = 0;
    00720 #endif
    00721
    00728   virtual unsigned int GetError() = 0;
    00729 };
    00730
    00731
    00732 SCF_VERSION (iAwsSource, 0, 0, 1);
    00733
    00735 struct iAwsSource : public iBase
    00736 {
    00737   virtual iAws *WindowManager() = 0;
    00738
    00740   virtual iAwsComponent *GetComponent() = 0;
    00741
    00746   virtual bool RegisterSlot(iAwsSlot *slot, unsigned long signal) = 0;
    00747
    00749   virtual bool UnregisterSlot(iAwsSlot *slot, unsigned long signal) = 0;
    00750
    00752   virtual void Broadcast(uint32 signal) = 0;
    00753 };
    00754
    00755
    00756 SCF_VERSION (iAwsSlot, 0, 0, 1);
    00757
    00759 struct iAwsSlot : public iBase
    00760 {
    00766   virtual void Connect(iAwsSource *source, unsigned long signal,
    00767         iAwsSink *sink, unsigned long trigger) = 0;
    00768
    00774   virtual void Disconnect(iAwsSource *source, unsigned long signal,
    00775         iAwsSink *sink, unsigned long trigger) = 0;
    00776
    00780   virtual void Emit(iAwsSource &source, unsigned long signal) = 0;
    00781 };
    00782
    00783 SCF_VERSION(iAwsLayoutManager, 0, 0, 1);
    00784
    00786 struct iAwsLayoutManager : public iBase
    00787 {
    00795   virtual void SetOwner (iAwsComponent *_owner) = 0;
    00796
    00800   virtual csRect AddComponent (iAwsComponent *cmp,
    00801         iAwsComponentNode* settings) = 0;
    00802
    00804   virtual void RemoveComponent(iAwsComponent* ) = 0;
    00805
    00807   virtual void LayoutComponents () = 0;
    00808 };
    00809
    00810 SCF_VERSION (iAwsComponent, 0, 2, 0);
    00811
    00813 struct iAwsComponent : public iAwsSource
    00814 {
    00827   virtual bool Create(iAws* mgr, iAwsComponent* parent,
    00828         iAwsComponentNode* settings) = 0;
    00829
    00831   virtual bool Setup(iAws *wmgr, iAwsComponentNode *settings) = 0;
    00832
    00837   virtual bool HandleEvent(iEvent& Event) = 0;
    00838
    00843   virtual bool GetProperty(const char* name, intptr_t *parm) = 0;
    00844
    00845 #ifndef AWS_VOIDP_IS_ERROR
    00846
    00852   AWS_VOIDP_IS_WARNING
    00853   virtual bool GetProperty(const char* name, void **parm) = 0;
    00854 #endif
    00855
    00860   virtual bool SetProperty(const char* name, intptr_t parm) = 0;
    00861
    00862 #ifndef AWS_VOIDP_IS_ERROR
    00863
    00869   AWS_VOIDP_IS_WARNING
    00870   virtual bool SetProperty(const char* name, void *parm) = 0;
    00871 #endif
    00872
    00874   virtual bool Execute(const char* action, iAwsParmList* parmlist = 0) = 0;
    00875
    00880   virtual void Invalidate() = 0;
    00881
    00883   virtual void Invalidate(csRect area) = 0;
    00884
    00886   virtual csRect Frame() = 0;
    00887
    00889   virtual csRect ClientFrame() = 0;
    00890
    00892   virtual const char *Type() = 0;
    00893
    00899   virtual void SetFlag(unsigned int flag) = 0;
    00900
    00906   virtual void ClearFlag(unsigned int flag) = 0;
    00907
    00913   virtual unsigned int Flags() = 0;
    00914
    00916   virtual iAws *WindowManager () = 0;
    00917
    00919   virtual iAwsComponent *Parent() = 0;
    00920
    00922   virtual iAwsComponent *Window() = 0;
    00923
    00925   virtual iAwsLayoutManager *Layout() = 0;
    00926
    00928   virtual void SetParent(iAwsComponent *parent) = 0;
    00929
    00931   virtual void SetLayout(iAwsLayoutManager *layout) = 0;
    00932
    00934   virtual void AddToLayout(iAwsComponent *cmp, iAwsComponentNode *settings) = 0;
    00935
    00937   virtual csRect getPreferredSize() = 0;
    00938
    00940   virtual void setPreferredSize (const csRect& size) = 0;
    00941
    00943   virtual void clearPreferredSize () = 0;
    00944
    00946   virtual csRect getMinimumSize() = 0;
    00947
    00949   virtual csRect getInsets() = 0;
    00950
    00952   virtual bool Overlaps(csRect &r) = 0;
    00953
    00955   virtual bool isHidden() = 0;
    00956
    00958   virtual void SetFocusable(bool _focusable) = 0;
    00959
    00961   virtual bool Focusable() = 0;
    00962
    00964   virtual bool isFocused() = 0;
    00965
    00967   virtual bool IsMaximized() = 0;
    00968
    00970   virtual void Hide() = 0;
    00971
    00973   virtual void Show() = 0;
    00974
    00976   virtual void SetFocus() = 0;
    00977
    00979   virtual void UnsetFocus() = 0;
    00980
    00982   virtual void Move(int delta_x, int delta_y) = 0;
    00983
    00985   virtual void MoveTo(int x, int y) = 0;
    00986
    00988   virtual void Resize(int width, int height) = 0;
    00989
    00991   virtual void ResizeTo(csRect newFrame) = 0;
    00992
    00994   virtual void Maximize() = 0;
    00995
    00997   virtual void UnMaximize() = 0;
    00998
    01000   virtual void LayoutChildren() = 0;
    01001
    01003   virtual bool isDeaf() = 0;
    01004
    01006   virtual void SetDeaf (bool bDeaf) = 0;
    01007
    01009   virtual unsigned long GetID() = 0;
    01010
    01015   virtual void SetID(unsigned long _id) = 0;
    01016
    01018   virtual iAwsComponent *FindChild(const char *name) = 0;
    01019
    01021   virtual iAwsComponent *DoFindChild(unsigned id) = 0;
    01022
    01024   virtual iAwsComponent* ChildAt(int x, int y) = 0;
    01025
    01027   virtual void AddChild(iAwsComponent* child) = 0;
    01028
    01030   virtual void RemoveChild(iAwsComponent *child) = 0;
    01031
    01033   virtual int GetChildCount() = 0;
    01034
    01036   virtual iAwsComponent *GetTopChild() = 0;
    01037
    01039   virtual iAwsComponent *ComponentAbove() = 0;
    01040
    01042   virtual iAwsComponent *ComponentBelow() = 0;
    01043
    01045   virtual void SetComponentAbove(iAwsComponent *comp) = 0;
    01046
    01048   virtual void SetComponentBelow(iAwsComponent *comp) = 0;
    01049
    01055   virtual bool AddToTabOrder(iAwsComponent *child) = 0;
    01056
    01061   virtual iAwsComponent *TabNext(iAwsComponent *child) = 0;
    01062
    01067   virtual iAwsComponent *TabPrev(iAwsComponent *child) = 0;
    01068
    01070   virtual int GetTabLength() = 0;
    01071
    01073   virtual iAwsComponent *GetTabComponent(int index) = 0;
    01074
    01076   virtual iAwsComponent *GetFirstFocusableChild(iAwsComponent *comp) = 0;
    01077
    01079   virtual void Raise() = 0;
    01080
    01082   virtual void Lower() = 0;
    01083
    01085   virtual bool HasChildren() = 0;
    01086
    01088   virtual void SetRedrawTag(unsigned int tag) = 0;
    01089
    01091   virtual unsigned int RedrawTag() = 0;
    01092
    01094   virtual void OnDraw(csRect clip) = 0;
    01095
    01097   virtual bool OnMouseDown(int button, int x, int y) = 0;
    01098
    01100   virtual bool OnMouseUp(int button, int x, int y) = 0;
    01101
    01103   virtual bool OnMouseMove(int button, int x, int y) = 0;
    01104
    01106   virtual bool OnMouseClick(int button, int x, int y) = 0;
    01107
    01109   virtual bool OnMouseDoubleClick(int button, int x, int y) = 0;
    01110
    01112   virtual bool OnMouseExit() = 0;
    01113
    01115   virtual bool OnMouseEnter() = 0;
    01116
    01118   virtual bool OnKeyboard (const csKeyEventData& eventData) = 0;
    01119
    01121   virtual bool OnLostFocus() = 0;
    01122
    01124   virtual bool OnGainFocus() = 0;
    01125
    01127   virtual bool OnFrame() = 0;
    01128
    01130   virtual void OnAdded() = 0;
    01131
    01133   virtual void OnResized() = 0;
    01134
    01136   virtual void OnChildMoved() = 0;
    01137
    01139   virtual void OnRaise() = 0;
    01140
    01142   virtual void OnLower() = 0;
    01143
    01145   virtual void OnChildHide() = 0;
    01146
    01148   virtual void OnChildShow() = 0;
    01149
    01151   virtual void OnSetFocus() = 0;
    01152
    01154   virtual void OnUnsetFocus() = 0;
    01155
    01156   /* Only awsComponent should make use of the funcs below. Nothing else =) */
    01157
    01159   virtual void Unlink() = 0;
    01160
    01162   virtual void LinkAbove(iAwsComponent* comp) = 0;
    01163
    01165   virtual void LinkBelow(iAwsComponent* comp) = 0;
    01166
    01168   virtual void SetTopChild(iAwsComponent* child) = 0;
    01169
    01171   virtual void MarkToDelete() = 0;
    01172
    01174   virtual bool GetMarkToDelete() = 0;
    01175 };
    01176
    01177
    01178 SCF_VERSION (iAwsComponentFactory, 0, 0, 2);
    01179
    01181 struct iAwsComponentFactory : public iBase
    01182 {
    01184   virtual iAwsComponent *Create() = 0;
    01185
    01187   virtual void Register(const char *type) = 0;
    01188
    01190   virtual void RegisterConstant(const char *name, int value) = 0;
    01191 };
    01192
    01193
    01194 SCF_VERSION (iAwsKeyFactory, 0, 0, 4);
    01195
    01197 struct iAwsKeyFactory : public iBase
    01198 {
    01203    virtual void Initialize(const char* name, const char* component_type) = 0;
    01205    virtual void AddToWindowList(iAwsPrefManager *pm) = 0;
    01207    virtual void AddFactory(iAwsKeyFactory *factory) = 0;
    01209    virtual void AddIntKey (const char* name, int v) = 0;
    01211    virtual void AddStringKey (const char* name, const char* v) = 0;
    01213    virtual void AddRectKey (const char* name, csRect v) = 0;
    01215    virtual void AddRGBKey (const char* name, unsigned char r,
    01216         unsigned char g, unsigned char b) = 0;
    01218    virtual void AddPointKey (const char* name, csVector2 v) = 0;
    01220    virtual void AddConnectionKey (const char* name, iAwsSink *s,
    01221         unsigned long t, unsigned long sig) = 0;
    01223    virtual void AddConnectionNode (iAwsConnectionNodeFactory *node) = 0;
    01224
    01225    virtual iAwsComponentNode* GetThisNode () = 0;
    01226 };
    01227
    01228 SCF_VERSION (iAwsConnectionNodeFactory, 0, 0, 1);
    01229
    01231 struct iAwsConnectionNodeFactory : public iBase
    01232 {
    01234   virtual void Initialize () = 0;
    01236   virtual void AddConnectionKey (
    01237                  const char* name,
    01238                  iAwsSink *s,
    01239                  unsigned long t,
    01240                  unsigned long sig) = 0;
    01241
    01243   virtual awsConnectionNode* GetThisNode () = 0;
    01244 };
    01245
    01246 /* @} */
    01247
    01248 #endif // __CS_IAWS_AWS_H__