示例#1
0
        /// <summary>
        /// gets a content from ContentOut-Func
        /// and writes it into a file
        /// </summary>
        public void Save()
        {
            if (ContentOut == null)
            {
                return;
            }

            try {
                DefaultDialogValues(SaveFileDialog, WriteFilter);
                var content = ContentOut();
                if (content != null)
                {
                    var info = StreamContentIoManager.GetContentInfo(content);
                    if (info != null)
                    {
                        string ext = null;
                        SaveFileDialog.Filter     = StreamContentIoManager.GetFilter(info, out ext) + "All Files|*.*";
                        SaveFileDialog.DefaultExt = ext;
                    }
                    else
                    {
                        SaveFileDialog.Filter = "All Files|*.*";
                    }
                    var fileName = "";
                    if (content.Source != null)
                    {
                        fileName = content.Source.ToString();
                    }
                    else if (content.Description != null)
                    {
                        fileName = content.Description.ToString();
                    }

                    SaveFileDialog.SetFileName(fileName);
                    if (FileDialogShow(SaveFileDialog, false) == DialogResult.Ok)
                    {
                        StreamContentIoManager.ConfigureSinkIo = s => ConfigureSink(s);
                        StreamContentIoManager.WriteSink(content, IoUtils.UriFromFileName(SaveFileDialog.FileName));
                        SaveFileDialog.ResetFileName();
                    }
                }
            } catch (Exception ex) {
                Registry.Pooled <IExceptionHandler>().Catch(ex, MessageType.OK);
            }
        }