private void ctrlBtnEventNew_Click(object sender, RoutedEventArgs e)
        {
            ClusterEventWindow Wnd = new ClusterEventWindow();

            Wnd.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            Wnd.Owner = this;

            Wnd.AvailableCategories = GetAvailableCategories();
            Wnd.AvailableTypes      = GetAvailableTypes();
            Wnd.AvailableNames      = GetAvailableNames();

            bool?RetVal = Wnd.ShowDialog();

            if (RetVal.HasValue && RetVal == true)
            {
                Dictionary <string, string> ArgMap = new Dictionary <string, string>();
                ClusterEvent NewEvt = new ClusterEvent(Wnd.SelectedCategory, Wnd.SelectedType, Wnd.SelectedName, Wnd.GetArgDictionary());
                NewEvt.RebuildJsonStringForGui();
                ClusterEvents.Add(NewEvt);

                RegistrySaver.AddRegistryValue(RegistrySaver.RegCategoryClusterEvents, NewEvt.SerializeToString());

                AppLogger.Log("New cluster event stored: " + NewEvt.ToString());
            }
            else
            {
                // Nothing to do
            }
        }
        private void ctrlBtnEventModify_Click(object sender, RoutedEventArgs e)
        {
            if (ctrlListClusterEvents.SelectedItems.Count > 0)
            {
                List <ClusterEvent> ItemsToModify = new List <ClusterEvent>();

                foreach (ClusterEvent Evt in ctrlListClusterEvents.SelectedItems)
                {
                    ItemsToModify.Add(Evt);
                }

                foreach (ClusterEvent Evt in ItemsToModify)
                {
                    int Idx = ClusterEvents.IndexOf(Evt);
                    if (Idx >= 0)
                    {
                        ClusterEventWindow Wnd = new ClusterEventWindow();
                        Wnd.WindowStartupLocation = WindowStartupLocation.CenterOwner;
                        Wnd.Owner = this;

                        Wnd.AvailableCategories = GetAvailableCategories();
                        Wnd.AvailableTypes      = GetAvailableTypes();
                        Wnd.AvailableNames      = GetAvailableNames();
                        Wnd.SelectedCategory    = Evt.Category;
                        Wnd.SelectedType        = Evt.Type;
                        Wnd.SelectedName        = Evt.Name;
                        Wnd.SetArgDictionary(Evt.Parameters);

                        bool?RetVal = Wnd.ShowDialog();
                        if (RetVal.HasValue && RetVal == true)
                        {
                            RegistrySaver.RemoveRegistryValue(RegistrySaver.RegCategoryClusterEvents, ClusterEvents[Idx].SerializeToString());
                            ClusterEvents[Idx] = new ClusterEvent(Wnd.SelectedCategory, Wnd.SelectedType, Wnd.SelectedName, Wnd.GetArgDictionary());
                            RegistrySaver.AddRegistryValue(RegistrySaver.RegCategoryClusterEvents, ClusterEvents[Idx].SerializeToString());
                        }
                    }
                }

                UpdateJsonInfo();
            }
        }