From: <br...@us...> - 2008-11-06 12:01:41
|
Revision: 431 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=431&view=rev Author: brus07 Date: 2008-11-06 11:48:11 +0000 (Thu, 06 Nov 2008) Log Message: ----------- Added GUI to TestRunnerPlugin. LogDataGridView, counters of submits result. Modified Paths: -------------- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.Designer.cs ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.resx Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs 2008-11-06 09:53:57 UTC (rev 430) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs 2008-11-06 11:48:11 UTC (rev 431) @@ -17,9 +17,41 @@ private bool runner_onDataArrived(SystemMessage message) { - base.DataArrived(message); - return true; + if (message.IsType("TestingResult") == true) + { + SendResultToControl(message.Message, "Send"); + base.DataArrived(message); + return true; + } + throw new Exception(); } + private void SendResultType(string text) + { + ((TestRunnerUserControl)base.Control).AddResult(text); + } + private void SendMessageToControl(string text, string type) + { + ((TestRunnerUserControl)base.Control).AddText(type, text); + } + private void SendSubmitToControl(string text, string type) + { + Submit submit = Submit.CreateFromXml(text); + text = submit.id.ToString() + + Environment.NewLine + + submit.sourceCode; + ((TestRunnerUserControl)base.Control).AddText(type, text); + SendResultType("All"); + } + private void SendResultToControl(string text, string type) + { + Result result = Result.CreateFromXml(text); + text = result.Submit.id + ": " + result.res + + Environment.NewLine + + "usedMemory:" + result.usedMemory.ToString() + " " + + "usedTime:" + result.usedTime.ToString(); + ((TestRunnerUserControl)base.Control).AddText(type, text); + SendResultType(result.res); + } public override void Send(SystemMessage message) { @@ -27,6 +59,7 @@ { if (message.Message == "stop") { + SendMessageToControl("Stop", "SystemReceive"); runner.Stop(); return; } @@ -36,6 +69,7 @@ { if (message.Message == "isbusy") { + SendMessageToControl("isbusy", "SystemReceive"); SystemMessage mes; if (runner.IsBusy() == true) { @@ -45,21 +79,28 @@ { mes = new SystemMessage("free", "CheckStateResult"); } + SendMessageToControl(mes.Message, "SystemSend"); Send(mes); return; } } if (message.IsType("TestingSubmit") == true) + { + SendSubmitToControl(message.Message, "Receive"); runner.AddWork(message.Message); + } if (message.IsType("TestingSubmitList") == true) { + SendMessageToControl("TestingSubmitList", "Receive"); + SubmitList list = SubmitList.CreateFromXml(message.Message); for (int i = 0; i < list.Items.Length; i++) { while (runner.IsBusy() == true) System.Threading.Thread.Sleep(50); + SendSubmitToControl(list.Items[i].ToString(), "Receive"); runner.AddWork(list.Items[i].ToString()); } Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj 2008-11-06 09:53:57 UTC (rev 430) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.csproj 2008-11-06 11:48:11 UTC (rev 431) @@ -28,6 +28,10 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="LogDataGridView, Version=1.1.3198.29045, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\Resource\LogDataGridView.dll</HintPath> + </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Drawing" /> @@ -63,6 +67,12 @@ <Name>PluginsFramework</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="TestRunnerUserControl.resx"> + <SubType>Designer</SubType> + <DependentUpon>TestRunnerUserControl.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> <Import Project="$(MSBuildBinPath)\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. Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.Designer.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.Designer.cs 2008-11-06 09:53:57 UTC (rev 430) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.Designer.cs 2008-11-06 11:48:11 UTC (rev 431) @@ -28,10 +28,279 @@ /// </summary> private void InitializeComponent() { - components = new System.ComponentModel.Container(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.labelAll = new System.Windows.Forms.Label(); + this.labelAC = new System.Windows.Forms.Label(); + this.labelWA = new System.Windows.Forms.Label(); + this.labelTL = new System.Windows.Forms.Label(); + this.labelML = new System.Windows.Forms.Label(); + this.labelOL = new System.Windows.Forms.Label(); + this.labelCE = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.labelDF = new System.Windows.Forms.Label(); + this.labelRE = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.Location = new System.Drawing.Point(3, 57); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(302, 236); + this.panel1.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(18, 13); + this.label1.TabIndex = 1; + this.label1.Text = "All"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(3, 13); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(23, 13); + this.label2.TabIndex = 2; + this.label2.Text = "AC"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tableLayoutPanel1.ColumnCount = 6; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.labelAll, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.labelAC, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.label3, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.labelWA, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.label4, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.labelTL, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.label7, 4, 0); + this.tableLayoutPanel1.Controls.Add(this.labelCE, 5, 0); + this.tableLayoutPanel1.Controls.Add(this.label5, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.labelML, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.label6, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.labelOL, 3, 3); + this.tableLayoutPanel1.Controls.Add(this.label8, 4, 3); + this.tableLayoutPanel1.Controls.Add(this.labelDF, 5, 3); + this.tableLayoutPanel1.Controls.Add(this.labelRE, 5, 1); + this.tableLayoutPanel1.Controls.Add(this.label9, 4, 1); + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 5; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel1.Size = new System.Drawing.Size(200, 48); + this.tableLayoutPanel1.TabIndex = 3; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 26); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(25, 13); + this.label3.TabIndex = 3; + this.label3.Text = "WA"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(54, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(20, 13); + this.label4.TabIndex = 4; + this.label4.Text = "TL"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(54, 13); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(22, 13); + this.label5.TabIndex = 5; + this.label5.Text = "ML"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(54, 26); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(21, 13); + this.label6.TabIndex = 6; + this.label6.Text = "OL"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(101, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(21, 13); + this.label7.TabIndex = 7; + this.label7.Text = "CE"; + // + // labelAll + // + this.labelAll.AutoSize = true; + this.labelAll.Location = new System.Drawing.Point(34, 0); + this.labelAll.Name = "labelAll"; + this.labelAll.Size = new System.Drawing.Size(13, 13); + this.labelAll.TabIndex = 8; + this.labelAll.Text = "0"; + // + // labelAC + // + this.labelAC.AutoSize = true; + this.labelAC.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.labelAC.Location = new System.Drawing.Point(34, 13); + this.labelAC.Name = "labelAC"; + this.labelAC.Size = new System.Drawing.Size(14, 13); + this.labelAC.TabIndex = 9; + this.labelAC.Text = "0"; + // + // labelWA + // + this.labelWA.AutoSize = true; + this.labelWA.Location = new System.Drawing.Point(34, 26); + this.labelWA.Name = "labelWA"; + this.labelWA.Size = new System.Drawing.Size(13, 13); + this.labelWA.TabIndex = 10; + this.labelWA.Text = "0"; + // + // labelTL + // + this.labelTL.AutoSize = true; + this.labelTL.Location = new System.Drawing.Point(82, 0); + this.labelTL.Name = "labelTL"; + this.labelTL.Size = new System.Drawing.Size(13, 13); + this.labelTL.TabIndex = 11; + this.labelTL.Text = "0"; + // + // labelML + // + this.labelML.AutoSize = true; + this.labelML.Location = new System.Drawing.Point(82, 13); + this.labelML.Name = "labelML"; + this.labelML.Size = new System.Drawing.Size(13, 13); + this.labelML.TabIndex = 12; + this.labelML.Text = "0"; + // + // labelOL + // + this.labelOL.AutoSize = true; + this.labelOL.Location = new System.Drawing.Point(82, 26); + this.labelOL.Name = "labelOL"; + this.labelOL.Size = new System.Drawing.Size(13, 13); + this.labelOL.TabIndex = 13; + this.labelOL.Text = "0"; + // + // labelCE + // + this.labelCE.AutoSize = true; + this.labelCE.Location = new System.Drawing.Point(129, 0); + this.labelCE.Name = "labelCE"; + this.labelCE.Size = new System.Drawing.Size(13, 13); + this.labelCE.TabIndex = 14; + this.labelCE.Text = "0"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(101, 26); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(21, 13); + this.label8.TabIndex = 15; + this.label8.Text = "DF"; + // + // labelDF + // + this.labelDF.AutoSize = true; + this.labelDF.Location = new System.Drawing.Point(129, 26); + this.labelDF.Name = "labelDF"; + this.labelDF.Size = new System.Drawing.Size(13, 13); + this.labelDF.TabIndex = 16; + this.labelDF.Text = "0"; + // + // labelRE + // + this.labelRE.AutoSize = true; + this.labelRE.Location = new System.Drawing.Point(129, 13); + this.labelRE.Name = "labelRE"; + this.labelRE.Size = new System.Drawing.Size(13, 13); + this.labelRE.TabIndex = 17; + this.labelRE.Text = "0"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(101, 13); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(22, 13); + this.label9.TabIndex = 18; + this.label9.Text = "RE"; + // + // TestRunnerUserControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "TestRunnerUserControl"; + this.Size = new System.Drawing.Size(308, 296); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label labelAll; + private System.Windows.Forms.Label labelAC; + private System.Windows.Forms.Label labelTL; + private System.Windows.Forms.Label labelWA; + private System.Windows.Forms.Label labelML; + private System.Windows.Forms.Label labelOL; + private System.Windows.Forms.Label labelCE; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label labelDF; + private System.Windows.Forms.Label labelRE; + private System.Windows.Forms.Label label9; } } Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.cs 2008-11-06 09:53:57 UTC (rev 430) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.cs 2008-11-06 11:48:11 UTC (rev 431) @@ -10,9 +10,111 @@ { public partial class TestRunnerUserControl : UserControl { + int All = 0; + int AC = 0; + int WA = 0; + int TL = 0; + int ML = 0; + int OL = 0; + int CE = 0; + int RE = 0; + int DF = 0; public TestRunnerUserControl() { InitializeComponent(); + initGridSe(); } + + LogDataGridView.LogDataGridView view = new LogDataGridView.LogDataGridView(); + private void initGridSe() + { + view.Dock = DockStyle.Fill; + panel1.Controls.Add(view); + } + + + delegate void UpdateCountersCallback(); + public void UpdateCounters() + { + if (this.InvokeRequired) + { + UpdateCountersCallback d = new UpdateCountersCallback(UpdateCounters); + this.Invoke(d); + } + else + { + labelAll.Text = All.ToString(); + labelAC.Text = AC.ToString(); + labelWA.Text = WA.ToString(); + labelDF.Text = DF.ToString(); + labelML.Text = ML.ToString(); + labelOL.Text = OL.ToString(); + labelTL.Text = TL.ToString(); + labelCE.Text = CE.ToString(); + labelRE.Text = RE.ToString(); + } + } + + public void AddText(string type, string text) + { + view.AddRow(new LogDataGridView.SystemMessage(text, type)); + } + public void AddResult(string text) + { + bool knowType = false; + if (text == "All") + { + knowType = true; + All++; + } + if (text == "Accepted") + { + knowType = true; + AC++; + } + if (text == "WrongAnswer") + { + knowType = true; + WA++; + } + if (text == "TimeLimit") + { + knowType = true; + TL++; + } + if (text == "MemoryLimit") + { + knowType = true; + ML++; + } + if (text == "OutputLimit") + { + knowType = true; + OL++; + } + if (text == "CompilationError") + { + knowType = true; + CE++; + } + if (text == "RuntimeError") + { + knowType = true; + RE++; + } + if (text == "DestrictedFunction") + { + knowType = true; + DF++; + } + if (knowType == false) + { + MessageBox.Show("Unknow result type when update form counters" + + Environment.NewLine + + "retult type: " + text); + } + UpdateCounters(); + + } } } Added: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.resx =================================================================== --- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.resx (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerUserControl.resx 2008-11-06 11:48:11 UTC (rev 431) @@ -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> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |