fbcontrols.h

Go to the documentation of this file.
00001 #ifndef __FBCONTROLS_H__
00002 #define __FBCONTROLS_H__
00003 /**************************************************************************
00004 Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005 All Rights Reserved.
00006 
00007 The coded instructions, statements, computer programs, and/or related 
00008 material (collectively the "Data") in these files contain unpublished 
00009 information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010 protected by Canada and United States of America federal copyright law 
00011 and by international treaties.
00012 
00013 The Data may not be disclosed or distributed to third parties, in whole 
00014 or in part, without the prior written consent of Autodesk, Inc. 
00015 ("Autodesk").
00016 
00017 THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018 ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019 WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020 ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021 OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022 PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023 WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024 FREE.
00025 
00026 IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027 OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028 EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029 DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030 OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031 DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032 LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033 LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034 DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035 BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
00036 
00037 **************************************************************************/
00038 
00047 #include <kaydaradef.h>
00048 #ifndef FBSDK_DLL
00049 
00050 #define FBSDK_DLL K_DLLEXPORT
00051 #endif
00052 
00053 #include <fbsdk/fbcomponent.h>
00054 
00055 K_FORWARD( IKtLayoutRegion );
00056 K_FORWARD( IKtObject );
00057 K_FORWARD( IKtView );
00058 
00059 class QWidget;
00060 
00061 #ifdef FBSDKUseNamespace
00062     namespace FBSDKNamespace {
00063 #endif
00064 
00065 FB_DEFINE_COMPONENT( FBSDK_DLL, Layout              );
00066 FB_DEFINE_COMPONENT( FBSDK_DLL, VisualComponent     );
00067 FB_DEFINE_COMPONENT( FBSDK_DLL, View                );
00068 
00069 #ifdef K_DISABLE_UI //{
00070 
00071 #else // }{
00072 
00073 FB_DEFINE_COMPONENT( FBSDK_DLL, TreeNode            );
00074 
00076 #define SPLIT_WIDTH             10
00077 
00086 #define FBRegisterControl( ClassName, Path, Label, Description, IconFilename ) \
00087     HIObject RegisterControl##ClassName( HIObject /*pOwner*/,const char * /*pName*/,void * /*pData*/) \
00088 {\
00089     ClassName *Class = new ClassName; \
00090     return Class->GetHIObject(); \
00091 } \
00092     FBLibraryModule( ClassName )\
00093 {\
00094     FBRegisterObject( ClassName,Path,Label,Description,RegisterControl##ClassName, true, IconFilename );\
00095     FBRegisterObject( ClassName##1,"FBSDK",Label,Description,RegisterControl##ClassName, true, IconFilename );\
00096 }
00097 
00099 // General
00101 
00103 enum FBOrientation { 
00104     kFBHorizontal,      
00105     kFBVertical         
00106 };
00107 
00108 FB_DEFINE_ENUM( FBSDK_DLL, Orientation ); 
00109 
00110 #endif //K_DISABLE_UI
00111 
00112 
00114 // Input type, modifiers, and keys
00117 enum FBInputType {
00118     kFBKeyPress,            
00119     kFBKeyRelease,          
00120     kFBButtonPress,         
00121     kFBButtonRelease,       
00122     kFBMotionNotify,        
00123     kFBButtonDoubleClick,   
00124     kFBMouseEnter,          
00125     kFBMouseLeave,          
00126     kFBMouseWheelNotify,    
00127     kFBDragging,            
00128     kFBDropping,            
00129     kFBKeyPressRaw,         
00130     kFBKeyReleaseRaw,       
00131     kFBUnknownInput         
00132 };
00133 
00135 enum FBInputModifier {  
00136     kFBKeyNone  = 0,        
00137     kFBKeyShift = 1 << 0,   
00138     kFBKeyCtrl  = 1 << 1,   
00139     kFBKeyAlt   = 1 << 2    
00140 };  
00141 
00143 enum FBInputKey     {   
00144     kFBKeyReturn    = 0x0D,         
00145     kFBKeyBackSpace = 0x08,         
00146     kFBKeyTab       = 0x09,         
00147     kFBKeyEscape    = 0x1B,         
00148 
00149     kFBKeyPageUp    = 0x121,        
00150     kFBKeyPageDown  = 0x122,        
00151     kFBKeyEnd       = 0x123,        
00152     kFBKeyHome      = 0x124,        
00153     kFBKeyLeft      = 0x125,        
00154     kFBKeyUp        = 0x126,        
00155     kFBKeyRight     = 0x127,        
00156     kFBKeyDown      = 0x128,        
00157 
00158     kFBKeyIns       = 0x12D,        
00159     kFBKeyDel       = 0x12E,        
00160 
00161     kFBKeyF1        = 0x170,        
00162     kFBKeyF2        = 0x171,        
00163     kFBKeyF3        = 0x172,        
00164     kFBKeyF4        = 0x173,        
00165     kFBKeyF5        = 0x174,        
00166     kFBKeyF6        = 0x175,        
00167     kFBKeyF7        = 0x176,        
00168     kFBKeyF8        = 0x177,        
00169     kFBKeyF9        = 0x178,        
00170     kFBKeyF10       = 0x179,        
00171     kFBKeyF11       = 0x17A,        
00172     kFBKeyF12       = 0x17B         
00173 };
00174 
00175 FB_DEFINE_ENUM( FBSDK_DLL, InputType        );
00176 FB_DEFINE_ENUM( FBSDK_DLL, InputModifier    );
00177 FB_DEFINE_ENUM( FBSDK_DLL, InputKey         );
00178 
00180 enum FBColorIndex
00181 {
00182     // "Traditional" colors
00183     kFBColorIndexBackground,    
00184     kFBColorIndexBackground1,   
00185     kFBColorIndexForeground,    
00186     kFBColorIndexForeground1,   
00187     kFBColorIndexForeground2,   
00188     kFBColorIndexAlternate1,    
00189     kFBColorIndexAlternate2,    
00190     kFBColorIndexHighlight,     
00191     kFBColorIndexShadow,        
00192     kFBColorIndexWhite,         
00193     kFBColorIndexBlack,         
00194     kFBColorIndexLtGray,        
00195     kFBColorIndexGray,          
00196     kFBColorIndexDkGray,        
00197     kFBColorIndexRed,           
00198     kFBColorIndexGreen,         
00199     kFBColorIndexBlue,          
00200     // Colors to be defined and used by skins
00201     kFBColorIndexStdButton1,    
00202     kFBColorIndexStdButton2,    
00203     kFBColorIndexFlatButtonActive1, 
00204     kFBColorIndexFlatButtonActive2, 
00205     kFBColorIndexFlatButtonPassive1,
00206     kFBColorIndexFlatButtonPassive2,
00207     kFBColorIndexStdCheckboxClear1,
00208     kFBColorIndexStdCheckboxClear2,
00209     kFBColorIndexStdCheckboxAmbig1,
00210     kFBColorIndexStdCheckboxAmbig2,
00211     kFBColorIndexStdCheckboxDisabled1,
00212     kFBColorIndexStdCheckboxDisabled2,
00213     kFBColorIndexStdField1,     
00214     kFBColorIndexStdField2,     
00215     kFBColorIndexStdScrollActive1,      
00216     kFBColorIndexStdScrollActive2,      
00217     kFBColorIndexStdScrollPassive1,     
00218     kFBColorIndexStdScrollPassive2,     
00219     kFBColorIndexStdScrollCursor,       
00220     kFBColorIndexStdListBg1,            
00221     kFBColorIndexStdListBgSelected1,    
00222     kFBColorIndexStdListBgSelected2,    
00223     kFBColorIndexStdListBgFocusSelected1,   
00224     kFBColorIndexStdListText,           
00225     kFBColorIndexStdListTextSelected,   
00226     kFBColorIndexStdListTextDragover,   
00227     kFBColorIndexStdListLine,           
00228     kFBColorIndexStdTabActive1,         
00229     kFBColorIndexStdTabActive2,         
00230     kFBColorIndexStdTabPassive1,        
00231     kFBColorIndexStdTabPassive2,        
00232     kFBColorIndexFlatTabBg1,            
00233     kFBColorIndexFlatTabTextSelected,   
00234     kFBColorIndexDisabled1,             
00235     kFBColorIndexDisabled2,             
00236     kFBColorIndexSelected,              
00237     kFBColorIndexTimelineOutside,       
00238     kFBColorIndexTimelineOutside1,      
00239     kFBColorIndexTimelineCenter,        
00240     kFBColorIndexTimelineCenter1,       
00241     kFBColorIndexTimelineCenter2,       
00242     kFBColorIndexTimelineShadow,        
00243     kFBColorIndexTimelineHighlight,     
00244     kFBColorIndexTimelineManipulator,       
00245     kFBColorIndexStdListBgFocusSelected2,
00246     kFBColorIndexTreeBgTitle,           
00247     kFBColorIndexTreeBgSubtitle,        
00248     kFBColorIndexTreeBgSubtitleLine,    
00249     kFBColorIndexTreeBgNode,            
00250     kFBColorIndexTreeEditboxBg,         
00251     kFBColorIndexTreeSplitter,          
00252     kFBColorIndexTreeKeyingGroup,       
00253     kFBColorIndexTreeOddRow,            
00254     kFBColorIndexTreeSelect,            
00255     kFBColorIndexTreeKeyingSelect,      
00256     kFBColorIndexDkGreen,               
00257     // Total number of colors
00258     kFBColorIndexSize                   
00259 };
00260 
00261 
00262 #ifndef K_DISABLE_UI
00263 
00265 // FBVisualComponent
00267 __FB_FORWARD( FBLayout );
00268 __FB_FORWARD( FBVisualComponent );
00269 
00270 FB_FORWARD( FBStringList );
00271 
00272 FB_DEFINE_COMPONENT( FBSDK_DLL, FBVisualComponent );
00273 
00275 enum FBAttachType { 
00276     kFBAttachLeft,      
00277     kFBAttachRight,     
00278     kFBAttachTop,       
00279     kFBAttachBottom,    
00280     kFBAttachWidth,     
00281     kFBAttachHeight,    
00282     kFBAttachCenter,    
00283     kFBAttachNone       
00284 };
00285 FB_DEFINE_ENUM( FBSDK_DLL, AttachType ); 
00286 
00288 enum FBBorderStyle {    
00289     kFBNoBorder,                    
00290     kFBStandardBorder,              
00291     kFBEmbossBorder,                
00292     kFBEmbossSmoothBorder,          
00293     kFBEmbossEdgeSmoothBorder,      
00294     kFBEmbossSmoothEdgeBorder,      
00295     kFBStandardSmoothBorder,        
00296     kFBStandardEdgeSmoothBorder,    
00297     kFBStandardSmoothEdgeBorder,    
00298     kFBHighlightBorder,             
00299     kFBPickingBorder                
00300 };
00301 FB_DEFINE_ENUM( FBSDK_DLL, BorderStyle ); // FBPropertyBorderStyle 
00302 
00306 class FBSDK_DLL FBVisualComponent : public FBComponent {
00307     __FBClassDeclare( FBVisualComponent,FBComponent );
00308 protected:
00309     friend class FBLayout;
00310     friend class FBRenderer;
00311 
00315     virtual HIKtObject GetHIKtObject();
00316 public:
00318     FBVisualComponent(HIObject pObject);
00319 
00320     IObject_Declare(K_IMPLEMENTATION);      // Interface to IObject
00321     ICallback_Declare(K_IMPLEMENTATION);        // Interface to ICallback
00322 
00326     virtual HIKtView GetKtView();
00327 
00331     QWidget* GetQWidgetAddress();
00332 
00338     virtual bool AddChild( FBVisualComponent* pChild,int pId=0);
00339 
00344     virtual FBVisualComponent* GetChild( int pId=0 );
00345 
00349     virtual void Refresh(bool pNow=false);
00350 
00352     virtual void ViewExpose();
00353 
00361     virtual void ViewInput(int pMouseX,int pMouseY,FBInputType pAction,int pButtonKey,int pModifier);
00362 
00366     virtual bool IsView();
00367 
00371     struct __Region
00372     {        
00373         FBPropertyString            Name;       
00374 
00375         FBPropertyInt               X;          
00376         FBPropertyInt               Y;          
00377         FBPropertyInt               Width;      
00378         FBPropertyInt               Height;     
00379 
00381         struct FBSDK_DLL __Ratio
00382         {
00383             FBPropertyFloat         X;      
00384             FBPropertyFloat         Y;      
00385             FBPropertyFloat         Width;  
00386             FBPropertyFloat         Height; 
00387         } Ratio;
00388 
00390         struct FBSDK_DLL __AttachType
00391         {
00392             FBPropertyAttachType    X;      
00393             FBPropertyAttachType    Y;      
00394             FBPropertyAttachType    Width;  
00395             FBPropertyAttachType    Height; 
00396         } AttachType;
00397 
00399         struct FBSDK_DLL __AttachTo
00400         {
00401             FBPropertyVisualComponent   X;      
00402             FBPropertyVisualComponent   Y;      
00403             FBPropertyVisualComponent   Width;  
00404             FBPropertyVisualComponent   Height; 
00405         } AttachTo;
00406 
00408         struct FBSDK_DLL __Pos
00409         {
00410             FBPropertyInt   X[2];           
00411             FBPropertyInt   Y[2];           
00412         } Position;
00413 
00414     } Region;
00415 
00417     struct FBSDK_DLL __Border
00418     {
00419         FBPropertyString        Caption;            
00420         FBPropertyBool          ShowCaption;        
00421         FBPropertyBorderStyle   Style;              
00422         FBPropertyBool          InSet;              
00423         FBPropertyInt           Width;              
00424         FBPropertyInt           Spacing;            
00425         FBPropertyFloat         MaxAngle;           
00426         FBPropertyInt           CornerRadius;       
00427     } Border;
00428 
00429     FBPropertyString            Caption;            
00430     FBPropertyBool              Visible;            
00431     FBPropertyBool              ReadOnly;           
00432     FBPropertyBool              Enabled;            
00433     FBPropertyString            Hint;               
00434 
00435     FBPropertyInt               Left;               
00436     FBPropertyInt               Top;                
00437     FBPropertyInt               Width;              
00438     FBPropertyInt               Height;             
00439 
00440     FBPropertyEvent             OnEnter;            
00441     FBPropertyEvent             OnExit;             
00442 };
00443 
00444 
00446 // FBEventInput
00448 __FB_FORWARD( FBEventInput );
00449 
00451 class FBSDK_DLL FBEventInput : public FBEvent 
00452 {
00453 public:
00457     FBEventInput( HKEventBase pEvent );     
00458 
00459     FBPropertyInputType InputType;          
00460     FBPropertyInt       X;                  
00461     FBPropertyInt       Y;                  
00462     FBPropertyInt       MouseButton;        
00463     FBPropertyInt       Key;                
00464     FBPropertyInt       KeyState;           
00465     FBPropertyInt       Pressure;           
00466     FBPropertyInt       MouseWheelDelta;    
00467 };
00468 
00470 // FBEventTransaction
00472 __FB_FORWARD( FBEventTransaction );
00473 
00475 class FBSDK_DLL FBEventTransaction : public FBEvent
00476 {
00477 public:
00478     FBPropertyBool      IsBeginTransaction;     
00479 
00483     FBEventTransaction( HKEventBase pEvent);
00484 };
00486 // FBEventDragAndDrop
00488 //__FB_FORWARD( FBDragAndDrop );
00489 __FB_FORWARD( FBEventDragAndDrop );
00490 
00492 enum FBDragAndDropState {   
00493     kFBDragAndDropBegin,    
00494     kFBDragAndDropDrag,     
00495     kFBDragAndDropDrop,     
00496     kFBDragAndDropEnd,      
00497     kFBDragOnEmpty,         
00498     kFBDragOnEmptyDrop      
00499 };
00500 
00501 FB_DEFINE_ENUM( FBSDK_DLL, DragAndDropState ); 
00502 
00504 class FBSDK_DLL FBEventDragAndDrop : public FBEvent 
00505 {
00506 public:
00510     FBEventDragAndDrop ( HKEventBase pEvent );
00511 
00512     virtual ~FBEventDragAndDrop(){}
00513 
00518     virtual void Accept();
00519 
00524     virtual void Add( FBComponent* pComponent, int pId=0);
00525 
00530     virtual FBComponent* Get( int pIndex );
00531 
00533     virtual void Clear();           
00534 
00538     virtual int GetCount();
00539 
00540     //-- Properties
00541     FBPropertyDragAndDropState  State;      
00542     FBPropertyInt               PosX;       
00543     FBPropertyInt               PosY;       
00544     FBPropertykReference        Data[2];    
00545 };
00546 
00548 // FBEventShow
00550 __FB_FORWARD( FBEventShow );
00551 
00553 class FBSDK_DLL FBEventShow : public FBEvent 
00554 {
00555 public:
00559     FBEventShow( HKEventBase pEvent );      
00560 
00561     FBPropertyBool  Shown;      
00562 };
00563 
00565 // FBEventActivate
00567 __FB_FORWARD( FBEventActivate );
00568 
00570 class FBSDK_DLL FBEventActivate : public FBEvent 
00571 {
00572 public:
00576     FBEventActivate( HKEventBase pEvent );
00577 
00578     FBPropertykReference Data;              
00579 };
00580 
00582 // FBEventExpose
00584 __FB_FORWARD( FBEventExpose );
00585 
00587 class FBSDK_DLL FBEventExpose : public FBEvent 
00588 {
00589 public:
00593     FBEventExpose( HKEventBase pEvent );
00594 
00595     //FBGeometry* Data;             //!< <b>Read Write Property:</b> Generic data of event.
00596 };
00597 
00599 // FBEventResize
00601 __FB_FORWARD( FBEventResize );
00602 
00604 class FBSDK_DLL FBEventResize : public FBEvent 
00605 {
00606 public:
00610     FBEventResize( HKEventBase pEvent );
00611 
00612     FBPropertyInt Width;    
00613     FBPropertyInt Height;   
00614 };
00615 
00617 // FBEventMenu
00619 __FB_FORWARD(FBEventMenu);
00620 __FB_FORWARD(FBMenuItem);
00621 
00626 #define FBMenuItemDeclare( ClassName,Parent ) \
00627     FBClassDeclare( ClassName,Parent ); \
00628 public: \
00629     ClassName():Parent() { FBClassInit; FBCreate(); } \
00630 private:
00631 
00635 #define FBMenuItemImplementation( ThisComponent ) \
00636     FBClassImplementation( ThisComponent )
00637 
00641 #define FBRegisterMenuItem( ClassName ) \
00642     HIObject RegisterMenuItem##ClassName( HIObject /*pOwner*/,const char * /*pName*/,void * /*pData*/) \
00643 {\
00644     return NULL;\
00645 }\
00646     FBLibraryModule( ClassName )    \
00647 {   \
00648 }   \
00649     ClassName* g##ClassName;
00650 
00654 #define FBMenuItemActivation( ClassName )   \
00655     extern ClassName* g##ClassName;         \
00656     g##ClassName = new ClassName;           \
00657     g##ClassName->Activate();
00658 
00663 #define FBMenuItemHandle( ClassName, Handle )   \
00664     extern ClassName* g##ClassName;             \
00665     Handle = g##ClassName;
00666 
00668 enum FBMenuItemType {   
00669     kFBMenuItemMotionImport,    
00670     kFBMenuItemSceneImport,     
00671     kFBMenuItemMotionExport,    
00672     kFBMenuItemSceneExport      
00673 };
00674 
00675 FB_DEFINE_ENUM( FBSDK_DLL, MenuItemType );
00676 
00678 class FBSDK_DLL FBEventMenu : public FBEvent
00679 {
00680 public:
00681     FBPropertyInt       Id;         
00682     FBPropertyString    Name;       
00683 
00687     FBEventMenu( HKEventBase pEvent);
00688 };
00689 
00691 class FBSDK_DLL FBMenuItem : public FBVisualComponent
00692 {
00693     __FBClassDeclare( FBMenuItem, FBVisualComponent );
00694 
00695 public:
00697     FBMenuItem();
00698 
00705     void Set(FBMenuItemType pType, const char* pExtension, const char* pLabel, const char* pDescription);
00706 
00710     bool IsActive();
00711 
00719     void Activate( bool pState = true );
00720 
00726     virtual void OnItemSelectEvent(HIRegister pSender, HKEvent pEvent);
00727 
00728 public:
00729     FBPropertyComponent         Component;          
00730     FBPropertyString            Extension;          
00731     FBPropertyString            Label;              
00732     FBPropertyString            Description;        
00733     FBPropertyMenuItemType      Type;               
00734 
00735     FBPropertyString            Path;               
00736 
00737 public:
00745     virtual bool Execute(const char *pFilename=NULL)    = 0;
00746 };
00747 
00749 // FBLayout
00751 
00776 class FBSDK_DLL FBLayout : public FBVisualComponent {
00777     __FBClassDeclare( FBLayout,FBVisualComponent );
00778 public:
00779 
00781     enum FBSplitStyle 
00782     {   
00783         kFBNoSplit  = 0,    
00784         kFBHSplit   = 1,    
00785         kFBVSplit   = 2,    
00786         kFBHVSplit  = 3     
00787     };
00788 
00790     FBLayout(HIObject pObject=NULL);
00791 
00818     virtual bool AddRegion( const char *pName,  const char *pTitle,
00819         int pX, FBAttachType pXType,    const char *pXRelative, float pMultX,
00820         int pY, FBAttachType pYType,    const char *pYRelative, float pMultY,
00821         int pW, FBAttachType pWType,    const char *pWRelative, float pMultW,
00822         int pH, FBAttachType pHType,    const char *pHRelative, float pMultH);
00823 
00830     virtual bool MoveRegion( const char *pName, int pX, int pY );
00831 
00838     virtual bool SizeRegion( const char *pName, int pW, int pH );
00839 
00844     virtual bool RemoveRegion( const char *pName );
00845 
00851     virtual bool RenameRegion( const char *pOldName, const char *pNewName );
00852 
00857     virtual bool GetRegion( const char *pName );
00858 
00868     virtual bool GetRegionPositions (   const char *pName,  bool pComputed,
00869         int *pX,        int *pY, 
00870         int *pW=NULL,   int *pH=NULL    );
00871 
00873 
00878     virtual bool SetControl( const char *pName, FBVisualComponent* pComponent );
00879     virtual bool SetControl( const char *pName, FBVisualComponent &pComponent );
00881 
00885     virtual void ClearControl(const char *pName);
00886 
00891     virtual FBVisualComponent* GetControl(const char *pName);
00892 
00897     virtual HIKtObject GetHIKtObject( const char *pName );
00898 
00904     virtual bool SetHIKtView( const char *pName, HIKtView pView );
00905 
00911     virtual HIKtView GetHIKtView( const char *pName );
00912 
00914 
00919     virtual bool SetView( const char *pName, FBVisualComponent* pComponent );
00920     virtual bool SetView( const char *pName, FBVisualComponent &pComponent );
00922 
00934     virtual bool SetBorder  (   const char *pName,  FBBorderStyle pType,    bool pShowTitle,
00935         bool pInSet,        int pWidth,             int pSpacing,
00936         float pMaxAngle,    int pCornerRadius );
00937 
00943     virtual bool SetSplitStyle ( const char *pName, FBSplitStyle pRegionType );
00944 
00949     virtual FBSplitStyle GetSplitStyle ( const char *pName );
00950 
00956     virtual bool SetRegionTitle ( const char *pName, const char* pTitle );
00957 
00961     void SetAutoRestructure( bool pAutoRestructure );
00962 
00966     void Restructure( bool pNoMove );
00967 
00968     IObject_Declare(K_IMPLEMENTATION);      // Interface to IObject.
00969 
00970     //--- Events
00971     FBPropertyEvent     OnInput;        
00972     FBPropertyEvent     OnPaint;        
00973     FBPropertyEvent     OnIdle;         
00974     FBPropertyEvent     OnShow;         
00975     FBPropertyEvent     OnResize;       
00976 };
00977 
00979 // FBTabPanel
00981 __FB_FORWARD( FBTabPanel );
00982 
00984 class FBSDK_DLL FBTabPanel : public FBVisualComponent {
00985     __FBClassDeclare( FBTabPanel,FBVisualComponent );
00986 public:
00988     FBTabPanel();
00989 
00990     FBPropertyStringList    Items;          
00991     FBPropertyInt           ItemIndex;      
00992     FBPropertyInt           TabStyle;       
00993     FBPropertyLayout        Layout;         
00994     FBPropertyEvent         OnChange;       
00995 };
00996 
00998 // FBButton
01000 __FB_FORWARD( FBButton );
01001 
01005 enum FBButtonStyle {    
01006     kFBPushButton,      
01007     kFBBitmapButton,    
01008     kFBRadioButton,     
01009     kFB2States,         
01010     kFBCheckbox=kFB2States,     
01011     kFBBitmap2States    
01012 };
01013 
01017 enum FBButtonState {
01018     kFBButtonState0,    
01019     kFBButtonState1     
01020 };
01021 
01022 FB_DEFINE_ENUM( FBSDK_DLL, ButtonStyle ); 
01023 
01025 enum FBTextJustify {    
01026     kFBTextJustifyLeft,     
01027     kFBTextJustifyRight,    
01028     kFBTextJustifyCenter    
01029 };
01030 
01031 FB_DEFINE_ENUM( FBSDK_DLL, TextJustify );
01032 
01034 enum FBTextStyle {  
01035     kFBTextStyleNone        = 0,        
01036     kFBTextStyleBold        = 1 << 0,       
01037     kFBTextStyleItalic      = 1 << 1,       
01038     kFBTextStyleUnderlined  = 1 << 2    
01039 };
01040 
01041 FB_DEFINE_ENUM( FBSDK_DLL, TextStyle );
01042 
01044 enum FBButtonLook {
01045     kFBLookNormal,
01046     kFBLookColorChange,
01047     kFBLookPush,
01048     kFBLookFlat,
01049     kFBLookAlphaBackground=99
01050 };
01051 
01052 FB_DEFINE_ENUM( FBSDK_DLL, ButtonLook ); 
01053 
01060 class FBSDK_DLL FBButton : public FBVisualComponent {
01061     __FBClassDeclare( FBButton,FBVisualComponent );
01062 public:
01064     FBButton();
01065 
01071     FBColor GetStateColor( FBButtonState pState );
01072 
01077     void    SetStateColor( FBButtonState pState, const FBColor& pColor );
01078 
01085     void    SetImageFileNames( const char* pUpImage, const char* pDownImage = 0, const char* pThirdImage = 0, bool pFromResources = false );
01086 
01090     void    HookToButton(FBButton* pButton);
01091 
01092     FBPropertyInt           State;          
01093     FBPropertyButtonStyle   Style;          
01094     FBPropertyTextJustify   Justify;        
01095     FBPropertyButtonLook    Look;           
01096 
01097     FBPropertyEvent         OnClick;        
01098     FBPropertyEvent         OnDragAndDrop;  
01099 };
01100 
01102 // FBArrowButton
01104 __FB_FORWARD( FBArrowButton );
01105 
01112 class FBSDK_DLL FBArrowButton : public FBVisualComponent {
01113     __FBClassDeclare( FBArrowButton, FBVisualComponent );
01114 public:
01116     FBArrowButton();
01117 
01125     void SetContent( const char* pTitle, FBVisualComponent* pContent, int pContentWidth, int pContentHeight );
01126 };
01127 
01129 // FBScrollBox
01131 __FB_FORWARD( FBScrollBox);
01132 
01139 class FBSDK_DLL FBScrollBox : public FBVisualComponent {
01140     __FBClassDeclare( FBScrollBox, FBVisualComponent );
01141 public:
01143     FBScrollBox();
01144 
01148     void SetContentWidth( int pContentWidth );
01149 
01153     void SetContentHeight(int pContentHeight );
01154 
01159     FBLayout* GetContent();
01160 private:
01161     FBLayout mLayout;
01162 };
01163 
01164 
01166 // FBLabel
01168 __FB_FORWARD( FBLabel );
01169 
01171 class FBSDK_DLL FBLabel : public FBVisualComponent {
01172     __FBClassDeclare( FBLabel,FBVisualComponent );
01173 public:
01175     FBLabel();
01176 
01181     void SetTextColor(const FBColorAndAlpha& pColorRGBA);
01182 
01187     void SetBackgroundDrawing(bool pDrawBackGround);
01188 
01189     FBPropertyTextJustify   Justify;        
01190     FBPropertyTextStyle     Style;          
01191     FBPropertyBool          WordWrap;       
01192 };
01193 
01195 // FBImageContainer
01197 __FB_FORWARD( FBImageContainer );
01198 
01200 class FBSDK_DLL FBImageContainer : public FBVisualComponent {
01201     __FBClassDeclare( FBImageContainer,FBVisualComponent );
01202 public:
01204     FBImageContainer();
01205 
01206     FBPropertyString        Filename;       
01207     FBPropertyInt           ImageWidth;     
01208     FBPropertyInt           ImageHeight;    
01209 
01210     FBPropertyEvent         OnDragAndDrop;  
01211 };
01212 
01214 // FBEdit
01216 __FB_FORWARD( FBEdit );
01217 
01219 class FBSDK_DLL FBEdit : public FBVisualComponent {
01220     __FBClassDeclare( FBEdit,FBVisualComponent );
01221 public:
01223     FBEdit(HIObject pObject=NULL);
01224 
01225     FBPropertyString        Text;           
01226     FBPropertyBool          PasswordMode;   
01227 
01228     FBPropertyEvent         OnChange;       
01229     FBPropertyEvent         OnTransaction;  
01230 };
01231 
01233 // FBEditNumber
01235 __FB_FORWARD( FBEditNumber );
01236 
01238 class FBSDK_DLL FBEditNumber : public FBVisualComponent {
01239     __FBClassDeclare( FBEditNumber,FBVisualComponent );
01240 public:
01242     FBEditNumber();
01243 
01244     FBPropertyDouble        Value;          
01245     FBPropertyDouble        Min;            
01246     FBPropertyDouble        Max;            
01247     FBPropertyDouble        Precision;      
01248     FBPropertyDouble        LargeStep;      
01249     FBPropertyDouble        SmallStep;      
01250 
01251     FBPropertyEvent         OnChange;       
01252 };
01253 
01255 // FBEditColor
01257 __FB_FORWARD( FBEditColor );
01258 
01260 class FBSDK_DLL FBEditColor : public FBVisualComponent {
01261     __FBClassDeclare( FBEditColor,FBVisualComponent );
01262 public:
01264     FBEditColor();
01265 
01266     FBPropertyColor         Value;          
01267     FBPropertyInt           ColorMode;      
01268 
01269     FBPropertyEvent         OnChange;       
01270 };
01271 
01273 // FBEditVector
01275 __FB_FORWARD( FBEditVector );
01276 
01278 class FBSDK_DLL FBEditVector : public FBVisualComponent {
01279     __FBClassDeclare( FBEditVector,FBVisualComponent );
01280 public:
01282     FBEditVector();
01283 
01284     FBPropertyVector3d      Value;          
01285 
01286     FBPropertyEvent         OnChange;       
01287 };
01288 
01289 __FB_FORWARD( FBEventDblClick );
01290 
01292 class FBSDK_DLL FBEventDblClick : public FBEvent
01293 {
01294 public:
01298     FBEventDblClick( HKEventBase pEvent );      
01299 
01300     FBPropertyInt       Selection;  
01301 };
01302 
01304 // FBList
01306 __FB_FORWARD( FBList );
01307 
01309 enum FBListStyle { 
01310     kFBDropDownList,    
01311     kFBVerticalList     
01312 };
01313 
01314 FB_DEFINE_ENUM( FBSDK_DLL, ListStyle ); // FBPropertyListStyle
01315 
01317 class FBSDK_DLL FBList : public FBVisualComponent {
01318     __FBClassDeclare( FBList,FBVisualComponent );
01319 public:
01321     FBList();
01322 
01323     FBPropertyStringList    Items;          
01324 
01325     FBPropertyInt           ItemIndex;      
01326     FBPropertyBool          MultiSelect;    
01327     FBPropertyBool          ExtendedSelect; 
01328     FBPropertyListStyle     Style;          
01329 
01330     FBPropertyEvent         OnChange;       
01331     FBPropertyEvent         OnDragAndDrop;  
01332 
01337     virtual bool IsSelected( int pIndex );
01338 
01343     virtual void Selected( int pIndex, bool pSelected );
01344 };
01345 
01347 // FBSlider
01349 __FB_FORWARD( FBSlider );
01350 
01352 class FBSDK_DLL FBSlider : public FBVisualComponent {
01353     __FBClassDeclare( FBSlider,FBVisualComponent );
01354 public:
01356     FBSlider();
01357 
01358     FBPropertyDouble        Min;                
01359     FBPropertyDouble        Max;                
01360     FBPropertyDouble        Value;              
01361     FBPropertyOrientation   Orientation;        
01362     FBPropertyDouble        LargeStep;          
01363     FBPropertyDouble        SmallStep;          
01364 
01365     FBPropertyEvent         OnChange;           
01366     FBPropertyEvent         OnTransaction;      
01367 };
01368 
01370 // FBLayoutRegion
01372 __FB_FORWARD( FBLayoutRegion );
01373 
01375 class FBSDK_DLL FBLayoutRegion : public FBVisualComponent {
01376     __FBClassDeclare( FBLayoutRegion,FBVisualComponent );
01377 public:
01379     FBLayoutRegion();
01380 };
01381 
01383 // FBThermometer
01385 __FB_FORWARD( FBThermometer );
01386 
01388 class FBSDK_DLL FBThermometer : public FBVisualComponent {
01389     __FBClassDeclare( FBThermometer,FBVisualComponent );
01390 public:
01392     FBThermometer();
01393 
01394     FBPropertyFloat     Min;            
01395     FBPropertyFloat     Max;            
01396     FBPropertyFloat     Value;          
01397 
01401     void Clear();
01402 };
01403 
01405 // FBSpread
01407 __FB_FORWARD( FBSpread );
01408 
01410 enum FBCellStyle  { 
01411     kFBCellStyleDefault,        
01412     kFBCellStyleString,         
01413     kFBCellStyleDouble,         
01414     kFBCellStyleInteger,        
01415     kFBCellStyleButton,         
01416     kFBCellStyle2StatesButton,  
01417     kFBCellStyle3StatesButton,  
01418     kFBCellStyleMenu,           
01419     kFBCellStyleVoid,           
01420     kFBCellStyleView,           
01421     kFBCellStyleTime            
01422 };
01423 
01424 FB_DEFINE_ENUM( FBSDK_DLL, CellStyle ); // FBPropertyCellStyle
01425 
01426 __FB_FORWARD( FBSpreadPart );
01427 
01431 class FBSDK_DLL FBSpreadPart : public FBComponent {
01432     __FBClassDeclare( FBSpreadPart,FBComponent );
01433 protected:
01438     FBSpreadPart( FBSpread* pParent );
01439 
01440 public:
01441     FBPropertyInt           Row;            
01442     FBPropertyInt           Column;         
01443     FBPropertyBool          ReadOnly;       
01444     FBPropertyBool          Enabled;        
01445     FBPropertyCellStyle     Style;          
01446     FBPropertyTextJustify   Justify;        
01447 
01451     FBSpread* GetSpread();
01452 };
01453 
01454 __FB_FORWARD( FBSpreadCell );
01455 
01457 class FBSDK_DLL FBSpreadCell : public FBSpreadPart {
01458     __FBClassDeclare( FBSpreadCell, FBSpreadPart );
01459 public:
01460 
01466     FBSpreadCell( FBSpread* pParent, kReference pRow, int pCol );
01467 };
01468 
01469 __FB_FORWARD( FBSpreadRow );
01470 
01472 class FBSDK_DLL FBSpreadRow : public FBSpreadPart {
01473     __FBClassDeclare( FBSpreadRow,FBSpreadPart );
01474 public:
01479     FBSpreadRow( FBSpread* pParent, kReference pRow );
01480 
01482     virtual void Remove();
01483 
01488     virtual bool EditCaption();
01489 
01490     FBPropertyString        Caption;        
01491     FBPropertykReference    Parent;         
01492     FBPropertyBool          RowSelected;    
01493 };
01494 
01495 __FB_FORWARD( FBSpreadColumn );
01496 
01498 class FBSDK_DLL FBSpreadColumn : public FBSpreadPart {
01499     __FBClassDeclare( FBSpreadColumn,FBSpreadPart );
01500 public:
01505     FBSpreadColumn( FBSpread* pParent, int pCol );
01506 
01507     FBPropertyString        Caption;        
01508     FBPropertyInt           Width;          
01509     FBPropertyTextJustify   Justify;        
01510 };
01511 
01513 class FBSDK_DLL FBSpread : public FBVisualComponent {
01514     __FBClassDeclare( FBSpread,FBVisualComponent );
01515 public:
01518     FBSpread();
01519 
01520     FBPropertyString        Caption;        
01521     FBPropertykReference    Row;            
01522     FBPropertyInt           Column;         
01523     FBPropertyBool          MultiSelect;    
01524 
01525     FBPropertyEvent         OnCellChange;   
01526     FBPropertyEvent         OnRowClick;     
01527     FBPropertyEvent         OnColumnClick;  
01528     FBPropertyEvent         OnDragAndDrop;  
01529 
01534     virtual void RowAdd( const char * pString, kReference pRef=0 );
01535 
01539     virtual void RowSort( bool pAscending=true );
01540 
01545     virtual void ColumnAdd( const char * pString, kReference pRef=0 );
01546 
01550     virtual FBSpreadCell GetCurrentCell();
01551 
01557     virtual FBSpreadCell GetCell( kReference pRef,int pColumn );
01558 
01563     virtual FBSpreadColumn GetColumn( int pColumn );
01564 
01569     virtual FBSpreadRow GetRow( kReference pRef );
01570 
01576     virtual void SetCell( kReference pRef,int pColumn, const char*        pString );
01577 
01579 
01584     virtual void SetCell( kReference pRef,int pColumn, int          pValue );
01585     virtual void SetCell( kReference pRef,int pColumn, kLongLong    pValue );
01586     virtual void SetCell( kReference pRef,int pColumn, double       pValue );
01588 
01594     virtual void GetCell( kReference pRef,int pColumn, const char* &pString );
01595 
01597 
01602     virtual void GetCell( kReference pRef,int pColumn, int          &pValue );
01603     virtual void GetCell( kReference pRef,int pColumn, kLongLong    &pValue );
01604     virtual void GetCell( kReference pRef,int pColumn, double       &pValue );
01606 
01612     virtual void SetCellView( kReference pRef,int pColumn, HIKtView pView );
01613 
01619     virtual void GetCellView( kReference pRef,int pColumn, HIKtView &pView );
01620 
01624     virtual void Clear();
01625 };
01626 
01627 __FB_FORWARD( FBEventSpread );
01628 
01630 class FBSDK_DLL FBEventSpread : public FBEvent 
01631 {
01632 public:
01636     FBEventSpread( HKEventBase pEvent );
01637 
01638     FBPropertyInt Row;              
01639     FBPropertyInt Column;           
01640 
01644     FBPropertyInt Action;
01645 };
01646 
01648 // FBVisualContainer
01650 __FB_FORWARD( FBVisualContainer );
01651 __FB_FORWARD( FBImage );
01652 
01654 enum FBIconPosition {   
01655     kFBIconLeft,        
01656     kFBIconTop,         
01657 };
01658 
01659 FB_DEFINE_ENUM( FBSDK_DLL, IconPosition ); // FBPropertyIconPosition
01660 
01662 class FBSDK_DLL FBVisualContainer : public FBVisualComponent {
01663     __FBClassDeclare( FBVisualContainer,FBVisualComponent );
01664 public:
01667     FBVisualContainer();
01668 
01675     bool ItemIconSet( kReference pRef, FBImage* pImage, bool pUseACopyOfTheImage=true );
01676 
01683     K_DEPRECATED_2014 virtual bool ItemIconSet( kReference pRef, FBImageContainer* pImage, bool pUseACopyOfTheImage=true );
01684 
01690     virtual bool ItemIconSet( kReference pRef, const char *pFilename );
01691 
01696     virtual bool ItemNameEdit( kReference pRef );
01697 
01701     virtual int GetSelection();
01702 
01703     FBPropertyStringList    Items;                  
01704 
01705     FBPropertyInt           ItemIndex;              
01706     FBPropertyOrientation   Orientation;            
01707     FBPropertyBool          ItemWrap;               
01708     FBPropertyIconPosition  IconPosition;           
01709     FBPropertyInt           ItemWidth;              
01710     FBPropertyInt           ItemHeight;             
01711 
01712     FBPropertyEvent         OnChange;               
01713     FBPropertyEvent         OnDblClick;             
01714     FBPropertyEvent         OnDragAndDrop;          
01715 };
01716 
01718 // FBEditTimeCode
01720 __FB_FORWARD( FBEditTimeCode );
01721 
01722 class FBSDK_DLL FBEditTimeCode : public FBVisualComponent {
01723     __FBClassDeclare( FBEditTimeCode,FBVisualComponent );
01724 public:
01727     FBEditTimeCode();
01728 
01729     FBPropertyTime          Value;          
01730 
01731     FBPropertyEvent         OnChange;       
01732 };
01733 
01735 // FBTree
01737 __FB_FORWARD( FBTreeNode        );
01738 __FB_FORWARD( FBTree            );
01739 
01741 // FBEventTreeClick
01743 __FB_FORWARD( FBEventTree );
01744 
01746 enum FBEventTreeWhy
01747 {
01748     kFBEventTreeExpand,
01749     kFBEventTreeCollapse,
01750     kFBEventTreeHideNode,
01751     kFBEventTreeUnhideNode
01752 };
01753 
01754 FB_DEFINE_ENUM( FBSDK_DLL, EventTreeWhy ); // FBPropertyEventTreeWhy
01755 
01757 class FBSDK_DLL FBEventTree : public FBEvent 
01758 {
01759 public:
01763     FBEventTree( HKEventBase pEvent );
01764 
01765     FBPropertyEventTreeWhy  Why;        
01766     FBPropertyTreeNode      TreeNode;   
01767 };
01768 
01769 __FB_FORWARD( FBEventTreeSelect );
01770 
01772 class FBSDK_DLL FBEventTreeSelect : public FBEvent 
01773 {
01774 public:
01778     FBEventTreeSelect( HKEventBase pEvent );
01779     FBPropertyTreeNode TreeNode;            
01780 };
01781 
01783 class FBSDK_DLL FBTreeNode : public FBComponent 
01784 {
01785     __FBClassDeclare( FBTreeNode,FBComponent );
01786 public:
01791     FBTreeNode(FBTree* pTree, HIObject pObject);
01792 
01793     FBPropertykReference    Reference;      
01794     FBPropertyBool          Checked;        
01795 };
01796 
01798 class FBSDK_DLL FBPropertyListTreeNode: public FBPropertyBaseList< FBTreeNode* >
01799 {
01800 private:
01801     FBArrayTemplate< FBTreeNode* > mItems;
01802 
01803 public:
01804     FBPropertyListTreeNode();
01805 
01806     virtual ~FBPropertyListTreeNode();
01807 
01808     virtual void Refresh ();
01809 
01814     virtual int Add( FBTreeNode* pNode );
01815 
01819     virtual void RemoveAt( int pIndex );
01820 
01825     virtual FBTreeNode* operator[]( int pIndex );
01826 
01830     virtual int GetCount ();
01831 };
01832 
01834 class FBSDK_DLL FBTree : public FBVisualComponent 
01835 {
01836     __FBClassDeclare( FBTree,FBVisualComponent );
01837 public:
01839     FBTree();
01840 
01844     FBTreeNode* GetRoot();
01845 
01848     void Clear();
01849 
01855     FBTreeNode* InsertLast( FBTreeNode* pNode, const char* pName );
01856 
01857     FBPropertyEvent     OnSelect;           
01858 
01859     FBPropertyEvent     OnClick;            
01860     FBPropertyEvent     OnClickCheck;       
01861     FBPropertyEvent     OnDblClick;         
01862     FBPropertyEvent     OnDeselect;         
01863     FBPropertyEvent     OnExpanded;         
01864     FBPropertyEvent     OnExpanding;        
01865     FBPropertyEvent     OnCollapsed;        
01866     FBPropertyEvent     OnCollapsing;       
01867     FBPropertyEvent     OnChange;           
01868     FBPropertyEvent     OnDragAndDrop;      
01869     FBPropertyEvent     OnEditNode;         
01870 
01871     FBPropertyInt           SelectedCount;      
01872     FBPropertyInt           VisibleItemCount;   
01873     FBPropertyBool          AllowExpansion;     
01874     FBPropertyBool          AllowCollapse;      
01875     FBPropertyBool          MultiDrag;          
01876     FBPropertyBool          AutoScroll;         
01877     FBPropertyInt           Indent;             
01878     FBPropertyBool          CheckBoxes;         
01879     FBPropertyBool          ShowLines;          
01880     FBPropertyInt           ItemHeight;         
01881     FBPropertyBool          MultiSelect;        
01882     FBPropertyBool          EditNodeOn2Select;  
01883     FBPropertyInt           TreeHeight;         
01884     FBPropertyInt           TreeWidth;          
01885     FBPropertyBool          SelectionActive;    
01886     FBPropertyBool          DeselectOnCollapse; 
01887     FBPropertyBool          NoSelectOnDrag;     
01888     FBPropertyBool          NoSelectOnRightClick;  
01889     FBPropertyBool          HighlightOnRightClick; 
01890     FBPropertyBool          AutoScrollOnExpand;    
01891     FBPropertyBool          AutoExpandOnDragOver;  
01892     FBPropertyBool          AutoExpandOnDblClick;  
01893     FBPropertyListTreeNode  SelectedNodes;         
01894 };
01895 
01897 // FBView
01899 __FB_FORWARD( FBView );
01900 
01902 class FBSDK_DLL FBView : public FBVisualComponent {
01903     __FBClassDeclare( FBView,FBVisualComponent );
01904 public:
01907     FBView();
01908 
01909     IObject_Declare(K_IMPLEMENTATION);  // Interface to IObject
01910 
01914     virtual void Refresh(bool pNow=false);
01915 
01919     virtual bool IsView();
01920 
01927     virtual void DrawString(const char *pText,float pX,float pY, int pEnable=-1);
01928 
01936     virtual bool SetViewport(int pX,int pY,int pW,int pH);
01937 
01938     FBPropertyBool      GraphicOGL;     
01939     FBPropertyBool      DoubleBuffer;   
01940 };
01941 
01943 // FBProgress
01945 __FB_FORWARD( FBProgress );
01946 
01948 class FBSDK_DLL FBProgress : public FBVisualComponent {
01949     __FBClassDeclare( FBProgress,FBVisualComponent );
01950 public:
01953     FBProgress();
01954 
01957     void ProgressBegin();
01960     void ProgressDone();
01961 
01965     bool UserRequestCancell();
01966 
01967     FBPropertyString    Caption;    
01968     FBPropertyString    Text;       
01969     FBPropertyInt       Percent;    
01970 };
01971 
01973 // FBPopup
01975 __FB_FORWARD( FBPopup );
01976 
01980 class FBSDK_DLL FBPopup : public FBLayout {
01981     __FBClassDeclare( FBPopup,FBLayout );
01982 public:
01985     FBPopup();
01986 
01991     virtual bool Show( FBVisualComponent* pParent=NULL );
01992 
01996     virtual void Close(bool pOk=false);
01997 
01998     FBPropertyString        Caption;    
01999     FBPropertyBool          Modal;      
02000 };
02001 
02003 // FBFilePopup
02005 __FB_FORWARD( FBFilePopup );
02006 
02008 enum FBFilePopupStyle { 
02009     kFBFilePopupOpen,       
02010     kFBFilePopupSave        
02011 };
02012 
02013 FB_DEFINE_ENUM( FBSDK_DLL, FilePopupStyle ); // FBPropertyFilePopupStyle
02014 
02016 class FBSDK_DLL FBFilePopup : public FBVisualComponent {
02017     __FBClassDeclare( FBFilePopup,FBVisualComponent );
02018 public:
02021     FBFilePopup();
02022 
02026     virtual bool Execute();
02027 
02028     FBPropertyString            Caption;        
02029     FBPropertyString            FileName;       
02030     FBPropertyString            Path;           
02031     FBPropertyString            FullFilename;   
02032     FBPropertyString            Filter;         
02033     FBPropertyFilePopupStyle    Style;          
02034 };
02035 
02037 // FBFolderPopup
02039 __FB_FORWARD( FBFolderPopup );
02040 
02042 class FBSDK_DLL FBFolderPopup : public FBVisualComponent {
02043     __FBClassDeclare( FBFolderPopup,FBVisualComponent );
02044 public:
02047     FBFolderPopup();
02048 
02052     virtual bool Execute();
02053 
02054     FBPropertyString            Caption;        
02055     FBPropertyString            Path;           
02056 };
02057 
02070 FBSDK_DLL int FBMessageBox( const char* pBoxTitle, const char* pMessage, const char* pButton1Str, const char* pButton2Str=NULL, const char* pButton3Str=NULL, int pDefaultButton=0, int pScrolledMessage=0);
02071 
02086 FBSDK_DLL int FBMessageBoxWithCheck( const char* pBoxTitle, const char* pMessage, const char* pButton1Str, const char* pButton2Str, const char* pButton3Str, const char* pCheckBoxStr, bool& pCheckBoxValue, int pDefaultButton=0, int pScrolledMessage=0);
02087 
02089 enum FBPopupInputType{
02090     kFBPopupBool,       
02091     kFBPopupChar,       
02092     kFBPopupString,     
02093     kFBPopupInt,        
02094     kFBPopupFloat,      
02095     kFBPopupDouble,     
02096     kFBPopupPassword    
02097 };
02098 
02114 FBSDK_DLL int FBMessageBoxGetUserValue( const char* pBoxTitle, const char* pMessage, void* pValue, FBPopupInputType pValueType, const char* pButton1Str, const char* pButton2Str=NULL, const char* pButton3Str=NULL, int pDefaultButton=0, bool pLastButtonCancel = true );
02115 
02117 // FBMemo
02119 __FB_FORWARD( FBMemo );
02120 
02122 class FBSDK_DLL FBMemo : public FBEdit {
02123     __FBClassDeclare( FBMemo,FBEdit );
02124 public:
02126     FBMemo();
02127 
02131     void SetStrings(FBStringList* pLines);
02132 
02136     void GetStrings(FBStringList* pLines);
02137 };
02138 
02140 // FBWebView
02142 __FB_FORWARD( FBWebView );
02143 
02145 class FBSDK_DLL FBWebView : public FBVisualComponent {
02146     __FBClassDeclare( FBWebView,FBVisualComponent );
02147 public:
02149     FBWebView();
02150 
02154     void Load(const char* pURL);
02155 };
02156 
02157 
02159 // FBFCurveEditor
02161 __FB_FORWARD( FBFCurveEditor );
02162 
02164 class FBSDK_DLL FBFCurveEditor : public FBVisualComponent {
02165     __FBClassDeclare( FBFCurveEditor,FBVisualComponent );
02166 public:
02168     FBFCurveEditor();
02169 
02173     void AddAnimationNode(FBAnimationNode* pNode);
02177     void RemoveAnimationNode(FBAnimationNode* pNode);
02178 
02182     void AddProperty(FBPropertyAnimatable* pProperty);
02186     void RemoveProperty(FBPropertyAnimatable* pProperty);
02187 
02190     void Clear();
02191 };
02192 
02194 // FBPropertyConnectionEditor
02196 __FB_FORWARD( FBPropertyConnectionEditor );
02197 
02199 class FBSDK_DLL FBPropertyConnectionEditor : public FBVisualComponent {
02200     __FBClassDeclare( FBPropertyConnectionEditor,FBVisualComponent );
02201 public:
02203     FBPropertyConnectionEditor();
02204 
02207     void PopupTree();
02208 
02211     void PopupList();
02212 
02213     FBPropertyReference Property;   
02214 };
02215 
02217 // FBEditProperty
02219 __FB_FORWARD( FBEditProperty );
02220 
02263 class FBSDK_DLL FBEditProperty : public FBVisualComponent {
02264     __FBClassDeclare( FBEditProperty, FBVisualComponent );
02265 public:
02267     FBEditProperty();
02268 
02269     FBPropertyReference Property;   
02270 
02271     FBPropertyDouble    SliderMin;  
02272     FBPropertyDouble    SliderMax;  
02273     FBPropertyDouble    SmallInc;   
02274     FBPropertyDouble    LargeInc;   
02275     FBPropertyDouble    Precision;  
02276     FBPropertyInt       CaptionSize;
02277 };
02278 
02279 
02281 // FBEditPropertyModern
02283 __FB_FORWARD( FBEditPropertyModern );
02284 
02291 class FBSDK_DLL FBEditPropertyModern : public FBVisualComponent {
02292     __FBClassDeclare( FBEditPropertyModern, FBVisualComponent );
02293 public:
02295     FBEditPropertyModern();
02296 
02301     void SetBackgroundColorIndex( FBColorIndex pIndex );
02302 
02303     FBPropertyReference Property;   
02304 
02305     FBPropertyDouble    SliderMin;  
02306     FBPropertyDouble    SliderMax;  
02307     FBPropertyDouble    SmallInc;   
02308     FBPropertyDouble    LargeInc;   
02309     FBPropertyDouble    Precision;  
02310 };
02311 
02313 // FBBrowsingProperty
02315 __FB_FORWARD( FBBrowsingProperty );
02316 
02318 class FBSDK_DLL FBBrowsingProperty : public FBVisualComponent {
02319     __FBClassDeclare( FBBrowsingProperty,FBVisualComponent );
02320 public:
02323     FBBrowsingProperty();
02324 
02328     void AddObject(FBPlug* pObject);
02329 
02333     void RemoveObject(FBPlug* pObject);
02334 
02338     int ObjectGetCount();
02339 
02344     FBPlug* ObjectGet(int pIndex);
02345 
02352     int AddButtonInToolbar(const char* pCaption, HICallback pOwner, kICallbackHandler pHandler);
02353 
02354 };
02355 
02357 // FBWidgetHolder
02359 __FB_FORWARD( FBWidgetHolder );
02360 
02361 
02374 class FBSDK_DLL FBWidgetHolder : public FBVisualComponent {
02375     __FBClassDeclare( FBWidgetHolder, FBVisualComponent );
02376 public:
02377 
02379     typedef QWidget* (*WidgetCreator)(QWidget* pParent);
02380 
02383     FBWidgetHolder();
02384 
02392     void SetCreator(WidgetCreator pCreatorFunction );
02393 
02397     virtual QWidget* WidgetCreate(QWidget* pParent);
02398 };
02399 
02401 // FBPlotPopup
02403 FB_FORWARD( FBPlotOptions );
02404 __FB_FORWARD( FBPlotPopup );
02405 
02407 class FBSDK_DLL FBPlotPopup : public FBVisualComponent {
02408     __FBClassDeclare( FBPlotPopup,FBVisualComponent );
02409 public:
02412     FBPlotPopup();
02413 
02417     virtual bool Popup(const char* pWindowName);
02418 
02422     FBPlotOptions   GetPlotOptions();
02423 
02424     FBPropertyBool          EnablePlotTranslationOnRootOnly;    
02425     FBPropertyBool          EnableSmartPlotControls;            
02426     FBPropertyBool          EnablePlotCharacterExtension;       
02427     FBPropertyBool          EnablePlotLockedProperties;         
02428 };
02429 
02431 // FBPropertyViewManager, FBPropertyViewList and FBPropertyViewDefinition
02433 FB_FORWARD( FBPropertyViewList  );
02434 FB_FORWARD( FBPropertyViewDefinition    );
02435 __FB_FORWARD( FBPropertyViewManager     );
02436 
02438 enum FBPropertyViewType
02439 {
02440     kFBViewGlobal = 0,      
02441     kFBViewByObjectType,    
02442     kFBViewByObject         
02443 };
02444 
02448 class FBSDK_DLL FBPropertyViewList
02449 {
02450 public:
02452     bool IsEditable();
02453 
02459     FBPropertyViewDefinition* AddPropertyView(FBProperty* pProperty, const char* pHierarchy);
02460 
02465     bool RemovePropertyView(FBPropertyViewDefinition* pPropertyViewDefinition);
02466 
02468     FBPropertyViewDefinition* FindPropertyView(const char* pPropertyName);
02469 private:
02471 
02472     FBPropertyViewList();
02474     FBPropertyViewList(const FBPropertyViewList &);
02476     FBPropertyViewList & operator =(const FBPropertyViewList &);
02478 };
02479 
02483 class FBSDK_DLL FBPropertyViewDefinition 
02484 {
02485 public:
02487     bool IsOpen();
02489     bool IsSaved();
02491     bool IsFolder(); 
02492     
02494     void SetOpen(bool pTrue, bool pApplyUpHierarchy);
02496     void SetSaved(bool pTrue, bool pApplyUpHierarchy);
02497 
02498 private:
02500 
02501     FBPropertyViewDefinition();
02503     FBPropertyViewDefinition(const FBPropertyViewDefinition &);
02505     FBPropertyViewDefinition & operator =(const FBPropertyViewDefinition &);
02507 };
02508 
02515 class FBSDK_DLL FBPropertyViewManager : public FBComponent 
02516 {
02517     __FBClassDeclare( FBPropertyViewManager, FBComponent );
02518 
02519 public:
02520     // ----- VIEW LIST ----- 
02521 
02528     FBPropertyViewList* CreatePropertyList(FBComponent* pObject, FBPropertyViewType pViewType, const char* pName);
02529 
02536     bool RemovePropertyList(FBComponent* pObject, FBPropertyViewType pViewType, const char* pName);
02537 
02544     FBPropertyViewList* FindPropertyList(FBComponent* pObject, FBPropertyViewType pViewType, const char* pName);
02545 
02546     // ----- GLOBAL VIEW (ALL) ----- 
02547 
02555     FBPropertyViewDefinition* AddPropertyView(const char* pClassName, const char* pPropertyName, const char* pHierarchy);
02556     
02563     bool RemovePropertyView(const char* pClassName, const char* pPropertyName);
02564 
02571     void HidePropertyView(const char* pClassName, const char* pPropertyName, bool pHide);
02572 
02573     // ----- REFRESH ----- 
02574 
02577     void RefreshPropertyViews();
02578 
02582     static FBPropertyViewManager& TheOne();
02583 
02584 private:
02589     FBPropertyViewManager(HIObject pObject=NULL);
02590 };
02591 
02592 #endif //}
02593 
02594 #ifdef FBSDKUseNamespace
02595 }
02596 #endif
02597 
02598 #endif