2 using System.Collections.Generic;
\r
4 using System.Threading;
\r
5 using System.Windows;
\r
6 using System.Windows.Controls;
\r
7 using System.Windows.Data;
\r
8 using System.Windows.Documents;
\r
9 using System.Windows.Input;
\r
10 using System.Windows.Media;
\r
11 using System.Windows.Media.Imaging;
\r
12 using System.Windows.Shapes;
\r
13 using System.Windows.Threading;
\r
18 /// NTScriptDebugger.xaml の相互作用ロジック
\r
20 public partial class NTScriptDebugger : Window
\r
22 public int ErrorLine { set; get; }
\r
23 public int ErrorSrcIndex { set; get; }
\r
24 public string ErrorMessage { set; get; }
\r
25 public string HtmlSource { get; set; }
\r
26 public html.js.JsFunctionContext FuncContext { get; set; }
\r
27 public NTScriptDebugger()
\r
29 InitializeComponent();
\r
32 static bool mDontShowWindow = false;
\r
33 static List<NTScriptDebugger> mWindows = new List<NTScriptDebugger>();
\r
34 public static void ShowWindow(NTScriptDebugger wnd)
\r
36 if (mDontShowWindow)
\r
38 if (mWindows.Count == 0)
\r
46 public void initParam()
\r
48 //mLblHeader.Content = ErrorMessage;
\r
49 //mOutputBox.AppendText(HtmlSource);
\r
51 string source = HtmlSource;
\r
52 int length = source.Length;
\r
57 for (; i < length; i++)
\r
62 string line = source.Substring(textStart, i - textStart);
\r
63 if (currLine == ErrorLine)
\r
65 addLine(currLine, line, true);
\r
66 if (ErrorSrcIndex < i && textStart <= ErrorSrcIndex)
\r
68 column = ErrorSrcIndex - textStart;
\r
73 addLine(currLine, line, false);
\r
80 if (mFocusSpan != null)
\r
82 Timer timer = new Timer(TimerCallback, null,1000, Timeout.Infinite);
\r
84 //mFocusSpan.Focus();
\r
86 string error = "(行 " + ErrorLine + " - 列 " + (column > -1 ? column.ToString() : string.Empty);
\r
87 error += ")"+ ErrorMessage;
\r
90 mLblHeader.Content = error;
\r
92 if (FuncContext != null)
\r
94 mBtnShowWatchWindow.IsEnabled = true;
\r
98 Span mFocusSpan = null;
\r
99 private void addLine(int lineNo, string line, bool empasis)
\r
101 Span span = new Span();
\r
102 Run run = new Run(lineNo.ToString() + ": ");
\r
103 span.Inlines.Add(run);
\r
104 run = new Run(line);
\r
105 span.Inlines.Add(run);
\r
108 span.Background = new SolidColorBrush(Colors.DeepPink);
\r
109 span.Foreground = new SolidColorBrush(Colors.Silver);
\r
112 mParaBody.LineStackingStrategy = LineStackingStrategy.MaxHeight;
\r
113 mParaBody.Inlines.Add(span);
\r
114 mParaBody.Inlines.Add(new LineBreak());
\r
117 private void TimerCallback(object param)
\r
119 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
\r
120 (ThreadStart)delegate()
\r
122 mFocusSpan.Focus();
\r
126 private void NTScriptDebugger_Closed(object sender, EventArgs e)
\r
128 if (mDontShowWindow)
\r
133 if (mWindows.Count > 0)
\r
135 mWindows.RemoveAt(0);
\r
136 if (mWindows.Count > 0)
\r
137 mWindows[0].Show();
\r
141 private void mChkDontShowWindow_Checked(object sender, RoutedEventArgs e)
\r
143 mDontShowWindow = true;
\r
146 private void mChkDontShowWindow_Unchecked(object sender, RoutedEventArgs e)
\r
151 private void mBtnClose_Click(object sender, RoutedEventArgs e)
\r
155 private void mBtnShowWatchWindow_Click(object sender, RoutedEventArgs e)
\r
157 List < DebugMemory> list;
\r
158 if (FuncContext.getMemoryList(out list))
\r
160 NTMemoryInspectionWindow win = new NTMemoryInspectionWindow();
\r
161 win.initParam(list);
\r