UiViewModels
Top-Level ViewModel object for Global Search floating widget.
default constructor
SearchFilter Property Name
Current Search Filter being applied
ResultItems Property Name
The items that currently match the filter.
IsFilterApplied Property Name
A value which indicates whether a filter is applied or not.
Threshold of items that we attempt to show to the user
IsWithinResultsThreshold Property Name
A boolean that checks whether we are within a prescibed threshold of results.
IsHighlightedIndex Property Name
The index of the highlighted item
Toolbar VM representation
default constructor
Tabs Property Name
Set of Tabs in toolbar
Sets browse mode to true if any of the Tabs are browsing.
Titles property name
The title of the toolbar, if it's floating
Titles property name
Returns true if in browser mode, false otherwise.
Resets all toolbar IsBrowsing properties to false.
ShowIcon Property Name
Toolbar shows icons at the top level
ShowText Property Name
Toolbar shows text at the top level.
ShowShortcutKeys Property Name
Represents the state where the toolbar is displaying the top-level tab shortcut keys.
Browses to a specific tab using its hotkey
Represents an item in the toolbar
Standard constructor
Action Property Name
The application action associated with this item
Owner Property Name
The Owner of this item
Image Property Name
The small image of the item
Tooltip Property Name
A tooltip of the item
Title of the item
Can be either Action.MenuText or MenuItem.Title depending on whether the menu
has a custom title
Title of the item
UseCustomTitle Property Name
Use the menu item's custom title instead of the action item MenuText property
IsSeparator Property Name
Is a separator item rather than an action item
IsInFilterCondition Property Name
If this item conforms to the current filter.
IsHighlighted Property Name
Whether the item is highlighted for selection.
HasAssignedIcon Property Name
Has an assigned icon (not the missing icon)
Creates a shallow-copy of the item, where the resolved application
action is reference-copied.
A shallow-copy of the item.
A sub-panel of a toolbar
constructor
The Items property name
The collection of items this panel holds
Name Property Name
The Name of the Panel
StripText Property Name
This panel should not display textual descriptions.
StripIcon Property Name
Determines whether icons should be shown
If panel show icons only
IsOverWhenLockOn Property Name
Mouse is over panel
IsHover Property Name
Whether the flyout of the panel is showing or not
IsGestureLockForFlyout Property Name
Determines if we currently in gesture lock state for determining whether the flyout
should be shown or fl
PostGestureLockForFlyout Property Name
This property reflects the value IsGestureLockForFlyout but is set after
any change is made to IsGestureLockForFlyout. We need this property because we
have an action which needs to take place deterministically after the processing of the state change for
IsGestureLockForFlyout is complete.
StripText Property Name
This panel should not display textual descriptions.
IsFlyoutMode Property Name
Whether the panel is in flyout mode or is being displayed linearly.
IsInFlyout Property Name
Whether the flyout is being shown or not.
HasBeenVisited Property Name
True if the panel has been visited by the user yet
IsDocked Property Name
IsDocked Property
IsDropOnTop Property Name
IsDropOnTop Property
IsDropOnBottom Property Name
IsDropOnBottom Property
Reset drop positions (onTop and onBottom)
IsVisible Property Name
IsVisible Property
IsSeparator Property Name
IsSeparator Property
Creates a deep copy of the panel, where all the items are copied as well.
A deep-copy version of the panel.
Class to hold a toolbar that goes on a tab.
Constructor
Toolbar Property Name
Gets the owning toolbar.
Panels Property Name
Set of Panels in toolbar
Name Property Name
The Name of the Panel
Gets the Shortcut key for this tab, or Char.MinValue if no shortcut key exists.
By convention, the shortcut key is identified by placing an ampersand before it in the title.
Image Property Name
The small image of the item
IsBrowsing Property Name
When the tab is being browsed (is open).
IsHover Property Name
Mouse hovering above tab
TabFilter Property Name
The current filter being applied to the tab.
IsFilterApplied Property Name
Shows whether a filter is in effect on a particular tab.
ShowTabShortcutKey Property Name
Indicates that tab should show its shortcut key, if it exists
States representing the various phases of the gesture
needed to "lock" a panel.
The initial state, before any point is recorded
An in-between state when the user is moving towards a lock,
but hasn't gotten there yet
The user is in a Lock state.
CurrentTabFlyoutGestureState Property Name
The representative state for where we are in the gesture state machine.
CurrentTabFlyoutGestureState Property Name
The current selected item.
Input type of the last selection change.
Input by mouse
Input by Keyboard
The input type of the last selection change.
Gets all of the items currently being shown, filter included
A list of items being shown
EventArgs containing the ICuiAction affected by the event.
The ICuiAction affected by the event.
Additional properties of an action.
The item's TooltipKey
The item's 16x16 path
The item's 24x24 path
The item's 30x30 path
The item's 32x32 path
The item's 36x36 path
The item's 48x48 path
The item's metadata: a string with data separated by commas
By deriving from this class (which includes ICommand and ICuiAction) and
placing the DLL containing the implemented class in bin\assemblies, 3ds Max will dynamically
load an instance of this class as an action in its CUI interface. When the
action is executed, it will call ICommand.Execute().
This is an adapter class. A client only need to satisfy the ICuiActionCommand interface
for their class to be loaded by the managed assembly loading process. However, this
class is easier to use.
The name of the action - to be used when browsing a list
of actions.
Required for ICuiAction.
The name of the category to which this action should belong.
Required for ICuiAction.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action. This text should be
identical across all localized versions of the product.
Required for ICuiAction.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action category. This text should be
identical across all localized versions of the product.
Required for ICuiAction.
The text that will be used if the action is instantiated in a toolbar button.
By default implementation is to forward ActionText as the result.
The text that will be used if the action is instantiated in the application menu or
a quad-menu.
By default implementation is to forward ActionText as the result.
Marks whether this action should appear in a menu. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic.
By default implementation is to return true.
Marks when this action should be available for use. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic. If False, an item
will appear "grayed out".
Implementation is to forward CanExecute(null) as the result.
This implementation is non-virtual. To override the behaviour,
override and implement CanExecute from the ICommand interface.
Implement this method if the action is "checked" (which means that the UI will show
the button as pressed, or the menu item as checked.)
By default implementation is to return false.
See ICommand.CanExecute()
By default implementation is to return true.
The event that is raised when the value of CanExecute changes.
Deriving classes can call OnCanExecuteChanged(EventArgs.Empty) to
raise this event when appropriate.
This method will raise the CanExecuteChanged event.
Should be EventArgs.Empty
The method that is called when this action is executed.
An optional parameter, usually
null when called from the 3ds Max CUI system.
Gets access to the tooltip key which is assigned to the action
The key is used to connect the action and its rich tooltip which is prepared by
Doc team.
This is a stub implementation of a CUI action command, for design-time
purposes. You can easily instantiate this class for designing Action-based
UI.
constructor
Sample
sample
does nothing
ActionText to reflect
Category to reflect
ActionText
Category
Actiontext
Actiontext
true
Blank - set at construction
Blank - set at construction
Gets access to the tooltip key which is assigned to the action
The key is used to connect the action and its rich tooltip which is prepared by
Doc team.
Returns the human-readable string describing the hotkey associated with the action,
if it exists.
An adapter for the ICuiDockableContent interface that provides default implementations
of many of the interface methods.
This is an adapter class. A client only need to satisfy the ICuiDockableContent interface
for their class to be loaded by the managed assembly loading process. However, this
class is easier to use.
Constructor - initializes the DestroyOnClose property to true.
The internal name of the docking frame.
This property should be not localized since it acts as identifier
and is used by the docking layout for storing / restoring layout information.
The name that the CUIFrame should assume.
This property should be localizable.
The Type of the user control that is created by this action.
Return true if moving the CUIFrame should Invalidate the user control and
force a repaint.
Return true if, when the CUIFrame dialog is closed, it should call DestroyWindow()
on itself. Alternatively, if false is returned here, the window will simply be
closed, but not destroyed. This would be useful if the content is expensive to
create.
The default implementation does destroy the content on close.
This method is called by the managed assembly loading process process
when it is ready to create and show the managed user control.
An instance of the Control to create and place as the root object
in a CUIFrame.
This is a callback function that 3ds Max calls when the CUI frame is docked
or floated from the main application frame.
By default, this fucntion does nothing. Implement this method to notify content of
docking changes.
An instance of a Control returned by CreateDockableContent().
The new dock state of the CUIFrame.
The dock modes that this control supports.
By default, this property is implemented to only return the Top docking
position as a possible dock mode.
This should be raised when this component is asked to reset its configuration
to factory defaults.
Raises the ResettingConfiguration event.
Raises the ResettingConfiguration event with the passed in parameters.
normally EventArgs.Empty
This should be raised when this component is currently saving out its current state.
Raises the SavingConfiguration event with the passed in file name.
The full path of the file where the configuration is being saved.
Raises the SavingConfiguration event with the passed in parameters.
EventArgs that store the target filename
This should be raised when this component is currently loading in a persisted state.
Raises the LoadingConfiguration event with the passed in file name.
The full path of the file where the configuration is being loaded from.
Raises the LoadingConfiguration event with the passed in parameters.
EventArgs that store the target filename
By default, control docks maximized.
By default, the control is not considered a main toolbar.
The name of the action - to be used when browsing a list
of actions.
Required for ICuiAction.
The name of the category to which this action should belong.
Required for ICuiAction.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action. This text should be
identical across all localized versions of the product.
Required for ICuiAction.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action category. This text should be
identical across all localized versions of the product.
Required for ICuiAction.
The text that will be used if the action is instantiated in a toolbar button.
By default implementation is to forward ActionText as the result.
The text that will be used if the action is instantiated in the application menu or
a quad-menu.
By default implementation is to forward ActionText as the result.
Marks whether this action should appear in a menu. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic.
By default implementation is to return true.
Marks when this action should be available for use. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic. If False, an item
will appear "grayed out".
By default implementation is to return true.
Implement this method if the action is "checked" (which means that the UI will show
the button as pressed, or the menu item as checked.)
By default implementation is to return false.
Implement this method if your component does not capture keyboard focus when it activates.
Default implementation is to return true.
Gets access to the tooltip key which is assigned to the action
The key is used to connect the action and its rich tooltip which is prepared by
Doc team.
Given a ICuiDockableWindow, provides an "action-like" interface to that
Window.
Standard constructor.
An object that implements the interface that needs to be
adapted to the action system.
Access to the wrapped interface object.
The internal name of the docking frame.
An appropriate WindowTitle (though it likely won't be seen by the user).
The Wrapped ContentType of the internal object.
Access to the equivalent method of the wrapped interface.
Stub ActionText (won't be seen by user).
Stub ActionText (won't be seen by user).
Stub category (won't be seen by user).
Stub category (won't be seen by user).
By default, control docks maximized.
Docking modes allowed by internal object.
Forwarded to internal interface.
object that is being docked
The dock mode being set (not bit masked).
Fulfills control for CuiDockableContentAdapter.
Contains the Dock enum values.
These bit values match the CUI docking bit values found in custcont.h
Allows Dock to Top of application frame
Allows Dock to Bottom of application frame
Allows Dock to Left of application frame
Allows Dock to Right of application frame
All docking content can be floated, but this is used to indicate
that the content has entered Floating mode.
Allows Docking to viewport as an Extended View
The mask to apply to a Dock enum to only discover the edges that it docks to.
Bits found beyond this mask are not related to the dock edge.
This base interface should be implemented if the user wants to expose a new
CUI action whose entry-point is a .NET assembly.
This is actually the root interface of two other important interfaces -
ICuiActionExecuteNotifier and ICuiDockableContent. By implementing those
interfaces in a DLL that targets the bin\assemblies folder of a 3ds Max
install, you will see them appear in the standard CUI dialog under the
category specified below.
The name of the action - to be used when browsing a list
of actions.
This is equivalent to DescriptionText in the ActionItem C++ SDK class.
This property should be localized.
The name of the category to which this action should belong.
When dynamically loading actions, a category will be created if an
action is declared to be part of a, as of yet, undeclared category.
This property should be localized.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action. This text should be
identical across all localized versions of the product.
Normally you would have the ActionText property refer to a localized
resource entry, while this text can and should be hardcoded into the code.
This is internal text that is not used in the user interface anywhere,
but is used to uniquely identify the action category. This text should be
identical across all localized versions of the product.
Normally you would have the Category property refer to a localized
resource entry, while this text can and should be hardcoded into the code.
The text that will be used if the action is instantiated in a toolbar button.
Equivalent to ActionItem::ButtonText() in the C++ SDK.
This property should be localized.
The text that will be used if the action is instantiated in the application menu or
a quad-menu.
Equivalent to ActionItem::MenuText() in the C++ SDK.
This property should be localized.
Marks whether this action should appear in a menu. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic.
Marks when this action should be available for use. This condition is evaluated
whenever a menu is shown - meaning the result can be dynamic. If False, an item
will appear "grayed out".
Implement this method if the action is "checked" (which means that the UI will show
the button as pressed, or the menu item as checked.)
Gets access to the tooltip key which is assigned to the action
The key is used to connect the action and its rich tooltip which is prepared by
Doc team.
Static placeholder class.
If a class implements ICuiActionExecuteNotifier or ICuiDockableContent, the
bootstrap loader will look to see if a method with the name GetInstanceOfAction is
declared (static, with no parameters.) If so, it will assume that the action is
meant to be a singleton and will load it as such.
Actions should be declared as singletons if they contain some system state that
is not serialized or discoverable using regular means.
By implementing this interface and placing the DLL containing the implemented
class in bin\assemblies, 3ds Max will, as a result, dynamically
load an instance of this class as an action in its CUI interface. When the
action is executed, it will call ICommand.Execute().
A client only need to satisfy the ICuiActionCommand interface
for their class to be loaded by the managed assembly loading process. However,
The CuiActionCommandAdapter class exists to make this interface easier to use.
An interface that allows the client to batch-create and declare CuiActions.
Implementing this action will result in the bootstrap manager calling this
method on startup to declare a batch of action items. This allows a plugin
to procedurally declare action items in bunches.
An iterator of CuiActions to declare to the bootstrap manager.
By implementing this interface (which includes ICuiAction), and placing
the class in a DLL that is deposited in bin\assemblies, 3ds Max will dynamically
load this class as an action in its CUI interface. When the action is executed, content
returned by ICuiDockableContent will be loaded into a CUIFrame Win32 dockable window and launched.
This interface is provided as a means to quickly add a .NET WPF-based User Interface solution
to 3ds Max. In particular, this method supports creating a WPF Control which can then be
instantiated within 3ds Max.
In brief, a developer can create a WPF Control project, model a control and program the
functionality, and finally declare an action class that implements this interface and who
creates an instance of this Control. The Control will fill the CUIFrame, but otherwise
will behave as if it was created within a WPF dialog.
The internal name of the docking frame.
This property should be not localized since it acts as identifier
and is used by the docking layout for storing / restoring layout information.
The name that the CUIFrame should assume.
This property should be localizable.
The Type of the user control that is created by this action.
Return true if moving the CUIFrame should Invalidate the user control and
force a repaint.
Return true if, when the CUIFrame dialog is closed, it should call DestroyWindow()
on itself. Alternatively, if false is returned here, the window will simply be
closed, but not destroyed. This would be useful if the content is expensive to
create.
This method is called by the managed assembly loading process process
when it is ready to create and show the managed user control.
An instance of the Control to create and place as the root object
in a CUIFrame.
This is a callback function that 3ds Max calls when the CUI frame is docked
or floated from the main application frame.
An instance of a Control returned by CreateDockableContent().
The new dock state of the CUIFrame.
The dock modes that this control supports.
When docking on application edges, this control maximizes to fill the screen in the direction
of the dock.
A content provider can decide whether it should always have keyboard focus, or
whether max's keyboard should still work while working with this user control.
In some cases it may be more appropriate to control accelerators at a finer level
of granularity. For instance, you may want the main canvas area of your control to
accept max hotkey commands, while you want to obtain keyboard focus (disable accelerators)
when selecting a sub-control (i.e. a textbox).
If true, this content provider will be listed in the main toolbars context menu of the
application, and will be shown and hidden accordingly.
Due to the requirements of this entry point, the DestroyOnClose property will always be treated
as being 'false' if this property is true. A closed toolbar will only be hidden, not destroyed.
It will be destroyed on shutdown, as per usual.
This should be raised when this component is asked to reset its configuration
to factory defaults.
This should be raised when this component is currently saving out its current state.
This should be raised when this component is currently loading in a persisted state.
An interface that a Window object can implement to interact with the
Max CUI system to provide a dock-representation object.
Often when a window is to dock in the main frame, it won't want to keep the exact
same representation of itself. Instead, this interface allows the Application to
query the Window for a representation or UI control which is appropriate in a doc state.
Often, the same ViewModel can be used to plug-in to the new UI control.
The Type of the user control that is created by this action.
This method is called by the managed assembly loading process process
when it is ready to create and show the managed user control.
An instance of the Control to create and place as the root object
in a CUIFrame.
This is a callback function that 3ds Max calls when the CUI frame is docked
or floated from the main application frame.
An instance of a Control returned by CreateDockableContent().
The new dock state of the CUIFrame.
The dock modes that this control supports.
The internal name of the docking frame.
This property should be not localized since it acts as identifier
and is used by the docking layout for storing / restoring layout information.
The name that the CUIFrame should assume.
This property should be localizable.
Notifies 3ds Max that a new ActionItem was created dynamically after the
application initialization phase and must be published in the CUI system.
To publish dynamic events from a managed plug-in placed in bin\assemblies,
create a public concrete singleton class implementing IDynamicActionCreator.
The plug-in loading system will listen for ActionItemCreated events, and
register the ICuiAction instance from the ActionItemEventArgs into 3ds Max's
action manager.
Fires when a new ActionItem is instantiated to signal the plug-in loader
to register it within the CUI action manager.
This interface should be implemented when a class needs to allow
callers to re-query its states (properties) to force binding
update.
This function should contain the functionality that requeries
the states (properties)
Base class that supplies some boiler-plate for the
common ViewModel architectural patter, as used by
WPF.
Call this method to raise the PropertyChanged event.
name of property that changed
Event for interface INotifyPropertyChanged.
A command implementation for putting a ViewportTab
into the editing state.
Executes the command.
the param (expected MouseEventArgs)
ViewModel class which represents a system ViewPanel preset.
Constructor.
Property name for Name property.
The name of the ViewPanel preset.
Property name for CreateViewportFromPresetCommand.
The command to a new view panel using the current preset as a template.
Property name for DeletePresetCommand.
The command to Delete a given preset from the system configuration.
Name of Layout property.
The base layout configuration of this viewport.
Property name for TypesInLayout
Retrieves an array of the type of viewports present in this preset.
The index of the type in the array corresponds to the viewport in the screen,
with index 0 being the top left corner, and the index increasing
in a clockwise direction from there.
Property name for Index property.
The current index of the ViewPanel preset in the model
Property name for IsEditing property.
Whether or not we are currently editing the presets
The VM for the ViewportTabs control.
Contructor.
Property name for Views.
A collection of viewport tabs.
Name of Presets property.
A collection of the system ViewPanel presets.
Property name for CanCreateMoreViews.
A value which keeps track of whether the current Viewport tabbing system can create more
viewports.
Property name for CanCreateMoreViews.
A value which keeps track of whever we are in new panel adding mode
Property name for IsEditingPresets.
A value which keeps tracks whether we are in the process of editing the presets or not
Property name for CreateCommand.
The command to call to create a tab
Property name for CreatePresetCommand.
The command to call to create a viewport preset based on
a given viewpanel configuration.
Property name for MainWindowHwnd.
The main application window handle. Used for certain calculations relating
to dialog popups.
IsTabSettingsPanelOpen Property Name
Is true if any Tab Settings Panel is open.
Acts a VM model for a Viewport Tab.
Viewport Tab status enum
There is no status for Viewport Tab
This value should be used as default
View Panel Preset is created successfully
View Panel Preset is not created
Name property name.
The name of the Viewport.
ViewIndex property name
The viewport index.
Represents the different possibile types of
viewports present in the layout
a 3D view
an extended view
Property name for TypesInLayout
Retrieves an array of the type of viewports present in this layout.
The index of the type in the array corresponds to the viewport in the screen,
with index 0 being the top left corner, and the index increasing
in a clockwise direction from there.
ViewPanel layout configurations
Single viewport
2 vertical viewports
2 horizontal viewports
2 horizontal viewports, big on top
2 horizontal viewports, big on bottom
3 viewports, 2 vertical on left
3 viewports, 2 vertical on right
3 viewports, 2 horizontal on top
3 viewports, 2 horizontal on bottom
Default layout, four quadrant viewports
4 viewports, 3 vertical on left
4 viewports, 3 vertical on right
4 viewports, 3 horizontal on top
4 viewports, 3 horizontal on bottom
1 central viewport?
Command property name
The configuration of the viewports in this tab.
This variable defines how the viewports are laid out.
Command property name
Command associated with the viewport button.
Delete Command property name
Delete Command associated with the viewport button.
Create Preset Command property name
The command for creating a preset from this tab.
IsActive property name
Represents whether this viewport is currently active.
IsLocked property name
Represents whether this viewport is currently highlighted.
IsLocked property name
Represents whether this viewport is locked, or undeletable.
IsEditing Property name.
Determines whether the ViewportTab is an in editing state.
The command to run to show the editing popup.
Status Property name
Status of viewport tab like: preset is created, preset is not created, etc
The owning Viewports VM object.
Represents a Workspace loader
Name property name.
The name of the Viewport.
FullPath property name.
The full file path of the Workspace root file.
Identifier property name.
The workspace identifier (language-independent key)
Whether or not this is the Active workspace (loaded).
The workspace identifier (language-independent key)
Run Script options.
Run script.
Run Script path options.
Run script path.
Run Script exit path options.
Run script exit path.
Subsystem options.
Subsystems.
Command property name
Loader Command parameter
Command Parameter property name
Loader Command parameter
Command property name
Delete workspace Command
IsSystemWorkpace property name
Whether this is a system workspace or not
Equality checked for WorkspaceLoaderItems. Equality is
based on FullPath and Name being equal.
the item to compare
true if equal
Represents a Workspace's Subsystems
Name property Name
The name of the subsystem.
Description property Name
The description of the subsystem.
Value property Name
The value of the subsystem.
Equality checked for WorkspaceLoaderItemSubsystem. Equality is
based on FullPath and Name being equal.
the item to compare
true if equal
ViewModel for Workspace Manager dialog.
Default
Workspaces property name
Set of available workspaces.
CurrentActiveWorkspace property name
The Active workspace, which also corresponds to the Loaded workspace.
The SaveAsNewCommand property name
The command that is launched once Save As New is requested.
The SaveAsDefaultCommand property name
The command that is launched once Save As Default is requested.
The RestoreToDefaultCommand property name
The command that is launched once Restore to Default is requested.
The BrowseEntryScriptCommand property name
The command that is launched once Restore to Default is requested.
The BrowseExitScriptCommand property name
The command that is launched once Restore to Default is requested.
ProcessSaveAsNewCommand Property Name
The meta command that launches the Save As New interactive dialog.