private void bindStatusBar() { lbStatusRecording.Bind(b => b.Visible, viewModel.Recorder, m => m.IsRecording); lbStatusTime.Bind(b => b.Visible, viewModel.Recorder, m => m.IsRecording); lbStatusTime.Bind(b => b.Text, viewModel.Recorder, m => m.RecordingDuration, value => value.ToString(@"hh\:mm\:ss", CultureInfo.CurrentCulture)); lbStatusReady.Bind(b => b.Visible, viewModel.Recorder, m => m.IsRecording, value => !value); lbStatusReady.Bind(b => b.Text, viewModel, m => m.StatusText); btnConvert.Bind(b => b.Visible, viewModel, m => m.IsConversionVisible); btnCancel.Bind(b => b.Visible, viewModel.Converter, m => m.IsConverting); toolStripProgressBar1.ProgressBar.Bind(b => b.Visible, viewModel.Converter, m => m.IsConverting); toolStripProgressBar1.ProgressBar.Bind(b => b.Value, viewModel.Converter, m => m.Progress); lbSeparator.Bind(b => b.Visible, b => btnConvert.VisibleChanged += b, () => btnCancel.Visible || btnConvert.Visible); lbSeparator.Bind(b => b.Visible, b => btnCancel.VisibleChanged += b, () => btnCancel.Visible || btnConvert.Visible); btnWebcam.Bind(b => b.Image, viewModel, m => m.IsWebcamEnabled, value => value ? Resources.agt_family : Resources.agt_family_off); btnAudio.Bind(b => b.Enabled, viewModel.Recorder, m => m.IsRecording, value => !value); btnAudio.Bind(b => b.Image, viewModel.Recorder, m => m.AudioCaptureDevices, c => c == null ? Resources.kmixdocked_mute : Resources.kmixdocked); btnNoAudio.Bind(b => b.Checked, viewModel.Recorder, m => m.AudioCaptureDevices, value => value == null); // Create audio menu items for each audio device foreach (var dev in viewModel.Recorder.AudioCaptureDevices) { var item = new BindableToolStripMenuItem(dev.DeviceInfo.Description); item.Tag = dev; item.Click += btnAudioDevice_Click; item.Bind(b => b.Checked, dev, m => m.Checked); btnAudio.DropDownItems.Add(item); } }
private ContextMenuStrip MakeContextMenuStrip() { strip = new ContextMenuStrip() { ShowImageMargin = false, ShowCheckMargin = false, AutoSize = false, Width = 350, Height = 200, Renderer = new BindableToolStripMenuItem.ToolStripArrowRenderer(nameof(Settings.Model.Patterns)) }; strip.Items.AddRange(new ToolStripItem[] { new MirrorMenuItem(nameof(Settings.Model.Mirror), OpenSettingsForm), new ToolStripSeparator(), new TrackBarMenuItem(nameof(Settings.Model.Red)), new TrackBarMenuItem(nameof(Settings.Model.Green)), new TrackBarMenuItem(nameof(Settings.Model.Blue)), new ToolStripSeparator(), new TrackBarMenuItem(nameof(Settings.Model.Brightness)), new ToolStripSeparator(), patterns = makeMenuItem(nameof(Settings.Model.Patterns), null), makeMenuItem("Settings (preview)...", OpenSettingsForm), makeMenuItem("Exit", Exit) }); strip.Opening += (s, e) => this.settingsForm.Focus(); return(strip); }
private void buildPatternOptions(object sender, PropertyChangedEventArgs e) { //new pattern selected update which item shows checked if (e.PropertyName == nameof(Settings.Model.PatternId)) { var value = Settings.Model.PatternId; foreach (var item in patterns.DropDown.Items.Cast <BindableToolStripMenuItem>()) { if (item.Checked && (int)item.Tag != value) { item.Checked = false; } else if (!item.Checked && (int)item.Tag == value) { item.Checked = true; } } } //new list of patterns, create the list control with events else if (e.PropertyName == nameof(Settings.Model.Patterns)) { var value = Settings.Model.Patterns; var items = patterns.DropDown.Items.Cast <BindableToolStripMenuItem>().ToList(); var different = value.Count != items.Count || value.OrderBy(x => x.Value).ThenBy(x => x.Key).Select(x => new { x.Key, x.Value }) .Zip(items.Select(x => new { Key = (int)x.Tag, Value = x.Text })) .Any(x => x.First.Key != x.Second.Key || x.First.Value != x.Second.Value); if (!different) { return; } foreach (var item in items) { item.DataBindings.Clear(); item.Dispose(); } patterns.DropDown = new ContextMenuStrip() { ShowCheckMargin = true, ShowImageMargin = false }; patterns.DropDown.Closing += (s, ea) => ea.Cancel = ea.CloseReason == ToolStripDropDownCloseReason.ItemClicked; var patternId = Settings.Model.PatternId; patterns.DropDown.Items.AddRange(value.OrderBy(x => x.Value).Select(p => { var item = new BindableToolStripMenuItem(p.Value) { CheckOnClick = true, Checked = p.Key == patternId, Tag = p.Key }; item.Click += (mi, ea) => Settings.Model.PatternId = (int)(mi as BindableToolStripMenuItem).Tag; item.AddBinding(nameof(item.Enabled), nameof(Settings.Model.MirrorOff)); return(item); }).ToArray()); } }