Example #1
0
        // has selection
        // one selected
        // all selected
        private void OnSelectionChanged(StageView sender, int count)
        {
            bool hasFocus     = currentStage.HasEditFocus();
            int  instCount    = hasFocus ? currentStage.InstanceCount : 0;
            bool hasSelection = hasFocus ? count > 0 : false;

            if ((selectionCount > 0 && count == 0) ||
                (selectionCount == 0 && count > 0) ||
                !hasFocus)
            {
                cutToolStripMenuItem.Enabled        = hasSelection;
                copyToolStripMenuItem.Enabled       = hasSelection;
                deleteMenuItem.Enabled              = hasSelection;
                duplicateMenuItem.Enabled           = hasSelection;
                selectNoneToolStripMenuItem.Enabled = hasSelection;

                flipHorizontalToolStripMenuItem.Enabled  = hasSelection;
                flipVerticalToolStripMenuItem.Enabled    = hasSelection;
                rotateLeft15ToolStripMenuItem.Enabled    = hasSelection;
                rotateRight15ToolStripMenuItem.Enabled   = hasSelection;
                removeTransformToolStripMenuItem.Enabled = hasSelection;
            }

            if (hasSelection)
            {
                breakApartToolStripMenuItem.Enabled = currentStage.CanBreakApart();
            }

            // isTop/isBottom is a bit expensive, so sanity test first
            if (hasSelection && instCount > count)
            {
                DepthChanged();
            }
            else
            {
                toTopToolStripMenuItem.Enabled     = false;
                toBottomToolStripMenuItem.Enabled  = false;
                upOneToolStripMenuItem.Enabled     = false;
                backOneToolStripMenuItem.Enabled   = false;
                infrontOfToolStripMenuItem.Enabled = false;
                behindToolStripMenuItem.Enabled    = false;
            }

            editInPlaceToolStripMenuItem.Enabled = hasFocus && currentStage.CanEditInPlace();

            if (hasFocus && selectionCount == instCount)
            {
                selectAllToolStripMenuItem.Enabled = false;
            }
            else
            {
                selectAllToolStripMenuItem.Enabled = true;
            }

            selectionCount = count;
        }