// 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; }