lltexturectrl.h

Go to the documentation of this file.
00001 
00033 #ifndef LL_LLTEXTURECTRL_H
00034 #define LL_LLTEXTURECTRL_H
00035 
00036 #include "llcoord.h"
00037 #include "llfloater.h"
00038 #include "llstring.h"
00039 #include "lluictrl.h"
00040 #include "llpermissionsflags.h"
00041 
00042 class LLButton;
00043 class LLFloaterTexturePicker;
00044 class LLInventoryItem;
00045 class LLTextBox;
00046 class LLViewBorder;
00047 class LLViewerImage;
00048 
00049 // used for setting drag & drop callbacks.
00050 typedef BOOL (*drag_n_drop_callback)(LLUICtrl*, LLInventoryItem*, void*);
00051 
00053 // LLTextureCtrl
00054 
00055 
00056 class LLTextureCtrl
00057 : public LLUICtrl
00058 {
00059 public:
00060         typedef enum e_texture_pick_op
00061         {
00062                 TEXTURE_CHANGE,
00063                 TEXTURE_SELECT,
00064                 TEXTURE_CANCEL
00065         } ETexturePickOp;
00066 
00067 public:
00068         LLTextureCtrl(
00069                 const std::string& name, const LLRect& rect,
00070                 const std::string& label,
00071                 const LLUUID& image_id,
00072                 const LLUUID& default_image_id, 
00073                 const std::string& default_image_name );
00074         virtual ~LLTextureCtrl();
00075 
00076         // LLView interface
00077         virtual LLXMLNodePtr getXML(bool save_children = true) const;
00078         static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
00079 
00080         virtual BOOL    handleMouseDown(S32 x, S32 y, MASK mask);
00081         virtual BOOL    handleDragAndDrop(S32 x, S32 y, MASK mask,
00082                                                 BOOL drop, EDragAndDropType cargo_type, void *cargo_data,
00083                                                 EAcceptance *accept,
00084                                                 LLString& tooltip_msg);
00085         virtual BOOL    handleHover(S32 x, S32 y, MASK mask);
00086         virtual BOOL    handleUnicodeCharHere(llwchar uni_char);
00087 
00088         virtual void    draw();
00089         virtual void    setVisible( BOOL visible );
00090         virtual void    setEnabled( BOOL enabled );
00091 
00092         virtual BOOL    isDirty() const;
00093         virtual void    resetDirty();
00094 
00095         void                    setValid(BOOL valid);
00096 
00097         // LLUICtrl interface
00098         virtual void    clear();
00099 
00100         // Takes a UUID, wraps get/setImageAssetID
00101         virtual void    setValue(const LLSD& value );
00102         virtual LLSD    getValue() const;
00103 
00104         // LLTextureCtrl interface
00105         void                    showPicker(BOOL take_focus);
00106         void                    setLabel(const LLString& label);
00107         const LLString& getLabel() const                                                        { return mLabel; }
00108 
00109         void                    setAllowNoTexture( BOOL b )                                     { mAllowNoTexture = b; }
00110         bool                    getAllowNoTexture() const                                       { return mAllowNoTexture; }
00111 
00112         const LLUUID&   getImageItemID() { return mImageItemID; }
00113 
00114         void                    setImageAssetID(const LLUUID &image_asset_id);
00115         const LLUUID&   getImageAssetID() const                                         { return mImageAssetID; }
00116 
00117         void                    setDefaultImageAssetID( const LLUUID& id )      { mDefaultImageAssetID = id; }
00118 
00119         const LLString& getDefaultImageName() const                                     { return mDefaultImageName; }
00120         const LLUUID&   getDefaultImageAssetID() const                          { return mDefaultImageAssetID; }
00121 
00122         void                    setCaption(const LLString& caption);
00123         void                    setCanApplyImmediately(BOOL b);
00124 
00125         void                    setImmediateFilterPermMask(PermissionMask mask)
00126                                         { mImmediateFilterPermMask = mask; }
00127         void                    setNonImmediateFilterPermMask(PermissionMask mask)
00128                                         { mNonImmediateFilterPermMask = mask; }
00129         PermissionMask  getImmediateFilterPermMask() { return mImmediateFilterPermMask; }
00130         PermissionMask  getNonImmediateFilterPermMask() { return mNonImmediateFilterPermMask; }
00131 
00132         void                    closeFloater();
00133 
00134         void                    onFloaterClose();
00135         void                    onFloaterCommit(ETexturePickOp op);
00136 
00137         // This call is returned when a drag is detected. Your callback
00138         // should return TRUE if the drag is acceptable.
00139         void setDragCallback(drag_n_drop_callback cb)   { mDragCallback = cb; }
00140 
00141         // This callback is called when the drop happens. Return TRUE if
00142         // the drop happened - resulting in an on commit callback, but not
00143         // necessariliy any other change.
00144         void setDropCallback(drag_n_drop_callback cb)   { mDropCallback = cb; }
00145 
00146         void setOnCancelCallback(LLUICtrlCallback cb)   { mOnCancelCallback = cb; }
00147         
00148         void setOnSelectCallback(LLUICtrlCallback cb)   { mOnSelectCallback = cb; }
00149 
00150 private:
00151         BOOL allowDrop(LLInventoryItem* item);
00152         BOOL doDrop(LLInventoryItem* item);
00153 
00154 private:
00155         drag_n_drop_callback     mDragCallback;
00156         drag_n_drop_callback     mDropCallback;
00157         LLUICtrlCallback                 mOnCancelCallback;
00158         LLUICtrlCallback                 mOnSelectCallback;
00159         LLPointer<LLViewerImage> mTexturep;
00160         LLColor4                                 mBorderColor;
00161         LLUUID                                   mImageItemID;
00162         LLUUID                                   mImageAssetID;
00163         LLUUID                                   mDefaultImageAssetID;
00164         LLString                                 mDefaultImageName;
00165         LLHandle<LLFloater>                      mFloaterHandle;
00166         LLTextBox*                               mTentativeLabel;
00167         LLTextBox*                               mCaption;
00168         LLString                                 mLabel;
00169         BOOL                                     mAllowNoTexture; // If true, the user can select "none" as an option
00170         LLCoordGL                                mLastFloaterLeftTop;
00171         PermissionMask                   mImmediateFilterPermMask;
00172         PermissionMask                   mNonImmediateFilterPermMask;
00173         BOOL                                     mCanApplyImmediately;
00174         BOOL                                     mNeedsRawImageData;
00175         LLViewBorder*                    mBorder;
00176         BOOL                                     mValid;
00177         BOOL                                     mDirty;
00178 };
00179 
00180 // XUI HACK: When floaters converted, switch this file to lltexturepicker.h/cpp
00181 // and class to LLTexturePicker
00182 #define LLTexturePicker LLTextureCtrl
00183 
00184 #endif  // LL_LLTEXTURECTRL_H

Generated on Fri May 16 08:34:04 2008 for SecondLife by  doxygen 1.5.5