/// <summary> /// Send a bitmap /// </summary> /// <param name="leftMsg">Trace message</param> /// <param name="image">The Image</param> /// <returns>the new node</returns> public TraceNode SendBitmap(string leftMsg, System.Windows.Controls.Image image) { if (Enabled == false) { return(new TraceNode(this)); } TraceNodeEx result = new TraceNodeEx(this, true); // create a node with same properties as "this" with new ID List <string> commandList = PrepareNewNode(leftMsg, result.Id); result.AddBitmap(image); result.Members.AddToStringList(commandList); // convert all groups and nested items/group to strings TTrace.SendToWinTraceClient(commandList, WinTraceId); return(new TraceNode(result)); }
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 // 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 = "demo"; 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); // ensure all traces are send to the viewer TTrace.Flush(); }
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 ((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); 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, (int)Helper.ToArgb(Colors.Green), 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(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()); 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 = System.IO.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(); }