Preliminary work on the log viewer.

This commit is contained in:
moitoius_cp 2008-01-02 10:59:07 +00:00
parent 78d2fdc405
commit 5b7bf857f2
18 changed files with 1108 additions and 27 deletions

View file

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Cosmos.Kernel.LogTail</RootNamespace>
<AssemblyName>Cosmos.Kernel.LogTail</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Handlers\LogHandler.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Handlers\LogHandler.Designer.cs">
<DependentUpon>LogHandler.cs</DependentUpon>
</Compile>
<Compile Include="Handlers\LogMessage.cs" />
<Compile Include="Handlers\MessageLogHandler.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Handlers\MessageLogHandler.Designer.cs">
<DependentUpon>MessageLogHandler.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Handlers\MessageLogHandler.resx">
<DependentUpon>MessageLogHandler.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

View file

@ -0,0 +1,37 @@
namespace Cosmos.Kernel.LogTail.Handlers
{
partial class LogHandler
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}
#endregion
}
}

View file

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Cosmos.Kernel.LogTail.Handlers
{
public partial class LogHandler : UserControl
{
public virtual String Title
{
get
{
throw new NotImplementedException();
}
}
public LogHandler()
{
InitializeComponent();
}
// For designer support.
public virtual void HandleMessage(LogMessage message)
{
throw new NotImplementedException();
}
public static LogHandler[] GetHandlers()
{
List<LogHandler> handlers = new List<LogHandler>();
foreach (Type t in typeof(LogHandler).Assembly.GetTypes())
{
if (t != typeof(LogHandler) && typeof(LogHandler).IsAssignableFrom(t))
handlers.Add((LogHandler)Activator.CreateInstance(t));
}
return handlers.ToArray();
}
}
}

View file

@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.Kernel.LogTail.Handlers
{
/// <summary>
/// Represents a single log message.
/// </summary>
public class LogMessage
{
private string _name;
/// <summary>
/// Gets the name of the message.
/// </summary>
public string Name
{
get { return _name; }
}
/// <summary>
/// The values.
/// </summary>
private Dictionary<string, string> _values = new Dictionary<string, string>();
/// <summary>
/// Gets a specific attribute.
/// </summary>
/// <param name="name">The name of the atttribute.</param>
/// <returns></returns>
public string this[string name]
{
get
{
string result;
_values.TryGetValue(name, out result);
return result;
}
}
/// <summary>
/// Creates a new instance of the <see cref="LogMessage"/> class.
/// </summary>
/// <param name="name"></param>
public LogMessage(string name)
{
_name = name;
}
/// <summary>
/// Adds an attribute.
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
public void AddAttribute(string name, string value)
{
_values.Add(name, value);
}
}
}

View file

@ -0,0 +1,90 @@
namespace Cosmos.Kernel.LogTail.Handlers
{
partial class MessageLogHandler
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MessageLogHandler));
this.listView = new System.Windows.Forms.ListView();
this.imageList = new System.Windows.Forms.ImageList(this.components);
this.sourceColumnHeader = new System.Windows.Forms.ColumnHeader();
this.messageColumnHeader = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView
//
this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.sourceColumnHeader,
this.messageColumnHeader});
this.listView.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView.GridLines = true;
this.listView.LargeImageList = this.imageList;
this.listView.Location = new System.Drawing.Point(0, 0);
this.listView.Name = "listView";
this.listView.Size = new System.Drawing.Size(150, 150);
this.listView.SmallImageList = this.imageList;
this.listView.StateImageList = this.imageList;
this.listView.TabIndex = 0;
this.listView.UseCompatibleStateImageBehavior = false;
this.listView.View = System.Windows.Forms.View.Details;
//
// imageList
//
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
this.imageList.Images.SetKeyName(0, "error");
this.imageList.Images.SetKeyName(1, "warning");
//
// sourceColumnHeader
//
this.sourceColumnHeader.Text = "Source";
this.sourceColumnHeader.Width = 120;
//
// messageColumnHeader
//
this.messageColumnHeader.Text = "Message";
this.messageColumnHeader.Width = 500;
//
// MessageLogHandler
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.listView);
this.Name = "MessageLogHandler";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListView listView;
private System.Windows.Forms.ImageList imageList;
private System.Windows.Forms.ColumnHeader sourceColumnHeader;
private System.Windows.Forms.ColumnHeader messageColumnHeader;
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Cosmos.Kernel.LogTail.Handlers
{
public partial class MessageLogHandler : LogHandler
{
public override string Title
{
get
{
return "Messages";
}
}
public MessageLogHandler()
{
InitializeComponent();
}
public override void HandleMessage(LogMessage message)
{
// We only handle these.
if (message.Name != "Warning" && message.Name != "Error")
return;
// Create the item.
ListViewItem item = new ListViewItem(new string[] { message["Module"], message["String"] });
item.ImageKey = message.Name.ToLowerInvariant();
// Add it.
listView.Items.Add(item);
}
}
}

View file

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADs
CgAAAk1TRnQBSQFMAgEBAgEAAQUBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABEAMAAQEBAAEgBgABEG4AAQMCAQEDATwBGQEmAXwBKQFSAYAB6QEoAVABfQHsATkBMAFOAbsBGQEC
AQMBIJwAATIBBwEUAUwBTQE0AZQB0gFLAUYBwQHwAUkBQAG1AekBRgE9AbMB6QFDAUABvwHwAUMBKwGR
AdIBMwEGARgBVAEGAgEBBiQAAT0BHwEsAYIBHwFyAacB/wEsAYsBvQH/ATUBowHZAf8BNAGfAdkB/wEo
AXoBswH/ATwBGQEoAYKYAAEzAQcBFAFMAWQBVwG3AeQBiQGXAfoB/wGEAZUC/wGAAZAB/AH/AX4BjgH6
Af8BfgGNAfcB/wF+AYsB8gH/AVIBWgHdAf8BPAEKASsBcxwAAS4BCgEOAUcBIAF6Aa0B/wExAZgBxgH/
AUwByAHjAf8BSAHFAecB/wEqAZ0ByAH/ASkBtgHkAf8BLwGXAdAB/wE2AT4BYAHJlAABNAEJARUBTQFq
AVoBrgHfAZYBpQH6Af8BWwF1Av8BMwFRAv8BMQFQAv8BLQFKAf4B/wEmAUMB+gH/AUkBYQH5Af8BhgGU
AfQB/wFWAUMBpQHcATEBBQEUAU0UAAE9ATwBUwGuATABjgG9Af8BOQGMAboB/wEsAXkBrwH/AUMBlwHG
Af8BDQFcAZUB/wEKAUsBiAH/AR0BkgHOAf8BNQGnAd0B/wEuAVIBfQHhkAABNQEKARQBSwF2AWkBugHl
AZ8BrQH7Af8BaAGBAv8BQQFfAv8BQQFfAv8BPQFaAv8BOAFWAv8BNAFRAv8BKQFHAf0B/wFLAWYB/QH/
AYkBlgH2Af8BWAFMAbMB5QEwAQUBEwFLDAABMwFiAYcB2QEyAaAByAH/AVgBngHIAf8BdAG9Ad4B/wGC
Ad4B9gH/AVoBtAHaAf8BDgFeAZEB/wEXAYEBvQH/ASYBsgHzAf8BPgGuAeIB/wE0AU8BdQHVkAABbAFU
AZ8B1QGiAbIB/AH/AXQBjwL/AVABcQL/AVABbwL/AUwBagL/AUcBZQL/AUIBXwL/AT0BWwL/ATgBVgL/
AS0BTAL/AU8BaAL/AYQBkwH6Af8BSgEzAZcB1QgAATkBVgF2AcYBMwGnAc8B/wF7Ad0B8gH/AS8BeAGv
Af8BjAHgAfYB/wF5AdAB7QH/AS0BigG4Af8BHwGNAckB/wEnAbUB7wH/ASEBnQHdAf8BRQG1AeUB/wEr
AW4BoAHukAABfAF3Ac4B8gGmAbsC/wFgAYAC/wFgAX8C/wFbAXoC/wFWAXQC/wFRAW8C/wFMAWoC/wFH
AWUC/wFCAV8C/wE8AVoC/wEyAVAC/wGHAZkC/wFQAU4BxgHyBAABQAE3AUoBmgE9AbQB2gH/AX0B2QHu
Af8BUAGuAdQB/wE5AYEBtAH/AUEBkgG9Af8BIgGLAbwB/wEvAawB3wH/ATEBuQHuAf8BIgGSAdIB/wEg
AZ0B3QH/AUUBtwHoAf8BLAGWAc8B/wEtAQoBDgFHjAABgAF0AcAB6QGrAb4C/wFuAY0C/wFqAYkC/wFm
AYMC/wFgAX8C/wFbAXoC/wFWAXUC/wFRAXAC/wFMAWoC/wFHAWQC/wFAAV0C/wGKAZsC/wFXAU0BuAHp
BAABMQGCAaoB5QFqAd0B8gH/AYIB3QHyAf8BLQGkAcoB/wErAaoB0AH/ATcBqQHVAf8BNwGpAdwB/wE3
AbgB6QH/ASUBkQHLAf8BJAGQAc4B/wElAaYB4wH/AUYBugHrAf8BPQGsAeEB/wE9ATUBTgGsjAABhgF7
AcMB6gGxAcQC/wF3AZgC/wF0AZMC/wFvAY4C/wFqAYkC/wFmAYMC/wFgAX8C/wFbAXoC/wFWAXQC/wFQ
AW8C/wFJAWgC/wGQAaEC/wFcAVMBuwHqBAABPQFfAXYBvAFWAdIB6wH/AZ0B6AH5Af8BeQHhAfYB/wFi
AdgB9gH/AVMB0wH3Af8BQgHBAeoB/wEyAaoB2wH/ASwBnwHWAf8BJwGXAdEB/wEoAacB4AH/ASwBrwHp
Af8BRwG2AeYB/wEvAWABiwHijAABjwGJAdIB8gG4Ac0C/wF+AaAC/wF9AZ0C/wF5AZkC/wF0AZMC/wFv
AY4C/wFqAYkC/wFmAYMC/wFhAX8C/wFaAXkC/wFQAXEC/wGYAaoC/wFkAWABygHyBAABHAEFAQYBJQEy
AZUBtAHmASgBsgHYAf4BfwHTAesB/wHLAfAB+wH/AYQB3QH1Af8BSAHGAesB/wE/Ab0B6QH/ATgBtQHl
Af8BLgGmAdwB/wEtAawB4wH/ASwBsAHpAf8BSQG5AegB/wEmAX8BtwH5jAABhgFrAaIB1AG8Ac0B/AH/
AZwBuwL/AYEBpQL/AYEBogL/AX0BngL/AXkBmQL/AXUBkwL/AXABjgL/AWoBiQL/AWEBgQL/AXkBkwL/
AZ4BrQH7Af8BZAFMAZsB1AwAARQCAwEZAT4BYwF3AbsBWQHLAeYB/wGpAeAB8wH/AaIB4wH4Af8BSwHL
AfEB/wFCAcQB7wH/ATsBvQHsAf8BNAG4AesB/wEvAbQB6gH/AUoBvAHqAf8BJgGKAcYB+4wAATkBDgEU
AUoBmAGKAcAB5AHBAdEB/AH/AaABvwL/AYYBqgL/AYUBpwL/AYEBogL/AX0BnQL/AXkBmAL/AXABkAL/
AYUBoQL/AawBugH7Af8BfQFvAbkB5AE1AQoBFAFKFAABMwEUARgBUwE6Ab8B4AH/AYoB1gHrAf8BtgHq
AfoB/wFXAc4B8QH/AUMBwwHuAf8BLAGvAekB/wE4AbAB6AH/AUQBuAHoAf8BMwFeAYMB2JAAATgBDQEU
AUkBlgGFAbYB3wHEAdQB/AH/AaMBwgL/AYsBrwL/AYkBqwL/AYQBpwL/AX8BoAL/AZEBrgL/AbQBwwH7
Af8BgQFtAa0B2wE2AQsBFAFKHAABHAEFAQYBJQErAasBzgH3AW4BzwHpAf8BvAHqAfgB/wG5AekB+QH/
AXIBzAHwAf8BQgGzAeoB/wExAZgB1AH/AT4BIAEtAX+UAAE5AQ4BFAFKAZsBjgHAAeQBwgHTAfwB/wHB
AdYC/wG9AdEC/wG7Ac8C/wG5Ac4C/wG3AcgB/AH/AZgBnwHtAf8BTQEaAS4BcigAAUEBQwFQAZkBNAGN
AasB4gEuAZwBwAHxASgBqwHSAf0BNgG2AeIB/wEjAY4BxAH+AS0BjQHGAf8BPAE+AVYBs5QAAToBDgEV
AUsBigFvAaAB0gGaAZIB0QHwAZQBiAHFAekBkwGGAcUB6QGSAY0BzwHwAYIBZwGfAdIBPQEQARkBUwEG
AgEBBiwAARECAgEVAR8BBgEHASoBDgICARABPwEwAToBgwEzAbQB4AH/AUUBtQHrAf8BIwF/AbEB+/QA
AUABWgFtAbQBJwGoAc8B+wE+AUcBXwGvhAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGA
FwAD/wEAAv8B/gEHBAAB8AEHAfwBBwQAAeABBwHwAQcEAAHAAQMB4AEHBAABgAEBAcABBwQAAYABAQGA
AQcEAAGAAQEBAAEDBAABgAEBAQABAwQAAYABAQEAAQMEAAGAAQEBAAEDBAABgAEBAcABAwQAAYABAQHw
AQMEAAHAAQMB+AEDBAAB4AEHAf4BAQQAAfABBwH/AQEEAAP/AfEEAAs=
</value>
</data>
</root>

View file

@ -0,0 +1,60 @@
namespace Cosmos.Kernel.LogTail
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.tabControl = new System.Windows.Forms.TabControl();
this.SuspendLayout();
//
// tabControl
//
this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl.Location = new System.Drawing.Point(0, 0);
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
this.tabControl.Size = new System.Drawing.Size(292, 270);
this.tabControl.TabIndex = 0;
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 270);
this.Controls.Add(this.tabControl);
this.Name = "MainForm";
this.Text = "Cosmos Log Tail";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabControl;
}
}

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Cosmos.Kernel.LogTail
{
public partial class MainForm : Form
{
private Handlers.LogHandler[] _handlers;
public MainForm()
{
InitializeComponent();
BuildTabs();
}
private void BuildTabs()
{
_handlers = Handlers.LogHandler.GetHandlers();
foreach (Handlers.LogHandler handler in _handlers)
{
TabPage page = new TabPage();
page.Text = handler.Title;
page.Controls.Add(handler);
handler.Dock = DockStyle.Fill;
tabControl.TabPages.Add(page);
}
}
}
}

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Cosmos.Kernel.LogTail
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View file

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Cosmos.Kernel.LogTail")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Cosmos.Kernel.LogTail")]
[assembly: AssemblyCopyright("Copyright © 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("3b728cd0-b173-4666-9019-81f99450017c")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1433
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Cosmos.Kernel.LogTail.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Cosmos.Kernel.LogTail.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1433
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Cosmos.Kernel.LogTail.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View file

@ -55,9 +55,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Kernel.Boot.Glue", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Kernel", "Cosmos\Cosmos.Kernel\Cosmos.Kernel.csproj", "{A1F83D9F-2D44-4264-A08B-416797123018}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Kernel.LogTail", "Cosmos.Kernel.LogTail\Cosmos.Kernel.LogTail.csproj", "{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}"
EndProject
Global
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 26
SccNumberOfProjects = 27
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = https://tfs04.codeplex.com/
SccLocalPath0 = .
@ -117,33 +119,37 @@ Global
SccProjectUniqueName18 = Cosmos.Kernel.Boot.Glue\\Cosmos.Kernel.Boot.Glue.csproj
SccProjectName18 = Cosmos.Kernel.Boot.Glue
SccLocalPath18 = Cosmos.Kernel.Boot.Glue
SccProjectUniqueName19 = Cosmos.Kernel.LogViewer\\Cosmos.Kernel.LogViewer.csproj
SccProjectUniqueName19 = Cosmos\\Cosmos.Shell.Console\\Cosmos.Shell.Console.csproj
SccProjectTopLevelParentUniqueName19 = IL2CPU.sln
SccProjectName19 = Cosmos.Kernel.LogViewer
SccLocalPath19 = Cosmos.Kernel.LogViewer
SccProjectUniqueName20 = Cosmos\\Cosmos.Shell.Console\\Cosmos.Shell.Console.csproj
SccProjectName19 = Cosmos/Cosmos.Shell.Console
SccLocalPath19 = Cosmos\\Cosmos.Shell.Console
SccProjectUniqueName20 = Cosmos\\Cosmos.Kernel\\Cosmos.Kernel.csproj
SccProjectTopLevelParentUniqueName20 = IL2CPU.sln
SccProjectName20 = Cosmos/Cosmos.Shell.Console
SccLocalPath20 = Cosmos\\Cosmos.Shell.Console
SccProjectUniqueName21 = Cosmos\\Cosmos.Kernel\\Cosmos.Kernel.csproj
SccProjectName20 = Cosmos/Cosmos.Kernel
SccLocalPath20 = Cosmos\\Cosmos.Kernel
SccProjectUniqueName21 = Cosmos\\Cosmos.Hardware\\Cosmos.Hardware.csproj
SccProjectTopLevelParentUniqueName21 = IL2CPU.sln
SccProjectName21 = Cosmos/Cosmos.Kernel
SccLocalPath21 = Cosmos\\Cosmos.Kernel
SccProjectUniqueName22 = Cosmos\\Cosmos.Hardware\\Cosmos.Hardware.csproj
SccProjectName21 = Cosmos/Cosmos.Hardware
SccLocalPath21 = Cosmos\\Cosmos.Hardware
SccProjectUniqueName22 = Cosmos\\Cosmos.Kernel.Plugs\\Cosmos.Kernel.Plugs.csproj
SccProjectTopLevelParentUniqueName22 = IL2CPU.sln
SccProjectName22 = Cosmos/Cosmos.Hardware
SccLocalPath22 = Cosmos\\Cosmos.Hardware
SccProjectUniqueName23 = Cosmos\\Cosmos.Kernel.Plugs\\Cosmos.Kernel.Plugs.csproj
SccProjectTopLevelParentUniqueName23 = IL2CPU.sln
SccProjectName23 = Cosmos/Cosmos.Kernel.Plugs
SccLocalPath23 = Cosmos\\Cosmos.Kernel.Plugs
SccProjectUniqueName24 = Indy.IL2CPU.Plugs\\Indy.IL2CPU.Plugs.csproj
SccProjectName24 = Indy.IL2CPU.Plugs
SccLocalPath24 = Indy.IL2CPU.Plugs
SccProjectUniqueName25 = Cosmos.Debug.Client.CLI\\Cosmos.Debug.Client.CLI.csproj
SccProjectName22 = Cosmos/Cosmos.Kernel.Plugs
SccLocalPath22 = Cosmos\\Cosmos.Kernel.Plugs
SccProjectUniqueName23 = Indy.IL2CPU.Plugs\\Indy.IL2CPU.Plugs.csproj
SccProjectName23 = Indy.IL2CPU.Plugs
SccLocalPath23 = Indy.IL2CPU.Plugs
SccProjectUniqueName24 = Cosmos.Debug.Client.CLI\\Cosmos.Debug.Client.CLI.csproj
SccProjectTopLevelParentUniqueName24 = IL2CPU.sln
SccProjectName24 = Cosmos.Debug.Client.CLI
SccLocalPath24 = Cosmos.Debug.Client.CLI
SccProjectUniqueName25 = Cosmos.Kernel.LogViewer\\Cosmos.Kernel.LogViewer.csproj
SccProjectTopLevelParentUniqueName25 = IL2CPU.sln
SccProjectName25 = Cosmos.Debug.Client.CLI
SccLocalPath25 = Cosmos.Debug.Client.CLI
SccProjectName25 = Cosmos.Kernel.LogViewer
SccLocalPath25 = Cosmos.Kernel.LogViewer
SccProjectUniqueName26 = Cosmos.Kernel.LogTail\\Cosmos.Kernel.LogTail.csproj
SccProjectTopLevelParentUniqueName26 = IL2CPU.sln
SccProjectName26 = Cosmos.Kernel.LogTail
SccLocalPath26 = Cosmos.Kernel.LogTail
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -245,16 +251,21 @@ Global
{A1F83D9F-2D44-4264-A08B-416797123018}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1F83D9F-2D44-4264-A08B-416797123018}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1F83D9F-2D44-4264-A08B-416797123018}.Release|Any CPU.Build.0 = Release|Any CPU
{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7BAB58BF-E8A1-4623-B6BF-4B90A0505226}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{930DDE98-229B-4EBF-B41B-ACABDF48EEFB} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{B168BEDD-C6A6-4E7C-B9A5-0144286E9E42} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{A1F83D9F-2D44-4264-A08B-416797123018} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{E4A9F8F0-D0DC-465A-A64A-FE56504D397E} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{7ABE17D9-06A5-44BE-B675-E649F2CD573D} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{CE50FE98-9AC4-4B4D-ADC7-31F6DCD28755} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{7ABE17D9-06A5-44BE-B675-E649F2CD573D} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{B168BEDD-C6A6-4E7C-B9A5-0144286E9E42} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{930DDE98-229B-4EBF-B41B-ACABDF48EEFB} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{A1F83D9F-2D44-4264-A08B-416797123018} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
{7BAB58BF-E8A1-4623-B6BF-4B90A0505226} = {0D558E33-78B0-47DB-B5EF-B7C2F3114D75}
EndGlobalSection
EndGlobal