RendererTestForm.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using CefSharpWrap;
  2. using CefSharpWrap.AceEditorWrap;
  3. using System;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace MarkdownRenderer.Test
  9. {
  10. public partial class RendererTestForm : Form
  11. {
  12. private readonly MarkdownRendererForm _renderer;
  13. private readonly CefSharpAceEditorWrap _editor;
  14. public RendererTestForm()
  15. {
  16. InitializeComponent();
  17. Icon = MarkdownRendererResources.MainIcon;
  18. _renderer = new MarkdownRendererForm();
  19. _editor = new CefSharpAceEditorWrap();
  20. _editor.FillToControl(EditorPanel);
  21. _editor.TextChanged += Editor_TextChanged;
  22. _editor.ScrollPositionChanged += Editor_ScrollPositionChanged;
  23. }
  24. private void RendererTestForm_Shown(object sender, EventArgs e)
  25. {
  26. _renderer.TopLevel = false;
  27. _renderer.FormBorderStyle = FormBorderStyle.None;
  28. _renderer.Dock = DockStyle.Fill;
  29. MainSplitContainer.Panel1.Controls.Add(_renderer);
  30. _renderer.Show();
  31. ThemeComboBox.DataSource = Enum.GetValues(typeof(AceEditorTheme));
  32. }
  33. private void Editor_TextChanged(object sender, EventArgs e)
  34. {
  35. _renderer.PutMarkdown(_editor.Text);
  36. }
  37. private void Editor_ScrollPositionChanged(object sender, EventArgs e)
  38. {
  39. _renderer.ScrollToPercent(_editor.ScrollPosition);
  40. var action = new Action(() => ScrollPercentLabel.Text = _editor.ScrollPosition.ToString("N2"));
  41. if (InvokeRequired)
  42. {
  43. Invoke(action);
  44. }
  45. else
  46. {
  47. action();
  48. }
  49. }
  50. private void LoadSampleButton_Click(object sender, EventArgs e)
  51. {
  52. _editor.Text = Encoding.UTF8.GetString(Properties.Resources.Sample);
  53. FilePathTextBox.Text = "<unsaved>";
  54. }
  55. private void DropLoadLabel_DragEnter(object sender, DragEventArgs e)
  56. {
  57. e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop)
  58. ? DragDropEffects.Copy
  59. : DragDropEffects.None;
  60. }
  61. private void DropLoadLabel_DragDrop(object sender, DragEventArgs e)
  62. {
  63. var files = (string[])e.Data.GetData(DataFormats.FileDrop);
  64. Invoke(new Action(() =>
  65. {
  66. _editor.Text = File.ReadAllText(files[0]
  67. , ModifierKeys == Keys.None
  68. ? Encoding.UTF8
  69. : Encoding.Default
  70. );
  71. FilePathTextBox.Text = files[0];
  72. FileNameTextBox.Text = Path.GetFileName(files[0]);
  73. }));
  74. }
  75. private void RendererTestForm_FormClosed(object sender, FormClosedEventArgs e)
  76. {
  77. _renderer.Close();
  78. _renderer.Dispose();
  79. }
  80. private void F12Button_Click(object sender, EventArgs e)
  81. {
  82. _editor.ShowF12();
  83. }
  84. private void FontSizeUpDown_ValueChanged(object sender, EventArgs e)
  85. {
  86. _editor.FontSize = (int)FontSizeUpDown.Value;
  87. }
  88. private void ThemeComboBox_SelectedValueChanged(object sender, EventArgs e)
  89. {
  90. _editor.Theme = ((AceEditorTheme)ThemeComboBox.SelectedValue);
  91. }
  92. private void SwapPanelCheckBox_CheckedChanged(object sender, EventArgs e)
  93. {
  94. _renderer.Parent.Controls.Remove(_renderer);
  95. MainEditorRightPanel.Parent.Controls.Remove(MainEditorRightPanel);
  96. SplitterPanel spEdt, spRen;
  97. if (SwapPanelCheckBox.Checked)
  98. {
  99. spEdt = MainSplitContainer.Panel1;
  100. spRen = MainSplitContainer.Panel2;
  101. }
  102. else
  103. {
  104. spRen = MainSplitContainer.Panel1;
  105. spEdt = MainSplitContainer.Panel2;
  106. }
  107. spRen.Controls.Add(_renderer);
  108. spEdt.Controls.Add(MainEditorRightPanel);
  109. }
  110. private void FileNameTextBox_TextChanged(object sender, EventArgs e)
  111. {
  112. var invalidFileNameChars = Path.GetInvalidFileNameChars();
  113. DragOutLabel.Enabled =
  114. !string.IsNullOrWhiteSpace(FileNameTextBox.Text) &&
  115. !FileNameTextBox.Text.Any(invalidFileNameChars.Contains);
  116. }
  117. private void FilePathTextBox_TextChanged(object sender, EventArgs e)
  118. {
  119. var invalidFileNameChars = Path.GetInvalidPathChars();
  120. SaveButton.Enabled =
  121. !FilePathTextBox.Text.Any(invalidFileNameChars.Contains);
  122. }
  123. private void DragOutLabel_MouseDown(object sender, MouseEventArgs e)
  124. {
  125. var drag = new VirtualFileDataObject(null, null);
  126. var enc = ModifierKeys == Keys.None
  127. ? Encoding.UTF8
  128. : Encoding.Default;
  129. var data = enc.GetBytes(_editor.Text);
  130. drag.SetData(new[]
  131. {
  132. new VirtualFileDataObject.FileDescriptor
  133. {
  134. Name =FileNameTextBox.Text,
  135. Length = data.Length,
  136. ChangeTimeUtc = DateTime.UtcNow,
  137. StreamContents = stream =>
  138. {
  139. stream.Write(data, 0, data.Length);
  140. }
  141. },
  142. });
  143. VirtualFileDataObject.DoDragDrop(drag, System.Windows.DragDropEffects.Copy);
  144. }
  145. private void SaveButton_Click(object sender, EventArgs e)
  146. {
  147. }
  148. }
  149. }