Example #1
0
        /// <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());
        }