/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public IPcgMemory FindMasterPcg(IModel model) { IPcgViewModel viewModel = (from masterFile in this where (masterFile.Model == model) && (masterFile.FileState == MasterFile.EFileState.Loaded) select MainViewModel.FindPcgViewModelWithName(masterFile.FileName)).FirstOrDefault(); if ((viewModel != null) && (viewModel.SelectedPcgMemory != null)) { return(viewModel.SelectedPcgMemory); } return(null); }
/// <summary> /// /// </summary> /// <param name="pcgViewModel"></param> /// <param name="combi"></param> public CombiViewModel(IPcgViewModel pcgViewModel, ICombi combi) { PcgViewModel = pcgViewModel; Combi = combi; // Select first if none selected. if ((Combi.Timbres.TimbresCollection.Any()) && (Combi.Timbres.TimbresCollection.Count(item => item.IsSelected) == 0)) { Combi.Timbres.TimbresCollection[0].IsSelected = true; } Combi.PcgRoot.PropertyChanged += OnPcgRootChanged; ReassignClearProgram(); }
/// <summary> /// /// </summary> /// <param name="pcgViewModel"></param> /// <param name="selectedPatches"></param> /// <returns>True if at least one patch cleared</returns> public bool ClearPatches(IPcgViewModel pcgViewModel, List <IPatch> selectedPatches) { _pcgViewModel = pcgViewModel; var atLeastOnePatchUsedAsReference = selectedPatches.OfType <IReferencable>().Any(reference => reference.NumberOfReferences > 0); bool clearUnusedPatches; bool clearUsedPatches; CheckPatchesToClear(atLeastOnePatchUsedAsReference, out clearUnusedPatches, out clearUsedPatches); if (!clearUnusedPatches && !clearUsedPatches) { return(false); } var atLeastOnePatchCleared = false; foreach (var patch in selectedPatches.Where( patch => !(patch is IReferencable) || // Set list slots ((((IReferencable)patch).NumberOfReferences > 0) && clearUsedPatches) || // Used patch ((((IReferencable)patch).NumberOfReferences == 0) && clearUnusedPatches))) // Unused patch { if (Settings.Default.UI_ClearPatchesFixReferences) { IPatch firstDuplicate = null; if ((patch is IProgram) || (patch is ICombi)) { firstDuplicate = patch.FirstDuplicate; } if (firstDuplicate != null) { (patch as IReferencable).ChangeReferences(firstDuplicate); } } patch.Clear(); atLeastOnePatchCleared = true; } return(atLeastOnePatchCleared); }
/// <summary> /// /// </summary> /// <param name="pcgViewModel"></param> /// <param name="combi"></param> public CombiWindow(IPcgViewModel pcgViewModel, ICombi combi) { InitializeComponent(); ViewModel = new CombiViewModel(pcgViewModel, combi) { ShowEditDialog = () => { var window = new WindowEditSingleCombi(CombiViewModel.Combi); var result = window.ShowDialog(); return(result.HasValue && result.Value); }, UpdateUiContent = () => { listViewTimbres.Items.Refresh(); listViewTimbres.UpdateLayout(); }, CloseWindow = CloseWindow }; DataContext = ViewModel; }
/// <summary> /// /// </summary> /// <param name="pcgViewModel"></param> public void Execute(IPcgViewModel pcgViewModel) { DoubleToSingleKeyboardWindow window = new DoubleToSingleKeyboardWindow(pcgViewModel.SelectedPcgMemory, this); window.ShowDialog(); }