/* ----------------------------------------------------------------- */ /// /// RaiseReset /// /// <summary> /// Reset イベントを発生させます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void RaiseReset() { if (!ToolsPanel.Enabled || !ResetButton.Enabled) { return; } Aggregator?.GetEvents()?.Reset.Publish(); }
/* ----------------------------------------------------------------- */ /// /// RaiseSave /// /// <summary> /// Save イベントを発生させます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void RaiseSave() { if (!SaveButton.Enabled) { return; } Aggregator?.GetEvents()?.Save.Publish(); }
/* ----------------------------------------------------------------- */ /// /// RaiseDetach /// /// <summary> /// Detach イベントを発生させます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void RaiseDetach() { if (!ToolsPanel.Enabled || !DetachButton.Enabled) { return; } Aggregator?.GetEvents()?.Detach.Publish(); }
/* ----------------------------------------------------------------- */ /// /// RaiseOpen /// /// <summary> /// Open イベントを発生させます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void RaiseOpen() { var view = Views.CreateOpenView(); if (view.ShowDialog() == DialogResult.Cancel) { return; } Aggregator?.GetEvents()?.Open.Publish(view.FileNames); }
/* ----------------------------------------------------------------- */ /// /// RaiseAttach /// /// <summary> /// Attach イベントを発生させます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void RaiseAttach() { if (!ToolsPanel.Enabled || !AttachButton.Enabled) { return; } var view = Views.CreateAttachView(); if (view.ShowDialog() == DialogResult.Cancel) { return; } Aggregator?.GetEvents()?.Attach.Publish(view.FileNames); }
/* ----------------------------------------------------------------- */ /// /// WhenSave /// /// <summary> /// Save イベント発生時に実行されます。 /// </summary> /// /* ----------------------------------------------------------------- */ private async void WhenSave() { try { SyncWait(() => View.IsBusy = true); await Async(() => Model.Save()); Aggregator?.GetEvents()?.Message.Publish(Properties.Resources.MessageSuccess); } catch (Exception err) { this.LogError(err); Aggregator?.GetEvents()?.Error.Publish(err.Message); } finally { SyncWait(() => View.IsBusy = false); } }
/* ----------------------------------------------------------------- */ /// /// OnDragDrop /// /// <summary> /// ドラッグ&ドロップ時に実行されます。 /// </summary> /// /* ----------------------------------------------------------------- */ protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); var files = e.Data.GetData(DataFormats.FileDrop, false) as string[]; var open = string.IsNullOrEmpty(SourceTextBox.Text); if (open) { Aggregator?.GetEvents()?.Open.Publish(files); } else { Aggregator?.GetEvents()?.Attach.Publish(files); } }
/* ----------------------------------------------------------------- */ /// /// WhenOpen /// /// <summary> /// Open イベント発生時に実行されます。 /// </summary> /// /* ----------------------------------------------------------------- */ private void WhenOpen(string[] files) => Async(() => { foreach (var file in files) { try { Model.Open(file); break; } catch (EncryptionException err) { this.LogError(err); Aggregator?.GetEvents()?.Message.Publish(Properties.Resources.MessageEncryption); break; } catch (Exception err) { this.LogWarn(err); } } });
/* ----------------------------------------------------------------- */ /// /// ClipPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /* ----------------------------------------------------------------- */ public ClipPresenter(IClipView view) : base(view, new ClipSource(), new Aggregator()) { // View View.Aggregator = Aggregator; View.DataSource = Model.Clips.ToBindingSource(); // Model Model.PropertyChanged += WhenModelChanged; Model.Locked += WhenLocked; // Aggregator Aggregator?.GetEvents()?.Open.Subscribe(WhenOpen); Aggregator?.GetEvents()?.Attach.Subscribe(WhenAttach); Aggregator?.GetEvents()?.Detach.Subscribe(WhenDetach); Aggregator?.GetEvents()?.Reset.Subscribe(WhenReset); Aggregator?.GetEvents()?.Save.Subscribe(WhenSave); Aggregator?.GetEvents()?.Message.Subscribe(WhenMessage); Aggregator?.GetEvents()?.Error.Subscribe(WhenError); }
/* ----------------------------------------------------------------- */ /// /// MainForm /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="args">プログラム引数</param> /// /* ----------------------------------------------------------------- */ public MainForm(string[] args) : this() { Load += (s, e) => Aggregator?.GetEvents()?.Open.Publish(args); }