/// <summary> /// This method enables or disables menu items dynamically. /// </summary> /// <param name="args"></param> private void InsertMenu_Popup(object sender, EventArgs e) { using (Synchronizer.Lock(this.m_Model.Workspace.CurrentDeckTraversal.SyncRoot)) { if (~this.m_Model.Workspace.CurrentDeckTraversal == null) { //we do not have a deck, so all deck related items should be disabled. foreach (MenuItem item in this.MenuItems) { item.Enabled = false; } } else { // we have a deck foreach (MenuItem item in this.MenuItems) { if (item is InsertImageFromFileMenuItem || item is InsertImageFromSnapshotMenuItem) { item.Enabled = true; } else if (item is InsertImageFromClipboardMenuItem) { item.Enabled = (Clipboard.GetDataObject()).GetDataPresent(DataFormats.Bitmap); } else if (item is InsertImageFromCameraMenuItem) { item.Enabled = CaptureGraphForm.HasCamera(); } } } } }
protected override void OnClick(EventArgs e) { SlideModel slide = null; Model.Viewer.ViewerStateModel vsm = null; using (Synchronizer.Lock(this.m_Model.Workspace.CurrentDeckTraversal.SyncRoot)) { if ((~this.m_Model.Workspace.CurrentDeckTraversal) != null) { using (Synchronizer.Lock((~this.m_Model.Workspace.CurrentDeckTraversal).SyncRoot)) { slide = (~this.m_Model.Workspace.CurrentDeckTraversal).Current.Slide; } } } using (Synchronizer.Lock(this.m_Model.SyncRoot)) { vsm = this.m_Model.ViewerState; } if (slide != null && vsm != null) { CaptureGraphForm cg_form = new CaptureGraphForm(slide, vsm); if (cg_form.ShowDialog() == DialogResult.OK) { InsertMenu.InsertImage(cg_form.Image, slide); } } }