Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
            }
        }