private void ClickAddParamEnum(object sender, RoutedEventArgs e)
        {
            Models.ParameterType type = ListParamTypes.SelectedItem as Models.ParameterType;

            type.Enums.Add(new Models.ParameterTypeEnum()
            {
                Name = "Name", Value = 0
            });
        }
        private void ClickOpen(object sender, RoutedEventArgs e)
        {
            OpenFileDialog diag = new OpenFileDialog();

            diag.Title  = "Projekt öffnen";
            diag.Filter = "Kaenx Hersteller Projekt (*.ae-manu)|*.ae-manu";
            if (diag.ShowDialog() == true)
            {
                string general = System.IO.File.ReadAllText(diag.FileName);
                General = Newtonsoft.Json.JsonConvert.DeserializeObject <Models.ModelGeneral>(general, new Newtonsoft.Json.JsonSerializerSettings()
                {
                    TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto
                });
                filePath = diag.FileName;

                foreach (Models.Application app in General.Applications)
                {
                    foreach (Models.AppVersion ver in app.Versions)
                    {
                        foreach (Models.Parameter para in ver.Parameters)
                        {
                            if (!string.IsNullOrEmpty(para._memory))
                            {
                                Models.Memory mem = ver.Memories.Single(m => m.Name == para._memory);
                                para.MemoryObject = mem;
                            }
                            if (!string.IsNullOrEmpty(para._parameterType))
                            {
                                Models.ParameterType pt = ver.ParameterTypes.Single(p => p.Name == para._parameterType);
                                para.ParameterTypeObject = pt;
                            }
                        }

                        foreach (Models.ParameterRef pref in ver.ParameterRefs)
                        {
                            if (!string.IsNullOrEmpty(pref._parameter))
                            {
                                Models.Parameter para = ver.Parameters.Single(p => p.Name == pref._parameter);
                                pref.ParameterObject = para;
                            }
                        }

                        foreach (Models.ComObjectRef cref in ver.ComObjectRefs)
                        {
                            if (!string.IsNullOrEmpty(cref._comObject))
                            {
                                Models.ComObject com = ver.ComObjects.Single(c => c.Name == cref._comObject);
                                cref.ComObjectObject = com;
                            }
                        }

                        LoadSubDyn(ver.Dynamics[0], ver.ParameterRefs.ToList(), ver.ComObjectRefs.ToList());
                    }


                    string mid = app._maskId;
                    if (string.IsNullOrEmpty(mid))
                    {
                        continue;
                    }

                    Models.MaskVersion mask = BCUs.Single(bcu => bcu.Id == mid);
                    app.Mask = mask;
                }


                foreach (Models.Hardware hard in General.Hardware)
                {
                    if (string.IsNullOrEmpty(hard._appsString))
                    {
                        continue;
                    }

                    foreach (string name in hard._appsString.Split(','))
                    {
                        try{
                            hard.Apps.Add(General.Applications.Single(app => app.Name == name));
                        } catch {}
                    }
                }

                SetSubCatalogItems(General.Catalog[0]);

                SetButtons(true);
            }
        }