//------------------------------------------------------------------------------ private void IndentButton_Click(object sender, RoutedEventArgs e) { TraceNode node = TTrace.Debug.Send("Tree indentation using Indent and UnIndent methods"); node.Indent("Indent", "level 1"); node.Send("Node1"); node.Indent("Indent level 2"); node.Send("Node2"); // UnIndent with no title node.Indent("Indent level 3"); node.Send("Node3"); node.UnIndent(); // UnIndent without title node.Send("Node4"); node.UnIndent("UnIndent level 2"); node.UnIndent("UnIndent level 1"); // node indentation using traceNodeEx TTrace.Debug.Send("root 1", TTrace.Debug.IndentLevel.ToString()); TTrace.Debug.Indent("start indentation"); TTrace.Debug.Send("under indent 1", TTrace.Debug.IndentLevel.ToString()); TraceNodeEx nodeEx = new TraceNodeEx(TTrace.Debug); // Parent depends of the indentation nodeEx.LeftMsg = "under indent 2"; nodeEx.Send(); TTrace.Debug.UnIndent(); TTrace.Debug.Send("root 2", TTrace.Debug.IndentLevel.ToString()); }
//-------------------------------------------------------------------------------------------- private void butNodeIndent_Click(object sender, System.EventArgs e) { if (start1 == null) { return; } start1.Send("before indent"); // send text under the start1 node start1.Indent("ident 1"); // send text under the start1 node and keep it this trace as the new target for further sub traces start1.Send("Level2"); // send text under the "indent 1" node start1.UnIndent("done"); // unindent and send text under the start1 node. Text is optional }
//-------------------------------------------------------------------------------------------- protected void butNodeIndent_Click(object sender, EventArgs e) { start1 = (TraceNode)Session.Contents["start1"]; if (start1 == null) { return; } start1.Send("before indent"); // send text under the start1 node start1.Indent("ident 1"); // send text under the start1 node and keep it this trace as the new target for further sub traces start1.Send("Level2"); // send text under the "indent 1" node start1.UnIndent("done"); // unindent and send text under the start1 node. Text is optional }
//------------------------------------------------------------------------------ /// <summary> /// Called when the user click on a button, label or menu on a WinTrace. /// The plugin must call WinTrace.LinkToPlugin in order to receive this event /// </summary> /// <param name="WinId">Wintrace Id</param> /// <param name="ResourceId">Resource Id</param> /// <param name="NodeId">Node id of the current selected trace (can be empty)</param> /// <returns> /// when true : tracetool perform the default action /// when false : tracetool don't perform any action /// </returns> public bool OnAction(string WinId, int ResourceId, string NodeId) { ActionNodes.Send("OnAction. WinId : " + WinId + ", ResourceId : " + ResourceId + ", current NodeId : " + NodeId); // demo : disable close button if (ResourceId == TraceConst.CST_ACTION_CLOSE_WIN) { return(false); } return(true); }
private void butTrace_Click(object sender, RoutedEventArgs e) { // specify what to send (modifiers, fields, ...). Can be slow on complexe objects TraceDisplayFlags flags = TraceDisplayFlags.ShowModifiers | TraceDisplayFlags.ShowInheritedMembers | TraceDisplayFlags.ShowNonPublic | TraceDisplayFlags.ShowFields; if (ChkSendFunctions.IsChecked != null && (bool)ChkSendFunctions.IsChecked) { flags |= TraceDisplayFlags.ShowMethods; } //TTrace.Debug.SendObject("button1", button1); //button1.Width = button1.Width + 10; //button1.SetValue(Canvas.LeftProperty, (double)button1.GetValue(Canvas.LeftProperty) + 1); if (ChkSendProcessName.IsChecked != null) { TTrace.Options.SendProcessName = (bool)ChkSendProcessName.IsChecked; } string str = '\u2250' + "qwerty & @ € é ù è azerty" + '\u9999'; // simple traces //-------------------------------------------- TTrace.Debug.Send("Hello").Send("World"); // "World" is a sub trace of "Hello" // single separator TTrace.Debug.Send("---"); // send traces with special font style (bold and Italic), color font size and font name // use System.Drawing.Color.ToArgb() (not supported in Silverlight) or (int)Helper.ToArgb(System.Windows.Media.Color) to specify Argb color TTrace.Debug.Send("Special font", "Symbol 12") .SetFontDetail(-1, false, true) // set whole line to italic .SetFontDetail(3, true, false, System.Drawing.Color.Red.ToArgb()) // set col 3 (Left Msg) to bold and Red .SetFontDetail(4, false, false, System.Drawing.Color.Green.ToArgb(), 12, "Symbol"); // set col 4 (Right Msg) to Green , font size 12 , Symbol TTrace.Debug.Send("Impact Italic") .SetFontDetail(3, false, true, System.Drawing.Color.BlueViolet.ToArgb(), 12, "Impact"); // Col3 (left msg), non bold, Italic , Blue-Violet , font 12 , Impact TTrace.Debug.Send("Special chars", "€ é ù è $ "); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) //char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' }; //TTrace.Debug.Send("Other Special chars", new StringBuilder().Append(myChars).ToString()); // note that myChars.ToString() return "char[]" // double separator TTrace.Debug.Send("==="); //TTrace.Options.SendThreadId = false ; //TTrace.Debug.Send("trace without thread id"); //TTrace.Options.SendThreadId = true; //TTrace.Options.SendDate = true; //TTrace.Debug.Send("trace with date"); //TTrace.Options.SendDate = false; // traces using Sendxxx method //-------------------------------------------- // Use default display filter. (see TTrace.Options) TTrace.Debug.SendType("Object base type", typeof(Object)); TTrace.Debug.SendType("My interface", typeof(IMyinterface)); TTrace.Debug.SendObject("My const", TraceConst.CST_CREATE_MEMBER); TTrace.Debug.SendObject("My enum", _testClass.FieldDay); TTrace.Debug.SendCaller("SendCaller test", 0); TTrace.Debug.SendStack("Stack test", 0); TTrace.Debug.SendDump("SendDump test", "Unicode", Encoding.Unicode.GetBytes(str), 50); TTrace.Warning.SendType("SendType 'testClass'", _testClass.GetType()); TTrace.Error.SendObject("SendObject 'testClass'", _testClass, flags); // traces using TraceNodeEx //-------------------------------------------- TraceNodeEx node = new TraceNodeEx(null); // TTrace.Debug node.LeftMsg = "TraceNodeEx"; node.RightMsg = str; node.AddFontDetail(3, false, false, System.Drawing.Color.Green.ToArgb()); node.IconIndex = 8; node.Members.Add("My Members", "col2", "col3") .SetFontDetail(0, true) // set first column to bold .SetFontDetail(1, false, false, System.Drawing.Color.Green.ToArgb()) // set second column to green .Add("Sub members") // add sub member node .SetFontDetail(0, false, true); // set first column to Italic node.AddDump("ASCII", Encoding.ASCII.GetBytes(str), 50); // 3F 61 7A ..... 3F node.AddDump("UTF8", Encoding.UTF8.GetBytes(str), 50); node.AddDump("Unicode", Encoding.Unicode.GetBytes(str), 50); // 50 22 61 00 7A 00 ..... 99 99 node.AddStackTrace(0); node.AddCaller(); TraceNode sendNode = node.Send(); sendNode.ResendIconIndex(5); // change icon index after the node is send // XML sample using Send //-------------------------------------------- TTrace.Debug.SendXml("xml", "<?xml version='1.0' ?><Data> Hello XML </Data>"); // Image sample using Send //-------------------------------------------- //TTrace.Debug.SendBitmap("Bitmap", Image1); // Text, image and XML together //-------------------------------------------- node = new TraceNodeEx(TTrace.Debug); node.LeftMsg = "Text, image and XML together"; node.Members.Add("Text displayed in detail"); //node.AddBitmap(Image1); node.AddXML("<?xml version='1.0' ?><Data> Xml in traceNodeEx </Data>"); node.Send(); // group of traces enabled / disabled //------------------------------------ TraceNode groupTrace = new TraceNode(null, false); // dummy node not send to viewer groupTrace.IconIndex = 5; groupTrace.Enabled = true; groupTrace.Send("GroupTrace traces 1"); // send to viewer groupTrace.Enabled = false; groupTrace.Send("GroupTrace traces 2"); // not send : group not enabled // generics //------------------------------------ TTrace.Debug.SendType("typeof(Dictionary<,>)", typeof(Dictionary <,>), flags); // open generic TTrace.Debug.SendType("typeof(Dictionary<Window, structTest>", typeof(Dictionary <Window, StructTest>), flags); // closed generic TTrace.Debug.SendObject("new Dictionary<Window, structTest>()", new Dictionary <Window, StructTest>(), flags); TTrace.Debug.SendType("typeof(templateTest<,>)", typeof(TemplateTest <,>), flags); TTrace.Debug.SendObject("new templateTest<Window, structTest>()", new TemplateTest <Window, StructTest>(), flags); // Display tables : use an object that implement : Array or IEnumerable or IDictionary or create a special table //-------------------------------------------------------------------------------------------------------------- // 1) array of int int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; TTrace.Debug.SendTable("numbersA", numbersA); TTrace.Debug.SendTable("numbersB", numbersB); // Linq on array var pairs = from a in numbersA from b in numbersB where a < b select new { a, b }; TTrace.Debug.SendTable("Linq query on series", pairs); // 2) array of FileInfo[] string strTempPath = Path.GetTempPath(); DirectoryInfo tempPath = new DirectoryInfo(strTempPath); TTrace.Debug.SendTable("Files in temp path", tempPath.GetFiles()); // Linq to array of FileInfo[] var linqToObjectQuery = from file in tempPath.GetFiles() where file.Length > 100 orderby file.Length descending select new { file.Name, file.Length, file.LastWriteTime, file }; TTrace.Debug.SendTable("Files having length>100 in temp path (Linq)", linqToObjectQuery); // 3) IDictionary : Hashtable Hashtable openWith = new Hashtable(); openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe"); TTrace.Debug.SendTable("Hashtable", openWith); // 4) UnTyped collection : Stack Stack windowStack = new Stack(5); windowStack.Push(this); windowStack.Push(this); windowStack.Push(this); TTrace.Debug.SendTable("Stack ", windowStack); // 5) Typed collection (implement ICollection) Collection <Window> windowsCollection = new Collection <Window>(); for (int c = 0; c < 500; c++) { windowsCollection.Add(this); } TTrace.Debug.SendTable("window Collection", windowsCollection); Collection <int> intCollection = new Collection <int>(); for (int c = 0; c < 500; c++) { intCollection.Add(c); } TTrace.Debug.SendTable("int Collection", intCollection); // 6) create manually a table TraceTable table = new TraceTable(); // add titles. Individual columns titles can be added or multiple columns , separated by tabs table.AddColumnTitle("colA"); // first column title table.AddColumnTitle("colB"); // second column title table.AddColumnTitle("title column C\tcolD"); // other columns title (tab separated) // add first line. Individual columns data can be added or multiple columns , separated by tabs table.AddRow(); table.AddRowData("a"); // add first col table.AddRowData("b" + "\t" + "c" + "\t" + "d" + "\t" + "e"); // then add other columns (tab separated) // add second line table.AddRow(); table.AddRowData("aa" + "\t" + "data second column" + "\t" + "cc" + "\t" + "dd" + "\t" + "ee"); // add all columns data in a single step (tab separated) // finally send the table TTrace.Debug.SendTable("Mytable", table); // ensure all traces are send to the viewer TTrace.Flush(); }
//-------------------------------------------------------- private void butTrace_Click(object sender, EventArgs e) { TTrace.Options.SendProcessName = chkSendProcessName.Checked; string str = '\u2250' + "qwerty & @ € é ù è azerty" + '\u9999'; // simple traces //-------------------------------------------- TTrace.Debug.Send("Hello").Send("World"); // "World" is a sub trace of "Hello" // single separator TTrace.Debug.Send("---"); // send traces with special font style (bold and Italic), color font size and font name TTrace.Debug.Send("Special font", "Symbol 12") .SetFontDetail(-1, false, true) // set whole line to italic .SetFontDetail(3, true, false, Color.Red.ToArgb()) // set col 3 (Left Msg) to bold and Red .SetFontDetail(4, false, false, Color.Green.ToArgb(), 12, "Symbol"); // set col 4 (Right Msg) to Green , font size 12 , Symbol TTrace.Debug.Send("Impact Italic") .SetFontDetail(3, false, true, Color.BlueViolet.ToArgb(), 12, "Impact"); // Col3 (left msg), non bold, Italic , Blue-Violet , font 12 , Impact TTrace.Debug.Send("Special chars", "€ é ù è $ "); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) //char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' }; //TTrace.Debug.Send("Other Special chars", new StringBuilder().Append(myChars).ToString()); // myChars.ToString() return "char[]" // double separator TTrace.Debug.Send("==="); //TTrace.Options.SendThreadId = false ; //TTrace.Debug.Send("trace without thread id"); //TTrace.Options.SendThreadId = true; //TTrace.Options.SendDate = true; //TTrace.Debug.Send("trace with date"); //TTrace.Options.SendDate = false; // traces using Sendxxx method //-------------------------------------------- // Use default display filter. (see TTrace.Options) TTrace.Debug.SendType("Object base type", typeof(Object)); TTrace.Debug.SendType("My interface", typeof(Myinterface)); TTrace.Debug.SendObject("My const", TraceConst.CST_CREATE_MEMBER); TTrace.Debug.SendObject("My enum", testClass.fieldDay); TTrace.Debug.SendCaller("SendCaller test", 0); TTrace.Debug.SendStack("Stack test", 0); TTrace.Debug.SendDump("SendDump test", "Unicode", Encoding.Unicode.GetBytes(str), 50); TTrace.Warning.SendType("SendType 'testClass'", testClass.GetType()); // specify what to send (modifiers, fields, ...). Can be slow on complexe objects TraceDisplayFlags flags = TraceDisplayFlags.ShowModifiers | TraceDisplayFlags.ShowInheritedMembers | TraceDisplayFlags.ShowNonPublic | TraceDisplayFlags.ShowFields; if (chkSendFunctions.Checked) { flags |= TraceDisplayFlags.ShowMethods; } TTrace.Error.SendObject("SendObject 'testClass'", testClass, flags); // traces using TraceNodeEx //-------------------------------------------- TraceNodeEx node = new TraceNodeEx(null); // TTrace.Debug node.LeftMsg = "TraceNodeEx"; node.RightMsg = str; node.AddFontDetail(3, false, false, Color.Green.ToArgb()); node.IconIndex = 8; node.Members.Add("My Members", "col2", "col3") .SetFontDetail(0, true) // set first column to bold .SetFontDetail(1, false, false, Color.Green.ToArgb()) // set second column to green .Add("Sub members") // add sub member node .SetFontDetail(0, false, true); // set first column to Italic node.AddDump("ASCII", Encoding.ASCII.GetBytes(str), 50); // 3F 61 7A ..... 3F node.AddDump("UTF8", Encoding.UTF8.GetBytes(str), 50); node.AddDump("Unicode", Encoding.Unicode.GetBytes(str), 50); // 50 22 61 00 7A 00 ..... 99 99 node.AddStackTrace(0); node.AddCaller(); TraceNode sendNode = node.Send(); sendNode.ResendIconIndex(5); // change icon index after the node is send // XML sample using Send //-------------------------------------------- TTrace.Debug.SendXml("xml", "<?xml version='1.0' ?><Data> Hello XML </Data>"); // Image sample using Send //-------------------------------------------- TTrace.Debug.SendBitmap("Bitmap", pictureBox1.Image); // Text, image and XML together //-------------------------------------------- node = new TraceNodeEx(TTrace.Debug); node.LeftMsg = "Text, image and XML together"; node.Members.Add("Text displayed in detail"); node.AddBitmap(pictureBox1.Image); node.AddXML("<?xml version='1.0' ?><Data> Xml in traceNodeEx </Data>"); node.Send(); // send table detail //-------------------------------------------- // create the table TraceTable table = new TraceTable(); // add titles. Individual columns titles can be added or multiple columns , separated by tabs table.AddColumnTitle("colA"); // first column title table.AddColumnTitle("colB"); // second column title table.AddColumnTitle("title column C\tcolD"); // other columns title (tab separated) // add first line. Individual columns data can be added or multiple columns , separated by tabs table.AddRow(); table.AddRowData("a"); // add first col table.AddRowData("b" + "\t" + "c" + "\t" + "d" + "\t" + "e"); // then add other columns (tab separated) // add second line table.AddRow(); table.AddRowData("aa" + "\t" + "data second column" + "\t" + "cc" + "\t" + "dd" + "\t" + "ee"); // add all columns data in a single step (tab separated) // finally send the table TTrace.Debug.SendTable("Mytable", table); ParsedObjectList objList = new ParsedObjectList(); objList.Add(testClass); objList.Add(test2); TTrace.Debug.SendTable("Generic table", objList); List <int> intCollection = new List <int>(); for (int c = 0; c < 500; c++) { intCollection.Add(c); } TTrace.Debug.SendTable("int Collection", intCollection); // group of traces enabled / disabled TraceNode databinding = new TraceNode(null, false); databinding.IconIndex = 5; databinding.Enabled = true; databinding.Send("databing traces 1"); databinding.Enabled = false; databinding.Send("databing traces 2"); // ensure all traces are send to the viewer TTrace.Flush(); }
//-------------------------------------------------------- private void butTrace_Click(object sender, EventArgs e) { TTrace.Options.SendProcessName = chkSendProcessName.Checked; string str = '\u2250' + "qwerty & @ € é ù è azerty" + '\u9999'; // simple traces //-------------------------------------------- TTrace.Debug.Send("Hello").Send("World"); // "World" is a sub trace of "Hello" // single separator TTrace.Debug.Send("---"); // send traces with special font style (bold and Italic), color font size and font name TTrace.Debug.Send("Special font", "Symbol 12") .SetFontDetail(-1, false, true) // set whole line to italic .SetFontDetail(3, true, false, Color.Red.ToArgb()) // set col 3 (Left Msg) to bold and Red .SetFontDetail(4, false, false, Color.Green.ToArgb(), 12, "Symbol"); // set col 4 (Right Msg) to Green , font size 12 , Symbol TTrace.Debug.Send("Impact Italic") .SetFontDetail(3, false, true, Color.BlueViolet.ToArgb(), 12, "Impact"); // Col3 (left msg), non bold, Italic , Blue-Violet , font 12 , Impact TTrace.Debug.Send("Special chars", "€ é ù è $ "); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) // a high-surrogate value (U+D8FF) // a low-surrogate value (U+DCFF) //char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' }; //TTrace.Debug.Send("Other Special chars", new StringBuilder().Append(myChars).ToString()); // myChars.ToString() return "char[]" // double separator TTrace.Debug.Send("==="); //TTrace.Options.SendThreadId = false ; //TTrace.Debug.Send("trace without thread id"); //TTrace.Options.SendThreadId = true; //TTrace.Options.SendDate = true; //TTrace.Debug.Send("trace with date"); //TTrace.Options.SendDate = false; // traces using Sendxxx method //-------------------------------------------- // Use default display filter. (see TTrace.Options) TTrace.Debug.SendType("Object base type", typeof(Object)); TTrace.Debug.SendType("My interface", typeof(Myinterface)); TTrace.Debug.SendObject("My const", TraceConst.CST_CREATE_MEMBER); TTrace.Debug.SendObject("My enum", testClass.fieldDay); TTrace.Debug.SendCaller("SendCaller test", 0); TTrace.Debug.SendStack("Stack test", 0); TTrace.Debug.SendDump("SendDump test", "Unicode", Encoding.Unicode.GetBytes(str), 50); TTrace.Warning.SendType("SendType 'testClass'", testClass.GetType()); // specify what to send (modifiers, fields, ...). Can be slow on complexe objects TraceDisplayFlags flags = TraceDisplayFlags.ShowModifiers | TraceDisplayFlags.ShowInheritedMembers | TraceDisplayFlags.ShowNonPublic | TraceDisplayFlags.ShowFields; if (chkSendFunctions.Checked) flags |= TraceDisplayFlags.ShowMethods; TTrace.Error.SendObject("SendObject 'testClass'", testClass, flags); // traces using TraceNodeEx //-------------------------------------------- TraceNodeEx node = new TraceNodeEx(null); // TTrace.Debug node.LeftMsg = "TraceNodeEx"; node.RightMsg = str; node.AddFontDetail(3, false, false, Color.Green.ToArgb()); node.IconIndex = 8; node.Members.Add("My Members", "col2", "col3") .SetFontDetail(0, true) // set first column to bold .SetFontDetail(1, false, false, Color.Green.ToArgb()) // set second column to green .Add("Sub members") // add sub member node .SetFontDetail(0, false, true); // set first column to Italic node.AddDump("ASCII", Encoding.ASCII.GetBytes(str), 50); // 3F 61 7A ..... 3F node.AddDump("UTF8", Encoding.UTF8.GetBytes(str), 50); node.AddDump("Unicode", Encoding.Unicode.GetBytes(str), 50); // 50 22 61 00 7A 00 ..... 99 99 node.AddStackTrace(0); node.AddCaller(); TraceNode sendNode = node.Send(); sendNode.ResendIconIndex(5); // change icon index after the node is send // XML sample using Send //-------------------------------------------- TTrace.Debug.SendXml("xml", "<?xml version='1.0' ?><Data> Hello XML </Data>"); // Image sample using Send //-------------------------------------------- TTrace.Debug.SendBitmap("Bitmap", pictureBox1.Image); // Text, image and XML together //-------------------------------------------- node = new TraceNodeEx(TTrace.Debug); node.LeftMsg = "Text, image and XML together"; node.Members.Add("Text displayed in detail"); node.AddBitmap(pictureBox1.Image); node.AddXML("<?xml version='1.0' ?><Data> Xml in traceNodeEx </Data>"); node.Send(); // send table detail //-------------------------------------------- // create the table TraceTable table = new TraceTable(); // add titles. Individual columns titles can be added or multiple columns , separated by tabs table.AddColumnTitle("colA"); // first column title table.AddColumnTitle("colB"); // second column title table.AddColumnTitle("title column C\tcolD"); // other columns title (tab separated) // add first line. Individual columns data can be added or multiple columns , separated by tabs table.AddRow(); table.AddRowData("a"); // add first col table.AddRowData("b" + "\t" + "c" + "\t" + "d" + "\t" + "e"); // then add other columns (tab separated) // add second line table.AddRow(); table.AddRowData("aa" + "\t" + "data second column" + "\t" + "cc" + "\t" + "dd" + "\t" + "ee"); // add all columns data in a single step (tab separated) // finally send the table TTrace.Debug.SendTable("Mytable", table); ParsedObjectList objList = new ParsedObjectList() ; objList.Add (testClass) ; objList.Add (test2) ; TTrace.Debug.SendTable("Generic table",objList ); List<int> intCollection = new List<int>(); for (int c = 0; c < 500; c++) intCollection.Add(c); TTrace.Debug.SendTable("int Collection", intCollection); // group of traces enabled / disabled TraceNode databinding = new TraceNode(null, false); databinding.IconIndex = 5; databinding.Enabled = true; databinding.Send("databing traces 1"); databinding.Enabled = false; databinding.Send("databing traces 2"); // ensure all traces are send to the viewer TTrace.Flush(); }