Beispiel #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
        }         // proc Dispose

        /// <summary></summary>
        /// <param name="windowPane"></param>
        /// <returns></returns>
        public async Task LoadAsync(IPpsWindowPane windowPane)
        {
            using (var bar = windowPane.DisableUI(String.Format("Lade Dokument ({0})...", dataInfo.Name)))
            {
                // create access
                dataAccess = await dataInfo.LoadAsync();

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

                await LoadFromObjectAsync();
            }
        }         // func LoadAsync
Beispiel #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
        }         // ctor

        /// <summary></summary>
        public void Dispose()
        {
            dataAccess?.Dispose();
            dataAccess = null;
        }         // proc Dispose