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

Generated on Thu Jul 1 06:09:18 2010 for Second Life Viewer by  doxygen 1.4.7