/********************************************************************** *< FILE: itreevw.h DESCRIPTION: Tree View Interface CREATED BY: Rolf Berteig HISTORY: Created 17 April 1995 Moved into public SDK, JBW 5.25.00 Extended by Adam Felt for R5 *> Copyright (c) 1994-2002, All Rights Reserved. **********************************************************************/ #ifndef __ITREEVW__ #define __ITREEVW__ #include "iFnPub.h" #define WM_TV_SELCHANGED WM_USER + 0x03001 #define WM_TV_MEDIT_TV_DESTROYED WM_USER + 0x03b49 // Sent to a track view window to force it to do a horizontal zoom extents #define WM_TV_DOHZOOMEXTENTS WM_USER + 0xb9a1 // Style flag options for Interface::CreateTreeViewChild #define TVSTYLE_MAXIMIZEBUT (1<<0) // Has a maximize button for TV in a viewport. #define TVSTYLE_INVIEWPORT (1<<1) //Setting the TVSTYLE_NAMEABLE flag will give the user maxscript access to your treeview through the trackviews.current interface. //Set this flag if you want the user to be able to modify your trackview settings. #define TVSTYLE_NAMEABLE (1<<2) #define TVSTYLE_INMOTIONPAN (1<<3) #define TVSTYLE_SHOW_NONANIMATABLE (1<<4) // this flag specifies the treeview child window contains a menu bar and toolbars. (R5 and later only) // if this style has been set you can use ITreeViewUI::GetHWnd() to get the handle to the window housing the CUI elements. // this automatically sets the TVSTYLE_NAMEABLE flag since UI macroScripts may depend in the window being scriptable #define TVSTYLE_SHOW_CUI (1<<5) // Docking options for ITrackViewArray::OpenTrackViewWindow #define TV_FLOAT 0 // float window. can't dock on top (the default) #define TV_DOCK_TOP 1 // dock on top #define TV_DOCK_BOTTOM 2 // dock on bottom. can't dock on top #define TV_CAN_DOCK_TOP 3 // floating but able to dock on top // Major modes #define MODE_EDITKEYS 0 #define MODE_EDITTIME 1 #define MODE_EDITRANGES 2 #define MODE_POSRANGES 3 #define MODE_EDITFCURVE 4 // Operations on keys can be performed on one of the following set types #define EFFECT_ALL_SEL_KEYS 0 #define EFFECT_SEL_KEYS_IN_SEL_TRACKS 1 #define EFFECT_ALL_KEYS_IN_SEL_TRACKS 2 #define EFFECT_ALL_KEYS 3 class TrackViewFilter; class TrackViewPick; typedef Animatable* AnimatablePtr; //This is an interface into many of the UI layout functions of trackview. //You can get an instance of this class by calling ITreeView::GetInterface(TREEVIEW_UI_INTERFACE) //*********************************************************************************************** #define TREEVIEW_UI_INTERFACE Interface_ID(0x1bcd78ef, 0x21990819) class ITreeViewUI : public FPMixinInterface { public: virtual HWND GetHWnd()=0; virtual TSTR GetMenuBar()=0; virtual void SetMenuBar(TSTR name)=0; virtual TSTR GetControllerQuadMenu()=0; virtual void SetControllerQuadMenu(TSTR name)=0; virtual TSTR GetKeyQuadMenu()=0; virtual void SetKeyQuadMenu(TSTR name)=0; virtual int ToolbarCount()=0; virtual void AddToolbar()=0; virtual void DeleteToolbar()=0; virtual bool AddToolbar(TCHAR *name)=0; virtual bool DeleteToolbar(int index)=0; virtual bool DeleteToolbar(TCHAR *name)=0; virtual TCHAR* GetToolbarName(int index)=0; virtual void ShowToolbar(TCHAR *name)=0; virtual void HideToolbar(TCHAR *name)=0; virtual bool IsToolbarVisible(TCHAR *name)=0; virtual void ShowAllToolbars()=0; virtual void HideAllToolbars()=0; virtual void ShowMenuBar(bool visible)=0; virtual bool IsMenuBarVisible()=0; virtual void ShowScrollBars(bool visible)=0; virtual bool IsScrollBarsVisible()=0; virtual void ShowTrackWindow(bool visible)=0; virtual bool IsTrackWindowVisible()=0; virtual void ShowKeyWindow(bool visible)=0; virtual bool IsKeyWindowVisible()=0; virtual void ShowTimeRuler(bool visible)=0; virtual bool IsTimeRulerVisible()=0; virtual void ShowKeyPropertyIcon(bool visible)=0; virtual bool IsKeyPropertyIconVisible()=0; virtual void ShowIconsByClass(bool byClass)=0; virtual bool ShowIconsByClass()=0; virtual void SaveUILayout()=0; virtual void SaveUILayout(TCHAR* name)=0; virtual void LoadUILayout(TCHAR* name)=0; virtual int LayoutCount()=0; virtual TSTR GetLayoutName(int index)=0; virtual TSTR GetLayoutName()=0; //the current layout enum { tv_getHWnd, tv_getMenuBar, tv_setMenuBar, tv_getControllerQuadMenu, tv_setControllerQuadMenu, tv_getKeyQuadMenu, tv_setKeyQuadMenu, tv_getMenuBarVisible, tv_setMenuBarVisible, tv_getScrollBarsVisible, tv_setScrollBarsVisible, tv_getTrackWindowVisible, tv_setTrackWindowVisible, tv_getKeyWindowVisible, tv_setKeyWindowVisible, tv_getTimeRulerVisible, tv_setTimeRulerVisible, tv_showAllToolbars, tv_hideAllToolbars, tv_showToolbar, tv_hideToolbar, tv_getToolbarName, tv_deleteToolbar, tv_addToolbar, tv_toolbarCount, tv_saveUILayout, tv_saveCurrentUILayout, tv_loadUILayout, tv_layoutCount, tv_getLayoutName, tv_layoutName, tv_isToolbarVisible, tv_getKeyPropertyVisible, tv_setKeyPropertyVisible, tv_getIconsByClass, tv_setIconsByClass, }; BEGIN_FUNCTION_MAP RO_PROP_FN(tv_getHWnd, GetHWnd, TYPE_HWND); RO_PROP_FN(tv_layoutName, GetLayoutName, TYPE_TSTR_BV); PROP_FNS(tv_getMenuBar, GetMenuBar, tv_setMenuBar, SetMenuBar, TYPE_TSTR_BV); PROP_FNS(tv_getControllerQuadMenu, GetControllerQuadMenu, tv_setControllerQuadMenu, SetControllerQuadMenu, TYPE_TSTR_BV); PROP_FNS(tv_getKeyQuadMenu, GetKeyQuadMenu, tv_setKeyQuadMenu, SetKeyQuadMenu, TYPE_TSTR_BV); PROP_FNS(tv_getMenuBarVisible, IsMenuBarVisible, tv_setMenuBarVisible, ShowMenuBar, TYPE_bool); PROP_FNS(tv_getScrollBarsVisible, IsScrollBarsVisible, tv_setScrollBarsVisible, ShowScrollBars, TYPE_bool); PROP_FNS(tv_getTrackWindowVisible, IsTrackWindowVisible, tv_setTrackWindowVisible, ShowTrackWindow, TYPE_bool); PROP_FNS(tv_getKeyWindowVisible, IsKeyWindowVisible, tv_setKeyWindowVisible, ShowKeyWindow, TYPE_bool); PROP_FNS(tv_getTimeRulerVisible, IsTimeRulerVisible, tv_setTimeRulerVisible, ShowTimeRuler, TYPE_bool); PROP_FNS(tv_getKeyPropertyVisible, IsKeyPropertyIconVisible, tv_setKeyPropertyVisible, ShowKeyPropertyIcon, TYPE_bool); PROP_FNS(tv_getIconsByClass, ShowIconsByClass, tv_setIconsByClass, ShowIconsByClass, TYPE_bool); VFN_0(tv_showAllToolbars, ShowAllToolbars); VFN_0(tv_hideAllToolbars, HideAllToolbars); VFN_1(tv_showToolbar, ShowToolbar, TYPE_STRING); VFN_1(tv_hideToolbar, HideToolbar, TYPE_STRING); FN_1(tv_getToolbarName, TYPE_STRING, GetToolbarName, TYPE_INDEX); FN_1(tv_deleteToolbar, TYPE_bool, fp_DeleteToolbar, TYPE_FPVALUE); FN_1(tv_addToolbar, TYPE_bool, AddToolbar, TYPE_STRING); FN_0(tv_toolbarCount, TYPE_INT, ToolbarCount); FN_1(tv_isToolbarVisible, TYPE_bool, IsToolbarVisible, TYPE_STRING); VFN_0(tv_saveCurrentUILayout, SaveUILayout); VFN_1(tv_saveUILayout, SaveUILayout, TYPE_STRING); VFN_1(tv_loadUILayout, LoadUILayout, TYPE_STRING); FN_0(tv_layoutCount, TYPE_INT, LayoutCount); FN_1(tv_getLayoutName, TYPE_TSTR_BV, GetLayoutName, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc() { return GetDescByID(TREEVIEW_UI_INTERFACE); } Interface_ID GetID() { return TREEVIEW_UI_INTERFACE; } private: virtual bool fp_DeleteToolbar(FPValue* val)=0; }; #define TREEVIEW_OPS_INTERFACE Interface_ID(0x60fb7eef, 0x1f6d6dd3) //These are the operations you can do on any open trackview //Added by AF (09/12/00) //********************************************************* class ITreeViewOps : public FPMixinInterface { public: virtual ~ITreeViewOps() {} virtual int GetNumTracks()=0; virtual int NumSelTracks()=0; virtual void GetSelTrack(int i,AnimatablePtr &anim,AnimatablePtr &client,int &subNum)=0; virtual ReferenceTarget* GetAnim(int index)=0; virtual ReferenceTarget* GetClient(int index)=0; virtual BOOL CanAssignController()=0; virtual void DoAssignController(BOOL clearMot=TRUE)=0; virtual void ShowControllerType(BOOL show)=0; virtual TCHAR *GetTVName()=0; // added for scripter access, JBW - 11/11/98 virtual void SetTVName(TCHAR *)=0; virtual void CloseTreeView()=0; virtual void SetFilter(DWORD mask,int which, BOOL redraw=TRUE)=0; virtual void ClearFilter(DWORD mask,int which, BOOL redraw=TRUE)=0; virtual DWORD TestFilter(DWORD mask,int which)=0; // added for param wiring, JBW - 5.26.00 virtual void ZoomOn(Animatable* owner, int subnum)=0; virtual void ZoomSelected()=0; virtual void ExpandTracks()=0; //added for completeness by AF (09/12/00) virtual int GetIndex(Animatable *anim)=0; virtual void SelectTrackByIndex(int index, BOOL clearSelection=TRUE)=0; virtual void SelectTrack(Animatable* anim, BOOL clearSelection=TRUE)=0; virtual BOOL AssignControllerToSelected(Animatable* ctrl)=0; //added by AF (09/25/00) for MAXScript exposure virtual void SetEditMode(int mode)=0; virtual int GetEditMode()=0; //added by AF (09/25/00) for more MAXScript exposure //These differ from "active" because the trackview //doesn't have to be selected for it to be the currently used trackview virtual BOOL IsCurrent()=0; virtual void SetCurrent()=0; enum { tv_getName, tv_setName, tv_close, tv_numSelTracks, tv_getNumTracks, tv_getSelTrack, tv_canAssignController, tv_doAssignController, tv_assignController, tv_showControllerTypes, tv_expandTracks, tv_zoomSelected, tv_zoomOnTrack, tv_getAnim, tv_getClient, tv_getSelAnim, tv_getSelClient, tv_getSelAnimSubNum, tv_getIndex, tv_selectTrackByIndex, tv_selectTrack, tv_setFilter, tv_clearFilter, tv_setEditMode, tv_getEditMode, tv_setEditModeProp, tv_getEditModeProp, tv_setCurrent, tv_getCurrent, tv_getUIInterface, tv_getModifySubTree, tv_setModifySubTree, tv_getModifyChildren, tv_setModifyChildren, tv_launchUtilityDialog, tv_launchUtility, tv_getUtilityCount, tv_getUtilityName, tv_closeUtility, tv_getInteractiveUpdate, tv_setInteractiveUpdate, tv_getSyncTime, tv_setSyncTime, tv_setTangentType, tv_setInTangentType, tv_setOutTangentType, tv_getFreezeSelKeys, tv_setFreezeSelKeys, tv_getFreezeNonSelCurves, tv_setFreezeNonSelCurves, tv_getShowNonSelCurves, tv_setShowNonSelCurves, tv_getShowTangents, tv_setShowTangents, tv_getShowFrozenKeys, tv_setShowFrozenKeys, tv_getEffectSelectedObjectsOnly, tv_setEffectSelectedObjectsOnly, tv_getAutoExpandChildren, tv_setAutoExpandChildren, tv_getAutoExpandTransforms, tv_setAutoExpandTransforms, tv_getAutoExpandObjects, tv_setAutoExpandObjects, tv_getAutoExpandModifiers, tv_setAutoExpandModifiers, tv_getAutoExpandMaterials, tv_setAutoExpandMaterials, tv_getAutoExpandXYZ, tv_setAutoExpandXYZ, tv_getAutoSelectAnimated, tv_setAutoSelectAnimated, tv_getAutoSelectPosition, tv_setAutoSelectPosition, tv_getAutoSelectRotation, tv_setAutoSelectRotation, tv_getAutoSelectScale, tv_setAutoSelectScale, tv_getAutoSelectXYZ, tv_setAutoSelectXYZ, tv_getManualNavigation, tv_setManualNavigation, tv_getAutoZoomToRoot, tv_setAutoZoomToRoot, tv_getAutoZoomToSelected, tv_setAutoZoomToSelected, tv_getAutoZoomToEdited, tv_setAutoZoomToEdited, tv_getUseSoftSelect, tv_setUseSoftSelect, tv_getSoftSelectRange, tv_setSoftSelectRange, tv_getSoftSelectFalloff, tv_setSoftSelectFalloff, tv_getRootTrack, tv_setRootTrack, tv_restoreRootTrack, tv_getScaleValuesOrigin, tv_setScaleValuesOrigin, tv_updateList, //symbolic enums tv_enumEffectTracks, tv_enumKeyTangentType, tv_editModeTypes, tv_enumTangentDisplay, }; BEGIN_FUNCTION_MAP FN_0(tv_getName, TYPE_STRING, GetTVName); VFN_1(tv_setName, SetTVName, TYPE_STRING); VFN_0(tv_close, CloseTreeView); FN_0(tv_getNumTracks, TYPE_INT, GetNumTracks); FN_0(tv_numSelTracks, TYPE_INT, NumSelTracks); FN_0(tv_canAssignController, TYPE_BOOL, CanAssignController); VFN_0(tv_doAssignController, DoAssignController); FN_1(tv_assignController, TYPE_BOOL, AssignControllerToSelected, TYPE_REFTARG); VFN_1(tv_showControllerTypes, ShowControllerType, TYPE_BOOL); VFN_0(tv_expandTracks, ExpandTracks); VFN_0(tv_zoomSelected, ZoomSelected); VFN_2(tv_zoomOnTrack, ZoomOn, TYPE_REFTARG, TYPE_INT); FN_1(tv_getAnim, TYPE_REFTARG, GetAnim, TYPE_INDEX); FN_1(tv_getClient, TYPE_REFTARG, GetClient, TYPE_INDEX); FN_1(tv_getSelAnim, TYPE_REFTARG, fpGetSelectedAnimatable, TYPE_INDEX); FN_1(tv_getSelClient, TYPE_REFTARG, fpGetSelectedClient, TYPE_INDEX); FN_1(tv_getSelAnimSubNum, TYPE_INDEX, fpGetSelectedAnimSubNum, TYPE_INDEX); FN_1(tv_getIndex, TYPE_INDEX, GetIndex, TYPE_REFTARG); VFN_2(tv_selectTrackByIndex, SelectTrackByIndex, TYPE_INDEX, TYPE_BOOL); VFN_2(tv_selectTrack, SelectTrack, TYPE_REFTARG, TYPE_BOOL); FN_VA(tv_setFilter, TYPE_BOOL, fpSetFilter); FN_VA(tv_clearFilter, TYPE_BOOL, fpClearFilter); VFN_1(tv_setEditMode, SetEditMode, TYPE_ENUM); FN_0(tv_getEditMode, TYPE_ENUM, GetEditMode); PROP_FNS(tv_getEditModeProp, GetEditMode, tv_setEditModeProp, SetEditMode, TYPE_ENUM); FN_0(tv_getCurrent, TYPE_BOOL, IsCurrent); VFN_0(tv_setCurrent, SetCurrent); // UI interface property RO_PROP_FN(tv_getUIInterface, fpGetUIInterface, TYPE_INTERFACE); // dope sheet mode property PROP_FNS(tv_getModifySubTree, ModifySubTree, tv_setModifySubTree, ModifySubTree, TYPE_BOOL); PROP_FNS(tv_getModifyChildren, ModifyChildren, tv_setModifyChildren, ModifyChildren, TYPE_BOOL); //trackview utility methods VFN_0(tv_launchUtilityDialog, LaunchUtilityDialog); VFN_1(tv_launchUtility, LaunchUtility, TYPE_TSTR_BV); VFN_1(tv_closeUtility, CloseUtility, TYPE_TSTR_BV); FN_0(tv_getUtilityCount, TYPE_INT, GetUtilityCount); FN_1(tv_getUtilityName, TYPE_TSTR_BV, GetUtilityName, TYPE_INDEX); // key tangent type methods VFN_2(tv_setTangentType, SetTangentType, TYPE_ENUM, TYPE_ENUM); VFN_2(tv_setInTangentType, SetInTangentType, TYPE_ENUM, TYPE_ENUM); VFN_2(tv_setOutTangentType, SetOutTangentType, TYPE_ENUM, TYPE_ENUM); // button state properties PROP_FNS(tv_getInteractiveUpdate, InteractiveUpdate, tv_setInteractiveUpdate, InteractiveUpdate, TYPE_BOOL); PROP_FNS(tv_getSyncTime, SyncTime, tv_setSyncTime, SyncTime, TYPE_BOOL); PROP_FNS(tv_getFreezeSelKeys, FreezeSelKeys, tv_setFreezeSelKeys, FreezeSelKeys, TYPE_BOOL); PROP_FNS(tv_getFreezeNonSelCurves, FreezeNonSelCurves, tv_setFreezeNonSelCurves, FreezeNonSelCurves, TYPE_BOOL); PROP_FNS(tv_getShowNonSelCurves, ShowNonSelCurves, tv_setShowNonSelCurves, ShowNonSelCurves, TYPE_BOOL); PROP_FNS(tv_getShowTangents, ShowTangents, tv_setShowTangents, ShowTangents, TYPE_ENUM); PROP_FNS(tv_getShowFrozenKeys, ShowFrozenKeys, tv_setShowFrozenKeys, ShowFrozenKeys, TYPE_BOOL); // soft selection properties PROP_FNS(tv_getUseSoftSelect, UseSoftSelect, tv_setUseSoftSelect, UseSoftSelect, TYPE_BOOL); PROP_FNS(tv_getSoftSelectRange, SoftSelectRange, tv_setSoftSelectRange, SoftSelectRange, TYPE_TIMEVALUE); PROP_FNS(tv_getSoftSelectFalloff, SoftSelectFalloff, tv_setSoftSelectFalloff, SoftSelectFalloff, TYPE_FLOAT); // workflow properties PROP_FNS(tv_getEffectSelectedObjectsOnly, EffectSelectedObjectsOnly, tv_setEffectSelectedObjectsOnly, EffectSelectedObjectsOnly, TYPE_BOOL); PROP_FNS(tv_getManualNavigation, ManualNavigation, tv_setManualNavigation, ManualNavigation, TYPE_BOOL); PROP_FNS(tv_getAutoExpandChildren, AutoExpandChildren, tv_setAutoExpandChildren, AutoExpandChildren, TYPE_BOOL); PROP_FNS(tv_getAutoExpandTransforms, AutoExpandTransforms, tv_setAutoExpandTransforms, AutoExpandTransforms, TYPE_BOOL); PROP_FNS(tv_getAutoExpandObjects, AutoExpandObjects, tv_setAutoExpandObjects, AutoExpandObjects, TYPE_BOOL); PROP_FNS(tv_getAutoExpandModifiers, AutoExpandModifiers, tv_setAutoExpandModifiers, AutoExpandModifiers, TYPE_BOOL); PROP_FNS(tv_getAutoExpandMaterials, AutoExpandMaterials, tv_setAutoExpandMaterials, AutoExpandMaterials, TYPE_BOOL); PROP_FNS(tv_getAutoExpandXYZ, AutoExpandXYZ, tv_setAutoExpandXYZ, AutoExpandXYZ, TYPE_BOOL); PROP_FNS(tv_getAutoSelectAnimated, AutoSelectAnimated, tv_setAutoSelectAnimated, AutoSelectAnimated, TYPE_BOOL); PROP_FNS(tv_getAutoSelectPosition, AutoSelectPosition, tv_setAutoSelectPosition, AutoSelectPosition, TYPE_BOOL); PROP_FNS(tv_getAutoSelectRotation, AutoSelectRotation, tv_setAutoSelectRotation, AutoSelectRotation, TYPE_BOOL); PROP_FNS(tv_getAutoSelectScale, AutoSelectScale, tv_setAutoSelectScale, AutoSelectScale, TYPE_BOOL); PROP_FNS(tv_getAutoSelectXYZ, AutoSelectXYZ, tv_setAutoSelectXYZ, AutoSelectXYZ, TYPE_BOOL); PROP_FNS(tv_getAutoZoomToRoot, AutoZoomToRoot, tv_setAutoZoomToRoot, AutoZoomToRoot, TYPE_BOOL); PROP_FNS(tv_getAutoZoomToSelected, AutoZoomToSelected, tv_setAutoZoomToSelected, AutoZoomToSelected, TYPE_BOOL); PROP_FNS(tv_getAutoZoomToEdited, AutoZoomToEdited, tv_setAutoZoomToEdited, AutoZoomToEdited, TYPE_BOOL); //root node methods PROP_FNS(tv_getRootTrack, GetRootTrack, tv_setRootTrack, SetRootTrack, TYPE_REFTARG); VFN_0(tv_restoreRootTrack, RestoreDefaultRootTrack); // scale values mode -- scale origin PROP_FNS(tv_getScaleValuesOrigin, ScaleValuesOrigin, tv_setScaleValuesOrigin, ScaleValuesOrigin, TYPE_FLOAT); VFN_0(tv_updateList, UpdateList); END_FUNCTION_MAP FPInterfaceDesc* GetDesc() { return GetDescByID(TREEVIEW_OPS_INTERFACE); } Interface_ID GetID() { return TREEVIEW_OPS_INTERFACE; } // private: //these methods are created to massage data into a format the function publishing system can interpret //these functions just call other public functions above //Added by AF (09/12/00) // LAM - 4/1/04 - made public. No access to SetTVDisplayFlag/GetTVDisplayFlag, which is needed for the // AutoXXXX methods below. virtual Animatable* fpGetSelectedAnimatable(int index)=0; virtual Animatable* fpGetSelectedClient(int index)=0; virtual int fpGetSelectedAnimSubNum(int index)=0; virtual BOOL fpSetFilter(FPParams* val)=0; virtual BOOL fpClearFilter(FPParams* val)=0; // these are here so we don't break plugin compatibility // these can be called using FPInterface::Invoke() // Dope Sheet Mode effect children virtual BOOL ModifySubTree()=0; virtual void ModifySubTree(BOOL onOff)=0; virtual BOOL ModifyChildren()=0; virtual void ModifyChildren(BOOL onOff)=0; // Track View Utilities virtual void LaunchUtility(TSTR name)=0; virtual void LaunchUtilityDialog()=0; virtual void CloseUtility(TSTR name)=0; virtual int GetUtilityCount()=0; virtual TSTR GetUtilityName(int index)=0; // Update the viewport interactively, or on mouse up virtual BOOL InteractiveUpdate()=0; virtual void InteractiveUpdate(BOOL update)=0; // Sync Time with the mouse while clicking and dragging selections, keys, etc. virtual BOOL SyncTime()=0; virtual void SyncTime(BOOL sync)=0; // Button States virtual BOOL FreezeSelKeys()=0; virtual void FreezeSelKeys(BOOL onOff)=0; virtual BOOL FreezeNonSelCurves()=0; virtual void FreezeNonSelCurves(BOOL onOff)=0; virtual BOOL ShowNonSelCurves()=0; virtual void ShowNonSelCurves(BOOL onOff)=0; virtual int ShowTangents()=0; virtual void ShowTangents(int type)=0; virtual BOOL ShowFrozenKeys()=0; virtual void ShowFrozenKeys(BOOL onOff)=0; // Soft selection virtual void UseSoftSelect(BOOL use)=0; virtual BOOL UseSoftSelect()=0; virtual void SoftSelectRange(TimeValue range)=0; virtual TimeValue SoftSelectRange()=0; virtual void SoftSelectFalloff(float falloff)=0; virtual float SoftSelectFalloff()=0; // Adjust the key tangent types virtual void SetTangentType(int type, int effect = EFFECT_ALL_SEL_KEYS)=0; virtual void SetInTangentType(int type, int effect = EFFECT_ALL_SEL_KEYS)=0; virtual void SetOutTangentType(int type, int effect = EFFECT_ALL_SEL_KEYS)=0; ITreeViewUI* fpGetUIInterface() { return (ITreeViewUI*)GetInterface(TREEVIEW_UI_INTERFACE); } // Workflow settings virtual BOOL EffectSelectedObjectsOnly()=0; virtual void EffectSelectedObjectsOnly(BOOL effect)=0; virtual BOOL ManualNavigation()=0; virtual void ManualNavigation(BOOL manual)=0; virtual BOOL AutoExpandChildren()=0; virtual void AutoExpandChildren(BOOL expand)=0; virtual BOOL AutoExpandTransforms()=0; virtual void AutoExpandTransforms(BOOL expand)=0; virtual BOOL AutoExpandObjects()=0; virtual void AutoExpandObjects(BOOL expand)=0; virtual BOOL AutoExpandModifiers()=0; virtual void AutoExpandModifiers(BOOL expand)=0; virtual BOOL AutoExpandMaterials()=0; virtual void AutoExpandMaterials(BOOL expand)=0; virtual BOOL AutoExpandXYZ()=0; virtual void AutoExpandXYZ(BOOL expand)=0; virtual BOOL AutoSelectAnimated()=0; virtual void AutoSelectAnimated(BOOL select)=0; virtual BOOL AutoSelectPosition()=0; virtual void AutoSelectPosition(BOOL select)=0; virtual BOOL AutoSelectRotation()=0; virtual void AutoSelectRotation(BOOL select)=0; virtual BOOL AutoSelectScale()=0; virtual void AutoSelectScale(BOOL select)=0; virtual BOOL AutoSelectXYZ()=0; virtual void AutoSelectXYZ(BOOL select)=0; virtual BOOL AutoZoomToRoot()=0; virtual void AutoZoomToRoot(BOOL zoom)=0; virtual BOOL AutoZoomToSelected()=0; virtual void AutoZoomToSelected(BOOL zoom)=0; virtual BOOL AutoZoomToEdited()=0; virtual void AutoZoomToEdited(BOOL zoom)=0; virtual ReferenceTarget* GetRootTrack()=0; virtual void SetRootTrack(ReferenceTarget* root)=0; virtual void RestoreDefaultRootTrack()=0; virtual float ScaleValuesOrigin()=0; virtual void ScaleValuesOrigin(float origin)=0; // force an update of the list virtual void UpdateList()=0; }; class ITreeView : public IObject, public ITreeViewOps{ public: virtual ~ITreeView() {} virtual void SetPos(int x, int y, int w, int h)=0; virtual void Show()=0; virtual void Hide()=0; virtual BOOL IsVisible()=0; virtual BOOL InViewPort()=0; virtual void SetTreeRoot(ReferenceTarget *root,ReferenceTarget *client=NULL,int subNum=0)=0; virtual void SetLabelOnly(BOOL only)=0; virtual void SetMultiSel(BOOL on)=0; virtual void SetSelFilter(TrackViewFilter *f=NULL)=0; virtual void SetActive(BOOL active)=0; virtual BOOL IsActive()=0; virtual HWND GetHWnd()=0; virtual int GetTrackViewParent(int index)=0; // returns -1 if no parent is found virtual void Flush()=0; virtual void UnFlush()=0; virtual void SetMatBrowse()=0; virtual DWORD GetTVID()=0; //from IObject virtual TCHAR* GetIObjectName(){return _T("ITrackView");} virtual int NumInterfaces() { return IObject::NumInterfaces() + 1; } virtual BaseInterface* GetInterfaceAt(int index) { if (index == 0) return (ITreeViewOps*)this; return IObject::GetInterfaceAt(index-1); } virtual BaseInterface* GetInterface(Interface_ID id) { if (id == TREEVIEW_OPS_INTERFACE) return (BaseInterface*)this; else { return IObject::GetInterface(id); } return NULL; } }; //Added by AF (09/07/00) //A CORE interface to get the trackview windows //Use GetCOREInterface(ITRACKVIEWS) to get a pointer to this interface //************************************************** #define ITRACKVIEWS Interface_ID(0x531c5f2c, 0x6fdf29cf) class ITrackViewArray : public FPStaticInterface { public: int GetNumAvailableTrackViews(); ITreeViewOps* GetTrackView(int index); ITreeViewOps* GetTrackView(TSTR name); Tab GetAvaliableTrackViews(); ITreeViewOps* GetLastActiveTrackView(); BOOL IsTrackViewOpen(TSTR name); BOOL IsTrackViewOpen(int index); BOOL OpenTrackViewWindow(TSTR name, TSTR layoutName = _T(""), Point2 pos = Point2(-1.0f,-1.0f), int width = -1, int height = -1, int dock = TV_FLOAT); BOOL OpenTrackViewWindow(int index); BOOL OpenLastActiveTrackViewWindow(); BOOL CloseTrackView(TSTR name); BOOL CloseTrackView(int index); void DeleteTrackView(TSTR name); void DeleteTrackView(int index); TCHAR* GetTrackViewName(int index); TCHAR* GetLastUsedTrackViewName(); BOOL IsTrackViewCurrent(int index); BOOL IsTrackViewCurrent(TSTR name); BOOL SetTrackViewCurrent(int index); BOOL SetTrackViewCurrent(TSTR name); BOOL TrackViewZoomSelected(TSTR tvName); BOOL TrackViewZoomOn(TSTR tvName, Animatable* anim, int subNum); enum{ getTrackView, getAvaliableTrackViews, getNumAvailableTrackViews, openTrackView, closeTrackView, getTrackViewName, trackViewZoomSelected, trackViewZoomOn, setFilter, clearFilter, pickTrackDlg, isOpen, openLastTrackView, currentTrackViewProp, lastUsedTrackViewNameProp, deleteTrackView, isTrackViewCurrent, setTrackViewCurrent, dockTypeEnum, }; DECLARE_DESCRIPTOR(ITrackViewArray); BEGIN_FUNCTION_MAP FN_1(getTrackView, TYPE_INTERFACE, fpGetTrackView, TYPE_FPVALUE); FN_0(getAvaliableTrackViews, TYPE_INTERFACE_TAB_BV, GetAvaliableTrackViews); FN_0(getNumAvailableTrackViews, TYPE_INT, GetNumAvailableTrackViews); FN_6(openTrackView, TYPE_BOOL, fpOpenTrackViewWindow, TYPE_FPVALUE, TYPE_TSTR_BV, TYPE_POINT2_BV, TYPE_INT, TYPE_INT, TYPE_ENUM); FN_1(closeTrackView, TYPE_BOOL, fpCloseTrackView, TYPE_FPVALUE); VFN_1(deleteTrackView, fpDeleteTrackView, TYPE_FPVALUE); FN_1(getTrackViewName, TYPE_STRING, GetTrackViewName, TYPE_INDEX); FN_1(trackViewZoomSelected, TYPE_BOOL, TrackViewZoomSelected, TYPE_TSTR); FN_3(trackViewZoomOn, TYPE_BOOL, TrackViewZoomOn, TYPE_TSTR, TYPE_REFTARG, TYPE_INDEX); FN_VA(setFilter, TYPE_BOOL, fpSetTrackViewFilter); FN_VA(clearFilter, TYPE_BOOL, fpClearTrackViewFilter); FN_VA(pickTrackDlg, TYPE_FPVALUE_BV, fpDoPickTrackDlg); FN_1(isOpen, TYPE_BOOL, fpIsTrackViewOpen, TYPE_FPVALUE); FN_0(openLastTrackView, TYPE_BOOL, OpenLastActiveTrackViewWindow); RO_PROP_FN(currentTrackViewProp, GetLastActiveTrackView, TYPE_INTERFACE); RO_PROP_FN(lastUsedTrackViewNameProp, GetLastUsedTrackViewName, TYPE_STRING); FN_1(isTrackViewCurrent, TYPE_BOOL, fpIsTrackViewCurrent, TYPE_FPVALUE); FN_1(setTrackViewCurrent, TYPE_BOOL, fpSetTrackViewCurrent, TYPE_FPVALUE); END_FUNCTION_MAP private: // these functions are wrapper functions to massage maxscript specific values into standard values // These methods just call one of the corresponding public methods BOOL fpSetTrackViewFilter(FPParams* val); BOOL fpClearTrackViewFilter(FPParams* val); FPValue fpDoPickTrackDlg(FPParams* val); BOOL fpIsTrackViewOpen(FPValue* val); BOOL fpCloseTrackView(FPValue* val); void fpDeleteTrackView(FPValue* val); BOOL fpIsTrackViewCurrent(FPValue* val); BOOL fpSetTrackViewCurrent(FPValue* val); ITreeViewOps* fpGetTrackView(FPValue* val); BOOL fpOpenTrackViewWindow(FPValue* val,TSTR layoutName, Point2 pos, int width, int height, int dock); }; #define TRACK_SELSET_MGR_INTERFACE Interface_ID(0x18f36a84, 0x1f572eb7) class TrackSelectionSetMgr : public FPStaticInterface { public: virtual BOOL Create(TSTR name, Tab tracks, Tab trackNames)=0; virtual BOOL Delete(TSTR name)=0; virtual int Count()=0; virtual TSTR GetName(int index)=0; virtual void SetName(int index, TSTR name)=0; virtual TSTR GetCurrent(ITreeView* tv)=0; virtual void GetTracks(TSTR name, Tab &tracks, Tab &trackNames)=0; virtual BOOL Add(TSTR name, Tab tracks, Tab trackNames)=0; virtual BOOL Remove(TSTR name, Tab tracks)=0; enum { kCreate, kDelete, kCount, kGetName, kSetName, kGetCurrent, kGetTracks, kAdd, kRemove, }; }; TrackSelectionSetMgr* GetTrackSelectionSetMgr(); // Defines for the "open" argument to Interface::CreateTreeViewChild // ***************************************************************** // "Special" windows are TreeViews whose data can not customized and is not saved. #define OPENTV_SPECIAL -2 // "Custom" windows are TreeViews whose data can be customized but is not saved. // R5.1 and later only. A TreeView will not be created if using this flag in a previous release. #define OPENTV_CUSTOM -3 // These arguments should not be used by third party developers. // They are used to create the saved trackviews that appear in the Graph Editors Menu. #define OPENTV_LAST -1 #define OPENTV_NEW 0 // ***************************************************************** // Sent by a tree view window to its parent when the user right clicks // on dead area of the toolbar. // Mouse points are relative to the client area of the tree view window // // LOWORD(wParam) = mouse x // HIWORD(wParam) = mouse y // lparam = tree view window handle #define WM_TV_TOOLBAR_RIGHTCLICK WM_USER + 0x8ac1 // Sent by a tree view window when the user double // clicks on a track label. // wParam = 0 // lParam = HWND of track view window #define WM_TV_LABEL_DOUBLE_CLICK WM_USER + 0x8ac2 class TrackViewActionCallback: public ActionCallback { public: BOOL ExecuteAction(int id); void SetHWnd(HWND hWnd) { mhWnd = hWnd; } HWND mhWnd; }; //----------------------------------------------------------------- // // Button IDs for the track view #define ID_TV_TOOLBAR 200 // the toolbar itself (not valid in R5 and later) //#define ID_TV_DELETE 210 #define ID_TV_DELETETIME 215 #define ID_TV_MOVE 220 #define ID_TV_SCALE 230 #define ID_TV_SCALETIME 250 //#define ID_TV_FUNCTION_CURVE 240 #define ID_TV_SNAPKEYS 260 #define ID_TV_ALIGNKEYS 270 #define ID_TV_ADD 280 //#define ID_TV_EDITKEYS 290 //#define ID_TV_EDITTIME 300 //#define ID_TV_EDITRANGE 310 //#define ID_TV_POSITIONRANGE 320 #define ID_TV_FILTERS 330 #define ID_TV_INSERT 340 #define ID_TV_CUT 350 #define ID_TV_COPY 360 #define ID_TV_PASTE 370 #define ID_TV_SLIDE 380 #define ID_TV_SELECT 390 #define ID_TV_REVERSE 400 #define ID_TV_LEFTEND 410 #define ID_TV_RIGHTEND 420 #define ID_TV_SUBTREE 430 #define ID_TV_ASSIGNCONTROL 440 #define ID_TV_MAKEUNIQUE 450 #define ID_TV_CHOOSEORT 460 #define ID_TV_SHOWTANGENTS 470 #define ID_TV_SHOWALLTANGENTS 475 #define ID_TV_SCALEVALUES 480 #define ID_TV_FREEZESEL 490 #define ID_TV_SHOWKEYSONFROZEN 495 #define ID_TV_TEMPLATE 500 //Same as ID_TV_FREEZENONSELCURVES #define ID_TV_FREEZENONSELCURVES 500 #define ID_TV_HIDENONSELCURVES 505 #define ID_TV_LOCKTAN 510 #define ID_TV_PROPERTIES 520 #define ID_TV_NEWEASE 530 #define ID_TV_DELEASE 540 #define ID_TV_TOGGLEEASE 550 #define ID_TV_CHOOSE_EASE_ORT 560 #define ID_TV_CHOOSE_MULT_ORT 570 #define ID_TV_ADDNOTE 580 #define ID_TV_DELETENOTE 590 #define ID_TV_RECOUPLERANGE 600 #define ID_TV_COPYTRACK 610 #define ID_TV_PASTETRACK 620 #define ID_TV_REDUCEKEYS 630 #define ID_TV_ADDVIS 640 #define ID_TV_DELVIS 650 #define ID_TV_TVNAME 660 #define ID_TV_TVUTIL 670 //watje #define ID_TV_GETSELECTED 680 #define ID_TV_DELETECONTROL 690 // Status tool button IDs #define ID_TV_STATUS 1000 #define ID_TV_ZOOMREGION 1020 #define ID_TV_PAN 1030 #define ID_TV_VFITTOWINDOW 1040 #define ID_TV_HFITTOWINDOW 1050 #define ID_TV_SHOWSTATS 1060 #define ID_TV_TIMETYPEIN 1070 #define ID_TV_VALUETYPEIN 1080 #define ID_TV_ZOOM 1090 #define ID_TV_MAXIMIZE 1100 #define ID_TV_SELWILDCARD 1110 #define ID_TV_ZOOMSEL 1120 // From accelerators #define ID_TV_K_SNAP 2000 //#define ID_TV_K_LOCKKEYS 2010 #define ID_TV_K_MOVEKEYS 2020 #define ID_TV_K_MOVEVERT 2030 #define ID_TV_K_MOVEHORZ 2040 #define ID_TV_K_SELTIME 2050 #define ID_TV_K_SUBTREE 2060 #define ID_TV_K_LEFTEND 2070 #define ID_TV_K_RIGHTEND 2080 #define ID_TV_K_TEMPLATE 2090 #define ID_TV_K_SHOWTAN 2100 #define ID_TV_K_LOCKTAN 2110 #define ID_TV_K_APPLYEASE 2120 #define ID_TV_K_APPLYMULT 2130 #define ID_TV_K_ACCESSTNAME 2140 #define ID_TV_K_ACCESSSELNAME 2150 #define ID_TV_K_ACCESSTIME 2160 #define ID_TV_K_ACCESSVAL 2170 #define ID_TV_K_ZOOMHORZ 2180 #define ID_TV_K_ZOOMHORZKEYS 2190 #define ID_TV_K_ZOOM 2200 #define ID_TV_K_ZOOMTIME 2210 #define ID_TV_K_ZOOMVALUE 2220 //#define ID_TV_K_NUDGELEFT 2230 //#define ID_TV_K_NUDGERIGHT 2240 //#define ID_TV_K_MOVEUP 2250 //#define ID_TV_K_MOVEDOWN 2260 //#define ID_TV_K_TOGGLENODE 2270 //#define ID_TV_K_TOGGLEANIM 2280 #define ID_TV_K_SHOWSTAT 2290 #define ID_TV_K_MOVECHILDUP 2300 #define ID_TV_K_MOVECHILDDOWN 2310 // Button IDs for the tangent type buttons #define ID_TV_TANGENT_FLAT 2320 #define ID_TV_TANGENT_CUSTOM 2330 #define ID_TV_TANGENT_FAST 2340 #define ID_TV_TANGENT_SLOW 2350 #define ID_TV_TANGENT_STEP 2360 #define ID_TV_TANGENT_LINEAR 2370 #define ID_TV_TANGENT_SMOOTH 2380 //Button ID for the DrawCurves Mode button #define ID_TV_DRAWCURVES 2390 // ID for the keyable property toggle action item (R5.1 and later only) #define ID_TV_TOGGLE_KEYABLE 2400 // trackview filter name to mask map #define FILTER_SELOBJECTS (1<<0) #define FILTER_SELCHANNELS (1<<1) #define FILTER_ANIMCHANNELS (1<<2) #define FILTER_WORLDMODS (1<<3) #define FILTER_OBJECTMODS (1<<4) #define FILTER_TRANSFORM (1<<5) #define FILTER_BASEPARAMS (1<<6) #define FILTER_POSX (1<<7) #define FILTER_POSY (1<<8) #define FILTER_POSZ (1<<9) #define FILTER_POSW (1<<10) #define FILTER_ROTX (1<<11) #define FILTER_ROTY (1<<12) #define FILTER_ROTZ (1<<13) #define FILTER_SCALEX (1<<14) #define FILTER_SCALEY (1<<15) #define FILTER_SCALEZ (1<<16) #define FILTER_RED (1<<17) #define FILTER_GREEN (1<<18) #define FILTER_BLUE (1<<19) #define FILTER_ALPHA (1<<20) #define FILTER_CONTTYPES (1<<21) #define FILTER_NOTETRACKS (1<<22) #define FILTER_SOUND (1<<23) #define FILTER_MATMAPS (1<<24) #define FILTER_MATPARAMS (1<<25) #define FILTER_VISTRACKS (1<<26) // More filter bits. These are stored in the 2nd DWORD. #define FILTER_GEOM (1<<0) #define FILTER_SHAPES (1<<1) #define FILTER_LIGHTS (1<<2) #define FILTER_CAMERAS (1<<3) #define FILTER_HELPERS (1<<4) #define FILTER_WARPS (1<<5) #define FILTER_VISIBLE_OBJS (1<<6) #define FILTER_POSITION (1<<7) #define FILTER_ROTATION (1<<8) #define FILTER_SCALE (1<<9) #define FILTER_CONTX (1<<10) #define FILTER_CONTY (1<<11) #define FILTER_CONTZ (1<<12) #define FILTER_CONTW (1<<13) #define FILTER_STATICVALS (1<<14) #define FILTER_HIERARCHY (1<<15) #define FILTER_NODES (1<<16) #define FILTER_BONES (1<<17) #define FILTER_KEYABLE (1<<18) #define DEFAULT_TREEVIEW_FILTER0 (FILTER_WORLDMODS|FILTER_OBJECTMODS|FILTER_TRANSFORM|FILTER_BASEPARAMS| \ FILTER_POSX|FILTER_POSY|FILTER_POSZ|FILTER_POSW|FILTER_ROTX|FILTER_ROTY|FILTER_ROTZ| \ FILTER_SCALEX|FILTER_SCALEY|FILTER_SCALEZ|FILTER_RED|FILTER_GREEN|FILTER_BLUE|FILTER_ALPHA| \ FILTER_NOTETRACKS|FILTER_MATMAPS|FILTER_MATPARAMS|FILTER_VISTRACKS|FILTER_SOUND) #define DEFAULT_TREEVIEW_FILTER1 (FILTER_POSITION|FILTER_ROTATION|FILTER_SCALE| \ FILTER_CONTX|FILTER_CONTY|FILTER_CONTZ|FILTER_CONTW|FILTER_VISIBLE_OBJS|FILTER_STATICVALS| \ FILTER_HIERARCHY|FILTER_NODES) // key tangent display setting #define DISPLAY_TANGENTS_NONE 1 #define DISPLAY_TANGENTS_SELECTED 2 #define DISPLAY_TANGENTS_ALL 3 #endif