diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/lltexturectrl.h |
Print done when done.
Diffstat (limited to 'indra/newview/lltexturectrl.h')
-rw-r--r-- | indra/newview/lltexturectrl.h | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h new file mode 100644 index 0000000000..fa4e71d266 --- /dev/null +++ b/indra/newview/lltexturectrl.h @@ -0,0 +1,158 @@ +/** + * @file lltexturectrl.h + * @author Richard Nelson, James Cook + * @brief LLTextureCtrl class header file including related functions + * + * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#ifndef LL_LLTEXTURECTRL_H +#define LL_LLTEXTURECTRL_H + +#include "llcoord.h" +#include "llfloater.h" +#include "llstring.h" +#include "lluictrl.h" +#include "llpermissionsflags.h" + +class LLButton; +class LLFloaterTexturePicker; +class LLInventoryItem; +class LLTextBox; +class LLViewBorder; + +// used for setting drag & drop callbacks. +typedef BOOL (*drag_n_drop_callback)(LLUICtrl*, LLInventoryItem*, void*); + +////////////////////////////////////////////////////////////////////////////////////////// +// LLTextureCtrl + + +class LLTextureCtrl +: public LLUICtrl +{ +public: + typedef enum e_texture_pick_op + { + TEXTURE_CHANGE, + TEXTURE_SELECT, + TEXTURE_CANCEL + } ETexturePickOp; + +public: + LLTextureCtrl( + const std::string& name, const LLRect& rect, + const std::string& label, + const LLUUID& image_id, + const LLUUID& default_image_id, + const std::string& default_image_name ); + virtual ~LLTextureCtrl(); + + // LLView interface + virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_TEXTURE_PICKER; } + virtual LLString getWidgetTag() const { return LL_TEXTURE_CTRL_TAG; } + virtual LLXMLNodePtr getXML(bool save_children = true) const; + static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); + + virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, EDragAndDropType cargo_type, void *cargo_data, + EAcceptance *accept, + LLString& tooltip_msg); + virtual BOOL handleHover(S32 x, S32 y, MASK mask); + virtual BOOL handleUnicodeCharHere(llwchar uni_char, BOOL called_from_parent); + + virtual void draw(); + virtual void setVisible( BOOL visible ); + virtual void setEnabled( BOOL enabled ); + + void setValid(BOOL valid); + + // LLUICtrl interface + virtual void clear(); + + // Takes a UUID, wraps get/setImageAssetID + virtual void setValue( LLSD value ); + virtual LLSD getValue() const; + + // LLTextureCtrl interface + void showPicker(BOOL take_focus); + void setLabel(const LLString& label); + const LLString& getLabel() const { return mLabel; } + + void setAllowNoTexture( BOOL b ) { mAllowNoTexture = b; } + bool getAllowNoTexture() const { return mAllowNoTexture; } + + const LLUUID& getImageItemID() { return mImageItemID; } + + void setImageAssetID(const LLUUID &image_asset_id); + const LLUUID& getImageAssetID() const { return mImageAssetID; } + + void setDefaultImageAssetID( const LLUUID& id ) { mDefaultImageAssetID = id; } + + const LLString& getDefaultImageName() const { return mDefaultImageName; } + const LLUUID& getDefaultImageAssetID() const { return mDefaultImageAssetID; } + + void setCaption(const LLString& caption); + void setCanApplyImmediately(BOOL b); + + void setImmediateFilterPermMask(PermissionMask mask) + { mImmediateFilterPermMask = mask; } + void setNonImmediateFilterPermMask(PermissionMask mask) + { mNonImmediateFilterPermMask = mask; } + PermissionMask getImmediateFilterPermMask() { return mImmediateFilterPermMask; } + PermissionMask getNonImmediateFilterPermMask() { return mNonImmediateFilterPermMask; } + + void closeFloater(); + + void onFloaterClose(); + void onFloaterCommit(ETexturePickOp op); + + // This call is returned when a drag is detected. Your callback + // should return TRUE if the drag is acceptable. + void setDragCallback(drag_n_drop_callback cb) { mDragCallback = cb; } + + // This callback is called when the drop happens. Return TRUE if + // the drop happened - resulting in an on commit callback, but not + // necessariliy any other change. + void setDropCallback(drag_n_drop_callback cb) { mDropCallback = cb; } + + void setOnCancelCallback(LLUICtrlCallback cb) { mOnCancelCallback = cb; } + + void setOnSelectCallback(LLUICtrlCallback cb) { mOnSelectCallback = cb; } + +private: + BOOL allowDrop(LLInventoryItem* item); + BOOL doDrop(LLInventoryItem* item); + +private: + drag_n_drop_callback mDragCallback; + drag_n_drop_callback mDropCallback; + LLUICtrlCallback mOnCancelCallback; + LLUICtrlCallback mOnSelectCallback; + LLPointer<LLViewerImage> mTexturep; + LLColor4 mBorderColor; + LLUUID mImageItemID; + LLUUID mImageAssetID; + LLUUID mDefaultImageAssetID; + LLString mDefaultImageName; + LLViewHandle mFloaterHandle; + LLTextBox* mTentativeLabel; + LLTextBox* mCaption; + LLString mLabel; + BOOL mAllowNoTexture; // If true, the user can select "none" as an option + LLCoordGL mLastFloaterLeftTop; + PermissionMask mImmediateFilterPermMask; + PermissionMask mNonImmediateFilterPermMask; + BOOL mCanApplyImmediately; + BOOL mNeedsRawImageData; + LLViewBorder* mBorder; + BOOL mValid; +}; + +// XUI HACK: When floaters converted, switch this file to lltexturepicker.h/cpp +// and class to LLTexturePicker +#define LLTexturePicker LLTextureCtrl + +#endif // LL_LLTEXTURECTRL_H |