/// <summary> /// Handles the ItemChecked event of the list view of plugins. /// </summary> /// <remarks> /// This enforces any restrictions on the selection of plugins. /// </remarks> /// <param name="sender">The object that triggered the event.</param> /// <param name="e">An <see cref="EventArgs" /> describing the event arguments.</param> private void lvwPlugins_ItemChecked(object sender, ItemCheckedEventArgs e) { var lviItem = e.Item; var lvgGroup = lviItem.Group; switch ((GroupType)lvgGroup.Tag) { case GroupType.SelectAtMostOne: case GroupType.SelectExactlyOne: if (lviItem.Checked) { foreach (ListViewItem lviGroupItem in lvgGroup.Items) { if ((lviGroupItem != lviItem) && (lviGroupItem.Index > -1)) { lviGroupItem.Checked = false; } } } break; } var pifPlugin = (PluginInfo)e.Item.Tag; if (lviItem.Checked) { foreach (var cfgFlag in pifPlugin.Flags) { m_dsmStateManager.SetFlagValue(cfgFlag.Name, cfgFlag.ConditionalValue, pifPlugin); } } else { m_dsmStateManager.RemoveFlags(pifPlugin); } ItemChecked(this, new EventArgs()); }