コード例 #1
0
        private void InitializePreviewBrowser()
        {
            PreviewBrowser.Navigated += (sender, e) =>
            {
                // No Script Errors
                NoScriptErrors(PreviewBrowser, true);
            };
            PreviewBrowser.LoadCompleted += (sender, e) =>
            {
                if (e.Uri.ToString().Contains("about:blank"))
                {
                    return;
                }

                var     editor = GetActiveMarkdownEditor();
                dynamic dom    = PreviewBrowser.Document;
                dom.documentElement.scrollTop = editor.MarkdownDocument.LastBrowserScrollPosition;

                new Timer((editr) =>
                {
                    try
                    {
                        if (File.Exists(editor.MarkdownDocument.HtmlRenderFilename))
                        {
                            File.Delete(editor.MarkdownDocument.HtmlRenderFilename);
                        }
                    }
                    catch
                    { }
                }, null, 2000, Timeout.Infinite);
            };
            PreviewBrowser.Navigate("about:blank");
        }
        private void TreeTopicBrowser_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            SelectedTopic = TopicPicker.SelectedTopic;
            if (SelectedTopic == null)
            {
                return;
            }

            var doc = new MarkdownDocument();

            doc.Load(SelectedTopic.GetTopicFileName());
            doc.RenderHtmlToFile();

            PreviewBrowser.Navigate(doc.HtmlRenderFilename);
        }
コード例 #3
0
        public EditArticleWindow(NewspaperArticle article)
        {
            InitializeComponent();
            DataContext = new EditArticleViewModel(article);
            //PreviewBrowser.NavigateToString("<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head><body style='border: solid 1px gray'><div style='text-align:center;margin-top:100px;'>Тут появится статья</div></body></html>");


            ViewModel.ShowHtml = () =>
            {
                var ph = Path.Combine(Environment.CurrentDirectory, "ArticlePreview/Article.htm");
                PreviewBrowser.Navigate("file:///" + ph);
            };

            ViewModel.Init();
        }
コード例 #4
0
        /// <summary>
        /// Shows or hides the preview browser
        /// </summary>
        /// <param name="hide"></param>
        public void ShowPreviewBrowser(bool hide = false)
        {
            if (!hide)
            {
                PreviewBrowser.Visibility = Visibility.Visible;

                ContentGrid.ColumnDefinitions[1].Width = new GridLength(12);
                ContentGrid.ColumnDefinitions[2].Width = new GridLength(Width / 2 - 40);
            }
            else
            {
                if (ContentGrid.ColumnDefinitions[2].Width.Value > 100)
                {
                    mmApp.Configuration.WindowPosition.SplitterPosition = Convert.ToInt32(ContentGrid.ColumnDefinitions[2].Width.Value);
                }

                ContentGrid.ColumnDefinitions[1].Width = new GridLength(0);
                ContentGrid.ColumnDefinitions[2].Width = new GridLength(0);
                PreviewBrowser.Navigate("about:blank");
            }
        }
コード例 #5
0
        /// <summary>
        /// Fetch thumbnail image from slack. Automatically picks largest available or hides thumbnail if none.
        /// </summary>
        /// <param name="selected"></param>
        private async void GetPreview(ResponseFile selected)
        {
            if (selected == null)
            {
                PreviewBrowser.Visibility   = Visibility.Hidden;
                PreviewThumbnail.Visibility = Visibility.Hidden;
                return;
            }

            Uri imgUrl;

            if (selected.thumb_480 != null)
            {
                imgUrl = new Uri(selected.thumb_480);
            }
            else if (selected.thumb_360 != null)
            {
                imgUrl = new Uri(selected.thumb_360);
            }
            else if (selected.thumb_160 != null)
            {
                imgUrl = new Uri(selected.thumb_160);
            }
            else
            {
                PreviewThumbnail.Visibility = Visibility.Hidden;
                if (selected.preview != null)
                {
                    PreviewBrowser.Visibility = Visibility.Visible;
                    PreviewBrowser.NavigateToString(selected.preview);
                }
                else
                {
                    PreviewBrowser.Visibility = Visibility.Hidden;
                }
                return;
            }

            var request_data = new NameValueCollection();

            request_data.Add("Content-Type", "application/x-www-form-urlencoded");
            request_data.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36");

            var webclient = new WebClient();

            webclient.Encoding = Encoding.UTF8;
            webclient.Proxy    = WebRequest.DefaultWebProxy;
            webclient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + Oauth_Value);

            try
            {
                var imageData = await webclient.DownloadDataTaskAsync(imgUrl);

                var bitmapImage = new BitmapImage {
                    CacheOption = BitmapCacheOption.Default
                };
                var encoder = new PngBitmapEncoder();
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = new MemoryStream(imageData);
                bitmapImage.EndInit();

                PreviewBrowser.Visibility   = Visibility.Hidden;
                PreviewThumbnail.Visibility = Visibility.Visible;
                PreviewThumbnail.Source     = bitmapImage;
            }
            catch
            {
                PreviewBrowser.Visibility   = Visibility.Hidden;
                PreviewThumbnail.Visibility = Visibility.Hidden;
            }

            webclient.Dispose();
        }
コード例 #6
0
ファイル: ReportPreview.cs プロジェクト: Muruganalagesan/AMT
 private void SaveTSButton_Click(object sender, EventArgs e)
 {
     PreviewBrowser.ShowSaveAsDialog();
 }
コード例 #7
0
ファイル: ReportPreview.cs プロジェクト: Muruganalagesan/AMT
 private void PropertiesTSButton_Click(object sender, EventArgs e)
 {
     PreviewBrowser.ShowPropertiesDialog();
 }
コード例 #8
0
ファイル: ReportPreview.cs プロジェクト: Muruganalagesan/AMT
 private void PreviewTSButton_Click(object sender, EventArgs e)
 {
     PreviewBrowser.ShowPrintPreviewDialog();
 }
コード例 #9
0
ファイル: ReportPreview.cs プロジェクト: Muruganalagesan/AMT
 private void PageSetupTSButton_Click(object sender, EventArgs e)
 {
     PreviewBrowser.ShowPageSetupDialog();
 }
コード例 #10
0
        public void PreviewMarkdown(MarkdownDocumentEditor editor = null, bool keepScrollPosition = false, bool showInBrowser = false)
        {
            if (!Model.IsPreviewBrowserVisible && !showInBrowser)
            {
                return;
            }

            if (editor == null)
            {
                editor = GetActiveMarkdownEditor();
            }

            if (editor == null)
            {
                return;
            }

            var doc = editor.MarkdownDocument;
            var ext = Path.GetExtension(editor.MarkdownDocument.Filename).ToLower().Replace(".", "");


            int     lastPos = 0;
            dynamic dom     = null;

            if (string.IsNullOrEmpty(ext) || ext == "md" || ext == "html" || ext == "htm")
            {
                this.ShowPreviewBrowser();

                if (keepScrollPosition)
                {
                    dom = PreviewBrowser.Document;
                    editor.MarkdownDocument.LastBrowserScrollPosition = dom.documentElement.scrollTop;
                }
                else
                {
                    editor.MarkdownDocument.LastBrowserScrollPosition = 0;
                }


                if (ext == "html" || ext == "htm")
                {
                    File.WriteAllText(editor.MarkdownDocument.HtmlRenderFilename, editor.MarkdownDocument.CurrentText);
                }
                else
                {
                    editor.MarkdownDocument.RenderHtmlToFile();
                }

                if (showInBrowser)
                {
                    ShellUtils.GoUrl(editor.MarkdownDocument.HtmlRenderFilename);
                }
                else
                {
                    PreviewBrowser.Cursor      = Cursors.None;
                    PreviewBrowser.ForceCursor = true;
                    if (keepScrollPosition &&
                        PreviewBrowser.Source.ToString() == editor.MarkdownDocument.HtmlRenderFilename)
                    {
                        PreviewBrowser.Refresh(true);
                    }
                    else
                    {
                        PreviewBrowser.Navigate(editor.MarkdownDocument.HtmlRenderFilename);
                    }
                }
            }
            else
            {
                ShowPreviewBrowser(true);
            }
        }
コード例 #11
0
 public void ScrollToEditorLine(int editorLineNumber = -1, bool updateCodeBlocks = false, bool noScrollTimeout = false, bool noScrollTopAdjustment = false)
 {
     PreviewBrowser.ScrollToEditorLine(editorLineNumber, updateCodeBlocks, noScrollTimeout, noScrollTopAdjustment);
 }
コード例 #12
0
        public void PreviewMarkdown(MarkdownDocumentEditor editor = null, bool keepScrollPosition = false, bool showInBrowser = false)
        {
            // only render if the preview is actually visible and rendering in Preview Browser
            if (!Model.IsPreviewBrowserVisible && !showInBrowser)
            {
                return;
            }

            if (editor == null)
            {
                editor = GetActiveMarkdownEditor();
            }

            if (editor == null)
            {
                return;
            }

            var doc = editor.MarkdownDocument;
            var ext = Path.GetExtension(doc.Filename).ToLower().Replace(".", "");

            string renderedHtml = null;

            if (string.IsNullOrEmpty(ext) || ext == "md" || ext == "html" || ext == "htm")
            {
                dynamic dom = null;
                if (keepScrollPosition)
                {
                    dom = PreviewBrowser.Document;
                    editor.MarkdownDocument.LastBrowserScrollPosition = dom.documentElement.scrollTop;
                }
                else
                {
                    ShowPreviewBrowser(false, false);
                    editor.MarkdownDocument.LastBrowserScrollPosition = 0;
                }

                if (ext == "html" || ext == "htm")
                {
                    editor.MarkdownDocument.WriteFile(editor.MarkdownDocument.HtmlRenderFilename, editor.MarkdownDocument.CurrentText);
                }
                else
                {
                    renderedHtml = editor.MarkdownDocument.RenderHtmlToFile();
                }

                if (showInBrowser)
                {
                    ShellUtils.GoUrl(editor.MarkdownDocument.HtmlRenderFilename);
                }
                else
                {
                    PreviewBrowser.Cursor      = Cursors.None;
                    PreviewBrowser.ForceCursor = true;
                    if (keepScrollPosition)
                    {
                        string browserUrl   = PreviewBrowser.Source.ToString().ToLower();
                        string documentFile = "file:///" + editor.MarkdownDocument.HtmlRenderFilename.Replace('\\', '/').ToLower();
                        if (browserUrl == documentFile)
                        {
                            dom = PreviewBrowser.Document;
                            //var content = dom.getElementById("MainContent");


                            renderedHtml = StringUtils.ExtractString(renderedHtml,
                                                                     "<!-- Markdown Monster Content -->",
                                                                     "<!-- End Markdown Monster Content -->");

                            if (string.IsNullOrEmpty(renderedHtml))
                            {
                                PreviewMarkdown(editor, false, false); // fully reload document
                            }
                            else
                            {
                                try
                                {
                                    // explicitly update the document with JavaScript code
                                    // much more efficient and non-jumpy and no wait cursor
                                    var window = dom.parentWindow;
                                    window.updateDocumentContent(renderedHtml);
                                }
                                catch
                                {
                                    PreviewBrowser.Refresh(true);
                                }
                            }

                            return;
                        }
                    }

                    PreviewBrowser.Navigate(editor.MarkdownDocument.HtmlRenderFilename);
                    return;
                }
            }

            ShowPreviewBrowser(true, keepScrollPosition);
        }
コード例 #13
0
ファイル: MainWindow.xaml.cs プロジェクト: dylech30th/Marsher
        public MainWindow()
        {
            LoadFromXmlFile("Resources/dictionary.txd");

            try
            {
                IEHelper.EnsureBrowserEmulationEnabled(AppDomain.CurrentDomain.FriendlyName);
            }
            catch (IeVersionTooOldException)
            {
                MessageBox.Show(
                    T("dialog.no_ie"),
                    T("dialog.header.warning"),
                    MessageBoxButton.OK,
                    MessageBoxImage.Warning);
                System.Diagnostics.Process.Start("https://support.microsoft.com/en-us/help/18520/download-internet-explorer-11-offline-installer");
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    T("dialog.ie_fail",
                      "exception", ex.ToString()),
                    T("dialog.header.warning"),
                    MessageBoxButton.OK,
                    MessageBoxImage.Warning);
            }

            InitializeComponent();
            _viewModel  = new MainViewModel(_database, DialogCoordinator.Instance);
            DataContext = _viewModel;
            _database.Database.EnsureCreatedAsync();
            _database.Items.LoadAsync();
            _localListPersistence = new LocalListPersistence(_database);

            QaListSelector.SelectedIndex = 0;
            //QaList.ItemsSource = _viewModel.ActiveQaList;
            _peingService = new PeingService();
            _peingService.OnLoginStatusChanged += (sender, status) =>
                                                  Dispatcher?.Invoke(() =>
            {
                if (sender != _peingService)
                {
                    return;
                }
                _viewModel.UpdatePeingStatus(status);
                if (status == ServiceStatus.Available)
                {
                    _viewModel.StatusText = T("status.logged_in.peing");
                }
                else if (status == ServiceStatus.NotLoggedIn)
                {
                    _viewModel.StatusText = T("status.dropped.peing");
                }
            });
            _marshmallowService = new MarshmallowService();
            _marshmallowService.OnLoginStatusChanged += (sender, status) =>
                                                        Dispatcher?.Invoke(() =>
            {
                if (sender != _marshmallowService)
                {
                    return;
                }
                _viewModel.UpdateMarshmallowStatus(status);
                if (status == ServiceStatus.Available)
                {
                    _viewModel.StatusText = T("status.logged_in.marshmallow");
                }
                else if (status == ServiceStatus.NotLoggedIn)
                {
                    _viewModel.StatusText = T("status.dropped.marshmallow");
                }
            });

            _viewModel.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(_viewModel.ActiveQaList))
                {
                    return;
                }
                var list = _viewModel.ActiveQaList;
                switch (list)
                {
                case QaListStubsViewModel stubs:
                    _viewModel.ActiveQaItems = stubs.PopulatedItems;
                    break;

                case QaList qaList:
                    var coll2 = new ObservableCollection <QaItem>(qaList.Items);
                    _viewModel.ActiveQaItems = coll2;
                    break;

                case QaListObservable qaListObservable:
                    _viewModel.ActiveQaItems = qaListObservable.Items;
                    break;
                }
            };

            foreach (var stubs in _localListPersistence.GetAllStubs())
            {
                var vm = new QaListStubsViewModel(stubs, _database);
                vm.CollectionChanged += OnQaListModified;
                vm.PropertyChanged   += OnQaListLockStatusChanged;
                _viewModel.QaListStubs.Add(vm);
            }
            _localListPersistence.OnListModified += (sender, args) =>
            {
                Dispatcher?.InvokeAsync(() =>
                {
                    switch (args.Action)
                    {
                    case NotifyCollectionChangedAction.Add:
                        var vm                = new QaListStubsViewModel((QaListStubs)args.NewItems[0], _database);
                        vm.PropertyChanged   += OnQaListLockStatusChanged;
                        vm.CollectionChanged += OnQaListModified;
                        _viewModel.QaListStubs.Add(vm);

                        QaListSelector.SelectedItem = vm;
                        OpenCollectorFor(vm);
                        break;

                    case NotifyCollectionChangedAction.Remove:
                        _viewModel.QaListStubs.Remove(_viewModel.QaListStubs.FirstOrDefault(it => (QaListStubs)args.OldItems[0] == it.Underlying));
                        break;

                    case NotifyCollectionChangedAction.Replace:
                        _viewModel.QaListStubs.FirstOrDefault(it => (QaListStubs)args.NewItems[0] == it.Underlying)?.OnPropertyChanged(nameof(QaListStubsViewModel.Name));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                });
            };

            _displayCommunication = new DisplayCommunication();
            try
            {
                _displayCommunication.Start();
                _viewModel.ServerStatusText = T("status.display.running", "port", DisplayCommunication.DisplayWSPort.ToString());
            }
            catch (Exception)
            {
                _viewModel.ServerStatusText = T("status.display.failed");
            }

            if (File.Exists("resources/index_preview.html"))
            {
                PreviewBrowser.NavigateToStream(File.Open("resources/index_preview.html", FileMode.Open, FileAccess.Read));
            }
        }
コード例 #14
0
 public async Task ScrollToEditorLineAsync(int editorLineNumber = -1, bool updateCodeBlocks = false, bool noScrollTimeout = false, bool noScrollTopAdjustment = false)
 {
     await PreviewBrowser.ScrollToEditorLineAsync(editorLineNumber, updateCodeBlocks, noScrollTimeout, noScrollTopAdjustment);
 }
コード例 #15
0
 public void Dispose()
 {
     PreviewBrowser.Dispose();
 }
コード例 #16
0
 public void ExecuteCommand(string command, params dynamic[] args)
 {
     PreviewBrowser.ExecuteCommand(command, args);
 }
コード例 #17
0
 public void Refresh(bool noCache = false)
 {
     PreviewBrowser.Refresh(noCache);
     PreviewMarkdownAsync();
 }
コード例 #18
0
 public void Navigate(string url)
 {
     PreviewBrowser.Navigate(url);
 }
コード例 #19
0
        /// <summary>
        /// Closes a tab and ask for confirmation if the tab doc
        /// is dirty.
        /// </summary>
        /// <param name="tab"></param>
        /// <returns>true if tab can close, false if it should stay open</returns>
        public bool CloseTab(TabItem tab)
        {
            if (tab == null)
            {
                return(false);
            }

            var editor = tab.Tag as MarkdownDocumentEditor;

            if (editor == null)
            {
                return(false);
            }

            bool returnValue = true;

            var doc = editor.MarkdownDocument;

            if (!string.IsNullOrEmpty(doc.HtmlRenderFilename) && File.Exists(doc.HtmlRenderFilename))
            {
                File.Delete(doc.HtmlRenderFilename);
            }

            if (doc.IsDirty)
            {
                var res = MessageBox.Show(Path.GetFileName(doc.Filename) + "\r\n\r\nhas been modified.\r\n" +
                                          "Do you want to save changes?",
                                          "Save Document",
                                          MessageBoxButton.YesNoCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
                if (res == MessageBoxResult.Cancel)
                {
                    return(false); // don't close
                }
                else if (res == MessageBoxResult.No)
                {
                    // close but don't save
                }
                else
                {
                    if (doc.Filename == "untitled")
                    {
                        Model.SaveAsCommand.Execute(ButtonSaveAsFile);
                    }
                    else if (!SaveFile())
                    {
                        returnValue = false;
                    }
                }
            }

            tab.Tag = null;
            TabControl.Items.Remove(tab);

            if (TabControl.Items.Count == 0)
            {
                PreviewBrowser.Visibility = Visibility.Hidden;
                PreviewBrowser.Navigate("about:blank");
                Model.ActiveDocument = null;
            }

            return(returnValue); // close
        }
コード例 #20
0
 public void PreviewMarkdown(MarkdownDocumentEditor editor = null, bool keepScrollPosition = false, bool showInBrowser = false, string renderedHtml = null, int editorLineNumber = -1)
 {
     PreviewBrowser.PreviewMarkdown(editor, keepScrollPosition, showInBrowser, renderedHtml);
 }