예제 #1
0
 /* ----------------------------------------------------------------- */
 ///
 /// RaiseReset
 ///
 /// <summary>
 /// Reset イベントを発生させます。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void RaiseReset()
 {
     if (!ToolsPanel.Enabled || !ResetButton.Enabled)
     {
         return;
     }
     Aggregator?.GetEvents()?.Reset.Publish();
 }
예제 #2
0
 /* ----------------------------------------------------------------- */
 ///
 /// RaiseSave
 ///
 /// <summary>
 /// Save イベントを発生させます。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void RaiseSave()
 {
     if (!SaveButton.Enabled)
     {
         return;
     }
     Aggregator?.GetEvents()?.Save.Publish();
 }
예제 #3
0
 /* ----------------------------------------------------------------- */
 ///
 /// RaiseDetach
 ///
 /// <summary>
 /// Detach イベントを発生させます。
 /// </summary>
 ///
 /* ----------------------------------------------------------------- */
 private void RaiseDetach()
 {
     if (!ToolsPanel.Enabled || !DetachButton.Enabled)
     {
         return;
     }
     Aggregator?.GetEvents()?.Detach.Publish();
 }
예제 #4
0
        /* ----------------------------------------------------------------- */
        ///
        /// RaiseOpen
        ///
        /// <summary>
        /// Open イベントを発生させます。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        private void RaiseOpen()
        {
            var view = Views.CreateOpenView();

            if (view.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            Aggregator?.GetEvents()?.Open.Publish(view.FileNames);
        }
예제 #5
0
        /* ----------------------------------------------------------------- */
        ///
        /// 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);
        }
예제 #6
0
        /* ----------------------------------------------------------------- */
        ///
        /// 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); }
        }
예제 #7
0
        /* ----------------------------------------------------------------- */
        ///
        /// OnDragDrop
        ///
        /// <summary>
        /// ドラッグ&amp;ドロップ時に実行されます。
        /// </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);
            }
        }
예제 #8
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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); }
     }
 });
예제 #9
0
        /* ----------------------------------------------------------------- */
        ///
        /// 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);
        }
예제 #10
0
 /* ----------------------------------------------------------------- */
 ///
 /// MainForm
 ///
 /// <summary>
 /// オブジェクトを初期化します。
 /// </summary>
 ///
 /// <param name="args">プログラム引数</param>
 ///
 /* ----------------------------------------------------------------- */
 public MainForm(string[] args) : this()
 {
     Load += (s, e) => Aggregator?.GetEvents()?.Open.Publish(args);
 }