/// <summary> /// Handles the add track clicked event. /// </summary> private void HandleAddTrackClickedEvent() { //check preconditions if (Core.Model.Instance.Compilation == null) //no compilation { //nothing to add MessageBox.Show("There is no compilation to add tracks to. Create or load a compilation first."); return; } Track newTrack = new Track(); DisplayTrack displayTrack = new DisplayTrack(newTrack); PropertyDialog propDialog = new PropertyDialog(displayTrack, "Enter track details"); if (propDialog.ShowDialog() == DialogResult.OK) { //create initial cue newTrack.Cues.Add( new Cue { Description = "Intro (autogenerated)", Shortcut = "1", Time = 0 }); Core.Model.Instance.Compilation.Tracks.Add(newTrack); Core.Model.Instance.Compilation.IsDirty = true; } return; }
/// <summary> /// Handles an event from the event broker /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EventBroker_EventOccured(object sender, EventArgs <string> e) { switch (e.Data) { case "Menu:OpenCompilationClicked": { HandleOpenCompilationClickedEvent(); break; } case "Menu:EditCompilationClicked": { HandleEditCompilationClickedEvent(); break; } case "Menu:AboutClicked": { HandleAboutClickedEvent(); break; } case "Menu:OnlineHelpClicked": { HandleOnlineHelpClickedEvent(); break; } case "Menu:ExitClicked": { HandleExitClickedEvent(); break; } case "Menu:SettingsClicked": { HandleSettingsClickedEvent(); break; } case "Menu:UiSettingsClicked": { HandleUiSettingsClickedEvent(); break; } case "Menu:CreateNewCompilationClicked": { HandleCreateNewCompilationClickedEvent(); break; } case "Menu:AddCueClicked": { HandleAddCueClickedEvent(); break; } case "Menu:CreateCueHereClicked": { Core.Model.Instance.CreateCueHere(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:DeleteSelectedCue": { Core.Model.Instance.RemoveSelectedCue(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveUpSelectedCue": { Core.Model.Instance.MoveSelectedCue(-1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveDownSelectedCue": { Core.Model.Instance.MoveSelectedCue(+1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveUpSelectedTrack": { Core.Model.Instance.MoveSelectedTrack(-1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveDownSelectedTrack": { Core.Model.Instance.MoveSelectedTrack(+1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:DeleteSelectedTrack": { Core.Model.Instance.RemoveSelectedTrack(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:CloneSelectedTrack": { Core.Model.Instance.CloneSelectedTrack(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:EditSelectedCue": { if (Core.Model.Instance.SelectedCue != null) //there is any selected? { Cue cloneCue = Core.Model.Instance.SelectedCue.Clone(); //clone for private manipulation using (PropertyDialog propertyDialog = new PropertyDialog(cloneCue, "Edit cue")) { propertyDialog.Height = 353; if (propertyDialog.ShowDialog() == DialogResult.OK) { Core.Model.Instance.SelectedTrack.Cues.Replace(Core.Model.Instance.SelectedCue, cloneCue); //assign back, causing an update of the model Core.Model.Instance.SelectedCue = cloneCue; //use the new as selected Core.Model.Instance.Compilation.IsDirty = true; } } } break; } case "Menu:AddTrackClicked": { HandleAddTrackClickedEvent(); break; } case "Menu:EditSelectedTrack": { if (Core.Model.Instance.SelectedTrack != null) //there is any selected? { DisplayTrack displayTrack = new DisplayTrack(Core.Model.Instance.SelectedTrack.Clone()); //clone for private manipulation using (PropertyDialog propertyDialog = new PropertyDialog(displayTrack, "Edit track")) { propertyDialog.Height = 393; propertyDialog.Width = 800; //to have more room for the file name. if (propertyDialog.ShowDialog() == DialogResult.OK) { Core.Model.Instance.Compilation.Tracks.Replace(Core.Model.Instance.SelectedTrack, displayTrack.Model); //assign back, causing an update of the model Core.Model.Instance.SelectedTrack = displayTrack.Model; //use the new as selected Core.Model.Instance.Compilation.IsDirty = true; } } } break; } case "Menu:SaveFile": { HandleSaveFileEvent(); break; } case "Menu:SaveFileAs": { HandleSaveFileAsEvent(); break; } case "Menu:ExportFile": { HandleExportFileEvent(); break; } default: break; } }