Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        //--------------------------------------------------------
        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();
        }