示例#1
0
        /// <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;
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mainWindow"></param>
        /// <param name="pcgFileName"></param>
        /// <param name="pcgMemory"></param>
        public PcgWindow(MainWindow mainWindow, string pcgFileName, IPcgMemory pcgMemory)
        {
            InitializeComponent();

            _mainWindow = mainWindow;
            ViewModel   = new PcgViewModel(mainWindow.ViewModel.PcgClipBoard)
            {
                ShowDialog = (type, items) =>
                {
                    Window window = null;

                    switch (type)
                    {
                    // Programs
                    case ViewModels.PcgViewModel.DialogType.EditSingleProgram:
                        window = new WindowEditSingleProgram(items.First() as IProgram)
                        {
                            Owner = _mainWindow
                        };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultiplePrograms:
                        //window = new WindowEditMultiplePrograms(items as List<IProgram>) { Owner = _mainWindow };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditSingleProgramBank:
                        //window = new WindowEditSingleProgramBank(items.First() as IProgramBank) { Owner = _mainWindow };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultipleProgramBanks:
                        //window = new WindowEditMultipleProgramBanks(items as List<IProgramBank>) { Owner = _mainWindow };
                        break;

                    // Combis
                    case ViewModels.PcgViewModel.DialogType.EditSingleCombi:
                        window = new WindowEditSingleCombi(items.First() as ICombi)
                        {
                            Owner = _mainWindow
                        };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultipleCombis:
                        //window = new WindowEditMultipleCombis(items as List<ICombi>) { Owner = _mainWindow };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditSingleCombiBank:
                        //window = new WindowEditSingleCombiBank(items.First() as ICombiBank) { Owner = _mainWindow };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultipleCombiBanks:
                        //window = new WindowEditMultipleCombiBanks(items as List<ICombiBank>) { Owner = _mainWindow };
                        break;


                    // Set list slots
                    case ViewModels.PcgViewModel.DialogType.EditSingleSetListSlot:
                        window = new WindowEditSingleSetListSlot(items.First() as ISetListSlot)
                        {
                            Owner = _mainWindow
                        };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultipleSetListSlots:
                        //window = new WindowEditMultipleSetListSlot(items as List<ISetListSlot>)
                        //{
                        //    Owner = _mainWindow
                        //};
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditSingleSetList:
                        window = new WindowEditSingleSetList(items.First() as ISetList)
                        {
                            Owner = _mainWindow
                        };
                        break;

                    case ViewModels.PcgViewModel.DialogType.EditMultipleSetLists:
                        //window = new WindowEditMultipleSetLists(items as List<ISetLists>) { Owner = _mainWindow };
                        break;

                    default:
                        throw new ApplicationException("Illegal window type");
                    }

                    window?.ShowDialog();
                },


                ShowPasteWindow = () =>
                {
                    var window = new SettingsWindow {
                        Owner = _mainWindow
                    };
                    window.ShowDialog();
                },


                ShowMessageBox = (text, title, messageBoxButton, messageBoxImage, messageBoxResult) =>
                                 WindowUtils.ShowMessageBox(_mainWindow, text, title, messageBoxButton,
                                                            messageBoxImage, messageBoxResult),


                SetCursor = WindowUtils.SetCursor,


                ShowListGenerator = () =>
                {
                    var window = new ListGeneratorWindow((PcgMemory)ViewModel.SelectedMemory)
                    {
                        Owner = _mainWindow
                    };
                    try
                    {
                        window.ShowDialog();
                    }
                    catch (InvalidOperationException)
                    {
                        // Do nothing
                    }
                },


                ShowProgramReferencesChanger = () =>
                {
                    var window = new ProgramReferenceChangerWindow((PcgMemory)ViewModel.SelectedMemory)
                    {
                        Owner = _mainWindow
                    };

                    try
                    {
                        window.ShowDialog();
                    }
                    catch (InvalidOperationException)
                    {
                        // Do nothing
                    }
                },

                ShowTimbresWindow = (combi, width, height) =>
                {
                    // Check if already exists. If so, show the already opened window.
                    foreach (var child in from child in _mainWindow.Container.Children
                             where (child.Content is CombiWindow)
                             let combiWindowIteration = child.Content as CombiWindow
                                                        where combiWindowIteration.CombiViewModel.Combi == combi
                                                        select child)
                    {
                        child.Focus();
                        return;
                    }

                    // Create combi window if not already present.
                    var mdiChild = new MdiChild
                    {
                        Title       = GenerateCombiWindowTitle(combi),
                        Content     = new CombiWindow(PcgViewModel, combi),
                        MinimizeBox = false,
                        MaximizeBox = false,
                        Width       = width,
                        Height      = height,
                        Margin      = new Thickness(0, 0, 0, 0)
                    };

                    ((CombiWindow)(mdiChild.Content)).MdiChild = mdiChild;
                    _mainWindow.Container.Children.Add(mdiChild);
                    mdiChild.GotFocus += _mainWindow.MdiGotFocus;
                    mdiChild.Closing  += _mainWindow.MdiClosing;
                },


                EditParameterWindow = patches =>
                {
                    var window = new WindowEditParameter(patches);
                    window.ShowDialog();
                },

                UpdateTimbresWindows = () =>
                {
                    // Update every timbre window.
                    foreach (var child in from child in _mainWindow.Container.Children
                             where (child.Content is CombiWindow)
                             select child)
                    {
                        var viewModel = ((CombiWindow)(child.Content)).CombiViewModel;
                        viewModel.UpdateUiContent();
                        child.Title = GenerateCombiWindowTitle(viewModel.Combi);
                    }

                    /*
                     *      // If it is a master file being changed, also update all other windows.
                     *      var masterFile = MasterFiles.Instances.FindMasterPcg(PcgMemory.ModelType);
                     *      if (masterFile != null)
                     *      {
                     *
                     *          _mainWindow.ViewModel.UpdatePcgWindowsOfModelType(PcgMemory.ModelType);
                     *      }
                     */
                },


                MoveSelectedPatchesUp = MoveSelectedPatchesUp,


                MoveSelectedPatchesDown = MoveSelectedPatchesDown,


                GetSelectedPatchListViewIndex = () => listViewPatches.SelectedIndex,


                SetPcgFileAsMasterFile = SetPcgFileAsMasterFile,


                CloseWindow = CloseWindow
            };

            DataContext = ViewModel;
            ViewModel.PropertyChanged  += OnViewPropertyChanged;
            listViewBanks.ItemsSource   = PcgViewModel.Banks;
            listViewPatches.ItemsSource = PcgViewModel.Patches;

            _pcgMemory          = pcgMemory;
            _pcgMemory.FileName = pcgFileName;

            if (_pcgMemory.CombiBanks == null)
            {
                ButtonTimbres.Visibility = Visibility.Collapsed;
            }

            if (_pcgMemory.SetLists == null)
            {
                ButtonAssign.Visibility = Visibility.Collapsed;
            }

            //ToolTipService.ShowOnDisabled = "True"
            //         ToolTipService.IsEnabled = "{Binding Path=ToolTipEnabled, Converter={StaticResource InverseBooleanConverter}}"
            //        ToolTipService.ToolTip = "{Binding Path=ToolTip, Mode=OneTime}"
        }