コード例 #1
0
        }         // ctor

        #endregion

        #region -- Load, Close --------------------------------------------------------

        private async Task OpenPdfAsync(object data)
        {
            switch (data)
            {
            case string fileName:                                                      // open a file from disk
                using (var bar = this.DisableUI(String.Format("Lade Pdf-Datei ({0})...", fileName)))
                    SetLoadedDocument(await LoadDocumentFromFileNameAsync(fileName));  // parse pdf in background
                break;

            case IPpsDataInfo info:                     // open a internal object
                using (var bar = this.DisableUI(String.Format("Lade Pdf-Dokument ({0})...", info.Name)))
                {
                    dataInfo = info;

                    // create access
                    dataAccess = await info.LoadAsync();

                    dataAccess.DisableUI    = () => this.DisableUI("Pdf-Dokument wird bearbeitet...");
                    dataAccess.DataChanged += async(sender, e) => await LoadDocumentFromObjectAsync();

                    await LoadDocumentFromObjectAsync();
                }
                break;

            case null:
                throw new ArgumentNullException(nameof(data));

            default:
                throw new ArgumentException($"Invalid pdf-data container {data.GetType().Name}.", nameof(data));
            }
        }         // proc OpenPdfAsync
コード例 #2
0
            }             // ctor

            #region -- Append new object ----------------------------------------------

            public void Append(IPpsDataInfo data)
            {
                if (sourceRows is IPpsDataView view)
                {
                    using (var trans = view.Table.DataSet.UndoSink?.BeginTransaction("Datei hinzugefügt."))
                    {
                        var r = view.NewRow(null, null);
                        r[linkColumnIndex] = data;
                        view.Add(r);
                        trans.Commit();
                    }
                }
            }             // proc Append
コード例 #3
0
        }         // proc SetLoadedDocument

        private bool ClosePdf()
        {
            // clear document
            pdfViewer.Document = null;
            // close pdf
            loadedDocument?.Dispose();
            // close object access
            if (dataAccess != null)
            {
                dataAccess.Dispose();
                dataAccess = null;
            }
            dataInfo = null;
            return(true);
        }         // func ClosePdf
コード例 #4
0
            }             // proc AttachRowPropertyChanged

            private void AttachObjectPropertyChanged()
            {
                // disconnect old
                if (currentLinkedObject is INotifyPropertyChanged pc)
                {
                    pc.PropertyChanged -= ForwarObjectPropertyChanged;
                }

                // connect to new
                currentLinkedObject = row[linkColumnIndex] as IPpsDataInfo;
                if (currentLinkedObject is INotifyPropertyChanged pc1)
                {
                    pc1.PropertyChanged += ForwarObjectPropertyChanged;
                }

                // raise events
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)));
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(LinkedObject)));
            }             // proc AttachObjectPropertyChanged
コード例 #5
0
 /// <summary></summary>
 /// <param name="dataInfo"></param>
 public PpsMarkdownDocumentModel(IPpsDataInfo dataInfo)
 {
     this.dataInfo = dataInfo;
 }         // ctor