Exemplo n.º 1
0
        public static void RestoreNlmData(NlmTreeListView listView, NlmData nlmData)
        {
            listView.SmartFolderMode = nlmData.SmartFolderNode;
            NlmTreeNodeFilterEngine FilterEngine = listView.ModelFilter as NlmTreeNodeFilterEngine;

            if (nlmData.BonesFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Bone);
            }

            if (nlmData.CameraFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Camera);
            }

            if (nlmData.HelperFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Helper);
            }

            if (nlmData.LightFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Light);
            }

            if (nlmData.ObjectFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Object);
            }

            if (nlmData.ShapeFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.Shape);
            }

            if (nlmData.SpaceWarpFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.SpaceWarp);
            }

            if (nlmData.LayerHiddenFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.LayerHidden);
            }

            if (nlmData.LayerFrozenFiltered)
            {
                FilterEngine.AddFilter(TreeNodeFilter.LayerFrozen);
            }
        }
Exemplo n.º 2
0
        public static void onFilterLayerFrozen(Object sender, ClickEventArgs e)
        {
            NlmCheckButton          button            = sender as NlmCheckButton;
            NlmTreeNodeFilterEngine nlmTreeNodeFilter = e.ListView.ModelFilter as NlmTreeNodeFilterEngine;

            if (button.Checked)
            {
                nlmTreeNodeFilter.AddFilter(TreeNodeFilter.LayerFrozen);
            }
            else
            {
                nlmTreeNodeFilter.RemoveFilter(TreeNodeFilter.LayerFrozen);
            }
            e.ListView.ModelFilter = nlmTreeNodeFilter;
        }
Exemplo n.º 3
0
        public NlmTreeListView()
        {
            DisabledHandles = new List <UIntPtr>();

            Margin = new Padding(0);
            Dock   = DockStyle.Fill;

            // Apply look from 3ds Max colour scheme and set ImageList.
            MaxLook.ApplyLook(this);
            NodeClassImageList.Apply(this);

            // Set properties.
            AllowDrop                = true;
            IsSimpleDragSource       = true;
            IsSimpleDropSink         = true;
            FullRowSelect            = true;
            UseAlternatingBackColors = true;
            RowHeight                = 20;
            UseCustomSelectionColors = true;
            HideSelection            = false;
            CellEditActivation       = ObjectListView.CellEditActivateMode.DoubleClick;
            UseFiltering             = true;
            BorderStyle              = BorderStyle.FixedSingle;
            View                               = View.Details;
            OwnerDrawnHeader                   = true;
            RevealAfterExpand                  = false; // After expanding, the expand node moves to the top of the listview. It's kinda jarring so turn it off.
            CanUseApplicationIdle              = false; // 3ds Max appears to completley suppress application idle events.
            DisabledItemStyle                  = new DisabledNodeStyle(this);
            SelectColumnsOnRightClick          = true;
            SelectColumnsOnRightClickBehaviour = ColumnSelectBehaviour.InlineMenu;
            ShowCommandMenuOnRightClick        = false;
            ShowFilterMenuOnRightClick         = false;

            // Instance feature expansion classes.
            TreeColumnRenderer   = new NlmTreeColumnRenderer();
            ColumnHeaderRenderer = new ColumnHeaderRenderer(this);
            NlmColumns           = new NlmColumnCollection(this);
            CellEditValidator    = new CellEditValidator(this);
            MouseLeftClick       = new MouseLeftClick(this);
            ModelFilter          = new NlmTreeNodeFilterEngine(this);
            NodeControl          = new NodeController(this);
            ContextMenu          = new NlmContextMenu(this);

            // Load saved state if it exists
            MaxIO.LoadNlmData(this);

            this.CellEditStarting += new CellEditEventHandler(onBeforeLabelEdit);
        }
Exemplo n.º 4
0
        public NlmData(NlmTreeListView listView)
        {
            SmartFolderNode = listView.SmartFolderMode;

            NlmTreeNodeFilterEngine FilterEngine = listView.ModelFilter as NlmTreeNodeFilterEngine;

            BonesFiltered       = FilterEngine.IsFilterActive(TreeNodeFilter.Bone);
            CameraFiltered      = FilterEngine.IsFilterActive(TreeNodeFilter.Camera);
            HelperFiltered      = FilterEngine.IsFilterActive(TreeNodeFilter.Helper);
            LightFiltered       = FilterEngine.IsFilterActive(TreeNodeFilter.Light);
            ObjectFiltered      = FilterEngine.IsFilterActive(TreeNodeFilter.Object);
            ShapeFiltered       = FilterEngine.IsFilterActive(TreeNodeFilter.Shape);
            SpaceWarpFiltered   = FilterEngine.IsFilterActive(TreeNodeFilter.SpaceWarp);
            LayerHiddenFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.LayerHidden);
            LayerFrozenFiltered = FilterEngine.IsFilterActive(TreeNodeFilter.LayerFrozen);
        }
Exemplo n.º 5
0
        public static void SearchBarTextChanged(Object sender, SearchBarEventArgs e)
        {
            try
            {
                e.ListView.BeginUpdate();

                // TODO: Why did I do this selection memory thing?
                IList selection = e.ListView.SelectedObjects;

                NlmTreeNodeFilterEngine nlmNodeFilter = e.ListView.ModelFilter as NlmTreeNodeFilterEngine;
                nlmNodeFilter.AddStringFilter(e.Text);
                e.ListView.ModelFilter = nlmNodeFilter;

                e.ListView.SelectObjects(selection);
            }
            catch
            {
                throw new Exception();
            }
            finally
            {
                e.ListView.EndUpdate();
            }
        }