2 * Copyright (C) 2013 FooProject
3 * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
6 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
7 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
9 You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
13 using System.Windows.Controls;
14 using System.Windows.Documents;
15 using System.Windows.Media;
16 using System.Windows.Threading;
18 using FooEditEngine.WPF;
19 using Microsoft.Win32;
24 /// MainWindow.xaml の相互作用ロジック
26 public partial class MainWindow : Window
28 System.Threading.CancellationTokenSource cancleTokenSrc = new System.Threading.CancellationTokenSource();
31 InitializeComponent();
32 this.fooTextBox.MouseDoubleClick += new System.Windows.Input.MouseButtonEventHandler(fooTextBox_MouseDoubleClick);
33 this.fooTextBox.ShowTab = true;
34 this.fooTextBox.ShowFullSpace = true;
35 this.fooTextBox.ShowLineBreak = true;
36 this.fooTextBox.FoldingStrategy = new CharFoldingMethod('{', '}');
37 this.Closed += MainWindow_Closed;
40 void MainWindow_Closed(object sender, System.EventArgs e)
42 this.cancleTokenSrc.Cancel();
45 void fooTextBox_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
47 FooMouseButtonEventArgs fe = (FooMouseButtonEventArgs)e;
48 foreach (Marker m in this.fooTextBox.Document.GetMarkers(fe.Index))
50 if (m.hilight == HilightType.Url)
52 MessageBox.Show(this.fooTextBox.Document.ToString(m.start, m.length));
59 private void MenuItem_Click(object sender, RoutedEventArgs e)
61 if (this.fooTextBox.IsEnabled)
62 this.fooTextBox.IsEnabled = false;
64 this.fooTextBox.IsEnabled = true;
65 this.Enable.IsChecked = this.fooTextBox.IsEnabled;
66 this.fooTextBox.Refresh();
69 private void MenuItem_Click_1(object sender, RoutedEventArgs e)
71 if (this.fooTextBox.DrawLineNumber)
72 this.fooTextBox.DrawLineNumber = false;
74 this.fooTextBox.DrawLineNumber = true;
75 this.ShowLineNumber.IsChecked = this.fooTextBox.DrawLineNumber;
76 this.fooTextBox.Refresh();
79 private void MenuItem_Click_2(object sender, RoutedEventArgs e)
81 PrintDialog pd = new PrintDialog();
82 pd.PageRangeSelection = PageRangeSelection.AllPages;
83 pd.UserPageRangeEnabled = true;
84 if (pd.ShowDialog() == false)
86 FooPrintText printtext = new FooPrintText();
87 printtext.Document = this.fooTextBox.Document;
88 printtext.Font = this.fooTextBox.FontFamily;
89 printtext.FontSize = this.fooTextBox.FontSize;
90 printtext.DrawLineNumber = this.fooTextBox.DrawLineNumber;
91 printtext.Header = "header";
92 printtext.Footer = "footter";
93 printtext.LineBreakMethod = this.fooTextBox.LineBreakMethod;
94 printtext.LineBreakCharCount = this.fooTextBox.LineBreakCharCount;
95 printtext.MarkURL = true;
96 printtext.Hilighter = this.fooTextBox.Hilighter;
97 printtext.Foreground = this.fooTextBox.Foreground;
98 printtext.URL = this.fooTextBox.URL;
99 printtext.Comment = this.fooTextBox.Comment;
100 printtext.Keyword1 = this.fooTextBox.Keyword1;
101 printtext.Keyword2 = this.fooTextBox.Keyword2;
102 printtext.Litral = this.fooTextBox.Literal;
103 printtext.FlowDirection = this.fooTextBox.FlowDirection;
104 if (pd.PageRangeSelection == PageRangeSelection.AllPages)
106 printtext.StartPage = -1;
107 printtext.EndPage = -1;
111 printtext.StartPage = pd.PageRange.PageFrom;
112 printtext.EndPage = pd.PageRange.PageTo;
114 printtext.PageRect = new Rect(0,0,pd.PrintableAreaWidth, pd.PrintableAreaHeight);
118 private async void MenuItem_Click_3(object sender, RoutedEventArgs e)
120 OpenFileDialog ofd = new OpenFileDialog();
121 bool result = (bool)ofd.ShowDialog(this);
124 await this.fooTextBox.Document.LoadAsync(ofd.FileName, Encoding.Default,this.cancleTokenSrc);
125 this.fooTextBox.Refresh();
129 private void MenuItem_Click_4(object sender, RoutedEventArgs e)
131 if (this.fooTextBox.LineBreakMethod == LineBreakMethod.None)
132 this.fooTextBox.LineBreakMethod = LineBreakMethod.PageBound;
134 this.fooTextBox.LineBreakMethod = LineBreakMethod.None;
135 this.fooTextBox.PerfomLayouts();
136 this.fooTextBox.Refresh();
139 private void MenuItem_Click_5(object sender, RoutedEventArgs e)
141 Document doc = this.fooTextBox.Document;
142 doc.Insert(0,"this is a pen");
143 doc.SetMarker(Marker.Create(0, 4, HilightType.Sold));
144 doc.SetMarker(Marker.Create(8, 1, HilightType.Select, 255, 128, 128, 128));
145 doc.SetMarker(Marker.Create(10, 3, HilightType.Squiggle, 255, 255, 0, 0));
146 this.fooTextBox.Refresh();
149 private void MenuItem_Click_6(object sender, RoutedEventArgs e)
151 this.fooTextBox.FlowDirection = this.RTL.IsChecked ? FlowDirection.RightToLeft : FlowDirection.LeftToRight;
152 this.fooTextBox.Refresh();
155 private void MenuItem_Click_7(object sender, RoutedEventArgs e)
157 if (this.fooTextBox.Hilighter != null)
159 this.fooTextBox.Hilighter = null;
160 this.fooTextBox.LayoutLineCollection.ClearHilight();
161 this.XMLHilight.IsChecked = false;
165 this.fooTextBox.Hilighter = new XmlHilighter();
166 this.fooTextBox.LayoutLineCollection.HilightAll();
167 this.XMLHilight.IsChecked = true;
169 this.fooTextBox.Refresh();
172 private void MenuItem_Click_9(object sender, RoutedEventArgs e)
174 this.fooTextBox.LayoutLineCollection.GenerateFolding();
175 this.fooTextBox.Refresh();
178 private void MenuItem_Click_8(object sender, RoutedEventArgs e)
180 if (this.fooTextBox.DrawRuler)
181 this.fooTextBox.DrawRuler = false;
183 this.fooTextBox.DrawRuler = true;
184 this.ShowRuler.IsChecked = this.fooTextBox.DrawRuler;
185 this.fooTextBox.Refresh();
188 private async void MenuItem_Click_10(object sender, RoutedEventArgs e)
190 SaveFileDialog sfd = new SaveFileDialog();
191 bool result = (bool)sfd.ShowDialog(this);
194 await this.fooTextBox.Document.SaveAsync(sfd.FileName,Encoding.Default,"\r\n",cancleTokenSrc);
195 MessageBox.Show("complete");