Converting to Linux new lines before final publish.

This commit is contained in:
Lukasz Baldyga committed 2021-02-10 05:27:50 +00:00
1 parent ab94e98508
commit ea2360f2a6
667 files changed
+68755 -8530

No files matched your search

@@ -1,43 +1,43 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Advanced_Software_Engineering_Tests</RootNamespace>
<IsPackable>false</IsPackable>
<OutputType>WinExe</OutputType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>C:\Users\Uni\Documents\Projects\Advanced Software Engineering\Advanced Software Engineering\Advanced Software Engineering Tests\Advanced Software Engineering Tests.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
<PackageReference Include="coverlet.collector" Version="1.2.0" />
<PackageReference Include="System.Drawing.Common" Version="4.7.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Advanced Software Engineering\Advanced Software Engineering.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Advanced_Software_Engineering_Tests</RootNamespace>
<IsPackable>false</IsPackable>
<OutputType>WinExe</OutputType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>C:\Users\Uni\Documents\Projects\Advanced Software Engineering\Advanced Software Engineering\Advanced Software Engineering Tests\Advanced Software Engineering Tests.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
<PackageReference Include="coverlet.collector" Version="1.2.0" />
<PackageReference Include="System.Drawing.Common" Version="4.7.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Advanced Software Engineering\Advanced Software Engineering.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>
@@ -1,242 +1,242 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Advanced Software Engineering Tests</name>
</assembly>
<members>
<member name="T:Advanced_Software_Engineering_Tests.CommandTester">
<summary>
The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.VerbFactoryTester_Automatic1">
<summary>
Automatically tests:
- moveto
- drawto
- line
- rp
Current todo list:
- square
- rectangle
- circle
- triangle
- dot
- clear
- pen
- fill
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual1">
<summary>
tests the "move" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual2">
<summary>
tests the "moveto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual1">
<summary>
tests the "drawto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual2">
<summary>
tests the "line" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual3">
<summary>
tests the "lineto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual1">
<summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual2">
<summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual3">
<summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual4">
<summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual1">
<summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual2">
<summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.CircleTester_Manual1">
<summary>
Tests the "circle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual1">
<summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual2">
<summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DotTester_Manual1">
<summary>
test the "dot" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Dot"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ClearTester_Manual1">
<summary>
tests the "clear" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual1">
<summary>
Tests the "reset" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual2">
<summary>
Tests the "resetpen" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.PenTester_Manual1">
<summary>
Tests the command "pen". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.PenColor"/>
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.FillTester_Manual1">
<summary>
Tests the command "fill". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.FillColor"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.IfTester_Manual1">
<summary>
Tests the "if" command. It hasn't been implemented yet.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MethodTester_Manual1">
<summary>
Tests the "def" command. It hasn't been implemented yet.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ValueTester_Manual1">
<summary>
Tests the "int" declaration and assignment. It hasn't been implemented yet.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.HelperFunctionsTester">
<summary>
This class tests <see cref="T:Advanced_Software_Engineering.HelperFunctions"/> methods. It uses a combination of manual and random tests.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Random1">
<summary>
Random strip spaces test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual3">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual4">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.ValueHelperTester">
<summary>
This class tests <see cref="T:Advanced_Software_Engineering.Verbs.Value.ValueHelper"/> methods. It uses a combination of manual and random tests.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToInt_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToInt(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random2">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random3">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>Advanced Software Engineering Tests</name>
</assembly>
<members>
<member name="T:Advanced_Software_Engineering_Tests.CommandTester">
<summary>
The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.VerbFactoryTester_Automatic1">
<summary>
Automatically tests:
- moveto
- drawto
- line
- rp
Current todo list:
- square
- rectangle
- circle
- triangle
- dot
- clear
- pen
- fill
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual1">
<summary>
tests the "move" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual2">
<summary>
tests the "moveto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual1">
<summary>
tests the "drawto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual2">
<summary>
tests the "line" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual3">
<summary>
tests the "lineto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual1">
<summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual2">
<summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual3">
<summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual4">
<summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual1">
<summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual2">
<summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.CircleTester_Manual1">
<summary>
Tests the "circle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual1">
<summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual2">
<summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DotTester_Manual1">
<summary>
test the "dot" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Dot"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ClearTester_Manual1">
<summary>
tests the "clear" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual1">
<summary>
Tests the "reset" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual2">
<summary>
Tests the "resetpen" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.PenTester_Manual1">
<summary>
Tests the command "pen". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.PenColor"/>
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.FillTester_Manual1">
<summary>
Tests the command "fill". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.FillColor"/>.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.IfTester_Manual1">
<summary>
Tests the "if" command. It hasn't been implemented yet.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MethodTester_Manual1">
<summary>
Tests the "def" command. It hasn't been implemented yet.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ValueTester_Manual1">
<summary>
Tests the "int" declaration and assignment. It hasn't been implemented yet.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.HelperFunctionsTester">
<summary>
This class tests <see cref="T:Advanced_Software_Engineering.HelperFunctions"/> methods. It uses a combination of manual and random tests.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Random1">
<summary>
Random strip spaces test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual1">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual2">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual3">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual4">
<summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="T:Advanced_Software_Engineering_Tests.ValueHelperTester">
<summary>
This class tests <see cref="T:Advanced_Software_Engineering.Verbs.Value.ValueHelper"/> methods. It uses a combination of manual and random tests.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToInt_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToInt(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random1">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random2">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random3">
<summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary>
</member>
</members>
</doc>
@@ -1,446 +1,446 @@
using Advanced_Software_Engineering;
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
/// </summary>
[TestClass]
public class CommandTester {
private readonly Random rand = new Random();
/// <summary>
/// Automatically tests:
/// - moveto
/// - drawto
/// - line
/// - rp
/// Current todo list:
/// - square
/// - rectangle
/// - circle
/// - triangle
/// - dot
/// - clear
/// - pen
/// - fill
/// </summary>
[TestMethod]
public void VerbFactoryTester_Automatic1() {
Dictionary<string, int[]> commandParamaterNumber = new Dictionary<string, int[]>
{
{"moveto", new int[] { 2 } },
{"drawto", new int[] { 2 } },
{"line", new int[] { 2 } },
{"lineto", new int[] { 2 } },
{"rp", new int[] { 2, 3 } },
//todo:
{"square", new int[] { 1, 2, 8 } },
{"rectangle", new int[] { 1, 2, 6 } },
{"circle", new int[] { 1 } },
{"triangle", new int[] { 1, 2 } },
{"dot", new int[] { 0 } },
{"clear", new int[] { 0 } },
{"pen", new int[] { 1, 3 } },
{"fill", new int[] { 1, 3 } }
};
foreach (string command in commandParamaterNumber.Keys) {
foreach (int commandParameterNumbers in commandParamaterNumber[command]) {
string input = command + " ";
List<int> inputParameters = new List<int>();
for (int paramater = 0; paramater < commandParameterNumbers; paramater++) {
int inputParameter = rand.Next(1000);
inputParameters.Add(inputParameter);
input += inputParameter + (paramater - 1 != commandParameterNumbers ? ", " : "");
}
IVerb IVerb = VerbFactory.MakeVerb(null, input);
if (command == "moveto") {
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "drawto" || command == "lineto" || command == "line") {
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "shape") {
string verbDesc = IVerb.GetDescription();
string correctDesc;
if (commandParameterNumbers == 2)
correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of 0 radians, with inner radius of " + (double)inputParameters[1];
else
correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of " + (double)(Math.PI * inputParameters[2] / 180) + " radians, with inner radius of " + (double)inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
}
}
}
/// <summary>
/// tests the "move" command. See <see cref="MoveTo"/>.
/// </summary>
[TestMethod]
public void MoveToTester_Manual1() {
string input = "move 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "moveto" command. See <see cref="MoveTo"/>.
/// </summary>
[TestMethod]
public void MoveToTester_Manual2() {
string input = "moveto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "drawto" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual1() {
string input = "drawto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "line" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual2() {
string input = "line 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "lineto" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual3() {
string input = "lineto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual1() {
string input = "regularpolygon 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual2() {
string input = "rp 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual3() {
string input = "regularpolygon 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual4() {
string input = "rp 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "square" command. See <see cref="Square"/>.
/// </summary>
[TestMethod]
public void SquareTester_Manual1() {
string input = "square 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 4;
double scale = 500;
double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "square" command. See <see cref="Square"/>.
/// </summary>
[TestMethod]
public void SquareTester_Manual2() {
string input = "square 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 4;
double scale = 500;
double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "circle" command. See <see cref="Circle"/>.
/// </summary>
[TestMethod]
public void CircleTester_Manual1() {
string input = "circle 100";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draws a circle radius " + 100d.ToString() + ", with origin of the pen";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary>
[TestMethod]
public void TriangleTester_Manual1() {
string input = "triangle 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 500;
double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary>
[TestMethod]
public void TriangleTester_Manual2() {
string input = "triangle 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 500;
double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// test the "dot" command. See <see cref="Dot"/>.
/// </summary>
[TestMethod]
public void DotTester_Manual1() {
string input = "dot";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Places a dot where the pen currently is";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "clear" command. See <see cref="Circle"/>.
/// </summary>
[TestMethod]
public void ClearTester_Manual1() {
string input = "clear";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Clears the canvas";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "reset" command. See <see cref="ResetPen"/>
/// </summary>
[TestMethod]
public void ResetPenTester_Manual1() {
string input = "reset";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "resetpen" command. See <see cref="ResetPen"/>.
/// </summary>
[TestMethod]
public void ResetPenTester_Manual2() {
string input = "resetpen";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the command "pen". See <see cref="PenColor"/>
/// </summary>
[TestMethod]
public void PenTester_Manual1() {
string input = "pen red";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Set pen color to: Color [Red]";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the command "fill". See <see cref="FillColor"/>.
/// </summary>
[TestMethod]
public void FillTester_Manual1() {
string input = "fill pink";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Set fill color to: Color [Pink]";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "if" command. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void IfTester_Manual1() {
string input = "if i == 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Tests if variable 'i' is equal to 10";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "def" command. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void MethodTester_Manual1() {
string input = "def duck, int i";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Create a new method called 'duck' with input 'int i'. The method: ";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "int" declaration and assignment. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void ValueTester_Manual1() {
string input = "int i = 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Declares and sets integer 'i' to '10'";
Assert.AreEqual(correctDesc, verbDesc);
}
}
using Advanced_Software_Engineering;
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
/// </summary>
[TestClass]
public class CommandTester {
private readonly Random rand = new Random();
/// <summary>
/// Automatically tests:
/// - moveto
/// - drawto
/// - line
/// - rp
/// Current todo list:
/// - square
/// - rectangle
/// - circle
/// - triangle
/// - dot
/// - clear
/// - pen
/// - fill
/// </summary>
[TestMethod]
public void VerbFactoryTester_Automatic1() {
Dictionary<string, int[]> commandParamaterNumber = new Dictionary<string, int[]>
{
{"moveto", new int[] { 2 } },
{"drawto", new int[] { 2 } },
{"line", new int[] { 2 } },
{"lineto", new int[] { 2 } },
{"rp", new int[] { 2, 3 } },
//todo:
{"square", new int[] { 1, 2, 8 } },
{"rectangle", new int[] { 1, 2, 6 } },
{"circle", new int[] { 1 } },
{"triangle", new int[] { 1, 2 } },
{"dot", new int[] { 0 } },
{"clear", new int[] { 0 } },
{"pen", new int[] { 1, 3 } },
{"fill", new int[] { 1, 3 } }
};
foreach (string command in commandParamaterNumber.Keys) {
foreach (int commandParameterNumbers in commandParamaterNumber[command]) {
string input = command + " ";
List<int> inputParameters = new List<int>();
for (int paramater = 0; paramater < commandParameterNumbers; paramater++) {
int inputParameter = rand.Next(1000);
inputParameters.Add(inputParameter);
input += inputParameter + (paramater - 1 != commandParameterNumbers ? ", " : "");
}
IVerb IVerb = VerbFactory.MakeVerb(null, input);
if (command == "moveto") {
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "drawto" || command == "lineto" || command == "line") {
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "shape") {
string verbDesc = IVerb.GetDescription();
string correctDesc;
if (commandParameterNumbers == 2)
correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of 0 radians, with inner radius of " + (double)inputParameters[1];
else
correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of " + (double)(Math.PI * inputParameters[2] / 180) + " radians, with inner radius of " + (double)inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
}
}
}
/// <summary>
/// tests the "move" command. See <see cref="MoveTo"/>.
/// </summary>
[TestMethod]
public void MoveToTester_Manual1() {
string input = "move 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "moveto" command. See <see cref="MoveTo"/>.
/// </summary>
[TestMethod]
public void MoveToTester_Manual2() {
string input = "moveto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "drawto" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual1() {
string input = "drawto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "line" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual2() {
string input = "line 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "lineto" command. See <see cref="DrawTo"/>.
/// </summary>
[TestMethod]
public void DrawToTester_Manual3() {
string input = "lineto 200, 300";
string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual1() {
string input = "regularpolygon 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual2() {
string input = "rp 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual3() {
string input = "regularpolygon 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary>
[TestMethod]
public void RegularPolygonTester_Manual4() {
string input = "rp 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 50;
double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "square" command. See <see cref="Square"/>.
/// </summary>
[TestMethod]
public void SquareTester_Manual1() {
string input = "square 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 4;
double scale = 500;
double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "square" command. See <see cref="Square"/>.
/// </summary>
[TestMethod]
public void SquareTester_Manual2() {
string input = "square 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 4;
double scale = 500;
double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "circle" command. See <see cref="Circle"/>.
/// </summary>
[TestMethod]
public void CircleTester_Manual1() {
string input = "circle 100";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Draws a circle radius " + 100d.ToString() + ", with origin of the pen";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary>
[TestMethod]
public void TriangleTester_Manual1() {
string input = "triangle 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 500;
double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary>
[TestMethod]
public void TriangleTester_Manual2() {
string input = "triangle 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
int sides = 3;
double scale = 500;
double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// test the "dot" command. See <see cref="Dot"/>.
/// </summary>
[TestMethod]
public void DotTester_Manual1() {
string input = "dot";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Places a dot where the pen currently is";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// tests the "clear" command. See <see cref="Circle"/>.
/// </summary>
[TestMethod]
public void ClearTester_Manual1() {
string input = "clear";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Clears the canvas";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "reset" command. See <see cref="ResetPen"/>
/// </summary>
[TestMethod]
public void ResetPenTester_Manual1() {
string input = "reset";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "resetpen" command. See <see cref="ResetPen"/>.
/// </summary>
[TestMethod]
public void ResetPenTester_Manual2() {
string input = "resetpen";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the command "pen". See <see cref="PenColor"/>
/// </summary>
[TestMethod]
public void PenTester_Manual1() {
string input = "pen red";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Set pen color to: Color [Red]";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the command "fill". See <see cref="FillColor"/>.
/// </summary>
[TestMethod]
public void FillTester_Manual1() {
string input = "fill pink";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Set fill color to: Color [Pink]";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "if" command. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void IfTester_Manual1() {
string input = "if i == 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Tests if variable 'i' is equal to 10";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "def" command. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void MethodTester_Manual1() {
string input = "def duck, int i";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Create a new method called 'duck' with input 'int i'. The method: ";
Assert.AreEqual(correctDesc, verbDesc);
}
/// <summary>
/// Tests the "int" declaration and assignment. It hasn't been implemented yet.
/// </summary>
[TestMethod]
public void ValueTester_Manual1() {
string input = "int i = 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription();
string correctDesc = "Declares and sets integer 'i' to '10'";
Assert.AreEqual(correctDesc, verbDesc);
}
}
}
@@ -1,169 +1,169 @@
using Advanced_Software_Engineering;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// This class tests <see cref="HelperFunctions"/> methods. It uses a combination of manual and random tests.
/// </summary>
[TestClass]
public class HelperFunctionsTester {
private readonly string alphabet = "abcdefghijklmnopqrstuvwxzy";
private readonly Random rand = new Random();
/// <summary>
/// Random strip spaces test
/// </summary>
[TestMethod]
public void Strip_Random1() {
for (int test = 0; test < 200; test++) {
int until = rand.Next(50);
string correctOutput = "";
for (int i = 0; i < until; i++) {
correctOutput += alphabet[rand.Next(alphabet.Length)];
}
string obfuscatedInput = correctOutput;
obfuscatedInput = RandomSpaces() + obfuscatedInput + RandomSpaces();
Assert.AreEqual(correctOutput, HelperFunctions.Strip(obfuscatedInput));
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary>
[TestMethod]
public void Strip_Manual1() {
string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input));
}
/// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary>
[TestMethod]
public void Strip_Manual2() {
string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input));
}
/// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary>
[TestMethod]
public void StripStringArray_Manual1() {
string[] input = { " ", " a ", " test", "t", "asdf ", "" };
string[] expected = (new List<string> { "a", "test", "t", "asdf" }).ToArray();
int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s);
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary>
[TestMethod]
public void StripStringArray_Manual2() {
string[] input = "a simple sentence surrounded by spaces".Split(" "[0]);
string[] expected = (new List<string> { "a", "simple", "sentence", "surrounded", "by", "spaces" }).ToArray();
int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s);
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual1() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("moveto 200, 200");
Assert.AreEqual("moveto", commands.GetCommand());
Assert.AreEqual("200", commands.GetParameters()[0]);
Assert.AreEqual("200", commands.GetParameters()[1]);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual2() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("clear");
Assert.AreEqual("clear", commands.GetCommand());
Assert.IsTrue(commands.GetParameters() == null);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual3() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("");
Assert.IsTrue(commands == null);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual4() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(" genericCommand 2, 3,4 5");
Assert.AreEqual("genericCommand", commands.GetCommand());
string[] parameters = commands.GetParameters();
Assert.AreEqual("2", parameters[0]);
Assert.AreEqual("3", parameters[1]);
Assert.AreEqual("4 5", parameters[2]);
}
private string RandomSpaces() {
string spaces = " ";
for (int i = 0; i < 50; i++) spaces += " ";
return spaces;
}
/// <summary>
/// Random <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Random1() {
string[] randomCommands = { "test", "moveto", "lineto", "markiplier", "clear", "shape", "etc" };
for (int test = 0; test < 10000; test++) {
string command = randomCommands[rand.Next(randomCommands.Length)];
string input = RandomSpaces() + command;
List<string> parameters = new List<string>();
for (int parameterI = 0; parameterI < rand.Next(99) + 1; parameterI++) {
string parameter = (rand.NextDouble() * rand.Next(-1000, 1000)).ToString();
parameters.Add(parameter);
input += RandomSpaces() + parameter + RandomSpaces() + "," + RandomSpaces();
}
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(input);
Assert.AreEqual(command, commands.GetCommand());
int i = 0;
foreach (string expected in parameters) {
Assert.AreEqual(expected, commands.GetParameters()[i++]);
}
}
}
}
using Advanced_Software_Engineering;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// This class tests <see cref="HelperFunctions"/> methods. It uses a combination of manual and random tests.
/// </summary>
[TestClass]
public class HelperFunctionsTester {
private readonly string alphabet = "abcdefghijklmnopqrstuvwxzy";
private readonly Random rand = new Random();
/// <summary>
/// Random strip spaces test
/// </summary>
[TestMethod]
public void Strip_Random1() {
for (int test = 0; test < 200; test++) {
int until = rand.Next(50);
string correctOutput = "";
for (int i = 0; i < until; i++) {
correctOutput += alphabet[rand.Next(alphabet.Length)];
}
string obfuscatedInput = correctOutput;
obfuscatedInput = RandomSpaces() + obfuscatedInput + RandomSpaces();
Assert.AreEqual(correctOutput, HelperFunctions.Strip(obfuscatedInput));
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary>
[TestMethod]
public void Strip_Manual1() {
string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input));
}
/// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary>
[TestMethod]
public void Strip_Manual2() {
string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input));
}
/// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary>
[TestMethod]
public void StripStringArray_Manual1() {
string[] input = { " ", " a ", " test", "t", "asdf ", "" };
string[] expected = (new List<string> { "a", "test", "t", "asdf" }).ToArray();
int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s);
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary>
[TestMethod]
public void StripStringArray_Manual2() {
string[] input = "a simple sentence surrounded by spaces".Split(" "[0]);
string[] expected = (new List<string> { "a", "simple", "sentence", "surrounded", "by", "spaces" }).ToArray();
int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s);
}
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual1() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("moveto 200, 200");
Assert.AreEqual("moveto", commands.GetCommand());
Assert.AreEqual("200", commands.GetParameters()[0]);
Assert.AreEqual("200", commands.GetParameters()[1]);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual2() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("clear");
Assert.AreEqual("clear", commands.GetCommand());
Assert.IsTrue(commands.GetParameters() == null);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual3() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("");
Assert.IsTrue(commands == null);
}
/// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Manual4() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(" genericCommand 2, 3,4 5");
Assert.AreEqual("genericCommand", commands.GetCommand());
string[] parameters = commands.GetParameters();
Assert.AreEqual("2", parameters[0]);
Assert.AreEqual("3", parameters[1]);
Assert.AreEqual("4 5", parameters[2]);
}
private string RandomSpaces() {
string spaces = " ";
for (int i = 0; i < 50; i++) spaces += " ";
return spaces;
}
/// <summary>
/// Random <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary>
[TestMethod]
public void CommandAndParameterParser_Random1() {
string[] randomCommands = { "test", "moveto", "lineto", "markiplier", "clear", "shape", "etc" };
for (int test = 0; test < 10000; test++) {
string command = randomCommands[rand.Next(randomCommands.Length)];
string input = RandomSpaces() + command;
List<string> parameters = new List<string>();
for (int parameterI = 0; parameterI < rand.Next(99) + 1; parameterI++) {
string parameter = (rand.NextDouble() * rand.Next(-1000, 1000)).ToString();
parameters.Add(parameter);
input += RandomSpaces() + parameter + RandomSpaces() + "," + RandomSpaces();
}
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(input);
Assert.AreEqual(command, commands.GetCommand());
int i = 0;
foreach (string expected in parameters) {
Assert.AreEqual(expected, commands.GetParameters()[i++]);
}
}
}
}
}
@@ -1,63 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering_Tests.Properties {
using System;
/// <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", "16.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 (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering_Tests.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;
}
}
}
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering_Tests.Properties {
using System;
/// <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", "16.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 (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering_Tests.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;
}
}
}
}
@@ -1,101 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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="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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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="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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
@@ -1,66 +1,66 @@
using Advanced_Software_Engineering.Verbs.Value;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// This class tests <see cref="ValueHelper"/> methods. It uses a combination of manual and random tests.
/// </summary>
[TestClass]
internal class ValueHelperTester {
private readonly Random rand = new Random();
/// <summary>
/// Random <see cref="ValueHelper.ConvertToInt(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToInt_Random1() {
for (int i = 0; i < 100000; i++) {
int expected = rand.Next(int.MinValue, int.MaxValue);
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToInt(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random1() {
for (int i = 0; i < 100000; i++) {
double expected = rand.NextDouble();
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random2() {
for (int i = 0; i < 100000; i++) {
double expected = rand.Next(100, 100) * rand.NextDouble();
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random3() {
for (int i = 0; i < 100000; i++) {
int expected = rand.Next(100, 100);
string input = ((double)expected).ToString();
Assert.AreEqual((double)expected, ValueHelper.ConvertToDouble(input));
}
}
}
using Advanced_Software_Engineering.Verbs.Value;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace Advanced_Software_Engineering_Tests {
/// <summary>
/// This class tests <see cref="ValueHelper"/> methods. It uses a combination of manual and random tests.
/// </summary>
[TestClass]
internal class ValueHelperTester {
private readonly Random rand = new Random();
/// <summary>
/// Random <see cref="ValueHelper.ConvertToInt(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToInt_Random1() {
for (int i = 0; i < 100000; i++) {
int expected = rand.Next(int.MinValue, int.MaxValue);
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToInt(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random1() {
for (int i = 0; i < 100000; i++) {
double expected = rand.NextDouble();
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random2() {
for (int i = 0; i < 100000; i++) {
double expected = rand.Next(100, 100) * rand.NextDouble();
string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
}
}
/// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary>
[TestMethod]
public void ConvertToDouble_Random3() {
for (int i = 0; i < 100000; i++) {
int expected = rand.Next(100, 100);
string input = ((double)expected).ToString();
Assert.AreEqual((double)expected, ValueHelper.ConvertToDouble(input));
}
}
}
}
@@ -1,4 +1,4 @@
[*.cs]
# CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = warning
[*.cs]
# CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = warning
@@ -1,229 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Advanced_Software_Engineering</RootNamespace>
<AssemblyName>Advanced Software Engineering</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Advanced Software Engineering.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>
</StartupObject>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\logo.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MenuManager.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Verbs\DrawingVerbs\Actions\NoOp.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Circle.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\Clear.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Dot.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\DrawLines.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\DrawTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\Fill.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\FillColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\MoveTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\PenColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Quadrilateral.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Rectangle.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\RegularPolygon.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\ResetPen.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Square.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Triangle.cs" />
<Compile Include="Verbs\Flow\DeclareMethod.cs" />
<Compile Include="Verbs\Flow\ForChunk.cs" />
<Compile Include="Verbs\Flow\IfChunk.cs" />
<Compile Include="Verbs\Flow\IVerbChunk.cs" />
<Compile Include="Verbs\Flow\MethodChunk.cs" />
<Compile Include="Verbs\Flow\WhileChunk.cs" />
<Compile Include="Verbs\Value\ValueObjects\PointValue.cs" />
<Compile Include="Verbs\Value\ValueStorage.cs" />
<Compile Include="Verbs\Value\ValueTypes\ComparisonValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\ExpressionValue.cs" />
<Compile Include="Verbs\Value\DeclareVariable.cs" />
<Compile Include="Verbs\Value\UpdateVariable.cs" />
<Compile Include="Verbs\Value\ValueFactory.cs" />
<Compile Include="Verbs\Value\IValue.cs" />
<Compile Include="Verbs\Value\ValueHelper.cs" />
<Compile Include="Verbs\IVerb.cs" />
<Compile Include="Verbs\Value\ValueTypes\BoolValue.cs" />
<Compile Include="Verbs\Value\ValueObjects\ColorValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\DoubleValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\IntValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\VariableValue.cs" />
<Compile Include="Verbs\Flow\VerbChunk.cs" />
<Compile Include="Windows\AboutWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\AboutWindow.Designer.cs">
<DependentUpon>AboutWindow.cs</DependentUpon>
</Compile>
<Compile Include="Verbs\VerbFactory.cs" />
<Compile Include="Commander.cs" />
<Compile Include="Drawer.cs" />
<Compile Include="Windows\CommandHelp.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\CommandHelp.Designer.cs">
<DependentUpon>CommandHelp.cs</DependentUpon>
</Compile>
<Compile Include="Windows\DrawPreview.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\DrawPreview.Designer.cs">
<DependentUpon>DrawPreview.cs</DependentUpon>
</Compile>
<Compile Include="Windows\DetailsWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\DetailsWindow.Designer.cs">
<DependentUpon>DetailsWindow.cs</DependentUpon>
</Compile>
<Compile Include="Windows\ErrorWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\ErrorWindow.Designer.cs">
<DependentUpon>ErrorWindow.cs</DependentUpon>
</Compile>
<Compile Include="Windows\TextEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\TextEditor.Designer.cs">
<DependentUpon>TextEditor.cs</DependentUpon>
</Compile>
<Compile Include="HelperFunctions.cs" />
<Compile Include="Windows\Menu.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\Menu.Designer.cs">
<DependentUpon>Menu.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Windows\AboutWindow.resx">
<DependentUpon>AboutWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\CommandHelp.resx">
<DependentUpon>CommandHelp.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\DrawPreview.resx">
<DependentUpon>DrawPreview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\DetailsWindow.resx">
<DependentUpon>DetailsWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\ErrorWindow.resx">
<DependentUpon>ErrorWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\TextEditor.resx">
<DependentUpon>TextEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\Menu.resx">
<DependentUpon>Menu.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include=".editorconfig" />
<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>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\warning.png" />
<None Include="Resources\info.png" />
<None Include="Resources\error.png" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\logo.ico" />
</ItemGroup>
<ItemGroup>
<Folder Include="Exceptions\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Advanced_Software_Engineering</RootNamespace>
<AssemblyName>Advanced Software Engineering</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Advanced Software Engineering.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>
</StartupObject>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\logo.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MenuManager.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Verbs\DrawingVerbs\Actions\NoOp.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Circle.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\Clear.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Dot.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\DrawLines.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\DrawTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\Fill.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\FillColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\MoveTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\PenColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Quadrilateral.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Rectangle.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\RegularPolygon.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\ResetPen.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Square.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Triangle.cs" />
<Compile Include="Verbs\Flow\DeclareMethod.cs" />
<Compile Include="Verbs\Flow\ForChunk.cs" />
<Compile Include="Verbs\Flow\IfChunk.cs" />
<Compile Include="Verbs\Flow\IVerbChunk.cs" />
<Compile Include="Verbs\Flow\MethodChunk.cs" />
<Compile Include="Verbs\Flow\WhileChunk.cs" />
<Compile Include="Verbs\Value\ValueObjects\PointValue.cs" />
<Compile Include="Verbs\Value\ValueStorage.cs" />
<Compile Include="Verbs\Value\ValueTypes\ComparisonValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\ExpressionValue.cs" />
<Compile Include="Verbs\Value\DeclareVariable.cs" />
<Compile Include="Verbs\Value\UpdateVariable.cs" />
<Compile Include="Verbs\Value\ValueFactory.cs" />
<Compile Include="Verbs\Value\IValue.cs" />
<Compile Include="Verbs\Value\ValueHelper.cs" />
<Compile Include="Verbs\IVerb.cs" />
<Compile Include="Verbs\Value\ValueTypes\BoolValue.cs" />
<Compile Include="Verbs\Value\ValueObjects\ColorValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\DoubleValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\IntValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\VariableValue.cs" />
<Compile Include="Verbs\Flow\VerbChunk.cs" />
<Compile Include="Windows\AboutWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\AboutWindow.Designer.cs">
<DependentUpon>AboutWindow.cs</DependentUpon>
</Compile>
<Compile Include="Verbs\VerbFactory.cs" />
<Compile Include="Commander.cs" />
<Compile Include="Drawer.cs" />
<Compile Include="Windows\CommandHelp.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\CommandHelp.Designer.cs">
<DependentUpon>CommandHelp.cs</DependentUpon>
</Compile>
<Compile Include="Windows\DrawPreview.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\DrawPreview.Designer.cs">
<DependentUpon>DrawPreview.cs</DependentUpon>
</Compile>
<Compile Include="Windows\DetailsWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\DetailsWindow.Designer.cs">
<DependentUpon>DetailsWindow.cs</DependentUpon>
</Compile>
<Compile Include="Windows\ErrorWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\ErrorWindow.Designer.cs">
<DependentUpon>ErrorWindow.cs</DependentUpon>
</Compile>
<Compile Include="Windows\TextEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\TextEditor.Designer.cs">
<DependentUpon>TextEditor.cs</DependentUpon>
</Compile>
<Compile Include="HelperFunctions.cs" />
<Compile Include="Windows\Menu.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\Menu.Designer.cs">
<DependentUpon>Menu.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Windows\AboutWindow.resx">
<DependentUpon>AboutWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\CommandHelp.resx">
<DependentUpon>CommandHelp.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\DrawPreview.resx">
<DependentUpon>DrawPreview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\DetailsWindow.resx">
<DependentUpon>DetailsWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\ErrorWindow.resx">
<DependentUpon>ErrorWindow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\TextEditor.resx">
<DependentUpon>TextEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\Menu.resx">
<DependentUpon>Menu.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include=".editorconfig" />
<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>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\warning.png" />
<None Include="Resources\info.png" />
<None Include="Resources\error.png" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\logo.ico" />
</ItemGroup>
<ItemGroup>
<Folder Include="Exceptions\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -1,36 +1,36 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Advanced Software Engineering", "Advanced Software Engineering.csproj", "{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Advanced Software Engineering Tests", "..\Advanced Software Engineering Tests\Advanced Software Engineering Tests.csproj", "{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D7948692-84F9-491E-8C8A-5B754BCB74F1}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Release|Any CPU.Build.0 = Release|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9FDA9473-A0FB-4D7C-8582-494F98D5391D}
EndGlobalSection
EndGlobal
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Advanced Software Engineering", "Advanced Software Engineering.csproj", "{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Advanced Software Engineering Tests", "..\Advanced Software Engineering Tests\Advanced Software Engineering Tests.csproj", "{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D7948692-84F9-491E-8C8A-5B754BCB74F1}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Release|Any CPU.Build.0 = Release|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9FDA9473-A0FB-4D7C-8582-494F98D5391D}
EndGlobalSection
EndGlobal
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
@@ -1,172 +1,172 @@
using System;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering {
/// <summary>
/// The commander class takes care of commands. It also takes control of the drawer.
/// </summary>
public class Commander {
private Graphics graphics;
private List<IVerb> commands = new List<IVerb>();
private readonly Drawer drawer;
private bool commands_ok = true;
/// <summary>
/// This command updates the graphics element (usually) when the page repaints.
/// </summary>
/// <param name="updateGraphicsElement">The graphics element to be updated</param>
public void DrawAllCommands(Graphics updateGraphicsElement) {
graphics = updateGraphicsElement;
drawer.ResetDrawer();
drawer.SetGraphics(updateGraphicsElement);
foreach (IVerb IVerb in commands) {
IVerb.ExecuteVerb();
}
}
/// <summary>
/// Create a new Commander instance.
/// </summary>
/// <param name="graphics">initial graphics object</param>
public Commander(Graphics graphics) {
this.graphics = graphics;
this.drawer = new Drawer(this.graphics);
drawer.ResetDrawer();
}
/// <summary>
/// Creates a new Commander instance without a context. Should only be used for testing purpouses.
/// </summary>
public Commander() {
Console.WriteLine("Warning! No graphics context!!!");
}
/// <summary>
/// Creates a new Commander instance with a graphics context and commands to process right off the bat.
/// </summary>
/// <param name="graphics">Graphics contetx</param>
/// <param name="rawCommands">Commands to process</param>
public Commander(Graphics graphics, string rawCommands) {
this.graphics = graphics;
this.drawer = new Drawer(this.graphics);
this.ProcessCommands(rawCommands);
drawer.ResetDrawer();
}
/// <summary>
/// Adds a IVerb to the command list to be executed.
/// </summary>
/// <param name="command">IVerb to be added. <seealso cref="IVerb"/></param>
public void AddCommand(IVerb command) {
commands.Add(command);
}
/// <summary>
/// processes commands. Removes all commands if it fails parsing the raw commands.
/// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param>
/// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommands(string rawCommands, bool pardonCommands = false) {
//ignore case
rawCommands = rawCommands.ToLower();
Console.WriteLine("Processing:\n" + rawCommands);
//remove windows' \r if they exist
rawCommands = rawCommands.Replace("\r", "");
//isolate commands
string[] commands = rawCommands.Split("\n"[0]);
Console.WriteLine("\nThe rawCommand processed:");
int lineNumber = 0;
bool failed = false;
foreach (string rawCommand in commands) {
string fullCommand = rawCommand;
lineNumber++;
//Remove comments
if (fullCommand.Contains("@")) {
fullCommand = fullCommand.Substring(0, fullCommand.IndexOf("@"));
}
fullCommand = HelperFunctions.Strip(fullCommand);
if (fullCommand == "") continue;
try {
AddCommand(VerbFactory.MakeVerb(drawer, fullCommand));
Console.WriteLine(rawCommand);
} catch (Exception e) {
Console.WriteLine("Error!");
new ErrorWindow(e.Message, e.Message + " at line " + lineNumber, "While trying to process '" + rawCommand + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
failed = true;
break;
}
}
if (failed) {
if (!pardonCommands) RemoveAllCommands();
commands_ok = false;
} else {
commands_ok = true;
}
Console.WriteLine("\n\nHere is what the program is going to do:");
Console.WriteLine("Set origin to 0, 0");
foreach (IVerb IVerb in this.commands) {
Console.WriteLine(IVerb.GetDescription());
}
}
/// <summary>
/// Processes the commands and executes them at the same time. It's the same as <see></see>
/// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param>
/// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommandsAndExecute(string rawCommands, bool pardonCommands = false) {
int start = commands.Count;
ProcessCommands(rawCommands, pardonCommands);
for (; start < commands.Count; start++) {
try {
commands[start].ExecuteVerb();
} catch (Exception e) {
IVerb tmp = commands[start];
if (!pardonCommands) RemoveAllCommands();
else commands.Remove(commands[start]);
new ErrorWindow("Runtime Error", "Failed to " + tmp.GetDescription(), "While trying to '" + tmp.GetDescription() + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
break;
}
}
}
/// <summary>
/// Removes all commands from the Commander and resets the drawer.
/// </summary>
public void RemoveAllCommands() {
commands = new List<IVerb>();
drawer.ResetDrawer();
}
/// <summary>
/// Explains all of the commands in order
/// </summary>
/// <returns>Explanation of all the commands</returns>
public string ExplainCommands() {
string desc = "";
foreach (IVerb command in commands) {
desc += command.GetDescription() + Environment.NewLine;
}
return desc;
}
/// <summary>
/// Gets the status of the code that was processed
/// </summary>
/// <returns>False if there was no error. True if there was an error</returns>
public bool GetLastStatus() {
return commands_ok;
}
}
using System;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering {
/// <summary>
/// The commander class takes care of commands. It also takes control of the drawer.
/// </summary>
public class Commander {
private Graphics graphics;
private List<IVerb> commands = new List<IVerb>();
private readonly Drawer drawer;
private bool commands_ok = true;
/// <summary>
/// This command updates the graphics element (usually) when the page repaints.
/// </summary>
/// <param name="updateGraphicsElement">The graphics element to be updated</param>
public void DrawAllCommands(Graphics updateGraphicsElement) {
graphics = updateGraphicsElement;
drawer.ResetDrawer();
drawer.SetGraphics(updateGraphicsElement);
foreach (IVerb IVerb in commands) {
IVerb.ExecuteVerb();
}
}
/// <summary>
/// Create a new Commander instance.
/// </summary>
/// <param name="graphics">initial graphics object</param>
public Commander(Graphics graphics) {
this.graphics = graphics;
this.drawer = new Drawer(this.graphics);
drawer.ResetDrawer();
}
/// <summary>
/// Creates a new Commander instance without a context. Should only be used for testing purpouses.
/// </summary>
public Commander() {
Console.WriteLine("Warning! No graphics context!!!");
}
/// <summary>
/// Creates a new Commander instance with a graphics context and commands to process right off the bat.
/// </summary>
/// <param name="graphics">Graphics contetx</param>
/// <param name="rawCommands">Commands to process</param>
public Commander(Graphics graphics, string rawCommands) {
this.graphics = graphics;
this.drawer = new Drawer(this.graphics);
this.ProcessCommands(rawCommands);
drawer.ResetDrawer();
}
/// <summary>
/// Adds a IVerb to the command list to be executed.
/// </summary>
/// <param name="command">IVerb to be added. <seealso cref="IVerb"/></param>
public void AddCommand(IVerb command) {
commands.Add(command);
}
/// <summary>
/// processes commands. Removes all commands if it fails parsing the raw commands.
/// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param>
/// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommands(string rawCommands, bool pardonCommands = false) {
//ignore case
rawCommands = rawCommands.ToLower();
Console.WriteLine("Processing:\n" + rawCommands);
//remove windows' \r if they exist
rawCommands = rawCommands.Replace("\r", "");
//isolate commands
string[] commands = rawCommands.Split("\n"[0]);
Console.WriteLine("\nThe rawCommand processed:");
int lineNumber = 0;
bool failed = false;
foreach (string rawCommand in commands) {
string fullCommand = rawCommand;
lineNumber++;
//Remove comments
if (fullCommand.Contains("@")) {
fullCommand = fullCommand.Substring(0, fullCommand.IndexOf("@"));
}
fullCommand = HelperFunctions.Strip(fullCommand);
if (fullCommand == "") continue;
try {
AddCommand(VerbFactory.MakeVerb(drawer, fullCommand));
Console.WriteLine(rawCommand);
} catch (Exception e) {
Console.WriteLine("Error!");
new ErrorWindow(e.Message, e.Message + " at line " + lineNumber, "While trying to process '" + rawCommand + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
failed = true;
break;
}
}
if (failed) {
if (!pardonCommands) RemoveAllCommands();
commands_ok = false;
} else {
commands_ok = true;
}
Console.WriteLine("\n\nHere is what the program is going to do:");
Console.WriteLine("Set origin to 0, 0");
foreach (IVerb IVerb in this.commands) {
Console.WriteLine(IVerb.GetDescription());
}
}
/// <summary>
/// Processes the commands and executes them at the same time. It's the same as <see></see>
/// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param>
/// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommandsAndExecute(string rawCommands, bool pardonCommands = false) {
int start = commands.Count;
ProcessCommands(rawCommands, pardonCommands);
for (; start < commands.Count; start++) {
try {
commands[start].ExecuteVerb();
} catch (Exception e) {
IVerb tmp = commands[start];
if (!pardonCommands) RemoveAllCommands();
else commands.Remove(commands[start]);
new ErrorWindow("Runtime Error", "Failed to " + tmp.GetDescription(), "While trying to '" + tmp.GetDescription() + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
break;
}
}
}
/// <summary>
/// Removes all commands from the Commander and resets the drawer.
/// </summary>
public void RemoveAllCommands() {
commands = new List<IVerb>();
drawer.ResetDrawer();
}
/// <summary>
/// Explains all of the commands in order
/// </summary>
/// <returns>Explanation of all the commands</returns>
public string ExplainCommands() {
string desc = "";
foreach (IVerb command in commands) {
desc += command.GetDescription() + Environment.NewLine;
}
return desc;
}
/// <summary>
/// Gets the status of the code that was processed
/// </summary>
/// <returns>False if there was no error. True if there was an error</returns>
public bool GetLastStatus() {
return commands_ok;
}
}
}
@@ -1,91 +1,91 @@
namespace Advanced_Software_Engineering
{
public static class Converters
{
/// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary>
/// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns>
/// <example>
/// For example
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
/// <example>
/// The code won't remove internal double spaces:
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
public static string Strip(string text)
{
int start;
for (start = 0; start < text.Length; start++)
{
char character = text[start];
if (character != " "[0]) break;
}
int end;
for (end = text.Length - 1; end >= 0; end--)
{
char character = text[end];
if (character != " "[0]) break;
}
return text.Substring(start, end);
}
public static int ConvertToInt(string text)
{
text = Strip(text);
return int.Parse(text);
}
public static List<string> StripStringArray(string[] array)
{
List<string> newStringList = new List<string>();
foreach (string arrayElement in array)
{
string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement);
}
return newStringList;
}
public static Dictionary<string, string[]> CommandAndParameterParser(string text)
{
Dictionary<string, string[]> commandAndParameters = new Dictionary<string, string[]>();
//split the command from the parameters
string[] parameters = Strip(text).Split(new char[] { " "[0] }, 2);
//set command var
string command = Strip(parameters[0]);
commandAndParameters["command"] = new string[] { command };
//seperate all of the parameters by a comma
parameters = parameters[1].Split(","[0]);
//Remove spaces around parameters
parameters = StripStringArray(parameters).ToArray();
//set parameter list
commandAndParameters["parameters"] = parameters;
return commandAndParameters;
}
}
namespace Advanced_Software_Engineering
{
public static class Converters
{
/// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary>
/// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns>
/// <example>
/// For example
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
/// <example>
/// The code won't remove internal double spaces:
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
public static string Strip(string text)
{
int start;
for (start = 0; start < text.Length; start++)
{
char character = text[start];
if (character != " "[0]) break;
}
int end;
for (end = text.Length - 1; end >= 0; end--)
{
char character = text[end];
if (character != " "[0]) break;
}
return text.Substring(start, end);
}
public static int ConvertToInt(string text)
{
text = Strip(text);
return int.Parse(text);
}
public static List<string> StripStringArray(string[] array)
{
List<string> newStringList = new List<string>();
foreach (string arrayElement in array)
{
string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement);
}
return newStringList;
}
public static Dictionary<string, string[]> CommandAndParameterParser(string text)
{
Dictionary<string, string[]> commandAndParameters = new Dictionary<string, string[]>();
//split the command from the parameters
string[] parameters = Strip(text).Split(new char[] { " "[0] }, 2);
//set command var
string command = Strip(parameters[0]);
commandAndParameters["command"] = new string[] { command };
//seperate all of the parameters by a comma
parameters = parameters[1].Split(","[0]);
//Remove spaces around parameters
parameters = StripStringArray(parameters).ToArray();
//set parameter list
commandAndParameters["parameters"] = parameters;
return commandAndParameters;
}
}
}
@@ -1,226 +1,226 @@
using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
namespace Advanced_Software_Engineering {
/// <summary>
/// The drawer is responsible for drawing on the graphics object.
/// </summary>
public class Drawer {
/// <summary>
/// Value storage is used for storing all of the variables and their IValues. See <see cref="ValueStorage"/> and see <see cref="IValue"/>
/// </summary>
private readonly ValueStorage valueStorage = new ValueStorage();
/// <summary>
/// List of verbChunks used to create for loops, if statements, while loops and methods.
/// See <see cref="ForChunk"/>, <see cref="IfChunk"/>, <see cref="MethodChunk"/>, <see cref="WhileChunk"/> and <seealso cref="IVerbChunk"/>.
/// </summary>
public List<IVerbChunk> verbChunks = new List<IVerbChunk>();
/// <summary>
/// A veriable that represents wether the last verbchunk is a method. See <see cref="MethodChunk"/>
/// </summary>
public bool verbChunkGeneratingMethod = false;
/// <summary>
/// A list of methods. See <see cref="MethodChunk"/>
/// </summary>
public Dictionary<string, MethodChunk> Methods = new Dictionary<string, MethodChunk>();
/// <summary>
/// The starting color of the pen / brush
/// </summary>
protected static Color defaultColor = Color.Black;
/// <summary>
/// The deafult width of the pen
/// </summary>
protected static float defaultWidth = 1f;
/// <summary>
/// Weather enclosed spaces will have fill.
/// </summary>
protected bool fill = false;
/// <summary>
/// The Brush object
/// </summary>
protected SolidBrush brush;
/// <summary>
/// The Pen object
/// </summary>
protected Pen pen;
/// <summary>
/// The current position of the pen.
/// </summary>
protected Point penPosition;
/// <summary>
/// The graphics object
/// </summary>
protected Graphics graphics;
/// <summary>
/// Creates a new drawer object.
/// </summary>
/// <param name="graphics">Graphics context</param>
public Drawer(Graphics graphics) {
this.graphics = graphics;
ResetDrawer();
}
/// <summary>
/// Restart the drawer.
/// </summary>
public void ResetDrawer() {
graphics.Clear(Color.White);
penPosition = new Point(0, 0);
pen = new Pen(defaultColor, defaultWidth);
brush = new SolidBrush(defaultColor);
fill = false;
valueStorage.Reset();
verbChunks = new List<IVerbChunk>();
Methods = new Dictionary<string, MethodChunk>();
}
/// <summary>
/// Set thhe graphics context.
/// </summary>
/// <param name="graphics"></param>
public void SetGraphics(Graphics graphics) => this.graphics = graphics;
/// <summary>
/// Move the pen to the point.
/// </summary>
/// <param name="point">Position to move the pen to</param>
public void MovePen(Point point) => penPosition = point;
/// <summary>
/// Returns the current pen position
/// </summary>
/// <returns>The curren pen position</returns>
public Point GetPenPosition() => new Point(penPosition.X, penPosition.Y);
/// <summary>
/// Get current fill status
/// </summary>
/// <returns>current fill satus</returns>
public bool GetFill() => fill;
/// <summary>
/// Allows the filling of objects.
/// </summary>
public void EnableFill() => fill = true;
/// <summary>
/// Disables the filling of objects.
/// </summary>
public void DisableFill() => fill = false;
/// <summary>
/// Set the filling of objects
/// </summary>
/// <param name="fill">Set fill</param>
public void SetFill(bool fill) => this.fill = fill;
/// <summary>
/// Set the pen color
/// </summary>
/// <param name="color">Pen color</param>
public void SetPenColor(Color color) => pen.Color = color;
/// <summary>
/// Set the width of the pen
/// </summary>
/// <param name="width">Pen width</param>
public void SetPenWidth(float width) => pen.Width = width;
/// <summary>
/// Set fill color
/// </summary>
/// <param name="color">Fill color</param>
public void SetFillColor(Color color) => brush.Color = color;
/// <summary>
/// Draws a line from the current pen position to the one specified in the parameter. This also sets the pens new position.
/// </summary>
/// <param name="point">Draw to point</param>
public void DrawLine(Point point) {
graphics.DrawLine(pen, penPosition, point);
penPosition = point;
}
/// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary>
/// <param name="points">Points to draw to</param>
public void DrawLines(Point[] points) {
if (points.Length < 2) {
throw new Exception("Cannot have less than two points in a line");
}
//Make it relative to the pen
for (int pointIndex = 0; pointIndex < points.Length; pointIndex++)
points[pointIndex] = new Point(points[pointIndex].X + penPosition.X, points[pointIndex].Y + penPosition.Y);
GraphicsPath path = new GraphicsPath {
FillMode = FillMode.Winding
};
path.AddLines(points);
path.AddLine(points[0], points.Last()); //Add final line
DrawLines(path);
}
/// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary>
/// <param name="path">GraphicsPath to draw to</param>
public void DrawLines(GraphicsPath path) {
//path.Widen(pen);
if (fill) graphics.FillPath(brush, path);
graphics.DrawPath(pen, path);
}
/// <summary>
/// Draws a circle of a scale ath the pen's position
/// </summary>
/// <param name="scale">Scale of the circle</param>
public void DrawCircle(double scale) {
if (fill) graphics.FillEllipse(brush, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2);
graphics.DrawEllipse(pen, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2);
}
/// <summary>
/// Clears the canvas
/// </summary>
public void ClearCanvas() {
graphics.Clear(Color.White);
}
/// <summary>
/// Draws a single pixel with the pen's color at the pen's position.
/// </summary>
public void DrawDot() {
graphics.FillRectangle(new SolidBrush(pen.Color), penPosition.X, penPosition.Y, 1, 1);
}
/// <summary>
/// Gets the valueStorage object
/// </summary>
/// <returns></returns>
public ValueStorage GetValueStorage() {
return valueStorage;
}
}
using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
namespace Advanced_Software_Engineering {
/// <summary>
/// The drawer is responsible for drawing on the graphics object.
/// </summary>
public class Drawer {
/// <summary>
/// Value storage is used for storing all of the variables and their IValues. See <see cref="ValueStorage"/> and see <see cref="IValue"/>
/// </summary>
private readonly ValueStorage valueStorage = new ValueStorage();
/// <summary>
/// List of verbChunks used to create for loops, if statements, while loops and methods.
/// See <see cref="ForChunk"/>, <see cref="IfChunk"/>, <see cref="MethodChunk"/>, <see cref="WhileChunk"/> and <seealso cref="IVerbChunk"/>.
/// </summary>
public List<IVerbChunk> verbChunks = new List<IVerbChunk>();
/// <summary>
/// A veriable that represents wether the last verbchunk is a method. See <see cref="MethodChunk"/>
/// </summary>
public bool verbChunkGeneratingMethod = false;
/// <summary>
/// A list of methods. See <see cref="MethodChunk"/>
/// </summary>
public Dictionary<string, MethodChunk> Methods = new Dictionary<string, MethodChunk>();
/// <summary>
/// The starting color of the pen / brush
/// </summary>
protected static Color defaultColor = Color.Black;
/// <summary>
/// The deafult width of the pen
/// </summary>
protected static float defaultWidth = 1f;
/// <summary>
/// Weather enclosed spaces will have fill.
/// </summary>
protected bool fill = false;
/// <summary>
/// The Brush object
/// </summary>
protected SolidBrush brush;
/// <summary>
/// The Pen object
/// </summary>
protected Pen pen;
/// <summary>
/// The current position of the pen.
/// </summary>
protected Point penPosition;
/// <summary>
/// The graphics object
/// </summary>
protected Graphics graphics;
/// <summary>
/// Creates a new drawer object.
/// </summary>
/// <param name="graphics">Graphics context</param>
public Drawer(Graphics graphics) {
this.graphics = graphics;
ResetDrawer();
}
/// <summary>
/// Restart the drawer.
/// </summary>
public void ResetDrawer() {
graphics.Clear(Color.White);
penPosition = new Point(0, 0);
pen = new Pen(defaultColor, defaultWidth);
brush = new SolidBrush(defaultColor);
fill = false;
valueStorage.Reset();
verbChunks = new List<IVerbChunk>();
Methods = new Dictionary<string, MethodChunk>();
}
/// <summary>
/// Set thhe graphics context.
/// </summary>
/// <param name="graphics"></param>
public void SetGraphics(Graphics graphics) => this.graphics = graphics;
/// <summary>
/// Move the pen to the point.
/// </summary>
/// <param name="point">Position to move the pen to</param>
public void MovePen(Point point) => penPosition = point;
/// <summary>
/// Returns the current pen position
/// </summary>
/// <returns>The curren pen position</returns>
public Point GetPenPosition() => new Point(penPosition.X, penPosition.Y);
/// <summary>
/// Get current fill status
/// </summary>
/// <returns>current fill satus</returns>
public bool GetFill() => fill;
/// <summary>
/// Allows the filling of objects.
/// </summary>
public void EnableFill() => fill = true;
/// <summary>
/// Disables the filling of objects.
/// </summary>
public void DisableFill() => fill = false;
/// <summary>
/// Set the filling of objects
/// </summary>
/// <param name="fill">Set fill</param>
public void SetFill(bool fill) => this.fill = fill;
/// <summary>
/// Set the pen color
/// </summary>
/// <param name="color">Pen color</param>
public void SetPenColor(Color color) => pen.Color = color;
/// <summary>
/// Set the width of the pen
/// </summary>
/// <param name="width">Pen width</param>
public void SetPenWidth(float width) => pen.Width = width;
/// <summary>
/// Set fill color
/// </summary>
/// <param name="color">Fill color</param>
public void SetFillColor(Color color) => brush.Color = color;
/// <summary>
/// Draws a line from the current pen position to the one specified in the parameter. This also sets the pens new position.
/// </summary>
/// <param name="point">Draw to point</param>
public void DrawLine(Point point) {
graphics.DrawLine(pen, penPosition, point);
penPosition = point;
}
/// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary>
/// <param name="points">Points to draw to</param>
public void DrawLines(Point[] points) {
if (points.Length < 2) {
throw new Exception("Cannot have less than two points in a line");
}
//Make it relative to the pen
for (int pointIndex = 0; pointIndex < points.Length; pointIndex++)
points[pointIndex] = new Point(points[pointIndex].X + penPosition.X, points[pointIndex].Y + penPosition.Y);
GraphicsPath path = new GraphicsPath {
FillMode = FillMode.Winding
};
path.AddLines(points);
path.AddLine(points[0], points.Last()); //Add final line
DrawLines(path);
}
/// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary>
/// <param name="path">GraphicsPath to draw to</param>
public void DrawLines(GraphicsPath path) {
//path.Widen(pen);
if (fill) graphics.FillPath(brush, path);
graphics.DrawPath(pen, path);
}
/// <summary>
/// Draws a circle of a scale ath the pen's position
/// </summary>
/// <param name="scale">Scale of the circle</param>
public void DrawCircle(double scale) {
if (fill) graphics.FillEllipse(brush, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2);
graphics.DrawEllipse(pen, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2);
}
/// <summary>
/// Clears the canvas
/// </summary>
public void ClearCanvas() {
graphics.Clear(Color.White);
}
/// <summary>
/// Draws a single pixel with the pen's color at the pen's position.
/// </summary>
public void DrawDot() {
graphics.FillRectangle(new SolidBrush(pen.Color), penPosition.X, penPosition.Y, 1, 1);
}
/// <summary>
/// Gets the valueStorage object
/// </summary>
/// <returns></returns>
public ValueStorage GetValueStorage() {
return valueStorage;
}
}
}
@@ -1,130 +1,130 @@
using System.Collections.Generic;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is a direct replacement to the dictionaries that were returned by <see cref="HelperFunctions.CommandAndParameterParser(string)"/>.
/// This class provides better intraface to the output.
/// </summary>
public class CommandAndParameterParserResult {
private readonly string command;
private readonly string[] parameters;
/// <summary>
/// Generates a new Result
/// </summary>
/// <param name="command">The command</param>
/// <param name="parameters">The parameters</param>
public CommandAndParameterParserResult(string command, string[] parameters) {
this.command = command;
this.parameters = parameters;
}
/// <summary>
/// Gets the command from the result
/// </summary>
/// <returns>the command</returns>
public string GetCommand() {
return command;
}
/// <summary>
/// Gets the command parameters
/// </summary>
/// <returns>command parameters</returns>
public string[] GetParameters() {
return parameters;
}
}
/// <summary>
/// This class simply provides settings and some functions that are used across many components.
/// </summary>
public class HelperFunctions {
/// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary>
/// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns>
/// <example>
/// For example
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
/// <example>
/// The code won't remove internal double spaces:
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
public static string Strip(string text) {
return text.Trim();
}
/// <summary>
/// Strips the strings of the full array. See <see cref="Strip(string)"/>
/// </summary>
/// <example>
/// string[] tmp = {" text ", " ", " with", "spaces ", ""};
/// Console.WriteLine(StripStringArray(tmp)); // => {"text", "with", "spaces"}
/// </example>
/// <param name="array">Dirty array with spaces</param>
/// <returns>A stripped aray</returns>
public static List<string> StripStringArray(string[] array) {
List<string> newStringList = new List<string>();
foreach (string arrayElement in array) {
string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement);
}
return newStringList;
}
/// <summary>
/// Parses the commands into a directry that Commander can use. See <see cref="Commander"/>
/// </summary>
/// <param name="text">A string command</param>
/// <returns>Directory with the command and its parameters cleanly separated</returns>
public static CommandAndParameterParserResult CommandAndParameterParser(string text) {
//prepare the parameters by stripping them of spaces
string prepParameters = Strip(text);
if (prepParameters.Length == 0) return null;
//split the command from the parameters
string[] splitCommand = prepParameters.Split(new char[] { " "[0] }, 2);
string command = null;
string[] parameters = null;
//There are parameters, make the command
if (splitCommand.Length > 0) {
//set command var
command = Strip(splitCommand[0]);
}
//There is at least one parameter
if (splitCommand.Length > 1) {
//seperate all of the parameters by a comma
splitCommand = splitCommand[1].Split(","[0]);
//Remove spaces around parameters
splitCommand = StripStringArray(splitCommand).ToArray();
//We don't want parameters if there aren't any
if (!(splitCommand.Length == 1 && splitCommand[0] == "")) {
//set parameter list
parameters = splitCommand;
}
}
return new CommandAndParameterParserResult(command, parameters);
}
}
using System.Collections.Generic;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is a direct replacement to the dictionaries that were returned by <see cref="HelperFunctions.CommandAndParameterParser(string)"/>.
/// This class provides better intraface to the output.
/// </summary>
public class CommandAndParameterParserResult {
private readonly string command;
private readonly string[] parameters;
/// <summary>
/// Generates a new Result
/// </summary>
/// <param name="command">The command</param>
/// <param name="parameters">The parameters</param>
public CommandAndParameterParserResult(string command, string[] parameters) {
this.command = command;
this.parameters = parameters;
}
/// <summary>
/// Gets the command from the result
/// </summary>
/// <returns>the command</returns>
public string GetCommand() {
return command;
}
/// <summary>
/// Gets the command parameters
/// </summary>
/// <returns>command parameters</returns>
public string[] GetParameters() {
return parameters;
}
}
/// <summary>
/// This class simply provides settings and some functions that are used across many components.
/// </summary>
public class HelperFunctions {
/// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary>
/// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns>
/// <example>
/// For example
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
/// <example>
/// The code won't remove internal double spaces:
/// <code>
/// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code>
/// </example>
public static string Strip(string text) {
return text.Trim();
}
/// <summary>
/// Strips the strings of the full array. See <see cref="Strip(string)"/>
/// </summary>
/// <example>
/// string[] tmp = {" text ", " ", " with", "spaces ", ""};
/// Console.WriteLine(StripStringArray(tmp)); // => {"text", "with", "spaces"}
/// </example>
/// <param name="array">Dirty array with spaces</param>
/// <returns>A stripped aray</returns>
public static List<string> StripStringArray(string[] array) {
List<string> newStringList = new List<string>();
foreach (string arrayElement in array) {
string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement);
}
return newStringList;
}
/// <summary>
/// Parses the commands into a directry that Commander can use. See <see cref="Commander"/>
/// </summary>
/// <param name="text">A string command</param>
/// <returns>Directory with the command and its parameters cleanly separated</returns>
public static CommandAndParameterParserResult CommandAndParameterParser(string text) {
//prepare the parameters by stripping them of spaces
string prepParameters = Strip(text);
if (prepParameters.Length == 0) return null;
//split the command from the parameters
string[] splitCommand = prepParameters.Split(new char[] { " "[0] }, 2);
string command = null;
string[] parameters = null;
//There are parameters, make the command
if (splitCommand.Length > 0) {
//set command var
command = Strip(splitCommand[0]);
}
//There is at least one parameter
if (splitCommand.Length > 1) {
//seperate all of the parameters by a comma
splitCommand = splitCommand[1].Split(","[0]);
//Remove spaces around parameters
splitCommand = StripStringArray(splitCommand).ToArray();
//We don't want parameters if there aren't any
if (!(splitCommand.Length == 1 && splitCommand[0] == "")) {
//set parameter list
parameters = splitCommand;
}
}
return new CommandAndParameterParserResult(command, parameters);
}
}
}
@@ -1,27 +1,27 @@
using System;
namespace Advanced_Software_Engineering {
/// <summary>
/// Menu manager manages if the menu is shown to the user. It is a static class because every Form should be able to see it.
/// See <see cref="Menu"/>.
/// </summary>
public static partial class MenuManager {
/// <summary>
/// The variable simply keep track of the windows that are currently shown (excluding <see cref="Menu"/>).
/// </summary>
public static int NumberOfWindows = 0;
/// <summary>
/// This helper function is executed when a window is closed. It shows the <see cref="Menu"/> when the count is 0
/// </summary>
public static void WindowClosed() {
NumberOfWindows--;
if (NumberOfWindows == 0) {
Console.WriteLine("Showing MainMenu");
Program.MainMenu.Show();
}
}
}
using System;
namespace Advanced_Software_Engineering {
/// <summary>
/// Menu manager manages if the menu is shown to the user. It is a static class because every Form should be able to see it.
/// See <see cref="Menu"/>.
/// </summary>
public static partial class MenuManager {
/// <summary>
/// The variable simply keep track of the windows that are currently shown (excluding <see cref="Menu"/>).
/// </summary>
public static int NumberOfWindows = 0;
/// <summary>
/// This helper function is executed when a window is closed. It shows the <see cref="Menu"/> when the count is 0
/// </summary>
public static void WindowClosed() {
NumberOfWindows--;
if (NumberOfWindows == 0) {
Console.WriteLine("Showing MainMenu");
Program.MainMenu.Show();
}
}
}
}
@@ -1,21 +1,21 @@
using System;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
internal static class Program {
public static Form MainMenu;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainMenu = new Menu();
Application.Run(MainMenu);
}
}
using System;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
internal static class Program {
public static Form MainMenu;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainMenu = new Menu();
Application.Run(MainMenu);
}
}
}
@@ -1,35 +1,35 @@
using System.Reflection;
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("Advanced Software Engineering")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Advanced Software Engineering")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[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("b9df94a0-9dfb-4f1e-b126-38dfbbe72c0c")]
// 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")]
using System.Reflection;
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("Advanced Software Engineering")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Advanced Software Engineering")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[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("b9df94a0-9dfb-4f1e-b126-38dfbbe72c0c")]
// 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")]
@@ -1,93 +1,93 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties {
using System;
/// <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", "16.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 (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering.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;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap error {
get {
object obj = ResourceManager.GetObject("error", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap info {
get {
object obj = ResourceManager.GetObject("info", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap warning {
get {
object obj = ResourceManager.GetObject("warning", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties {
using System;
/// <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", "16.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 (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering.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;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap error {
get {
object obj = ResourceManager.GetObject("error", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap info {
get {
object obj = ResourceManager.GetObject("info", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap warning {
get {
object obj = ResourceManager.GetObject("warning", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
@@ -1,130 +1,130 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="warning" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="warning" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
@@ -1,26 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.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;
}
}
}
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.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;
}
}
}
}
@@ -1,7 +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>
<?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>
@@ -1,30 +1,30 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Clear IVerb class.
/// </summary>
public class Clear : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Create the clear IVerb
/// </summary>
/// <param name="drawer"></param>
public Clear(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Execute the clear IVerb. It clears the drawer.
/// </summary>
public void ExecuteVerb() => drawer.ClearCanvas();
/// <summary>
/// Describes the clearing.
/// </summary>
/// <returns>A description of clearing</returns>
public string GetDescription() {
return "Clears the canvas";
}
}
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Clear IVerb class.
/// </summary>
public class Clear : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Create the clear IVerb
/// </summary>
/// <param name="drawer"></param>
public Clear(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Execute the clear IVerb. It clears the drawer.
/// </summary>
public void ExecuteVerb() => drawer.ClearCanvas();
/// <summary>
/// Describes the clearing.
/// </summary>
/// <returns>A description of clearing</returns>
public string GetDescription() {
return "Clears the canvas";
}
}
}
@@ -1,41 +1,41 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// DrawLines IVerb class
/// </summary>
public class DrawLines : IVerb {
private readonly Drawer drawer;
private readonly PointValue[] points;
/// <summary>
/// DrawLines constructor
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="points">All of the points to visit</param>
public DrawLines(Drawer drawer, PointValue[] points) {
this.drawer = drawer;
this.points = points;
}
/// <summary>
/// Draws all the lines
/// </summary>
public void ExecuteVerb() {
List<Point> pointList = new List<Point>();
foreach (PointValue pointValue in points) pointList.Add(pointValue.GetPoint());
drawer.DrawLines(pointList.ToArray());
}
/// <summary>
/// Gets description of the command.
/// </summary>
/// <returns>A generic description of the command</returns>
public string GetDescription() {
return "Draws a shape at specific points.";
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// DrawLines IVerb class
/// </summary>
public class DrawLines : IVerb {
private readonly Drawer drawer;
private readonly PointValue[] points;
/// <summary>
/// DrawLines constructor
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="points">All of the points to visit</param>
public DrawLines(Drawer drawer, PointValue[] points) {
this.drawer = drawer;
this.points = points;
}
/// <summary>
/// Draws all the lines
/// </summary>
public void ExecuteVerb() {
List<Point> pointList = new List<Point>();
foreach (PointValue pointValue in points) pointList.Add(pointValue.GetPoint());
drawer.DrawLines(pointList.ToArray());
}
/// <summary>
/// Gets description of the command.
/// </summary>
/// <returns>A generic description of the command</returns>
public string GetDescription() {
return "Draws a shape at specific points.";
}
}
}
@@ -1,12 +1,12 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions {
internal class NoOp : IVerb {
public void ExecuteVerb() {
}
public string GetDescription() {
return "NoOp";
}
}
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions {
internal class NoOp : IVerb {
public void ExecuteVerb() {
}
public string GetDescription() {
return "NoOp";
}
}
}
@@ -1,30 +1,30 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Setsets the pen to the initial position.
/// </summary>
public class ResetPen : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Creates the ResetPen IVerb
/// </summary>
/// <param name="drawer">drawer</param>
public ResetPen(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Moves the pen to 0, 0
/// </summary>
public void ExecuteVerb() => drawer.MovePen(new System.Drawing.Point(0, 0));
/// <summary>
/// Gets the description of the command.
/// </summary>
/// <returns>The description of the command</returns>
public string GetDescription() {
return "Moves pen to the start (0, 0)";
}
}
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Setsets the pen to the initial position.
/// </summary>
public class ResetPen : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Creates the ResetPen IVerb
/// </summary>
/// <param name="drawer">drawer</param>
public ResetPen(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Moves the pen to 0, 0
/// </summary>
public void ExecuteVerb() => drawer.MovePen(new System.Drawing.Point(0, 0));
/// <summary>
/// Gets the description of the command.
/// </summary>
/// <returns>The description of the command</returns>
public string GetDescription() {
return "Moves pen to the start (0, 0)";
}
}
}
@@ -1,37 +1,37 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Fill IVerb class
/// </summary>
public class Fill : IVerb {
private readonly Drawer drawer;
private readonly bool enable;
/// <summary>
/// Fill enables or disables the fill insider drawer
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="enable">Enable fill?</param>
public Fill(Drawer drawer, bool enable) {
this.drawer = drawer;
this.enable = enable;
}
/// <summary>
/// Sets the fill status
/// </summary>
public void ExecuteVerb() {
if (enable) drawer.EnableFill();
else drawer.DisableFill();
}
/// <summary>
/// Describes what the command will do
/// </summary>
/// <returns>Description of what the IVerb will do</returns>
public string GetDescription() {
if (enable) return "Enable fill";
else return "Disable fill";
}
}
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Fill IVerb class
/// </summary>
public class Fill : IVerb {
private readonly Drawer drawer;
private readonly bool enable;
/// <summary>
/// Fill enables or disables the fill insider drawer
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="enable">Enable fill?</param>
public Fill(Drawer drawer, bool enable) {
this.drawer = drawer;
this.enable = enable;
}
/// <summary>
/// Sets the fill status
/// </summary>
public void ExecuteVerb() {
if (enable) drawer.EnableFill();
else drawer.DisableFill();
}
/// <summary>
/// Describes what the command will do
/// </summary>
/// <returns>Description of what the IVerb will do</returns>
public string GetDescription() {
if (enable) return "Enable fill";
else return "Disable fill";
}
}
}
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The FillColor IVerb class
/// </summary>
public class FillColor : IVerb {
private readonly Drawer drawer;
private readonly IValue color;
/// <summary>
/// Create the FillColor instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="color">The color of the fill</param>
public FillColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
/// <summary>
/// Set the fill color
/// </summary>
public void ExecuteVerb() {
drawer.SetFillColor(color.ToColor());
}
/// <summary>
/// Get description of the color that the drawer will use
/// </summary>
/// <returns>Description of the fill color</returns>
public string GetDescription() {
return "Set fill color to the specified color";
}
}
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The FillColor IVerb class
/// </summary>
public class FillColor : IVerb {
private readonly Drawer drawer;
private readonly IValue color;
/// <summary>
/// Create the FillColor instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="color">The color of the fill</param>
public FillColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
/// <summary>
/// Set the fill color
/// </summary>
public void ExecuteVerb() {
drawer.SetFillColor(color.ToColor());
}
/// <summary>
/// Get description of the color that the drawer will use
/// </summary>
/// <returns>Description of the fill color</returns>
public string GetDescription() {
return "Set fill color to the specified color";
}
}
}
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The PenColor IVerb class
/// </summary>
public class PenColor : IVerb {
private readonly Drawer drawer;
private readonly IValue color;
/// <summary>
/// Creates a PenColor instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="color">Pen color</param>
public PenColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
/// <summary>
/// Sets the pen color
/// </summary>
public void ExecuteVerb() {
drawer.SetPenColor(color.ToColor());
}
/// <summary>
/// Describes the pen color
/// </summary>
/// <returns>The description pen color</returns>
public string GetDescription() {
return "Set pen color";
}
}
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The PenColor IVerb class
/// </summary>
public class PenColor : IVerb {
private readonly Drawer drawer;
private readonly IValue color;
/// <summary>
/// Creates a PenColor instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="color">Pen color</param>
public PenColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
/// <summary>
/// Sets the pen color
/// </summary>
public void ExecuteVerb() {
drawer.SetPenColor(color.ToColor());
}
/// <summary>
/// Describes the pen color
/// </summary>
/// <returns>The description pen color</returns>
public string GetDescription() {
return "Set pen color";
}
}
}
@@ -1,38 +1,38 @@
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Circle IVerb class.
/// </summary>
public class Circle : IVerb {
private readonly Drawer drawer;
private readonly IValue scale;
/// <summary>
/// Circle constructor creates the Circle IVerb.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">scale of the circle</param>
public Circle(Drawer drawer, IValue scale) {
this.drawer = drawer;
this.scale = scale;
}
/// <summary>
/// Execute the Circle IVerb, which is to draw a circle with the drawer.
/// </summary>
public void ExecuteVerb() {
double scale = this.scale.ToDouble();
drawer.DrawCircle(scale);
}
/// <summary>
/// Describes how the circle will be drawn.
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Draws a circle with a certain radius, with origin of the pen";
}
}
using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Circle IVerb class.
/// </summary>
public class Circle : IVerb {
private readonly Drawer drawer;
private readonly IValue scale;
/// <summary>
/// Circle constructor creates the Circle IVerb.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">scale of the circle</param>
public Circle(Drawer drawer, IValue scale) {
this.drawer = drawer;
this.scale = scale;
}
/// <summary>
/// Execute the Circle IVerb, which is to draw a circle with the drawer.
/// </summary>
public void ExecuteVerb() {
double scale = this.scale.ToDouble();
drawer.DrawCircle(scale);
}
/// <summary>
/// Describes how the circle will be drawn.
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Draws a circle with a certain radius, with origin of the pen";
}
}
}
@@ -1,32 +1,32 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Dot IVerb class
/// </summary>
public class Dot : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Creates the Dot IVerb
/// </summary>
/// <param name="drawer"></param>
public Dot(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Draws a dot where the pen currently is.
/// </summary>
public void ExecuteVerb() {
drawer.DrawDot();
}
/// <summary>
/// Gets the description of the command
/// </summary>
/// <returns>The description of the command</returns>
public string GetDescription() {
return "Places a dot where the pen currently is";
}
}
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Dot IVerb class
/// </summary>
public class Dot : IVerb {
private readonly Drawer drawer;
/// <summary>
/// Creates the Dot IVerb
/// </summary>
/// <param name="drawer"></param>
public Dot(Drawer drawer) {
this.drawer = drawer;
}
/// <summary>
/// Draws a dot where the pen currently is.
/// </summary>
public void ExecuteVerb() {
drawer.DrawDot();
}
/// <summary>
/// Gets the description of the command
/// </summary>
/// <returns>The description of the command</returns>
public string GetDescription() {
return "Places a dot where the pen currently is";
}
}
}
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// DrawTo IVerb class
/// </summary>
public class DrawTo : IVerb {
private readonly Drawer drawer;
private readonly PointValue moveToPoint;
/// <summary>
/// Creates the DrawTo intstance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param>
public DrawTo(Drawer drawer, PointValue point) {
this.drawer = drawer;
moveToPoint = point;
}
/// <summary>
/// Draws the line
/// </summary>
public void ExecuteVerb() {
drawer.DrawLine(moveToPoint.GetPoint());
}
/// <summary>
/// Describes how the line is going to be drawn
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Draws a line";
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// DrawTo IVerb class
/// </summary>
public class DrawTo : IVerb {
private readonly Drawer drawer;
private readonly PointValue moveToPoint;
/// <summary>
/// Creates the DrawTo intstance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param>
public DrawTo(Drawer drawer, PointValue point) {
this.drawer = drawer;
moveToPoint = point;
}
/// <summary>
/// Draws the line
/// </summary>
public void ExecuteVerb() {
drawer.DrawLine(moveToPoint.GetPoint());
}
/// <summary>
/// Describes how the line is going to be drawn
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Draws a line";
}
}
}
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// MoveTo IVerb class
/// </summary>
public class MoveTo : IVerb {
private readonly Drawer drawer;
private readonly PointValue moveToPoint;
/// <summary>
/// Creates a MoveTo instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param>
public MoveTo(Drawer drawer, PointValue point) {
this.drawer = drawer;
moveToPoint = point;
}
/// <summary>
/// Moves the pen to the position
/// </summary>
public void ExecuteVerb() {
drawer.MovePen(moveToPoint.GetPoint());
}
/// <summary>
/// Describes where the pen will move.
/// </summary>
/// <returns>Description where the pen will move to</returns>
public string GetDescription() {
return "Move origin";
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// MoveTo IVerb class
/// </summary>
public class MoveTo : IVerb {
private readonly Drawer drawer;
private readonly PointValue moveToPoint;
/// <summary>
/// Creates a MoveTo instance
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param>
public MoveTo(Drawer drawer, PointValue point) {
this.drawer = drawer;
moveToPoint = point;
}
/// <summary>
/// Moves the pen to the position
/// </summary>
public void ExecuteVerb() {
drawer.MovePen(moveToPoint.GetPoint());
}
/// <summary>
/// Describes where the pen will move.
/// </summary>
/// <returns>Description where the pen will move to</returns>
public string GetDescription() {
return "Move origin";
}
}
}
@@ -1,34 +1,34 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Quadrilateral IVerb class
/// </summary>
public class Quadrilateral : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// Creates a Quadrilateral instances
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point1">first point</param>
/// <param name="point2">second point</param>
/// <param name="point3">third point</param>
/// <param name="point4">fourth point</param>
public Quadrilateral(Drawer drawer, PointValue point1, PointValue point2, PointValue point3, PointValue point4) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3, point4 });
}
/// <summary>
/// Draws a quadrilateral from the points
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Describes all of the points
/// </summary>
/// <returns>Description of the quadrilateral points</returns>
public string GetDescription() => IVerb.GetDescription();
}
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Quadrilateral IVerb class
/// </summary>
public class Quadrilateral : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// Creates a Quadrilateral instances
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point1">first point</param>
/// <param name="point2">second point</param>
/// <param name="point3">third point</param>
/// <param name="point4">fourth point</param>
public Quadrilateral(Drawer drawer, PointValue point1, PointValue point2, PointValue point3, PointValue point4) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3, point4 });
}
/// <summary>
/// Draws a quadrilateral from the points
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Describes all of the points
/// </summary>
/// <returns>Description of the quadrilateral points</returns>
public string GetDescription() => IVerb.GetDescription();
}
}
@@ -1,54 +1,54 @@
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Rectangle IVerb class
/// </summary>
/// <todo>
/// Correct
/// </todo>
public class Rectangle : IVerb {
private readonly PointValue[] points;
private readonly IVerb verb;
/// <summary>
/// Create a rectangle instance. Makes sure that
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="width">rectangle width</param>
/// <param name="height">rectangle height</param>
public Rectangle(Drawer drawer, IValue width, IValue height) {
IValue negativeWidth = new ExpressionValue(new IntValue(0), width, ExpressionValue.SUBTRACT);
IValue negativeHeight = new ExpressionValue(new IntValue(0), height, ExpressionValue.SUBTRACT);
points = new PointValue[]
{
new PointValue(negativeWidth, negativeHeight),
new PointValue(width, negativeHeight),
new PointValue(width, height),
new PointValue(negativeWidth, height)
};
verb = new DrawLines(drawer, points);
}
/// <summary>
/// Gets the description from the rectangle
/// </summary>
/// <returns>Describes the rectangle</returns>
public string GetDescription() {
return "Draws a rectangle with the pen in the center";
}
/// <summary>
/// Draws the rectangle
/// </summary>
public void ExecuteVerb() {
verb.ExecuteVerb();
}
}
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// Rectangle IVerb class
/// </summary>
/// <todo>
/// Correct
/// </todo>
public class Rectangle : IVerb {
private readonly PointValue[] points;
private readonly IVerb verb;
/// <summary>
/// Create a rectangle instance. Makes sure that
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="width">rectangle width</param>
/// <param name="height">rectangle height</param>
public Rectangle(Drawer drawer, IValue width, IValue height) {
IValue negativeWidth = new ExpressionValue(new IntValue(0), width, ExpressionValue.SUBTRACT);
IValue negativeHeight = new ExpressionValue(new IntValue(0), height, ExpressionValue.SUBTRACT);
points = new PointValue[]
{
new PointValue(negativeWidth, negativeHeight),
new PointValue(width, negativeHeight),
new PointValue(width, height),
new PointValue(negativeWidth, height)
};
verb = new DrawLines(drawer, points);
}
/// <summary>
/// Gets the description from the rectangle
/// </summary>
/// <returns>Describes the rectangle</returns>
public string GetDescription() {
return "Draws a rectangle with the pen in the center";
}
/// <summary>
/// Draws the rectangle
/// </summary>
public void ExecuteVerb() {
verb.ExecuteVerb();
}
}
}
@@ -1,68 +1,68 @@
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// A class that generates a RegularPolygon IVerb.
/// </summary>
public class RegularPolygon : IVerb {
private readonly Drawer drawer;
private readonly IValue sides;
private readonly IValue scale;
private readonly IValue offset;
private readonly IValue degMode;
/// <summary>
/// Draws a regular polygon.
/// See <see href="https://en.wikipedia.org/wiki/Regular_polygon"/>.
/// See also <seealso href="https://www.mathsisfun.com/geometry/regular-polygons.html"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="sides">Number of sides in the regular polygon</param>
/// <param name="scale">The scale of the regular polygon</param>
/// <param name="offset">Rotation offset of the regular polygon</param>
/// <param name="degMode">Default is true. If true, offset is in degrees. If false, offset is in gradians.</param>
public RegularPolygon(Drawer drawer, IValue sides, IValue scale, IValue offset, IValue degMode) {
this.sides = sides;
this.scale = scale;
this.drawer = drawer;
this.offset = offset;
this.degMode = degMode;
}
/// <summary>
/// Draws the regular polygons
/// </summary>
public void ExecuteVerb() {
double offset = this.offset.ToDouble();
//if in degMode, convert the offset to radian
if (degMode.ToBool()) offset = Math.PI * offset / 180;
//Scale needs to be corercted to work correctly with Rectangle
double scale = this.scale.ToInt() * 2 / Math.Sqrt(2);
List<PointValue> points = new List<PointValue>();
double constantAngleDelta = 2 * Math.PI / sides.ToInt();
for (int side = 0; side < sides.ToInt(); side++) {
double angle = (constantAngleDelta * side) + offset;
double dx = scale * Math.Sin(angle);
double dy = scale * Math.Cos(angle);
points.Add(new PointValue(new IntValue((int)Math.Round(dx)), new IntValue((int)Math.Round(dy))));
}
new DrawLines(drawer, points.ToArray()).ExecuteVerb();
}
/// <summary>
/// Describes how the regular polygon will be drawn
/// </summary>
/// <returns>A description of how the polygon will be drawn</returns>
public string GetDescription() {
return "Draws a regular polygon.";
}
}
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// A class that generates a RegularPolygon IVerb.
/// </summary>
public class RegularPolygon : IVerb {
private readonly Drawer drawer;
private readonly IValue sides;
private readonly IValue scale;
private readonly IValue offset;
private readonly IValue degMode;
/// <summary>
/// Draws a regular polygon.
/// See <see href="https://en.wikipedia.org/wiki/Regular_polygon"/>.
/// See also <seealso href="https://www.mathsisfun.com/geometry/regular-polygons.html"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="sides">Number of sides in the regular polygon</param>
/// <param name="scale">The scale of the regular polygon</param>
/// <param name="offset">Rotation offset of the regular polygon</param>
/// <param name="degMode">Default is true. If true, offset is in degrees. If false, offset is in gradians.</param>
public RegularPolygon(Drawer drawer, IValue sides, IValue scale, IValue offset, IValue degMode) {
this.sides = sides;
this.scale = scale;
this.drawer = drawer;
this.offset = offset;
this.degMode = degMode;
}
/// <summary>
/// Draws the regular polygons
/// </summary>
public void ExecuteVerb() {
double offset = this.offset.ToDouble();
//if in degMode, convert the offset to radian
if (degMode.ToBool()) offset = Math.PI * offset / 180;
//Scale needs to be corercted to work correctly with Rectangle
double scale = this.scale.ToInt() * 2 / Math.Sqrt(2);
List<PointValue> points = new List<PointValue>();
double constantAngleDelta = 2 * Math.PI / sides.ToInt();
for (int side = 0; side < sides.ToInt(); side++) {
double angle = (constantAngleDelta * side) + offset;
double dx = scale * Math.Sin(angle);
double dy = scale * Math.Cos(angle);
points.Add(new PointValue(new IntValue((int)Math.Round(dx)), new IntValue((int)Math.Round(dy))));
}
new DrawLines(drawer, points.ToArray()).ExecuteVerb();
}
/// <summary>
/// Describes how the regular polygon will be drawn
/// </summary>
/// <returns>A description of how the polygon will be drawn</returns>
public string GetDescription() {
return "Draws a regular polygon.";
}
}
}
@@ -1,42 +1,42 @@
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Square IVerb class
/// </summary>
public class Square : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param>
public Square(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, new IntValue(0), new BoolValue(true));
}
/// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param>
/// <param name="offset">rotation offset in degrees</param>
public Square(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, offset, new BoolValue(true));
}
/// <summary>
/// Draws the regular polygon (square)
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Gets description of how it will draw the regular polygon (square)
/// </summary>
/// <returns></returns>
public string GetDescription() => IVerb.GetDescription();
}
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Square IVerb class
/// </summary>
public class Square : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param>
public Square(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, new IntValue(0), new BoolValue(true));
}
/// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param>
/// <param name="offset">rotation offset in degrees</param>
public Square(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, offset, new BoolValue(true));
}
/// <summary>
/// Draws the regular polygon (square)
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Gets description of how it will draw the regular polygon (square)
/// </summary>
/// <returns></returns>
public string GetDescription() => IVerb.GetDescription();
}
}
@@ -1,54 +1,54 @@
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Triangle IVerb class
/// </summary>
public class Triangle : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param>
public Triangle(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, new IntValue(0), new BoolValue(true));
}
/// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param>
/// <param name="offset">the offset of the triangle in degrees</param>
public Triangle(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, offset, new BoolValue(true));
}
/// <summary>
/// Creates a new Triangle instance using <see cref="DrawLines"/>. It draws lines to the points provided
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point1">first point</param>
/// <param name="point2">second point</param>
/// <param name="point3">third point</param>
public Triangle(Drawer drawer, PointValue point1, PointValue point2, PointValue point3) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3 });
}
/// <summary>
/// Executes the created IVerb, either <see cref="RegularPolygon"/> or <see cref="DrawLines"/>.
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Describes how the triangle will be drawn
/// </summary>
/// <returns>Description of how the triangle will be drawn</returns>
public string GetDescription() => IVerb.GetDescription();
}
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary>
/// The Triangle IVerb class
/// </summary>
public class Triangle : IVerb {
private readonly IVerb IVerb;
/// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param>
public Triangle(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, new IntValue(0), new BoolValue(true));
}
/// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param>
/// <param name="offset">the offset of the triangle in degrees</param>
public Triangle(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, offset, new BoolValue(true));
}
/// <summary>
/// Creates a new Triangle instance using <see cref="DrawLines"/>. It draws lines to the points provided
/// </summary>
/// <param name="drawer">drawer</param>
/// <param name="point1">first point</param>
/// <param name="point2">second point</param>
/// <param name="point3">third point</param>
public Triangle(Drawer drawer, PointValue point1, PointValue point2, PointValue point3) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3 });
}
/// <summary>
/// Executes the created IVerb, either <see cref="RegularPolygon"/> or <see cref="DrawLines"/>.
/// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary>
/// Describes how the triangle will be drawn
/// </summary>
/// <returns>Description of how the triangle will be drawn</returns>
public string GetDescription() => IVerb.GetDescription();
}
}
@@ -1,43 +1,43 @@
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// Declares a method. See <see cref="DrawingVerbs.Actions.NoOp"/> because these classes behave similarly
/// </summary>
public class DeclareMethod : IVerb, IVerbChunk {
private readonly string methodName;
private readonly Drawer drawer;
/// <summary>
/// Creates a new DeclareMethod object
/// </summary>
/// <param name="drawer">The drawer is used for getting the method specifically</param>
/// <param name="methodName">The name of the method</param>
public DeclareMethod(Drawer drawer, string methodName) {
this.drawer = drawer;
this.methodName = methodName;
}
/// <summary>
/// Adds a verb to the verb list. More specifically, the verb list of the MethodChunk.
/// See <see cref="MethodChunk"/>
/// </summary>
/// <param name="verb">The verb to add</param>
public void AddVerb(IVerb verb) {
MethodChunk methodChunk = drawer.Methods[methodName];
methodChunk.AddVerb(verb);
}
/// <summary>
/// This method quite literally does nothing upon execution because the declaration of method happens at parse time
/// </summary>
public void ExecuteVerb() { }
/// <summary>
/// Gets the description of what the chunk will do
/// </summary>
/// <returns>A description of the chunk's actions</returns>
public string GetDescription() {
return "Declares a method";
}
}
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// Declares a method. See <see cref="DrawingVerbs.Actions.NoOp"/> because these classes behave similarly
/// </summary>
public class DeclareMethod : IVerb, IVerbChunk {
private readonly string methodName;
private readonly Drawer drawer;
/// <summary>
/// Creates a new DeclareMethod object
/// </summary>
/// <param name="drawer">The drawer is used for getting the method specifically</param>
/// <param name="methodName">The name of the method</param>
public DeclareMethod(Drawer drawer, string methodName) {
this.drawer = drawer;
this.methodName = methodName;
}
/// <summary>
/// Adds a verb to the verb list. More specifically, the verb list of the MethodChunk.
/// See <see cref="MethodChunk"/>
/// </summary>
/// <param name="verb">The verb to add</param>
public void AddVerb(IVerb verb) {
MethodChunk methodChunk = drawer.Methods[methodName];
methodChunk.AddVerb(verb);
}
/// <summary>
/// This method quite literally does nothing upon execution because the declaration of method happens at parse time
/// </summary>
public void ExecuteVerb() { }
/// <summary>
/// Gets the description of what the chunk will do
/// </summary>
/// <returns>A description of the chunk's actions</returns>
public string GetDescription() {
return "Declares a method";
}
}
}
@@ -1,47 +1,47 @@
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A ForChunk is similar to a <see cref="WhileChunk"/>. It executes a specific number of times.
/// </summary>
public class ForChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.IntValue"/>, the number of times the loop should execute.</param>
public ForChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.IntValue"/>, the number of times the loop should execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line</param>
public ForChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes the chunk the number of specified times
/// </summary>
public new void ExecuteVerb() {
int iterations = conditional.ToInt();
valueStorage.IncreaseStack();
for (; iterations > 0; iterations--) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A ForChunk is similar to a <see cref="WhileChunk"/>. It executes a specific number of times.
/// </summary>
public class ForChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.IntValue"/>, the number of times the loop should execute.</param>
public ForChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.IntValue"/>, the number of times the loop should execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line</param>
public ForChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes the chunk the number of specified times
/// </summary>
public new void ExecuteVerb() {
int iterations = conditional.ToInt();
valueStorage.IncreaseStack();
for (; iterations > 0; iterations--) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
}
@@ -1,25 +1,25 @@
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A Collection of chunks to be executed. They extend IVerb because they should be interchangable.
/// </summary>
public interface IVerbChunk : IVerb {
/// <summary>
/// Adds a verb to the verb list
/// </summary>
/// <param name="verb">The verb to add</param>
void AddVerb(IVerb verb);
/// <summary>
/// Execute the whole chunk
/// </summary>
new void ExecuteVerb();
/// <summary>
/// Gets the description of what the chunk will do
/// </summary>
/// <returns>A description of the chunk's actions</returns>
new string GetDescription();
}
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A Collection of chunks to be executed. They extend IVerb because they should be interchangable.
/// </summary>
public interface IVerbChunk : IVerb {
/// <summary>
/// Adds a verb to the verb list
/// </summary>
/// <param name="verb">The verb to add</param>
void AddVerb(IVerb verb);
/// <summary>
/// Execute the whole chunk
/// </summary>
new void ExecuteVerb();
/// <summary>
/// Gets the description of what the chunk will do
/// </summary>
/// <returns>A description of the chunk's actions</returns>
new string GetDescription();
}
}
@@ -1,45 +1,45 @@
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A simple If Object
/// </summary>
public class IfChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, if the chunk should execute.</param>
public IfChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, if the chunk should execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line</param>
public IfChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes the chunk if the conditional is true
/// </summary>
public new void ExecuteVerb() {
valueStorage.IncreaseStack();
if (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A simple If Object
/// </summary>
public class IfChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, if the chunk should execute.</param>
public IfChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, if the chunk should execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line</param>
public IfChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes the chunk if the conditional is true
/// </summary>
public new void ExecuteVerb() {
valueStorage.IncreaseStack();
if (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
}
@@ -1,146 +1,146 @@
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// The method chunk class
/// </summary>
public class MethodChunk : VerbChunk, IVerb, IValue {
private readonly ValueStorage valueStorage;
private readonly DeclareVariable[] variables;
private UpdateVariable[] updateVariables;
private bool init = false;
private IValue result;
/// <summary>
/// The method chunk
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="variables">The variables to pass into the method</param>
public MethodChunk(ValueStorage valueStorage, DeclareVariable[] variables) : base() {
this.valueStorage = valueStorage;
this.variables = variables;
}
/// <summary>
/// Gets all of the variable names
/// </summary>
/// <returns>The names of all the variables</returns>
public List<string> GetVariableNames() {
List<string> VariableNames = new List<string>();
foreach (DeclareVariable variable in variables) VariableNames.Add(variable.GetName());
return VariableNames;
}
/// <summary>
/// MUST BE CALLED. This method is really important for setting the updated values into the method's stack.
/// </summary>
/// <param name="updateVariables">The new values of the method</param>
public void SetVariableValues(UpdateVariable[] updateVariables) {
this.updateVariables = updateVariables;
}
/// <summary>
/// This method allows the method chunk to replicate itself before being ran. Essential for recursion.
/// </summary>
/// <returns>A method chunk with the exact same values and verbs</returns>
public MethodChunk DuplicateForExecution() {
MethodChunk method = new MethodChunk(valueStorage, variables);
method.SetVariableValues(updateVariables);
foreach (IVerb verb in base.GetVerbs()) method.AddVerb(verb);
return method;
}
/// <summary>
/// Executes the method chunk.
/// </summary>
public new void ExecuteVerb() {
init = false;
result = null;
valueStorage.IncreaseStack();
//Declare everything
foreach (DeclareVariable variable in variables) variable.ExecuteVerb();
//Set the values of everything
foreach (UpdateVariable variable in updateVariables) variable.ExecuteVerb();
//Run code
base.ExecuteVerb();
if (valueStorage.CheckVariableExists("ret")) {
result = valueStorage.GetVariable("ret");
init = true;
}
valueStorage.DecreaseStack();
}
/// <summary>
/// Gets a result from the method. (Experimental)
/// </summary>
/// <returns>the result</returns>
public IValue GetResult() {
return result;
}
/// <summary>
/// Clones the result of the method (Experimental)
/// </summary>
/// <returns></returns>
public IValue Clone() {
return GetResult().Clone();
}
/// <summary>
/// Gets the original type of the result of the method (Experimental)
/// </summary>
/// <returns></returns>
public string GetOriginalType() {
return GetResult().GetOriginalType();
}
/// <summary>
/// Checks if the result is initilised (Experimental)
/// </summary>
/// <returns></returns>
public bool IsInitialised() {
return init;
}
/// <summary>
/// Converts the result to boolean (Experimental)
/// </summary>
/// <returns>boolean representation of the result</returns>
public bool ToBool() {
return GetResult().ToBool();
}
/// <summary>
/// Converts the result to color (Experimental)
/// </summary>
/// <returns>color representation of the result</returns>
public Color ToColor() {
return GetResult().ToColor();
}
/// <summary>
/// Converts the result to double (Experimental)
/// </summary>
/// <returns>double representation of the result</returns>
public double ToDouble() {
return GetResult().ToDouble();
}
/// <summary>
/// Converts the result to integer (Experimental)
/// </summary>
/// <returns>integer representation of the result</returns>
public int ToInt() {
return GetResult().ToInt();
}
}
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// The method chunk class
/// </summary>
public class MethodChunk : VerbChunk, IVerb, IValue {
private readonly ValueStorage valueStorage;
private readonly DeclareVariable[] variables;
private UpdateVariable[] updateVariables;
private bool init = false;
private IValue result;
/// <summary>
/// The method chunk
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="variables">The variables to pass into the method</param>
public MethodChunk(ValueStorage valueStorage, DeclareVariable[] variables) : base() {
this.valueStorage = valueStorage;
this.variables = variables;
}
/// <summary>
/// Gets all of the variable names
/// </summary>
/// <returns>The names of all the variables</returns>
public List<string> GetVariableNames() {
List<string> VariableNames = new List<string>();
foreach (DeclareVariable variable in variables) VariableNames.Add(variable.GetName());
return VariableNames;
}
/// <summary>
/// MUST BE CALLED. This method is really important for setting the updated values into the method's stack.
/// </summary>
/// <param name="updateVariables">The new values of the method</param>
public void SetVariableValues(UpdateVariable[] updateVariables) {
this.updateVariables = updateVariables;
}
/// <summary>
/// This method allows the method chunk to replicate itself before being ran. Essential for recursion.
/// </summary>
/// <returns>A method chunk with the exact same values and verbs</returns>
public MethodChunk DuplicateForExecution() {
MethodChunk method = new MethodChunk(valueStorage, variables);
method.SetVariableValues(updateVariables);
foreach (IVerb verb in base.GetVerbs()) method.AddVerb(verb);
return method;
}
/// <summary>
/// Executes the method chunk.
/// </summary>
public new void ExecuteVerb() {
init = false;
result = null;
valueStorage.IncreaseStack();
//Declare everything
foreach (DeclareVariable variable in variables) variable.ExecuteVerb();
//Set the values of everything
foreach (UpdateVariable variable in updateVariables) variable.ExecuteVerb();
//Run code
base.ExecuteVerb();
if (valueStorage.CheckVariableExists("ret")) {
result = valueStorage.GetVariable("ret");
init = true;
}
valueStorage.DecreaseStack();
}
/// <summary>
/// Gets a result from the method. (Experimental)
/// </summary>
/// <returns>the result</returns>
public IValue GetResult() {
return result;
}
/// <summary>
/// Clones the result of the method (Experimental)
/// </summary>
/// <returns></returns>
public IValue Clone() {
return GetResult().Clone();
}
/// <summary>
/// Gets the original type of the result of the method (Experimental)
/// </summary>
/// <returns></returns>
public string GetOriginalType() {
return GetResult().GetOriginalType();
}
/// <summary>
/// Checks if the result is initilised (Experimental)
/// </summary>
/// <returns></returns>
public bool IsInitialised() {
return init;
}
/// <summary>
/// Converts the result to boolean (Experimental)
/// </summary>
/// <returns>boolean representation of the result</returns>
public bool ToBool() {
return GetResult().ToBool();
}
/// <summary>
/// Converts the result to color (Experimental)
/// </summary>
/// <returns>color representation of the result</returns>
public Color ToColor() {
return GetResult().ToColor();
}
/// <summary>
/// Converts the result to double (Experimental)
/// </summary>
/// <returns>double representation of the result</returns>
public double ToDouble() {
return GetResult().ToDouble();
}
/// <summary>
/// Converts the result to integer (Experimental)
/// </summary>
/// <returns>integer representation of the result</returns>
public int ToInt() {
return GetResult().ToInt();
}
}
}
@@ -1,59 +1,59 @@
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A simple VerbChunk. Used for storing and executing a bunch of verbs
/// </summary>
public class VerbChunk : IVerbChunk, IVerb {
private readonly List<IVerb> verbs;
/// <summary>
/// Create a new VerbChunk with verbs in it.
/// </summary>
/// <param name="verbs">Verbs to be added to the verb chunk</param>
public VerbChunk(List<IVerb> verbs) {
this.verbs = verbs;
}
/// <summary>
/// Create an empty VerbChunk
/// </summary>
public VerbChunk() {
verbs = new List<IVerb> { };
}
/// <summary>
/// Adds a verb to the verb list
/// </summary>
/// <param name="verb"></param>
public void AddVerb(IVerb verb) {
verbs.Add(verb);
}
/// <summary>
/// Executes all of the verbs in order
/// </summary>
public void ExecuteVerb() {
foreach (IVerb verb in verbs) verb.ExecuteVerb();
}
/// <summary>
/// Returns all of the verbs stored
/// </summary>
/// <returns>the verbs stored</returns>
public IVerb[] GetVerbs() {
return verbs.ToArray();
}
/// <summary>
/// Gets a description of every verb
/// </summary>
/// <returns>The descriptions of every verb</returns>
public string GetDescription() {
string s = "VerbChunk Start";
foreach (IVerb verb in verbs) s += "\n" + verb.GetDescription();
return s + "\n" + "VerbChunk End";
}
}
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A simple VerbChunk. Used for storing and executing a bunch of verbs
/// </summary>
public class VerbChunk : IVerbChunk, IVerb {
private readonly List<IVerb> verbs;
/// <summary>
/// Create a new VerbChunk with verbs in it.
/// </summary>
/// <param name="verbs">Verbs to be added to the verb chunk</param>
public VerbChunk(List<IVerb> verbs) {
this.verbs = verbs;
}
/// <summary>
/// Create an empty VerbChunk
/// </summary>
public VerbChunk() {
verbs = new List<IVerb> { };
}
/// <summary>
/// Adds a verb to the verb list
/// </summary>
/// <param name="verb"></param>
public void AddVerb(IVerb verb) {
verbs.Add(verb);
}
/// <summary>
/// Executes all of the verbs in order
/// </summary>
public void ExecuteVerb() {
foreach (IVerb verb in verbs) verb.ExecuteVerb();
}
/// <summary>
/// Returns all of the verbs stored
/// </summary>
/// <returns>the verbs stored</returns>
public IVerb[] GetVerbs() {
return verbs.ToArray();
}
/// <summary>
/// Gets a description of every verb
/// </summary>
/// <returns>The descriptions of every verb</returns>
public string GetDescription() {
string s = "VerbChunk Start";
foreach (IVerb verb in verbs) s += "\n" + verb.GetDescription();
return s + "\n" + "VerbChunk End";
}
}
}
@@ -1,45 +1,45 @@
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A Chunk that loops over its code
/// </summary>
public class WhileChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, weather the loop should continue to execute.</param>
public WhileChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, weather the loop should continue to execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line. (Probably a bad idea)</param>
public WhileChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes every verb in the chunk
/// </summary>
public new void ExecuteVerb() {
valueStorage.IncreaseStack();
while (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary>
/// A Chunk that loops over its code
/// </summary>
public class WhileChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional;
private readonly ValueStorage valueStorage;
/// <summary>
/// A For Loop object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, weather the loop should continue to execute.</param>
public WhileChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Create a new if object
/// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, weather the loop should continue to execute.</param>
/// <param name="oneLineVerb">A verb to execute in a single line. (Probably a bad idea)</param>
public WhileChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional;
this.valueStorage = valueStorage;
valueStorage.IncreaseStack();
}
/// <summary>
/// Executes every verb in the chunk
/// </summary>
public new void ExecuteVerb() {
valueStorage.IncreaseStack();
while (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack();
}
}
}
@@ -1,19 +1,19 @@
namespace Advanced_Software_Engineering {
/// <summary>
/// IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines, some verbs will assign
/// </summary>
public interface IVerb {
/// <summary>
/// This executes the IVerb to the drawer inside it.
/// </summary>
void ExecuteVerb();
/// <summary>
/// The description of what the IVerb will do.
/// </summary>
/// <returns>A string description of what the IVerb will do</returns>
string GetDescription();
}
namespace Advanced_Software_Engineering {
/// <summary>
/// IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines, some verbs will assign
/// </summary>
public interface IVerb {
/// <summary>
/// This executes the IVerb to the drawer inside it.
/// </summary>
void ExecuteVerb();
/// <summary>
/// The description of what the IVerb will do.
/// </summary>
/// <returns>A string description of what the IVerb will do</returns>
string GetDescription();
}
}
@@ -1,143 +1,143 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Declares a variable
/// </summary>
public class DeclareVariable : IVerb {
private readonly ValueStorage storage;
private readonly IValue value;
private readonly string name;
//Common characters that people might try
private static readonly char[] illegalCharacters = "1234567890!?/+- \"'@#~;:><,.`¬|[]{}\\£$%^&*()".ToCharArray();
private static readonly string[] illegalNames =
{ "var",
"move", "moveto",
"drawto", "line", "lineto",
"regularpolygon", "rp",
"square",
"quadrilateral",
"rectangle",
"circle",
"triangle",
"dot",
"clear",
"reset", "resetpen",
"fillon", "filloff",
"pen",
"fill",
"if", "def", "ret"
};
/// <summary>
/// Checks if the name provided is valid
/// </summary>
/// <param name="name">The name of the variable</param>
/// <returns>True if the name is valid, otherwise false</returns>
private bool CheckName(string name) {
foreach (char character in illegalCharacters) {
if (name.Contains(character.ToString())) return false;
}
foreach (string illegalName in illegalNames) {
if (illegalName == name) return false;
}
return true;
}
/// <summary>
/// Creates a new Declare variable
/// </summary>
/// <param name="storage">The storage to use</param>
/// <param name="assignment">The assignment</param>
public DeclareVariable(ValueStorage storage, string assignment) {
this.storage = storage;
//seperate assignment characters from everything else
foreach (string op in new string[] { "=", "+", "-", "*", "/" }) {
assignment = assignment.Replace(op, " " + op + " ");
}
// Get variable name
// assignment looks something like this at this point:
// i = 20
// or
// i = 2 = 5
// so after splitting it should look like
// ["i", "=", "20"]
assignment = HelperFunctions.Strip(assignment);
//seperate on spaces
string[] assignmentStrings = HelperFunctions.StripStringArray(assignment.Split(" "[0])).ToArray();
//check if is actually assignment
if (assignmentStrings.Length > 1 && !(assignmentStrings[1] == "=")) throw new Exception("No assignment in " + assignment);
name = assignmentStrings[0];
if (storage.CheckVariableExists(name)) throw new Exception("Declaration failed. " + name + " has been declared before");
if (!CheckName(name)) throw new Exception("'" + name + "' name not allowed");
//preassign name
storage.SetVariable(name, null);
//for single number assignments ["i", "=", "20"]
if (assignmentStrings.Length == 3) value = ValueFactory.CreateValue(storage, assignmentStrings[2]);
//for expressions ["i", "=", "20", "+", "30"]
//or some comparisons ["i", "=", "20", ">", "30"]
else if (assignmentStrings.Length == 5) {
string op = assignmentStrings[3];
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[4]);
switch (op) {
case "+":
case "-":
case "/":
case "*":
value = new ExpressionValue(value1, value2, op);
break;
case ">":
case "<":
case "=":
case "!":
value = new ComparisonValue(value1, value2, op);
break;
default:
throw new Exception("Bad operation");
}
}
}
/// <summary>
/// Sets the variable to null
/// </summary>
public void ExecuteVerb() {
if (value != null) storage.SetVariable(name, value.Clone());
else storage.SetVariable(name, value);
}
/// <summary>
/// Gets the description of the verb
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Declares the variable " + name;
}
/// <summary>
/// Gets the name of the variable to assign
/// </summary>
/// <returns></returns>
public string GetName() {
return name;
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Declares a variable
/// </summary>
public class DeclareVariable : IVerb {
private readonly ValueStorage storage;
private readonly IValue value;
private readonly string name;
//Common characters that people might try
private static readonly char[] illegalCharacters = "1234567890!?/+- \"'@#~;:><,.`¬|[]{}\\£$%^&*()".ToCharArray();
private static readonly string[] illegalNames =
{ "var",
"move", "moveto",
"drawto", "line", "lineto",
"regularpolygon", "rp",
"square",
"quadrilateral",
"rectangle",
"circle",
"triangle",
"dot",
"clear",
"reset", "resetpen",
"fillon", "filloff",
"pen",
"fill",
"if", "def", "ret"
};
/// <summary>
/// Checks if the name provided is valid
/// </summary>
/// <param name="name">The name of the variable</param>
/// <returns>True if the name is valid, otherwise false</returns>
private bool CheckName(string name) {
foreach (char character in illegalCharacters) {
if (name.Contains(character.ToString())) return false;
}
foreach (string illegalName in illegalNames) {
if (illegalName == name) return false;
}
return true;
}
/// <summary>
/// Creates a new Declare variable
/// </summary>
/// <param name="storage">The storage to use</param>
/// <param name="assignment">The assignment</param>
public DeclareVariable(ValueStorage storage, string assignment) {
this.storage = storage;
//seperate assignment characters from everything else
foreach (string op in new string[] { "=", "+", "-", "*", "/" }) {
assignment = assignment.Replace(op, " " + op + " ");
}
// Get variable name
// assignment looks something like this at this point:
// i = 20
// or
// i = 2 = 5
// so after splitting it should look like
// ["i", "=", "20"]
assignment = HelperFunctions.Strip(assignment);
//seperate on spaces
string[] assignmentStrings = HelperFunctions.StripStringArray(assignment.Split(" "[0])).ToArray();
//check if is actually assignment
if (assignmentStrings.Length > 1 && !(assignmentStrings[1] == "=")) throw new Exception("No assignment in " + assignment);
name = assignmentStrings[0];
if (storage.CheckVariableExists(name)) throw new Exception("Declaration failed. " + name + " has been declared before");
if (!CheckName(name)) throw new Exception("'" + name + "' name not allowed");
//preassign name
storage.SetVariable(name, null);
//for single number assignments ["i", "=", "20"]
if (assignmentStrings.Length == 3) value = ValueFactory.CreateValue(storage, assignmentStrings[2]);
//for expressions ["i", "=", "20", "+", "30"]
//or some comparisons ["i", "=", "20", ">", "30"]
else if (assignmentStrings.Length == 5) {
string op = assignmentStrings[3];
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[4]);
switch (op) {
case "+":
case "-":
case "/":
case "*":
value = new ExpressionValue(value1, value2, op);
break;
case ">":
case "<":
case "=":
case "!":
value = new ComparisonValue(value1, value2, op);
break;
default:
throw new Exception("Bad operation");
}
}
}
/// <summary>
/// Sets the variable to null
/// </summary>
public void ExecuteVerb() {
if (value != null) storage.SetVariable(name, value.Clone());
else storage.SetVariable(name, value);
}
/// <summary>
/// Gets the description of the verb
/// </summary>
/// <returns></returns>
public string GetDescription() {
return "Declares the variable " + name;
}
/// <summary>
/// Gets the name of the variable to assign
/// </summary>
/// <returns></returns>
public string GetName() {
return name;
}
}
}
@@ -1,58 +1,58 @@
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// A value
/// </summary>
public interface IValue {
/// <summary>
/// The description of the value
/// </summary>
/// <returns>The description of the IValue</returns>
string GetDescription();
/// <summary>
/// Converts the value to an integer
/// </summary>
/// <returns>the integer representation if the IValue</returns>
int ToInt();
/// <summary>
/// Get the double representation if the IValue
/// </summary>
/// <returns>the double representation if the IValue</returns>
double ToDouble();
/// <summary>
/// Get the boolean representation if the IValue
/// </summary>
/// <returns>the boolean representation if the IValue</returns>
bool ToBool();
/// <summary>
/// Get the color representation if the IValue
/// </summary>
/// <returns>the color representation if the IValue</returns>
Color ToColor();
/// <summary>
/// Gets the original type of the IValue
/// </summary>
/// <returns>original type of the IValue</returns>
string GetOriginalType();
/// <summary>
/// Checks if the IValue is initialised
/// </summary>
/// <returns>True if IValue is initialised</returns>
bool IsInitialised();
/// <summary>
/// Clones the IValue
/// </summary>
/// <returns></returns>
IValue Clone();
}
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// A value
/// </summary>
public interface IValue {
/// <summary>
/// The description of the value
/// </summary>
/// <returns>The description of the IValue</returns>
string GetDescription();
/// <summary>
/// Converts the value to an integer
/// </summary>
/// <returns>the integer representation if the IValue</returns>
int ToInt();
/// <summary>
/// Get the double representation if the IValue
/// </summary>
/// <returns>the double representation if the IValue</returns>
double ToDouble();
/// <summary>
/// Get the boolean representation if the IValue
/// </summary>
/// <returns>the boolean representation if the IValue</returns>
bool ToBool();
/// <summary>
/// Get the color representation if the IValue
/// </summary>
/// <returns>the color representation if the IValue</returns>
Color ToColor();
/// <summary>
/// Gets the original type of the IValue
/// </summary>
/// <returns>original type of the IValue</returns>
string GetOriginalType();
/// <summary>
/// Checks if the IValue is initialised
/// </summary>
/// <returns>True if IValue is initialised</returns>
bool IsInitialised();
/// <summary>
/// Clones the IValue
/// </summary>
/// <returns></returns>
IValue Clone();
}
}
@@ -1,63 +1,63 @@
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Used for updating the variables
/// </summary>
public class UpdateVariable : IVerb {
private ValueStorage storage;
private string name;
private IValue value;
/// <summary>
/// Initilise the object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param>
private void Init(ValueStorage storage, string name, IValue value) {
this.name = name;
this.value = value;
this.storage = storage;
}
/// <summary>
/// Create a new UpdateVariable object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param>
public UpdateVariable(ValueStorage storage, string name, IValue value) {
Init(storage, name, value);
}
/// <summary>
/// Create a new UpdateVariable object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The expression of the value</param>
public UpdateVariable(ValueStorage storage, string name, string value) {
// incoming values look something like this "= 10"
// or "= 10 + i"
Init(storage, name, ValueHelper.ConvertToIValue(value, storage));
}
/// <summary>
/// Executes the verb and updates the variable
/// </summary>
public void ExecuteVerb() {
if (!storage.CheckVariableExists(name)) throw new Exception("Cannot update variable because it is not declared");
storage.SetVariable(name, value.Clone());
}
/// <summary>
/// Gets the description of the update
/// </summary>
/// <returns>A string representation of the description of the update</returns>
public string GetDescription() {
return "Updates " + name + " to " + value;
}
}
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Used for updating the variables
/// </summary>
public class UpdateVariable : IVerb {
private ValueStorage storage;
private string name;
private IValue value;
/// <summary>
/// Initilise the object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param>
private void Init(ValueStorage storage, string name, IValue value) {
this.name = name;
this.value = value;
this.storage = storage;
}
/// <summary>
/// Create a new UpdateVariable object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param>
public UpdateVariable(ValueStorage storage, string name, IValue value) {
Init(storage, name, value);
}
/// <summary>
/// Create a new UpdateVariable object
/// </summary>
/// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param>
/// <param name="value">The expression of the value</param>
public UpdateVariable(ValueStorage storage, string name, string value) {
// incoming values look something like this "= 10"
// or "= 10 + i"
Init(storage, name, ValueHelper.ConvertToIValue(value, storage));
}
/// <summary>
/// Executes the verb and updates the variable
/// </summary>
public void ExecuteVerb() {
if (!storage.CheckVariableExists(name)) throw new Exception("Cannot update variable because it is not declared");
storage.SetVariable(name, value.Clone());
}
/// <summary>
/// Gets the description of the update
/// </summary>
/// <returns>A string representation of the description of the update</returns>
public string GetDescription() {
return "Updates " + name + " to " + value;
}
}
}
@@ -1,28 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Advanced_Software_Engineering.Verbs.Value {
class ValueContainer {
Dictionary<string, IValue> variables = new Dictionary<string, IValue>();
public ValueContainer() {
}
public void SetVariable(string variableName, IValue iValue) {
if (variables.ContainsKey(variableName)) ;
}
public void DeclareVariable(string variableName, IValue iValue) {
}
public void DeclareAndSetVariable(string variableName, IValue iValue) {
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Advanced_Software_Engineering.Verbs.Value {
class ValueContainer {
Dictionary<string, IValue> variables = new Dictionary<string, IValue>();
public ValueContainer() {
}
public void SetVariable(string variableName, IValue iValue) {
if (variables.ContainsKey(variableName)) ;
}
public void DeclareVariable(string variableName, IValue iValue) {
}
public void DeclareAndSetVariable(string variableName, IValue iValue) {
}
}
}
@@ -1,124 +1,124 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Value factory creates values
/// </summary>
public class ValueFactory {
/// <summary>
/// Creates a constant Value to be used later during execution
/// </summary>
/// <param name="value">Text representation of the value</param>
/// <param name="type">What type the value should be</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(string value, string type) {
switch (type) {
case "int":
return new IntValue(ValueHelper.ConvertToInt(value));
case "double":
return new DoubleValue(ValueHelper.ConvertToDouble(value));
case "color":
return new ColorValue(ValueHelper.TextToColor(value));
case "bool":
return new BoolValue(ValueHelper.ConvertToBool(value));
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color
/// </summary>
/// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param>
/// <param name="parameter4">Fourth parameter</param>
/// <param name="type">the type</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string parameter4, string type) {
switch (type) {
case "color":
IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3);
IValue p4 = CreateValue(storage, parameter4);
return new ColorValue(p1, p2, p3, p4);
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color
/// </summary>
/// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param>
/// <param name="type">the type</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string type) {
switch (type) {
case "color":
IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3);
return new ColorValue(p1, p2, p3);
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution
/// </summary>
/// <param name="value">Text representation of the value</param>
/// <param name="storage">The value storage to check</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string value) {
value = HelperFunctions.Strip(value);
if (storage.CheckVariableExists(value)) return new VariableValue(storage, value);
else return ValueHelper.ConvertToIValue(value, storage);
}
/// <summary>
/// Create a new boolean IValue
/// </summary>
/// <param name="b">boolean input</param>
/// <returns><see cref="BoolValue"/></returns>
public static IValue CreateValue(bool b) {
return new BoolValue(b);
}
/// <summary>
/// Create a new double IValue
/// </summary>
/// <param name="d">double input</param>
/// <returns><see cref="DoubleValue"/></returns>
public static IValue CreateValue(double d) {
return new DoubleValue(d);
}
/// <summary>
/// Create a new int IValue
/// </summary>
/// <param name="i">int input</param>
/// <returns><see cref="IntValue"/></returns>
public static IValue CreateValue(int i) {
return new IntValue(i);
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Value factory creates values
/// </summary>
public class ValueFactory {
/// <summary>
/// Creates a constant Value to be used later during execution
/// </summary>
/// <param name="value">Text representation of the value</param>
/// <param name="type">What type the value should be</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(string value, string type) {
switch (type) {
case "int":
return new IntValue(ValueHelper.ConvertToInt(value));
case "double":
return new DoubleValue(ValueHelper.ConvertToDouble(value));
case "color":
return new ColorValue(ValueHelper.TextToColor(value));
case "bool":
return new BoolValue(ValueHelper.ConvertToBool(value));
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color
/// </summary>
/// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param>
/// <param name="parameter4">Fourth parameter</param>
/// <param name="type">the type</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string parameter4, string type) {
switch (type) {
case "color":
IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3);
IValue p4 = CreateValue(storage, parameter4);
return new ColorValue(p1, p2, p3, p4);
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color
/// </summary>
/// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param>
/// <param name="type">the type</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string type) {
switch (type) {
case "color":
IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3);
return new ColorValue(p1, p2, p3);
default:
throw new Exception("Unknown expected type: " + type.ToString());
}
}
/// <summary>
/// Creates a constant Value to be used later during execution
/// </summary>
/// <param name="value">Text representation of the value</param>
/// <param name="storage">The value storage to check</param>
/// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string value) {
value = HelperFunctions.Strip(value);
if (storage.CheckVariableExists(value)) return new VariableValue(storage, value);
else return ValueHelper.ConvertToIValue(value, storage);
}
/// <summary>
/// Create a new boolean IValue
/// </summary>
/// <param name="b">boolean input</param>
/// <returns><see cref="BoolValue"/></returns>
public static IValue CreateValue(bool b) {
return new BoolValue(b);
}
/// <summary>
/// Create a new double IValue
/// </summary>
/// <param name="d">double input</param>
/// <returns><see cref="DoubleValue"/></returns>
public static IValue CreateValue(double d) {
return new DoubleValue(d);
}
/// <summary>
/// Create a new int IValue
/// </summary>
/// <param name="i">int input</param>
/// <returns><see cref="IntValue"/></returns>
public static IValue CreateValue(int i) {
return new IntValue(i);
}
}
}
@@ -1,213 +1,212 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// This class contains a large amount of useful conversions
/// </summary>
public class ValueHelper {
/// <summary>
/// Converts string to int (if possible)
/// </summary>
/// <param name="text">String to be converted to int</param>
/// <returns>Integer representation of string</returns>
public static int ConvertToInt(string text) {
text = HelperFunctions.Strip(text);
return int.Parse(text);
}
/// <summary>
/// Converts string to double (if possible)
/// </summary>
/// <param name="text">String to be converted to double</param>
/// <returns>Double representation of string</returns>
public static double ConvertToDouble(string text) {
text = HelperFunctions.Strip(text);
return double.Parse(text);
}
/// <summary>
/// Converts two strings to a point object.
/// </summary>
/// <param name="text1">X parameter</param>
/// <param name="text2">Y parameter</param>
/// <returns>A Point object</returns>
/// <todo>Make unit tests for this function</todo>
public static Point ConvertToPoint(string text1, string text2) {
return new Point(ConvertToInt(text1), ConvertToInt(text2));
}
//TODO: Make unit tests for this function
/// <summary>
/// This function convers text to Color.
/// </summary>
/// <remarks>
/// It can parse several different types of strings.
/// Types of string accepted:
/// - A string that is the name of a predefined color. See <see cref="Color"/> class for full list.
/// - A string that represents a Hex Triplet (<code>#rrggbb</code>). See <see href="https://en.wikipedia.org/wiki/Web_colors#Hex_triplet"/>.
/// - A string that represents a Hex Quadruplet (<code>#rrggbbaa</code>, where <code>aa</code> represents alpha).
/// </remarks>
/// <example>
/// Color tmp = TextToColor("red");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "red"
///
/// tmp = TextToColor("deadbe");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "00deadbe"
///
/// //It's important to remember that C# doesn't work like HTML colors, putting alpha first, rather than last.
///
/// tmp = TextToColor("deadbeef");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "efdeadbe"
/// </example>
///
/// <param name="text">a string with a valid name or format</param>
/// <returns>color of the string</returns>
public static Color TextToColor(string text) {
Color color = Color.FromName(text);
if (color.IsKnownColor) return color;
if (text.StartsWith("#"))
text = text.Substring(1);
switch (text.Length) {
case 6:
return Color.FromArgb(
int.Parse(text.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
case 8:
return Color.FromArgb(
int.Parse(text.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
default:
throw new Exception("Color not valid");
}
}
/// <summary>
/// Generate a color from RGB(A) int values
/// </summary>
/// <param name="r">Red</param>
/// <param name="g">Green</param>
/// <param name="b">Blue</param>
/// <param name="a">Optional: Alpha/Transparancy (default is 255, 0 is transparent)</param>
/// <returns></returns>
public static Color IntsToColor(int r, int g, int b, int a = 255) {
return Color.FromArgb(a, r, g, b);
}
/// <summary>
/// Convert to boolean
/// </summary>
/// <param name="text">A text boolean</param>
/// <returns>boolean representation of the text</returns>
public static bool ConvertToBool(string text) {
switch (text) {
case "true":
case "1":
case "on":
return true;
case "false":
case "0":
case "off":
return false;
default:
throw new Exception("Invalid input");
}
}
/// <summary>
/// Converts the text to IValue
/// </summary>
/// <param name="text">text to convert</param>
/// <param name="storage">storage to use (can be null) (optional)</param>
/// <returns>An IValue representation of the text</returns>
public static IValue ConvertToIValue(string text, ValueStorage storage = null) {
text = HelperFunctions.Strip(text);
string value = text;
//seperate assignment characters from everything else TODO FIX
foreach (string op in new string[] { "=", "+", "-", "*", "/", "<", ">", "!" }) {
value = value.Replace(op, " " + op + " ");
}
bool removedFirstChar = false;
value = HelperFunctions.Strip(value);
if (value[0] == "="[0]) {
value = value.Substring(1);
removedFirstChar = true;
}
// now will definitly look like this:
// 10 + i or i
string[] assignmentStrings = HelperFunctions.StripStringArray(value.Split(" "[0])).ToArray();
//No assignmnet
if (!text.Contains("#")) {
//Check if string is a number
if (!text.Contains(".")) {
try {
return ValueFactory.CreateValue(text, "int");
} catch (Exception) { }
}
//Check if string is a double
else {
try {
return ValueFactory.CreateValue(text, "double");
} catch (Exception) { }
}
//Check if color
try {
return ValueFactory.CreateValue(text, "color");
} catch (Exception) { }
//check for expression
if (storage != null) {
try {
// assignmentStrings will look something like this:
// ["i"] or ["10", "+", "i"]
if (assignmentStrings.Length == 1 && removedFirstChar) return ValueFactory.CreateValue(storage, assignmentStrings[0]);
else if (assignmentStrings.Length == 3) {
// assignmentStrings looks like this => ["10", "+", "i"]
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
string op = assignmentStrings[1];
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
return new ExpressionValue(value1, value2, op);
}
} catch (Exception) { }
}
} else {
//Check if color
try {
return ValueFactory.CreateValue(text, "color");
} catch (Exception) { }
}
if (storage != null) {
// Check if string is a comparison
// assignmentStrings will look something like this:
// ["i"] or ["10", "=", "i"]
if (assignmentStrings.Length == 3) {
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
string op = assignmentStrings[1];
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
return new ComparisonValue(value1, value2, op);
}
}
throw new Exception("Could not convert " + text + " to any type");
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// This class contains a large amount of useful conversions
/// </summary>
public class ValueHelper {
/// <summary>
/// Converts string to int (if possible)
/// </summary>
/// <param name="text">String to be converted to int</param>
/// <returns>Integer representation of string</returns>
public static int ConvertToInt(string text) {
text = HelperFunctions.Strip(text);
return int.Parse(text);
}
/// <summary>
/// Converts string to double (if possible)
/// </summary>
/// <param name="text">String to be converted to double</param>
/// <returns>Double representation of string</returns>
public static double ConvertToDouble(string text) {
text = HelperFunctions.Strip(text);
return double.Parse(text);
}
/// <summary>
/// Converts two strings to a point object.
/// </summary>
/// <param name="text1">X parameter</param>
/// <param name="text2">Y parameter</param>
/// <returns>A Point object</returns>
/// <todo>Make unit tests for this function</todo>
public static Point ConvertToPoint(string text1, string text2) {
return new Point(ConvertToInt(text1), ConvertToInt(text2));
}
//TODO: Make unit tests for this function
/// <summary>
/// This function convers text to Color.
/// </summary>
/// <remarks>
/// It can parse several different types of strings.
/// Types of string accepted:
/// - A string that is the name of a predefined color. See <see cref="Color"/> class for full list.
/// - A string that represents a Hex Triplet (<code>#rrggbb</code>). See <see href="https://en.wikipedia.org/wiki/Web_colors#Hex_triplet"/>.
/// - A string that represents a Hex Quadruplet (<code>#rrggbbaa</code>, where <code>aa</code> represents alpha).
/// </remarks>
/// <example>
/// Color tmp = TextToColor("red");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "red"
///
/// tmp = TextToColor("deadbe");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "00deadbe"
///
/// //It's important to remember that C# doesn't work like HTML colors, putting alpha first, rather than last.
///
/// tmp = TextToColor("deadbeef");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "efdeadbe"
/// </example>
///
/// <param name="text">a string with a valid name or format</param>
/// <returns>color of the string</returns>
public static Color TextToColor(string text) {
Color color = Color.FromName(text);
if (color.IsKnownColor) return color;
if (text.StartsWith("#"))
text = text.Substring(1);
switch (text.Length) {
case 6:
return Color.FromArgb(
int.Parse(text.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
case 8:
return Color.FromArgb(
int.Parse(text.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
default:
throw new Exception("Color not valid");
}
}
/// <summary>
/// Generate a color from RGB(A) int values
/// </summary>
/// <param name="r">Red</param>
/// <param name="g">Green</param>
/// <param name="b">Blue</param>
/// <param name="a">Optional: Alpha/Transparancy (default is 255, 0 is transparent)</param>
/// <returns></returns>
public static Color IntsToColor(int r, int g, int b, int a = 255) {
return Color.FromArgb(a, r, g, b);
}
/// <summary>
/// Convert to boolean
/// </summary>
/// <param name="text">A text boolean</param>
/// <returns>boolean representation of the text</returns>
public static bool ConvertToBool(string text) {
switch (text) {
case "true":
case "1":
case "on":
return true;
case "false":
case "0":
case "off":
return false;
default:
throw new Exception("Invalid input");
}
}
/// <summary>
/// Converts the text to IValue
/// </summary>
/// <param name="text">text to convert</param>
/// <param name="storage">storage to use (can be null) (optional)</param>
/// <returns>An IValue representation of the text</returns>
public static IValue ConvertToIValue(string text, ValueStorage storage = null) {
text = HelperFunctions.Strip(text);
string value = text;
foreach (string op in new string[] { "=", "+", "-", "*", "/", "<", ">", "!" }) {
value = value.Replace(op, " " + op + " ");
}
bool removedFirstChar = false;
value = HelperFunctions.Strip(value);
if (value[0] == "="[0]) {
value = value.Substring(1);
removedFirstChar = true;
}
// now will definitly look like this:
// 10 + i or i
string[] assignmentStrings = HelperFunctions.StripStringArray(value.Split(" "[0])).ToArray();
//No assignmnet
if (!text.Contains("#")) {
//Check if string is a number
if (!text.Contains(".")) {
try {
return ValueFactory.CreateValue(text, "int");
} catch (Exception) { }
}
//Check if string is a double
else {
try {
return ValueFactory.CreateValue(text, "double");
} catch (Exception) { }
}
//Check if color
try {
return ValueFactory.CreateValue(text, "color");
} catch (Exception) { }
//check for expression
if (storage != null) {
try {
// assignmentStrings will look something like this:
// ["i"] or ["10", "+", "i"]
if (assignmentStrings.Length == 1 && removedFirstChar) return ValueFactory.CreateValue(storage, assignmentStrings[0]);
else if (assignmentStrings.Length == 3) {
// assignmentStrings looks like this => ["10", "+", "i"]
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
string op = assignmentStrings[1];
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
return new ExpressionValue(value1, value2, op);
}
} catch (Exception) { }
}
} else {
//Check if color
try {
return ValueFactory.CreateValue(text, "color");
} catch (Exception) { }
}
if (storage != null) {
// Check if string is a comparison
// assignmentStrings will look something like this:
// ["i"] or ["10", "=", "i"]
if (assignmentStrings.Length == 3) {
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
string op = assignmentStrings[1];
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
return new ComparisonValue(value1, value2, op);
}
}
throw new Exception("Could not convert " + text + " to any type");
}
}
}
@@ -1,70 +1,70 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
internal class ColorValue : IValue {
private readonly IValue r;
private readonly IValue g;
private readonly IValue b;
private readonly bool hasAlpha;
private readonly IValue a;
public ColorValue(Color value) {
r = new IntValue(value.R);
g = new IntValue(value.G);
b = new IntValue(value.B);
a = new IntValue(value.A);
hasAlpha = true;
}
public ColorValue(IValue r, IValue g, IValue b, IValue a) {
this.r = r;
this.g = g;
this.b = b;
this.a = a;
hasAlpha = true;
}
public ColorValue(IValue r, IValue g, IValue b) {
this.r = r;
this.g = g;
this.b = b;
hasAlpha = false;
}
public string GetDescription() {
return "A color value";
}
public string GetOriginalType() {
return "color";
}
public bool ToBool() {
return ToColor().GetBrightness() > 0.5;
}
public Color ToColor() {
if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt());
else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt());
}
public double ToDouble() {
return ToColor().GetBrightness();
}
public int ToInt() {
return ToColor().ToArgb();
}
public bool IsInitialised() {
return true;
}
public IValue Clone() {
return new ColorValue(this.ToColor());
}
}
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
internal class ColorValue : IValue {
private readonly IValue r;
private readonly IValue g;
private readonly IValue b;
private readonly bool hasAlpha;
private readonly IValue a;
public ColorValue(Color value) {
r = new IntValue(value.R);
g = new IntValue(value.G);
b = new IntValue(value.B);
a = new IntValue(value.A);
hasAlpha = true;
}
public ColorValue(IValue r, IValue g, IValue b, IValue a) {
this.r = r;
this.g = g;
this.b = b;
this.a = a;
hasAlpha = true;
}
public ColorValue(IValue r, IValue g, IValue b) {
this.r = r;
this.g = g;
this.b = b;
hasAlpha = false;
}
public string GetDescription() {
return "A color value";
}
public string GetOriginalType() {
return "color";
}
public bool ToBool() {
return ToColor().GetBrightness() > 0.5;
}
public Color ToColor() {
if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt());
else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt());
}
public double ToDouble() {
return ToColor().GetBrightness();
}
public int ToInt() {
return ToColor().ToArgb();
}
public bool IsInitialised() {
return true;
}
public IValue Clone() {
return new ColorValue(this.ToColor());
}
}
}
@@ -1,46 +1,46 @@
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
/// <summary>
/// A point IValue. Simply the same as <see cref="Point"/> but with IValues intstead of ints.
/// </summary>
public class PointValue {
private readonly IValue x;
private readonly IValue y;
/// <summary>
/// Create a new PointValue
/// </summary>
/// <param name="x">X IValue</param>
/// <param name="y">Y IValue</param>
public PointValue(IValue x, IValue y) {
this.x = x;
this.y = y;
}
/// <summary>
/// Get the X component
/// </summary>
/// <returns>the X component</returns>
public int GetX() {
return x.ToInt();
}
/// <summary>
/// Get the Y component
/// </summary>
/// <returns>the Y component</returns>
public int GetY() {
return y.ToInt();
}
/// <summary>
/// Get the <see cref="Point"/>.
/// </summary>
/// <returns><see cref="Point"/></returns>
public Point GetPoint() {
return new Point(GetX(), GetY());
}
}
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
/// <summary>
/// A point IValue. Simply the same as <see cref="Point"/> but with IValues intstead of ints.
/// </summary>
public class PointValue {
private readonly IValue x;
private readonly IValue y;
/// <summary>
/// Create a new PointValue
/// </summary>
/// <param name="x">X IValue</param>
/// <param name="y">Y IValue</param>
public PointValue(IValue x, IValue y) {
this.x = x;
this.y = y;
}
/// <summary>
/// Get the X component
/// </summary>
/// <returns>the X component</returns>
public int GetX() {
return x.ToInt();
}
/// <summary>
/// Get the Y component
/// </summary>
/// <returns>the Y component</returns>
public int GetY() {
return y.ToInt();
}
/// <summary>
/// Get the <see cref="Point"/>.
/// </summary>
/// <returns><see cref="Point"/></returns>
public Point GetPoint() {
return new Point(GetX(), GetY());
}
}
}
@@ -1,144 +1,144 @@
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// The storage for all the values
/// </summary>
public class ValueStorage {
private int currentStack;
/// <summary>
/// The list is structured something like this:
/// <code>
/// {stack, stack, stack stack}
/// </code>
/// Where 'stack' is a dictionary of the names and the values of the variables
/// </summary>
private List<Dictionary<string, IValue>> Variables;
/// <summary>
/// Create a new ValueStorage
/// </summary>
public ValueStorage() {
Reset();
}
/// <summary>
/// Reset the ValueStorage
/// </summary>
public void Reset() {
Variables = new List<Dictionary<string, IValue>> {
new Dictionary<string, IValue>()
};
currentStack = 0;
}
/// <summary>
/// Set the ValueStorage stack
/// </summary>
/// <param name="stack">stack number</param>
private void SetStack(int stack) {
if (stack < 0) throw new Exception("Stack cannot be less than 0");
//Decreased Stack
if (currentStack > stack) {
Variables.RemoveAt(currentStack);
}
//Increased Stack
else if (currentStack < stack) {
Variables.Add(new Dictionary<string, IValue>());
}
currentStack = stack;
}
/// <summary>
/// Increase the stack
/// </summary>
public void IncreaseStack() {
SetStack(currentStack + 1);
}
/// <summary>
/// Decrease the stack
/// </summary>
public void DecreaseStack() {
if (currentStack > 0) {
SetStack(currentStack - 1);
}
}
/// <summary>
/// Set a variable
/// </summary>
/// <param name="name">Variable name</param>
/// <param name="stack">the start stack</param>
/// <param name="value">the IValue</param>
private void SetVariable(string name, int stack, IValue value) {
for (int internalStack = stack; internalStack >= 0; internalStack--) {
if (value == null || CheckVariableExists(name, internalStack)) {
Variables[internalStack][name] = value;
return;
}
}
Variables[stack][name] = value;
}
/// <summary>
/// Set a variable
/// </summary>
/// <param name="name">Variable name</param>
/// <param name="value">the IValue</param>
public void SetVariable(string name, IValue value) {
SetVariable(name, currentStack, value);
}
/// <summary>
/// Gets the variable at the specified stack
/// </summary>
/// <param name="name">variable name</param>
/// <param name="stack">stack</param>
/// <returns>IValue</returns>
private IValue GetVariable(string name, int stack) {
return Variables[stack][name];
}
/// <summary>
/// Gets the variable at the first available stack
/// </summary>
/// <param name="name">the names of the variable</param>
/// <returns>IValue</returns>
public IValue GetVariable(string name) {
for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack) && GetVariable(name, stack) != null) return GetVariable(name, stack);
}
throw new Exception("Cannot find variable " + name);
}
/// <summary>
/// Check if the variable exists at the stack specified
/// </summary>
/// <param name="name">variable name</param>
/// <param name="stack">stack</param>
/// <returns>IValue</returns>
private bool CheckVariableExists(string name, int stack) {
if (name == null) return false;
return Variables[stack].ContainsKey(name);
}
/// <summary>
/// Check if the variable exists in the first available stack
/// </summary>
/// <param name="name">variable name</param>
/// <returns>IValue</returns>
public bool CheckVariableExists(string name) {
if (name == null) return false;
for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack)) return true;
}
return false;
}
}
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// The storage for all the values
/// </summary>
public class ValueStorage {
private int currentStack;
/// <summary>
/// The list is structured something like this:
/// <code>
/// {stack, stack, stack stack}
/// </code>
/// Where 'stack' is a dictionary of the names and the values of the variables
/// </summary>
private List<Dictionary<string, IValue>> Variables;
/// <summary>
/// Create a new ValueStorage
/// </summary>
public ValueStorage() {
Reset();
}
/// <summary>
/// Reset the ValueStorage
/// </summary>
public void Reset() {
Variables = new List<Dictionary<string, IValue>> {
new Dictionary<string, IValue>()
};
currentStack = 0;
}
/// <summary>
/// Set the ValueStorage stack
/// </summary>
/// <param name="stack">stack number</param>
private void SetStack(int stack) {
if (stack < 0) throw new Exception("Stack cannot be less than 0");
//Decreased Stack
if (currentStack > stack) {
Variables.RemoveAt(currentStack);
}
//Increased Stack
else if (currentStack < stack) {
Variables.Add(new Dictionary<string, IValue>());
}
currentStack = stack;
}
/// <summary>
/// Increase the stack
/// </summary>
public void IncreaseStack() {
SetStack(currentStack + 1);
}
/// <summary>
/// Decrease the stack
/// </summary>
public void DecreaseStack() {
if (currentStack > 0) {
SetStack(currentStack - 1);
}
}
/// <summary>
/// Set a variable
/// </summary>
/// <param name="name">Variable name</param>
/// <param name="stack">the start stack</param>
/// <param name="value">the IValue</param>
private void SetVariable(string name, int stack, IValue value) {
for (int internalStack = stack; internalStack >= 0; internalStack--) {
if (value == null || CheckVariableExists(name, internalStack)) {
Variables[internalStack][name] = value;
return;
}
}
Variables[stack][name] = value;
}
/// <summary>
/// Set a variable
/// </summary>
/// <param name="name">Variable name</param>
/// <param name="value">the IValue</param>
public void SetVariable(string name, IValue value) {
SetVariable(name, currentStack, value);
}
/// <summary>
/// Gets the variable at the specified stack
/// </summary>
/// <param name="name">variable name</param>
/// <param name="stack">stack</param>
/// <returns>IValue</returns>
private IValue GetVariable(string name, int stack) {
return Variables[stack][name];
}
/// <summary>
/// Gets the variable at the first available stack
/// </summary>
/// <param name="name">the names of the variable</param>
/// <returns>IValue</returns>
public IValue GetVariable(string name) {
for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack) && GetVariable(name, stack) != null) return GetVariable(name, stack);
}
throw new Exception("Cannot find variable " + name);
}
/// <summary>
/// Check if the variable exists at the stack specified
/// </summary>
/// <param name="name">variable name</param>
/// <param name="stack">stack</param>
/// <returns>IValue</returns>
private bool CheckVariableExists(string name, int stack) {
if (name == null) return false;
return Variables[stack].ContainsKey(name);
}
/// <summary>
/// Check if the variable exists in the first available stack
/// </summary>
/// <param name="name">variable name</param>
/// <returns>IValue</returns>
public bool CheckVariableExists(string name) {
if (name == null) return false;
for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack)) return true;
}
return false;
}
}
}
@@ -1,53 +1,53 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class BoolValue : IValue {
private readonly bool initialised = false;
private readonly bool value;
public BoolValue(bool value) {
this.value = value;
initialised = true;
}
public BoolValue() {
}
public string GetDescription() {
if (initialised) return "boolean of value " + value.ToString();
else return "an unset boolean value";
}
public string GetOriginalType() {
return "bool";
}
public bool ToBool() {
if (initialised) return value;
else throw new Exception("Not initilised");
}
public Color ToColor() {
return ToBool() ? Color.White : Color.Black;
}
public double ToDouble() {
return ToBool() ? 1d : 0d;
}
public int ToInt() {
return ToBool() ? 1 : 0;
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new BoolValue(value);
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class BoolValue : IValue {
private readonly bool initialised = false;
private readonly bool value;
public BoolValue(bool value) {
this.value = value;
initialised = true;
}
public BoolValue() {
}
public string GetDescription() {
if (initialised) return "boolean of value " + value.ToString();
else return "an unset boolean value";
}
public string GetOriginalType() {
return "bool";
}
public bool ToBool() {
if (initialised) return value;
else throw new Exception("Not initilised");
}
public Color ToColor() {
return ToBool() ? Color.White : Color.Black;
}
public double ToDouble() {
return ToBool() ? 1d : 0d;
}
public int ToInt() {
return ToBool() ? 1 : 0;
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new BoolValue(value);
}
}
}
@@ -1,80 +1,80 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class ComparisonValue : IValue {
private readonly string op;
private readonly IValue value1;
private readonly IValue value2;
public ComparisonValue(IValue value1, IValue value2, string op) {
this.value1 = value1;
this.value2 = value2;
switch (op) {
case "=":
case "!":
case ">":
case "<":
break;
default:
throw new Exception("Invalid operation");
}
this.op = op;
}
public string GetDescription() {
return "Compare two values";
}
public string GetOriginalType() {
return Evaluate().GetOriginalType();
}
public bool IsInitialised() {
return true;
}
private IValue Evaluate() {
switch (op) {
case "=":
return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt());
case "!":
return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt());
case ">":
return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt());
case "<":
return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt());
default:
throw new Exception("Bad operator");
}
}
public bool ToBool() {
return Evaluate().ToBool();
}
public Color ToColor() {
return Evaluate().ToColor();
}
public double ToDouble() {
return Evaluate().ToDouble();
}
public int ToInt() {
return Evaluate().ToInt();
}
public IValue Clone() {
return new ComparisonValue(value1, value2, op);
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class ComparisonValue : IValue {
private readonly string op;
private readonly IValue value1;
private readonly IValue value2;
public ComparisonValue(IValue value1, IValue value2, string op) {
this.value1 = value1;
this.value2 = value2;
switch (op) {
case "=":
case "!":
case ">":
case "<":
break;
default:
throw new Exception("Invalid operation");
}
this.op = op;
}
public string GetDescription() {
return "Compare two values";
}
public string GetOriginalType() {
return Evaluate().GetOriginalType();
}
public bool IsInitialised() {
return true;
}
private IValue Evaluate() {
switch (op) {
case "=":
return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt());
case "!":
return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt());
case ">":
return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt());
case "<":
return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt());
default:
throw new Exception("Bad operator");
}
}
public bool ToBool() {
return Evaluate().ToBool();
}
public Color ToColor() {
return Evaluate().ToColor();
}
public double ToDouble() {
return Evaluate().ToDouble();
}
public int ToInt() {
return Evaluate().ToInt();
}
public IValue Clone() {
return new ComparisonValue(value1, value2, op);
}
}
}
@@ -1,57 +1,57 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class DoubleValue : IValue {
private readonly bool initialised = false;
private bool colorValueCacheAvailable = false;
private Color colorValueCache;
private readonly double value;
public DoubleValue(double value) {
this.value = value;
}
public string GetDescription() {
return "an double value of " + value;
}
public string GetOriginalType() {
return "double";
}
public bool ToBool() {
return value > 0;
}
public Color ToColor() {
if (!colorValueCacheAvailable) {
int i = (int)Math.Round(value * 255);
i = Math.Min(255, i);
if (i < 0) i = 0;
colorValueCache = ValueHelper.IntsToColor(i, i, i);
colorValueCacheAvailable = true;
}
return colorValueCache;
}
public double ToDouble() {
return value;
}
public int ToInt() {
return (int)Math.Round(value);
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new DoubleValue(value);
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class DoubleValue : IValue {
private readonly bool initialised = false;
private bool colorValueCacheAvailable = false;
private Color colorValueCache;
private readonly double value;
public DoubleValue(double value) {
this.value = value;
}
public string GetDescription() {
return "an double value of " + value;
}
public string GetOriginalType() {
return "double";
}
public bool ToBool() {
return value > 0;
}
public Color ToColor() {
if (!colorValueCacheAvailable) {
int i = (int)Math.Round(value * 255);
i = Math.Min(255, i);
if (i < 0) i = 0;
colorValueCache = ValueHelper.IntsToColor(i, i, i);
colorValueCacheAvailable = true;
}
return colorValueCache;
}
public double ToDouble() {
return value;
}
public int ToInt() {
return (int)Math.Round(value);
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new DoubleValue(value);
}
}
}
@@ -1,214 +1,214 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Expression values are used when there are two IValues that need to be added or subtracted or anything from each other.
/// </summary>
public class ExpressionValue : IValue {
/// <summary>
/// An operation denoting addition
/// </summary>
public const int ADD = 0;
/// <summary>
/// An operation denoting subtraction
/// </summary>
public const int SUBTRACT = 1;
/// <summary>
/// An operation denoting multiplication
/// </summary>
public const int MULTIPLY = 2;
/// <summary>
/// An operation denoting division
/// </summary>
public const int DIVIDE = 3;
private readonly IValue variable1;
private readonly IValue variable2;
private readonly int operation;
/// <summary>
/// Create a new Expression Value based on the two IValues
/// </summary>
/// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">IValue to perform the operation on</param>
/// <param name="operation">The operation. Can be <see cref="ADD"/>, <see cref="SUBTRACT"/>, <see cref="MULTIPLY"/> or <see cref="DIVIDE"/>.</param>
public ExpressionValue(IValue variable1, IValue variable2, int operation) {
this.variable1 = variable1;
this.variable2 = variable2;
this.operation = operation;
//Check for bad input
if (operation > 3 && operation < 0) throw new Exception("Bad operation");
}
/// <summary>
/// Create a new Expression Value based on the two IValues
/// </summary>
/// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">IValue to perform the operation on</param>
/// <param name="operation">The operation. Can be "+"(<see cref="ADD"/>), "-"(<see cref="SUBTRACT"/>), "*"(<see cref="MULTIPLY"/>) or "/"(<see cref="DIVIDE"/>).</param>
public ExpressionValue(IValue variable1, IValue variable2, string operation) {
switch (operation) {
case "+":
this.operation = ADD;
break;
case "-":
this.operation = SUBTRACT;
break;
case "*":
this.operation = MULTIPLY;
break;
case "/":
this.operation = DIVIDE;
break;
default:
throw new Exception("Undefined operation");
}
this.variable1 = variable1;
this.variable2 = variable2;
//Check for bad input
if (this.operation > 3 && this.operation < 0) throw new Exception("Bad operation");
}
/// <summary>
/// Evaluates the expression.
/// </summary>
/// <returns>an IValue with the result</returns>
private IValue Evaluate() {
IValue variable1 = this.variable1.Clone();
IValue variable2 = this.variable2.Clone();
IValue evaluatedValue = null;
string outputType = variable1.GetOriginalType();
switch (outputType) {
case "bool":
//operations as standard for bool expressions eg
// (a + b) => a or b, (a * b) => a and b, (a ^ b) => a xor b
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() || variable2.ToBool());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() ^ variable2.ToBool());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() && variable2.ToBool());
else if (operation == DIVIDE) throw new Exception("Bool cannot be divided");
else throw new Exception("Bad operation");
break;
case "int":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable2.ToInt());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() - variable2.ToInt());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() * variable2.ToInt());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable2.ToInt());
else throw new Exception("Bad operation");
break;
case "double":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable2.ToDouble());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() - variable2.ToDouble());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() * variable2.ToDouble());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable2.ToDouble());
else throw new Exception("Bad operation");
break;
case "color":
throw new Exception("Colors are immutable");
}
return evaluatedValue;
}
/// <summary>
/// Describes the expression
/// </summary>
/// <returns>A string description of the expression</returns>
public string GetDescription() {
string operation;
switch (this.operation) {
case ADD:
operation = "added";
break;
case SUBTRACT:
operation = "subtracted";
break;
case MULTIPLY:
operation = "multiplied";
break;
case DIVIDE:
operation = "divided";
break;
default:
throw new Exception("Bad operation");
}
return "Expression of the variables " + variable1 + " and " + variable2 + " being " + operation;
}
/// <summary>
/// Get the type of the expression
/// </summary>
/// <returns>"expression"</returns>
public string GetOriginalType() {
return "expression";
}
/// <summary>
/// Expressions are always initialised
/// </summary>
/// <returns>true</returns>
public bool IsInitialised() {
return true;
}
/// <summary>
/// Gets the bool of the result
/// </summary>
/// <returns>bool value of the result</returns>
public bool ToBool() {
return Evaluate().ToBool();
}
/// <summary>
/// Gets the color of the result
/// </summary>
/// <returns>color value of the result</returns>
public Color ToColor() {
return Evaluate().ToColor();
}
/// <summary>
/// Gets the double value of the result
/// </summary>
/// <returns>double value of the result</returns>
public double ToDouble() {
return Evaluate().ToDouble();
}
/// <summary>
/// Gets the int of the result
/// </summary>
/// <returns>int value of the result</returns>
public int ToInt() {
return Evaluate().ToInt();
}
/// <summary>
/// Clones the value of the result
/// </summary>
/// <returns>A new IValue</returns>
public IValue Clone() {
return Evaluate();
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary>
/// Expression values are used when there are two IValues that need to be added or subtracted or anything from each other.
/// </summary>
public class ExpressionValue : IValue {
/// <summary>
/// An operation denoting addition
/// </summary>
public const int ADD = 0;
/// <summary>
/// An operation denoting subtraction
/// </summary>
public const int SUBTRACT = 1;
/// <summary>
/// An operation denoting multiplication
/// </summary>
public const int MULTIPLY = 2;
/// <summary>
/// An operation denoting division
/// </summary>
public const int DIVIDE = 3;
private readonly IValue variable1;
private readonly IValue variable2;
private readonly int operation;
/// <summary>
/// Create a new Expression Value based on the two IValues
/// </summary>
/// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">IValue to perform the operation on</param>
/// <param name="operation">The operation. Can be <see cref="ADD"/>, <see cref="SUBTRACT"/>, <see cref="MULTIPLY"/> or <see cref="DIVIDE"/>.</param>
public ExpressionValue(IValue variable1, IValue variable2, int operation) {
this.variable1 = variable1;
this.variable2 = variable2;
this.operation = operation;
//Check for bad input
if (operation > 3 && operation < 0) throw new Exception("Bad operation");
}
/// <summary>
/// Create a new Expression Value based on the two IValues
/// </summary>
/// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">IValue to perform the operation on</param>
/// <param name="operation">The operation. Can be "+"(<see cref="ADD"/>), "-"(<see cref="SUBTRACT"/>), "*"(<see cref="MULTIPLY"/>) or "/"(<see cref="DIVIDE"/>).</param>
public ExpressionValue(IValue variable1, IValue variable2, string operation) {
switch (operation) {
case "+":
this.operation = ADD;
break;
case "-":
this.operation = SUBTRACT;
break;
case "*":
this.operation = MULTIPLY;
break;
case "/":
this.operation = DIVIDE;
break;
default:
throw new Exception("Undefined operation");
}
this.variable1 = variable1;
this.variable2 = variable2;
//Check for bad input
if (this.operation > 3 && this.operation < 0) throw new Exception("Bad operation");
}
/// <summary>
/// Evaluates the expression.
/// </summary>
/// <returns>an IValue with the result</returns>
private IValue Evaluate() {
IValue variable1 = this.variable1.Clone();
IValue variable2 = this.variable2.Clone();
IValue evaluatedValue = null;
string outputType = variable1.GetOriginalType();
switch (outputType) {
case "bool":
//operations as standard for bool expressions eg
// (a + b) => a or b, (a * b) => a and b, (a ^ b) => a xor b
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() || variable2.ToBool());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() ^ variable2.ToBool());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() && variable2.ToBool());
else if (operation == DIVIDE) throw new Exception("Bool cannot be divided");
else throw new Exception("Bad operation");
break;
case "int":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable2.ToInt());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() - variable2.ToInt());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() * variable2.ToInt());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable2.ToInt());
else throw new Exception("Bad operation");
break;
case "double":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable2.ToDouble());
else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() - variable2.ToDouble());
else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() * variable2.ToDouble());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable2.ToDouble());
else throw new Exception("Bad operation");
break;
case "color":
throw new Exception("Colors are immutable");
}
return evaluatedValue;
}
/// <summary>
/// Describes the expression
/// </summary>
/// <returns>A string description of the expression</returns>
public string GetDescription() {
string operation;
switch (this.operation) {
case ADD:
operation = "added";
break;
case SUBTRACT:
operation = "subtracted";
break;
case MULTIPLY:
operation = "multiplied";
break;
case DIVIDE:
operation = "divided";
break;
default:
throw new Exception("Bad operation");
}
return "Expression of the variables " + variable1 + " and " + variable2 + " being " + operation;
}
/// <summary>
/// Get the type of the expression
/// </summary>
/// <returns>"expression"</returns>
public string GetOriginalType() {
return "expression";
}
/// <summary>
/// Expressions are always initialised
/// </summary>
/// <returns>true</returns>
public bool IsInitialised() {
return true;
}
/// <summary>
/// Gets the bool of the result
/// </summary>
/// <returns>bool value of the result</returns>
public bool ToBool() {
return Evaluate().ToBool();
}
/// <summary>
/// Gets the color of the result
/// </summary>
/// <returns>color value of the result</returns>
public Color ToColor() {
return Evaluate().ToColor();
}
/// <summary>
/// Gets the double value of the result
/// </summary>
/// <returns>double value of the result</returns>
public double ToDouble() {
return Evaluate().ToDouble();
}
/// <summary>
/// Gets the int of the result
/// </summary>
/// <returns>int value of the result</returns>
public int ToInt() {
return Evaluate().ToInt();
}
/// <summary>
/// Clones the value of the result
/// </summary>
/// <returns>A new IValue</returns>
public IValue Clone() {
return Evaluate();
}
}
}
@@ -1,71 +1,71 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class IntValue : IValue {
private readonly bool initialised = false;
private readonly int value;
private bool doubleValueCacheAvaiable = false;
private double doubleValueCache;
private bool boolValueCacheAvailable = false;
private bool boolValueCache;
private bool colorValueCacheAvailable = false;
private Color colorValueCache;
public IntValue(int value) {
this.value = value;
}
public string GetDescription() {
return "an integer value of " + value;
}
public string GetOriginalType() {
return "int";
}
public bool ToBool() {
if (!boolValueCacheAvailable) {
boolValueCache = value <= 0;
boolValueCacheAvailable = true;
}
return boolValueCache;
}
public Color ToColor() {
if (!colorValueCacheAvailable) {
byte[] bytes = BitConverter.GetBytes(value);
Array.Reverse(bytes);
colorValueCache = ValueHelper.IntsToColor(bytes[1], bytes[2], bytes[3], bytes[0]);
colorValueCacheAvailable = true;
}
return colorValueCache;
}
public double ToDouble() {
if (!doubleValueCacheAvaiable) {
doubleValueCache = value;
doubleValueCacheAvaiable = true;
}
return doubleValueCache;
}
public int ToInt() {
return value;
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new IntValue(value);
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class IntValue : IValue {
private readonly bool initialised = false;
private readonly int value;
private bool doubleValueCacheAvaiable = false;
private double doubleValueCache;
private bool boolValueCacheAvailable = false;
private bool boolValueCache;
private bool colorValueCacheAvailable = false;
private Color colorValueCache;
public IntValue(int value) {
this.value = value;
}
public string GetDescription() {
return "an integer value of " + value;
}
public string GetOriginalType() {
return "int";
}
public bool ToBool() {
if (!boolValueCacheAvailable) {
boolValueCache = value <= 0;
boolValueCacheAvailable = true;
}
return boolValueCache;
}
public Color ToColor() {
if (!colorValueCacheAvailable) {
byte[] bytes = BitConverter.GetBytes(value);
Array.Reverse(bytes);
colorValueCache = ValueHelper.IntsToColor(bytes[1], bytes[2], bytes[3], bytes[0]);
colorValueCacheAvailable = true;
}
return colorValueCache;
}
public double ToDouble() {
if (!doubleValueCacheAvaiable) {
doubleValueCache = value;
doubleValueCacheAvaiable = true;
}
return doubleValueCache;
}
public int ToInt() {
return value;
}
public bool IsInitialised() {
return initialised;
}
public IValue Clone() {
return new IntValue(value);
}
}
}
@@ -1,96 +1,96 @@
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
/// <summary>
/// Variable value is responsible for setting up values for <see cref="UpdateVariable"/> to then update
/// </summary>
public class VariableValue : IValue {
private readonly ValueStorage storage;
private readonly string variableName;
/// <summary>
/// The new VariableValue
/// </summary>
/// <param name="storage">the storage to use</param>
/// <param name="variableName">variable name</param>
public VariableValue(ValueStorage storage, string variableName) {
this.variableName = variableName;
if (!storage.CheckVariableExists(variableName)) throw new Exception("Tried to access " + variableName + " before it was assigned. ");
this.storage = storage;
}
/// <summary>
/// Get the variable value
/// </summary>
/// <returns><see cref="IValue"/></returns>
private IValue Get() {
return storage.GetVariable(variableName);
}
/// <summary>
/// Gets the description of the IValue
/// </summary>
/// <returns>description of the IValue</returns>
public string GetDescription() {
return Get().GetDescription();
}
/// <summary>
/// Gets the original type of the IValue
/// </summary>
/// <returns>original type of the IValue</returns>
public string GetOriginalType() {
return Get().GetOriginalType();
}
/// <summary>
/// Get the initialised state of the IValue
/// </summary>
/// <returns>initialised state of the IValue</returns>
public bool IsInitialised() {
return Get().IsInitialised();
}
/// <summary>
/// Converts the IValue to a boolean
/// </summary>
/// <returns>Boolean value of the IValue</returns>
public bool ToBool() {
return Get().ToBool();
}
/// <summary>
/// Converts the IValue to a color
/// </summary>
/// <returns>Color value of the IValue</returns>
public Color ToColor() {
return Get().ToColor();
}
/// <summary>
/// Converts the IValue to a double
/// </summary>
/// <returns>Double value of the IValue</returns>
public double ToDouble() {
return Get().ToDouble();
}
/// <summary>
/// Converts the IValue to an integer
/// </summary>
/// <returns>Int value of the IValue</returns>
public int ToInt() {
return Get().ToInt();
}
/// <summary>
/// Clone the value and return it
/// </summary>
/// <returns>Cloned IValue</returns>
public IValue Clone() {
return Get().Clone();
}
}
using System;
using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
/// <summary>
/// Variable value is responsible for setting up values for <see cref="UpdateVariable"/> to then update
/// </summary>
public class VariableValue : IValue {
private readonly ValueStorage storage;
private readonly string variableName;
/// <summary>
/// The new VariableValue
/// </summary>
/// <param name="storage">the storage to use</param>
/// <param name="variableName">variable name</param>
public VariableValue(ValueStorage storage, string variableName) {
this.variableName = variableName;
if (!storage.CheckVariableExists(variableName)) throw new Exception("Tried to access " + variableName + " before it was assigned. ");
this.storage = storage;
}
/// <summary>
/// Get the variable value
/// </summary>
/// <returns><see cref="IValue"/></returns>
private IValue Get() {
return storage.GetVariable(variableName);
}
/// <summary>
/// Gets the description of the IValue
/// </summary>
/// <returns>description of the IValue</returns>
public string GetDescription() {
return Get().GetDescription();
}
/// <summary>
/// Gets the original type of the IValue
/// </summary>
/// <returns>original type of the IValue</returns>
public string GetOriginalType() {
return Get().GetOriginalType();
}
/// <summary>
/// Get the initialised state of the IValue
/// </summary>
/// <returns>initialised state of the IValue</returns>
public bool IsInitialised() {
return Get().IsInitialised();
}
/// <summary>
/// Converts the IValue to a boolean
/// </summary>
/// <returns>Boolean value of the IValue</returns>
public bool ToBool() {
return Get().ToBool();
}
/// <summary>
/// Converts the IValue to a color
/// </summary>
/// <returns>Color value of the IValue</returns>
public Color ToColor() {
return Get().ToColor();
}
/// <summary>
/// Converts the IValue to a double
/// </summary>
/// <returns>Double value of the IValue</returns>
public double ToDouble() {
return Get().ToDouble();
}
/// <summary>
/// Converts the IValue to an integer
/// </summary>
/// <returns>Int value of the IValue</returns>
public int ToInt() {
return Get().ToInt();
}
/// <summary>
/// Clone the value and return it
/// </summary>
/// <returns>Cloned IValue</returns>
public IValue Clone() {
return Get().Clone();
}
}
}
@@ -1,367 +1,367 @@
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions;
using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is responsible for creating Verbs.
/// </summary>
public class VerbFactory {
/// <summary>
/// This function returns a IVerb from a command and drawer.
/// </summary>
/// <remarks>
/// This factory is specifically useful since it automatically converts the parameters to what they should be.
/// </remarks>
/// <param name="drawer">The drawer to affect</param>
/// <param name="fullCommand">The command as a string</param>
/// <returns>A IVerb that maches the command</returns>
public static IVerb MakeVerb(Drawer drawer, string fullCommand) {
ValueStorage rootValueStorage = drawer.GetValueStorage();
List<IVerbChunk> verbChunks = drawer.verbChunks;
if (verbChunks.Count == 0) verbChunks.Add(null);
int chunkDepth = verbChunks.Count - 1;
IVerbChunk currentChunk = verbChunks[chunkDepth];
CommandAndParameterParserResult result = HelperFunctions.CommandAndParameterParser(fullCommand);
string command = result.GetCommand();
if (command == null) return new NoOp();
string[] commandParameters = result.GetParameters();
if (command == null) throw new Exception("There is no command to process");
IVerb tmpVerb = null;
bool parsed = false;
//check for names in directory
if (rootValueStorage.CheckVariableExists(command)) {
if (commandParameters.Length == 1) {
tmpVerb = new UpdateVariable(rootValueStorage, command, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
} else throw new Exception(command + "needs something to be assigned to it");
}
//process declarations
if (!(commandParameters == null) && !parsed) {
switch (command) {
case "var":
if (commandParameters.Length == 1) {
tmpVerb = new DeclareVariable(rootValueStorage, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
} else throw new Exception(command + "s need to be initialised");
default:
//assignment
if (rootValueStorage.CheckVariableExists(command)) {
string[] assignmentCommands = command.Split("="[0]);
if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments");
tmpVerb = new UpdateVariable(rootValueStorage, assignmentCommands[0], ValueFactory.CreateValue(rootValueStorage, assignmentCommands[1]));
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
}
break;
}
}
//Parse flow verbs
switch (command) {
case "if":
if (commandParameters.Length == 1) {
verbChunks.Add(new IfChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new IfChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "while":
if (commandParameters.Length == 1) {
verbChunks.Add(new WhileChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new WhileChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "for":
if (commandParameters.Length == 1) {
verbChunks.Add(new ForChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new ForChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "def":
if (drawer.verbChunkGeneratingMethod) throw new Exception("Cannot declare a method while declaring method");
else if (chunkDepth != 0) throw new Exception("Cannot declare a method above root chunk"); //TODO, explain better
else if (commandParameters.Length >= 1) {
rootValueStorage.IncreaseStack();
//All parameters
DeclareVariable[] methodParameters = new DeclareVariable[] { };
//if assignments exist, make them
if (commandParameters.Length > 1) {
List<DeclareVariable> methodParameterList = new List<DeclareVariable>();
for (int index = 1; index < commandParameters.Length; index++) {
methodParameterList.Add(new DeclareVariable(rootValueStorage, commandParameters[index]));
}
methodParameters = methodParameterList.ToArray();
}
//Get method name
string methodName = commandParameters[0];
MethodChunk methodChunk = new MethodChunk(rootValueStorage, methodParameters);
DeclareMethod declareMethod = new DeclareMethod(drawer, methodName);
drawer.Methods.Add(methodName, methodChunk);
verbChunks.Add(declareMethod);
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else throw new Exception(command + " has an incorrect number of parameters");
break;
}
if (!parsed) {
List<IValue> parameters = new List<IValue>();
if (!(commandParameters == null)) foreach (string parameter in commandParameters) {
parameters.Add(ValueFactory.CreateValue(rootValueStorage, parameter));
}
int parameterLength = parameters.Count;
//Check if method
if (drawer.Methods.ContainsKey(command)) {
MethodChunk methodChunk = drawer.Methods[command];
string[] methodVariableNames = methodChunk.GetVariableNames().ToArray();
//Handle errors
if (methodVariableNames.Length != parameterLength) throw new Exception("Method " + command + "Has an incorrect number of parameters");
/* So something like this:
* def abc d
* circle d
*
* abc 5
*
* would have to be translated into something like this
* @increase stack
* var d = 5 (of course in a higher stack)
*
* @run abc (abc doesn't increase it's own stack)
*
*/
// Update the values of the variables
List<UpdateVariable> UpdateVariableList = new List<UpdateVariable>();
for (int variableIndex = 0; variableIndex < methodVariableNames.Length; variableIndex++) {
UpdateVariableList.Add(new UpdateVariable(rootValueStorage, methodVariableNames[variableIndex], parameters[variableIndex]));
}
methodChunk.SetVariableValues(UpdateVariableList.ToArray());
tmpVerb = methodChunk.DuplicateForExecution();
}
//process drawing commands and extras
else switch (command) {
//Drawing commands
case "move":
case "moveto":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new MoveTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "drawto":
case "line":
case "lineto":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new DrawTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "regularpolygon":
case "rp":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], new IntValue(0), new BoolValue(true));
} else if (parameterLength == 3) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], parameters[2], new BoolValue(true));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "square":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new
Square(drawer, parameters[0]);
} else if (parameterLength == 2) {
tmpVerb = new Square(drawer, parameters[0], parameters[1]);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "quadrilateral":
//Check parameters
if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "rectangle":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new Rectangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "circle":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new Circle(drawer, parameters[0]);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "triangle":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new
Triangle(drawer, parameters[0]);
} else if (parameterLength == 2) {
tmpVerb = new
Triangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 6) {
tmpVerb = new Triangle(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "dot":
if (parameterLength == 0) {
tmpVerb = new Dot(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "clear":
if (parameterLength == 0) {
tmpVerb = new Clear(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "reset":
case "resetpen":
if (parameterLength == 0) {
tmpVerb = new ResetPen(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "fillon":
if (parameterLength == 0) {
tmpVerb = new Fill(drawer, true);
} else throw new Exception(command + " doesn't take parameters");
break;
case "filloff":
if (parameterLength == 0) {
tmpVerb = new Fill(drawer, false);
} else throw new Exception(command + " doesn't take parameters");
break;
case "pen":
if (parameterLength == 1) {
tmpVerb = new PenColor(drawer, parameters[0]);
} else if (parameterLength == 3) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2]));
} else if (parameterLength == 4) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "fill":
if (parameterLength == 1) {
tmpVerb = new FillColor(drawer, parameters[0]);
} else if (parameterLength == 3) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], new IntValue(255)));
} else if (parameterLength == 4) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
//exit flow
case "end":
if (parameterLength == 0) {
if (currentChunk == null) throw new Exception("Cannot end at root level"); //Todo, describe better
verbChunks.Remove(currentChunk);
chunkDepth = verbChunks.Count - 1;
if (chunkDepth == 0) drawer.verbChunkGeneratingMethod = false;
tmpVerb = currentChunk;
currentChunk = verbChunks[chunkDepth];
rootValueStorage.DecreaseStack();
} else throw new Exception(command + " doesn't take parameters");
break;
default:
throw new Exception("Unknown command or cannot parse");
}
}
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
}
}
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions;
using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System;
using System.Collections.Generic;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is responsible for creating Verbs.
/// </summary>
public class VerbFactory {
/// <summary>
/// This function returns a IVerb from a command and drawer.
/// </summary>
/// <remarks>
/// This factory is specifically useful since it automatically converts the parameters to what they should be.
/// </remarks>
/// <param name="drawer">The drawer to affect</param>
/// <param name="fullCommand">The command as a string</param>
/// <returns>A IVerb that maches the command</returns>
public static IVerb MakeVerb(Drawer drawer, string fullCommand) {
ValueStorage rootValueStorage = drawer.GetValueStorage();
List<IVerbChunk> verbChunks = drawer.verbChunks;
if (verbChunks.Count == 0) verbChunks.Add(null);
int chunkDepth = verbChunks.Count - 1;
IVerbChunk currentChunk = verbChunks[chunkDepth];
CommandAndParameterParserResult result = HelperFunctions.CommandAndParameterParser(fullCommand);
string command = result.GetCommand();
if (command == null) return new NoOp();
string[] commandParameters = result.GetParameters();
if (command == null) throw new Exception("There is no command to process");
IVerb tmpVerb = null;
bool parsed = false;
//check for names in directory
if (rootValueStorage.CheckVariableExists(command)) {
if (commandParameters.Length == 1) {
tmpVerb = new UpdateVariable(rootValueStorage, command, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
} else throw new Exception(command + "needs something to be assigned to it");
}
//process declarations
if (!(commandParameters == null) && !parsed) {
switch (command) {
case "var":
if (commandParameters.Length == 1) {
tmpVerb = new DeclareVariable(rootValueStorage, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
} else throw new Exception(command + "s need to be initialised");
default:
//assignment
if (rootValueStorage.CheckVariableExists(command)) {
string[] assignmentCommands = command.Split("="[0]);
if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments");
tmpVerb = new UpdateVariable(rootValueStorage, assignmentCommands[0], ValueFactory.CreateValue(rootValueStorage, assignmentCommands[1]));
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
}
break;
}
}
//Parse flow verbs
switch (command) {
case "if":
if (commandParameters.Length == 1) {
verbChunks.Add(new IfChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new IfChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "while":
if (commandParameters.Length == 1) {
verbChunks.Add(new WhileChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new WhileChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "for":
if (commandParameters.Length == 1) {
verbChunks.Add(new ForChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new ForChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "def":
if (drawer.verbChunkGeneratingMethod) throw new Exception("Cannot declare a method while declaring method");
else if (chunkDepth != 0) throw new Exception("Cannot declare a method above root chunk"); //TODO, explain better
else if (commandParameters.Length >= 1) {
rootValueStorage.IncreaseStack();
//All parameters
DeclareVariable[] methodParameters = new DeclareVariable[] { };
//if assignments exist, make them
if (commandParameters.Length > 1) {
List<DeclareVariable> methodParameterList = new List<DeclareVariable>();
for (int index = 1; index < commandParameters.Length; index++) {
methodParameterList.Add(new DeclareVariable(rootValueStorage, commandParameters[index]));
}
methodParameters = methodParameterList.ToArray();
}
//Get method name
string methodName = commandParameters[0];
MethodChunk methodChunk = new MethodChunk(rootValueStorage, methodParameters);
DeclareMethod declareMethod = new DeclareMethod(drawer, methodName);
drawer.Methods.Add(methodName, methodChunk);
verbChunks.Add(declareMethod);
chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth];
parsed = true;
tmpVerb = new NoOp();
} else throw new Exception(command + " has an incorrect number of parameters");
break;
}
if (!parsed) {
List<IValue> parameters = new List<IValue>();
if (!(commandParameters == null)) foreach (string parameter in commandParameters) {
parameters.Add(ValueFactory.CreateValue(rootValueStorage, parameter));
}
int parameterLength = parameters.Count;
//Check if method
if (drawer.Methods.ContainsKey(command)) {
MethodChunk methodChunk = drawer.Methods[command];
string[] methodVariableNames = methodChunk.GetVariableNames().ToArray();
//Handle errors
if (methodVariableNames.Length != parameterLength) throw new Exception("Method " + command + "Has an incorrect number of parameters");
/* So something like this:
* def abc d
* circle d
*
* abc 5
*
* would have to be translated into something like this
* @increase stack
* var d = 5 (of course in a higher stack)
*
* @run abc (abc doesn't increase it's own stack)
*
*/
// Update the values of the variables
List<UpdateVariable> UpdateVariableList = new List<UpdateVariable>();
for (int variableIndex = 0; variableIndex < methodVariableNames.Length; variableIndex++) {
UpdateVariableList.Add(new UpdateVariable(rootValueStorage, methodVariableNames[variableIndex], parameters[variableIndex]));
}
methodChunk.SetVariableValues(UpdateVariableList.ToArray());
tmpVerb = methodChunk.DuplicateForExecution();
}
//process drawing commands and extras
else switch (command) {
//Drawing commands
case "move":
case "moveto":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new MoveTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "drawto":
case "line":
case "lineto":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new DrawTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "regularpolygon":
case "rp":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], new IntValue(0), new BoolValue(true));
} else if (parameterLength == 3) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], parameters[2], new BoolValue(true));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "square":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new
Square(drawer, parameters[0]);
} else if (parameterLength == 2) {
tmpVerb = new Square(drawer, parameters[0], parameters[1]);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "quadrilateral":
//Check parameters
if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "rectangle":
//Check parameters
if (parameterLength == 2) {
tmpVerb = new Rectangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "circle":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new Circle(drawer, parameters[0]);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "triangle":
//Check parameters
if (parameterLength == 1) {
tmpVerb = new
Triangle(drawer, parameters[0]);
} else if (parameterLength == 2) {
tmpVerb = new
Triangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 6) {
tmpVerb = new Triangle(drawer,
new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5])
);
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "dot":
if (parameterLength == 0) {
tmpVerb = new Dot(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "clear":
if (parameterLength == 0) {
tmpVerb = new Clear(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "reset":
case "resetpen":
if (parameterLength == 0) {
tmpVerb = new ResetPen(drawer);
} else throw new Exception(command + " doesn't take parameters");
break;
case "fillon":
if (parameterLength == 0) {
tmpVerb = new Fill(drawer, true);
} else throw new Exception(command + " doesn't take parameters");
break;
case "filloff":
if (parameterLength == 0) {
tmpVerb = new Fill(drawer, false);
} else throw new Exception(command + " doesn't take parameters");
break;
case "pen":
if (parameterLength == 1) {
tmpVerb = new PenColor(drawer, parameters[0]);
} else if (parameterLength == 3) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2]));
} else if (parameterLength == 4) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
case "fill":
if (parameterLength == 1) {
tmpVerb = new FillColor(drawer, parameters[0]);
} else if (parameterLength == 3) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], new IntValue(255)));
} else if (parameterLength == 4) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
} else throw new Exception(command + " has an incorrect number of parameters");
break;
//exit flow
case "end":
if (parameterLength == 0) {
if (currentChunk == null) throw new Exception("Cannot end at root level"); //Todo, describe better
verbChunks.Remove(currentChunk);
chunkDepth = verbChunks.Count - 1;
if (chunkDepth == 0) drawer.verbChunkGeneratingMethod = false;
tmpVerb = currentChunk;
currentChunk = verbChunks[chunkDepth];
rootValueStorage.DecreaseStack();
} else throw new Exception(command + " doesn't take parameters");
break;
default:
throw new Exception("Unknown command or cannot parse");
}
}
if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb);
return new NoOp();
}
}
}
@@ -1,115 +1,115 @@
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code
/// </summary>
partial class About_Window
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About_Window));
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(196, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Advanced Software Engineering Project";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 26);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(235, 13);
this.label2.TabIndex = 1;
this.label2.Text = "Drawing Programming Language Implementation";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(253, 26);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 13);
this.label3.TabIndex = 1;
this.label3.Text = "Part 1";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(13, 63);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(160, 13);
this.label4.TabIndex = 2;
this.label4.Text = "Programming by Lukasz Baldyga";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(15, 89);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(143, 13);
this.label5.TabIndex = 3;
this.label5.Text = "Icons by Sorana Ioana Marin";
//
// About_Window
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(312, 206);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "About_Window";
this.Text = "About";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.About_Window_FormClosed);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
}
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code
/// </summary>
partial class About_Window
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About_Window));
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(196, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Advanced Software Engineering Project";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 26);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(235, 13);
this.label2.TabIndex = 1;
this.label2.Text = "Drawing Programming Language Implementation";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(253, 26);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 13);
this.label3.TabIndex = 1;
this.label3.Text = "Part 1";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(13, 63);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(160, 13);
this.label4.TabIndex = 2;
this.label4.Text = "Programming by Lukasz Baldyga";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(15, 89);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(143, 13);
this.label5.TabIndex = 3;
this.label5.Text = "Icons by Sorana Ioana Marin";
//
// About_Window
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(312, 206);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "About_Window";
this.Text = "About";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.About_Window_FormClosed);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
}
}
@@ -1,24 +1,24 @@
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
partial class About_Window : Form {
///<summary>
///Creates an About Window which shows details about the program.
///</summary>
public About_Window() {
InitializeComponent();
MenuManager.NumberOfWindows++;
}
/// <summary>
/// When the form closes, the window count should be updated which this function is responsible for.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void About_Window_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed();
}
}
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
partial class About_Window : Form {
///<summary>
///Creates an About Window which shows details about the program.
///</summary>
public About_Window() {
InitializeComponent();
MenuManager.NumberOfWindows++;
}
/// <summary>
/// When the form closes, the window count should be updated which this function is responsible for.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void About_Window_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed();
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
File diff suppressed because it is too large. Load diff
@@ -1,17 +1,17 @@
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is resposible for the command help window. The command help window shows help for the commands.
/// </summary>
public partial class CommandHelp : Form {
/// <summary>
/// Initilize CommandHelp.
/// </summary>
public CommandHelp() {
InitializeComponent();
}
}
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// This class is resposible for the command help window. The command help window shows help for the commands.
/// </summary>
public partial class CommandHelp : Form {
/// <summary>
/// Initilize CommandHelp.
/// </summary>
public CommandHelp() {
InitializeComponent();
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -1,63 +1,63 @@
namespace Advanced_Software_Engineering {
partial class DetailsWindow {
/// <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() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DetailsWindow));
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBox1.Location = new System.Drawing.Point(0, 0);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBox1.Size = new System.Drawing.Size(365, 405);
this.textBox1.TabIndex = 0;
//
// DetailsWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(365, 405);
this.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "DetailsWindow";
this.Text = "Details";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
}
namespace Advanced_Software_Engineering {
partial class DetailsWindow {
/// <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() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DetailsWindow));
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBox1.Location = new System.Drawing.Point(0, 0);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBox1.Size = new System.Drawing.Size(365, 405);
this.textBox1.TabIndex = 0;
//
// DetailsWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(365, 405);
this.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "DetailsWindow";
this.Text = "Details";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
}
}
@@ -1,30 +1,30 @@
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// This form is reponsible for showing details. It is essentially a textbox in a form.
/// </summary>
public partial class DetailsWindow : Form {
/// <summary>
/// A details window dedicated to showing details.
/// </summary>
/// <param name="details">The textbox text</param>
public DetailsWindow(string details) {
InitializeComponent();
textBox1.Text = details;
}
/// <summary>
/// A details window that shows details in the textbox and title as the window title.
/// </summary>
/// <param name="details">the details to be shown in the textbox</param>
/// <param name="title">the title of the window</param>
public DetailsWindow(string details, string title) {
InitializeComponent();
textBox1.Text = details;
Text = title;
}
}
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// This form is reponsible for showing details. It is essentially a textbox in a form.
/// </summary>
public partial class DetailsWindow : Form {
/// <summary>
/// A details window dedicated to showing details.
/// </summary>
/// <param name="details">The textbox text</param>
public DetailsWindow(string details) {
InitializeComponent();
textBox1.Text = details;
}
/// <summary>
/// A details window that shows details in the textbox and title as the window title.
/// </summary>
/// <param name="details">the details to be shown in the textbox</param>
/// <param name="title">the title of the window</param>
public DetailsWindow(string details, string title) {
InitializeComponent();
textBox1.Text = details;
Text = title;
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -1,98 +1,98 @@
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto Generated Code
/// </summary>
partial class Draw_Preview
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Draw_Preview));
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Location = new System.Drawing.Point(455, 480);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(83, 22);
this.button1.TabIndex = 0;
this.button1.Text = "Submit";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.SubmitCommand);
//
// textBox1
//
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBox1.Location = new System.Drawing.Point(0, 481);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(449, 20);
this.textBox1.TabIndex = 1;
this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown);
//
// 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.BackColor = System.Drawing.Color.White;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(537, 474);
this.panel1.TabIndex = 2;
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
//
// Draw_Preview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(537, 501);
this.Controls.Add(this.panel1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Draw_Preview";
this.Text = "Draw Preview";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.DrawPreview_FormClosed);
this.ResizeEnd += new System.EventHandler(this.DrawPreviewPane_Paint);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Panel panel1;
}
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto Generated Code
/// </summary>
partial class Draw_Preview
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Draw_Preview));
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Location = new System.Drawing.Point(455, 480);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(83, 22);
this.button1.TabIndex = 0;
this.button1.Text = "Submit";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.SubmitCommand);
//
// textBox1
//
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBox1.Location = new System.Drawing.Point(0, 481);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(449, 20);
this.textBox1.TabIndex = 1;
this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown);
//
// 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.BackColor = System.Drawing.Color.White;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(537, 474);
this.panel1.TabIndex = 2;
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
//
// Draw_Preview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(537, 501);
this.Controls.Add(this.panel1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Draw_Preview";
this.Text = "Draw Preview";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.DrawPreview_FormClosed);
this.ResizeEnd += new System.EventHandler(this.DrawPreviewPane_Paint);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Panel panel1;
}
}
@@ -1,115 +1,115 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class Draw_Preview : Form {
private Graphics graphics;
private readonly Commander commander;
private bool pardonCommands;
/// <summary>
/// The draw preview window. Spawns the basic DrawPreview.
/// </summary>
/// <remarks>
/// This window is responsible for showing what has been drawn.
/// </remarks>
public Draw_Preview() {
InitializeComponent();
MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics();
graphics.ResetClip();
commander = new Commander(graphics);
pardonCommands = true;
}
/// <summary>
/// The draw preview window. Spawns the DrawPreview with commands locked.
/// </summary>
/// <remarks>
/// This window is responsible for showing what has been drawn.
/// </remarks>
public Draw_Preview(string commands) {
InitializeComponent();
MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics();
graphics.ResetClip();
commander = new Commander(graphics, commands);
pardonCommands = false;
//disable components
textBox1.Enabled = false;
button1.Enabled = false;
}
private void DrawPreview_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed();
Dispose();
}
private void DrawPreviewPane_Paint(object sender, EventArgs e) {
DrawPreviewPane_Paint(sender, null);
}
private void DrawPreviewPane_Paint(object sender, PaintEventArgs e) {
graphics = panel1.CreateGraphics();
commander.DrawAllCommands(graphics);
}
private void SubmitCommand(object sender, EventArgs e) {
commander.ProcessCommandsAndExecute(textBox1.Text, pardonCommands);
textBox1.Text = "";
}
/// <summary>
/// Submit commands to the commander to execute on the form.
/// </summary>
/// <param name="comamnds">Commands seperated by new lines</param>
public void SubmitCommands(string comamnds) {
commander.ProcessCommandsAndExecute(comamnds, pardonCommands);
}
/// <summary>
/// Removes all the commands from the form
/// </summary>
public void RemoveAllCommands() {
commander.RemoveAllCommands();
}
/// <summary>
/// Enables the textbox and submit button to allow the user to interract with the preview directly
/// </summary>
public void ReleaseCommandLock() {
textBox1.Enabled = true;
button1.Enabled = true;
pardonCommands = true;
}
/// <summary>
/// Describes all of the current commands stored inside commander.
/// </summary>
/// <returns>A string with all the command descriptions</returns>
public string DescribeAllCommands() {
return commander.ExplainCommands();
}
/// <summary>
/// Returns weather there were any errors in the commander.
/// </summary>
/// <returns>A boolean describing the success of command phrasing</returns>
public bool IsSuccess() {
return commander.GetLastStatus();
}
/// <summary>
/// Submits the form
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyCode == Keys.Enter && textBox1.Enabled) {
button1.PerformClick();
}
}
}
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class Draw_Preview : Form {
private Graphics graphics;
private readonly Commander commander;
private bool pardonCommands;
/// <summary>
/// The draw preview window. Spawns the basic DrawPreview.
/// </summary>
/// <remarks>
/// This window is responsible for showing what has been drawn.
/// </remarks>
public Draw_Preview() {
InitializeComponent();
MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics();
graphics.ResetClip();
commander = new Commander(graphics);
pardonCommands = true;
}
/// <summary>
/// The draw preview window. Spawns the DrawPreview with commands locked.
/// </summary>
/// <remarks>
/// This window is responsible for showing what has been drawn.
/// </remarks>
public Draw_Preview(string commands) {
InitializeComponent();
MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics();
graphics.ResetClip();
commander = new Commander(graphics, commands);
pardonCommands = false;
//disable components
textBox1.Enabled = false;
button1.Enabled = false;
}
private void DrawPreview_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed();
Dispose();
}
private void DrawPreviewPane_Paint(object sender, EventArgs e) {
DrawPreviewPane_Paint(sender, null);
}
private void DrawPreviewPane_Paint(object sender, PaintEventArgs e) {
graphics = panel1.CreateGraphics();
commander.DrawAllCommands(graphics);
}
private void SubmitCommand(object sender, EventArgs e) {
commander.ProcessCommandsAndExecute(textBox1.Text, pardonCommands);
textBox1.Text = "";
}
/// <summary>
/// Submit commands to the commander to execute on the form.
/// </summary>
/// <param name="comamnds">Commands seperated by new lines</param>
public void SubmitCommands(string comamnds) {
commander.ProcessCommandsAndExecute(comamnds, pardonCommands);
}
/// <summary>
/// Removes all the commands from the form
/// </summary>
public void RemoveAllCommands() {
commander.RemoveAllCommands();
}
/// <summary>
/// Enables the textbox and submit button to allow the user to interract with the preview directly
/// </summary>
public void ReleaseCommandLock() {
textBox1.Enabled = true;
button1.Enabled = true;
pardonCommands = true;
}
/// <summary>
/// Describes all of the current commands stored inside commander.
/// </summary>
/// <returns>A string with all the command descriptions</returns>
public string DescribeAllCommands() {
return commander.ExplainCommands();
}
/// <summary>
/// Returns weather there were any errors in the commander.
/// </summary>
/// <returns>A boolean describing the success of command phrasing</returns>
public bool IsSuccess() {
return commander.GetLastStatus();
}
/// <summary>
/// Submits the form
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyCode == Keys.Enter && textBox1.Enabled) {
button1.PerformClick();
}
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -1,122 +1,122 @@
namespace Advanced_Software_Engineering {
partial class ErrorWindow {
/// <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() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorWindow));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button();
this.ShowDetailsButton = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Image = global::Advanced_Software_Engineering.Properties.Resources.warning;
this.pictureBox1.Location = new System.Drawing.Point(6, 19);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(56, 60);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.AutoEllipsis = true;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(68, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(60, 13);
this.label1.TabIndex = 2;
this.label1.Text = "Error Name";
//
// ExitButton
//
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ExitButton.Location = new System.Drawing.Point(0, 127);
this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(336, 23);
this.ExitButton.TabIndex = 1;
this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.Exit_Click);
//
// ShowDetailsButton
//
this.ShowDetailsButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ShowDetailsButton.Location = new System.Drawing.Point(0, 104);
this.ShowDetailsButton.Name = "ShowDetailsButton";
this.ShowDetailsButton.Size = new System.Drawing.Size(336, 23);
this.ShowDetailsButton.TabIndex = 5;
this.ShowDetailsButton.Text = "Show Details";
this.ShowDetailsButton.UseVisualStyleBackColor = true;
this.ShowDetailsButton.Click += new System.EventHandler(this.ShowDescriptionButton_Click);
//
// groupBox1
//
this.groupBox1.AutoSize = true;
this.groupBox1.Controls.Add(this.pictureBox1);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.groupBox1.Location = new System.Drawing.Point(0, 6);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(336, 98);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Error";
//
// ErrorWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(336, 150);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.ShowDetailsButton);
this.Controls.Add(this.ExitButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ErrorWindow";
this.Text = "Error";
this.Load += new System.EventHandler(this.ErrorWindow_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
//#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button ExitButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button ShowDetailsButton;
private System.Windows.Forms.GroupBox groupBox1;
}
namespace Advanced_Software_Engineering {
partial class ErrorWindow {
/// <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() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorWindow));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button();
this.ShowDetailsButton = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Image = global::Advanced_Software_Engineering.Properties.Resources.warning;
this.pictureBox1.Location = new System.Drawing.Point(6, 19);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(56, 60);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.AutoEllipsis = true;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(68, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(60, 13);
this.label1.TabIndex = 2;
this.label1.Text = "Error Name";
//
// ExitButton
//
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ExitButton.Location = new System.Drawing.Point(0, 127);
this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(336, 23);
this.ExitButton.TabIndex = 1;
this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.Exit_Click);
//
// ShowDetailsButton
//
this.ShowDetailsButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ShowDetailsButton.Location = new System.Drawing.Point(0, 104);
this.ShowDetailsButton.Name = "ShowDetailsButton";
this.ShowDetailsButton.Size = new System.Drawing.Size(336, 23);
this.ShowDetailsButton.TabIndex = 5;
this.ShowDetailsButton.Text = "Show Details";
this.ShowDetailsButton.UseVisualStyleBackColor = true;
this.ShowDetailsButton.Click += new System.EventHandler(this.ShowDescriptionButton_Click);
//
// groupBox1
//
this.groupBox1.AutoSize = true;
this.groupBox1.Controls.Add(this.pictureBox1);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.groupBox1.Location = new System.Drawing.Point(0, 6);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(336, 98);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Error";
//
// ErrorWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(336, 150);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.ShowDetailsButton);
this.Controls.Add(this.ExitButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ErrorWindow";
this.Text = "Error";
this.Load += new System.EventHandler(this.ErrorWindow_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
//#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button ExitButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button ShowDetailsButton;
private System.Windows.Forms.GroupBox groupBox1;
}
}
@@ -1,115 +1,115 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// The error window that can show errors, warnings and messages.
/// </summary>
public partial class ErrorWindow : Form {
private readonly string desc;
/// <summary>
/// The error message type.
/// </summary>
public const int ERROR_MESSAGE = 0;
/// <summary>
/// The warning message type
/// </summary>
public const int WARNING_MESSAGE = 1;
/// <summary>
/// The info message type
/// </summary>
public const int INFO_MESSAGE = 2;
/// <summary>
/// The image directory which links the message types to the image to display.
/// </summary>
protected Dictionary<int, Image> IMAGEDIR = new Dictionary<int, Image> {
{ ERROR_MESSAGE, Properties.Resources.error },
{ WARNING_MESSAGE, Properties.Resources.warning },
{ INFO_MESSAGE, Properties.Resources.info }
};
/// <summary>
/// The default error window constructor. Creates an error window with the title "Error", short description "An error has occured", a long description of "None" and message type of ERROR.
/// </summary>
public ErrorWindow() {
InitializeComponent();
this.Text = "Error";
label1.Text = "An error has occured";
desc = "None";
SetPicture(ERROR_MESSAGE);
Focus();
}
/// <summary>
/// The error window constructor.
/// It is responsible for creating an error form which shows the user information depending on the parameters.
/// </summary>
/// <param name="title">Title of the window</param>
/// <param name="brief">A brief description of the message</param>
/// <param name="desc">A detailed description of the message</param>
/// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param>
public ErrorWindow(string title, string brief, string desc, int type) {
InitializeComponent();
this.Text = title;
label1.Text = brief;
this.desc = desc;
SetPicture(type);
Focus();
}
/// <summary>
/// Sets the picture of the window.
/// </summary>
/// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param>
public void SetPicture(int type) {
pictureBox1.Image = IMAGEDIR[type];
pictureBox1.Refresh();
switch (type) {
case ERROR_MESSAGE:
groupBox1.Text = "Error";
break;
case WARNING_MESSAGE:
groupBox1.Text = "Warning";
break;
case INFO_MESSAGE:
groupBox1.Text = "Info";
break;
}
}
/// <summary>
/// Closes the from.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Exit_Click(object sender, EventArgs e) {
Close();
}
/// <summary>
/// Show description window.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ShowDescriptionButton_Click(object sender, EventArgs e) {
new DetailsWindow(desc).Show();
}
private void ErrorWindow_Load(object sender, EventArgs e) {
}
}
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
/// <summary>
/// The error window that can show errors, warnings and messages.
/// </summary>
public partial class ErrorWindow : Form {
private readonly string desc;
/// <summary>
/// The error message type.
/// </summary>
public const int ERROR_MESSAGE = 0;
/// <summary>
/// The warning message type
/// </summary>
public const int WARNING_MESSAGE = 1;
/// <summary>
/// The info message type
/// </summary>
public const int INFO_MESSAGE = 2;
/// <summary>
/// The image directory which links the message types to the image to display.
/// </summary>
protected Dictionary<int, Image> IMAGEDIR = new Dictionary<int, Image> {
{ ERROR_MESSAGE, Properties.Resources.error },
{ WARNING_MESSAGE, Properties.Resources.warning },
{ INFO_MESSAGE, Properties.Resources.info }
};
/// <summary>
/// The default error window constructor. Creates an error window with the title "Error", short description "An error has occured", a long description of "None" and message type of ERROR.
/// </summary>
public ErrorWindow() {
InitializeComponent();
this.Text = "Error";
label1.Text = "An error has occured";
desc = "None";
SetPicture(ERROR_MESSAGE);
Focus();
}
/// <summary>
/// The error window constructor.
/// It is responsible for creating an error form which shows the user information depending on the parameters.
/// </summary>
/// <param name="title">Title of the window</param>
/// <param name="brief">A brief description of the message</param>
/// <param name="desc">A detailed description of the message</param>
/// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param>
public ErrorWindow(string title, string brief, string desc, int type) {
InitializeComponent();
this.Text = title;
label1.Text = brief;
this.desc = desc;
SetPicture(type);
Focus();
}
/// <summary>
/// Sets the picture of the window.
/// </summary>
/// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param>
public void SetPicture(int type) {
pictureBox1.Image = IMAGEDIR[type];
pictureBox1.Refresh();
switch (type) {
case ERROR_MESSAGE:
groupBox1.Text = "Error";
break;
case WARNING_MESSAGE:
groupBox1.Text = "Warning";
break;
case INFO_MESSAGE:
groupBox1.Text = "Info";
break;
}
}
/// <summary>
/// Closes the from.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Exit_Click(object sender, EventArgs e) {
Close();
}
/// <summary>
/// Show description window.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ShowDescriptionButton_Click(object sender, EventArgs e) {
new DetailsWindow(desc).Show();
}
private void ErrorWindow_Load(object sender, EventArgs e) {
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -1,140 +1,140 @@
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code.
/// </summary>
partial class Menu
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Menu));
this.InteractivePreviewButton = new System.Windows.Forms.Button();
this.TextEditorButton = new System.Windows.Forms.Button();
this.AboutButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// InteractivePreviewButton
//
this.InteractivePreviewButton.Dock = System.Windows.Forms.DockStyle.Top;
this.InteractivePreviewButton.Location = new System.Drawing.Point(0, 26);
this.InteractivePreviewButton.Name = "InteractivePreviewButton";
this.InteractivePreviewButton.Size = new System.Drawing.Size(172, 23);
this.InteractivePreviewButton.TabIndex = 0;
this.InteractivePreviewButton.Text = "Interactive Preview";
this.InteractivePreviewButton.UseVisualStyleBackColor = true;
this.InteractivePreviewButton.Click += new System.EventHandler(this.InteractivePreviewClick);
//
// TextEditorButton
//
this.TextEditorButton.Dock = System.Windows.Forms.DockStyle.Top;
this.TextEditorButton.Location = new System.Drawing.Point(0, 49);
this.TextEditorButton.Name = "TextEditorButton";
this.TextEditorButton.Size = new System.Drawing.Size(172, 23);
this.TextEditorButton.TabIndex = 0;
this.TextEditorButton.Text = "Text Editor";
this.TextEditorButton.UseVisualStyleBackColor = true;
this.TextEditorButton.Click += new System.EventHandler(this.TextEditorClick);
//
// AboutButton
//
this.AboutButton.Dock = System.Windows.Forms.DockStyle.Top;
this.AboutButton.Location = new System.Drawing.Point(0, 72);
this.AboutButton.Name = "AboutButton";
this.AboutButton.Size = new System.Drawing.Size(172, 23);
this.AboutButton.TabIndex = 0;
this.AboutButton.Text = "About";
this.AboutButton.UseVisualStyleBackColor = true;
this.AboutButton.Click += new System.EventHandler(this.AboutWindowClick);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Top;
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Advanced Software Engineering";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Dock = System.Windows.Forms.DockStyle.Top;
this.label2.Location = new System.Drawing.Point(0, 13);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 13);
this.label2.TabIndex = 2;
this.label2.Text = "Drawing Program";
//
// ExitButton
//
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Top;
this.ExitButton.Location = new System.Drawing.Point(0, 95);
this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(172, 23);
this.ExitButton.TabIndex = 0;
this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.ExitClick);
//
// Menu
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(172, 118);
this.Controls.Add(this.ExitButton);
this.Controls.Add(this.AboutButton);
this.Controls.Add(this.TextEditorButton);
this.Controls.Add(this.InteractivePreviewButton);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Menu";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "Menu";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button InteractivePreviewButton;
private System.Windows.Forms.Button TextEditorButton;
private System.Windows.Forms.Button AboutButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button ExitButton;
}
}
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code.
/// </summary>
partial class Menu
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Menu));
this.InteractivePreviewButton = new System.Windows.Forms.Button();
this.TextEditorButton = new System.Windows.Forms.Button();
this.AboutButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// InteractivePreviewButton
//
this.InteractivePreviewButton.Dock = System.Windows.Forms.DockStyle.Top;
this.InteractivePreviewButton.Location = new System.Drawing.Point(0, 26);
this.InteractivePreviewButton.Name = "InteractivePreviewButton";
this.InteractivePreviewButton.Size = new System.Drawing.Size(172, 23);
this.InteractivePreviewButton.TabIndex = 0;
this.InteractivePreviewButton.Text = "Interactive Preview";
this.InteractivePreviewButton.UseVisualStyleBackColor = true;
this.InteractivePreviewButton.Click += new System.EventHandler(this.InteractivePreviewClick);
//
// TextEditorButton
//
this.TextEditorButton.Dock = System.Windows.Forms.DockStyle.Top;
this.TextEditorButton.Location = new System.Drawing.Point(0, 49);
this.TextEditorButton.Name = "TextEditorButton";
this.TextEditorButton.Size = new System.Drawing.Size(172, 23);
this.TextEditorButton.TabIndex = 0;
this.TextEditorButton.Text = "Text Editor";
this.TextEditorButton.UseVisualStyleBackColor = true;
this.TextEditorButton.Click += new System.EventHandler(this.TextEditorClick);
//
// AboutButton
//
this.AboutButton.Dock = System.Windows.Forms.DockStyle.Top;
this.AboutButton.Location = new System.Drawing.Point(0, 72);
this.AboutButton.Name = "AboutButton";
this.AboutButton.Size = new System.Drawing.Size(172, 23);
this.AboutButton.TabIndex = 0;
this.AboutButton.Text = "About";
this.AboutButton.UseVisualStyleBackColor = true;
this.AboutButton.Click += new System.EventHandler(this.AboutWindowClick);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Top;
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Advanced Software Engineering";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Dock = System.Windows.Forms.DockStyle.Top;
this.label2.Location = new System.Drawing.Point(0, 13);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 13);
this.label2.TabIndex = 2;
this.label2.Text = "Drawing Program";
//
// ExitButton
//
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Top;
this.ExitButton.Location = new System.Drawing.Point(0, 95);
this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(172, 23);
this.ExitButton.TabIndex = 0;
this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.ExitClick);
//
// Menu
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(172, 118);
this.Controls.Add(this.ExitButton);
this.Controls.Add(this.AboutButton);
this.Controls.Add(this.TextEditorButton);
this.Controls.Add(this.InteractivePreviewButton);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Menu";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "Menu";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button InteractivePreviewButton;
private System.Windows.Forms.Button TextEditorButton;
private System.Windows.Forms.Button AboutButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button ExitButton;
}
}
@@ -1,37 +1,37 @@
using System;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class Menu : Form {
/// <summary>
/// This creates the main menu window you see when launching the program.
/// </summary>
/// <remarks>
/// This program window is only meant to show at launch and when all of the other windows are closed. It launches all windows independently of each other, so a theoretically unlimited number of windows can exist.
/// </remarks>
public Menu() {
InitializeComponent();
}
private void InteractivePreviewClick(object sender, EventArgs e) {
new Draw_Preview().Show();
this.Hide();
}
private void TextEditorClick(object sender, EventArgs e) {
new TextEditor().Show();
this.Hide();
}
private void AboutWindowClick(object sender, EventArgs e) {
new About_Window().Show();
this.Hide();
}
private void ExitClick(object sender, EventArgs e) {
this.Close();
}
}
using System;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class Menu : Form {
/// <summary>
/// This creates the main menu window you see when launching the program.
/// </summary>
/// <remarks>
/// This program window is only meant to show at launch and when all of the other windows are closed. It launches all windows independently of each other, so a theoretically unlimited number of windows can exist.
/// </remarks>
public Menu() {
InitializeComponent();
}
private void InteractivePreviewClick(object sender, EventArgs e) {
new Draw_Preview().Show();
this.Hide();
}
private void TextEditorClick(object sender, EventArgs e) {
new TextEditor().Show();
this.Hide();
}
private void AboutWindowClick(object sender, EventArgs e) {
new About_Window().Show();
this.Hide();
}
private void ExitClick(object sender, EventArgs e) {
this.Close();
}
}
}
@@ -1,197 +1,197 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
IJ11rjGhke46mZT/PCb///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///8CMSEhPpthXv+wdFT/qWhE/45WNP+OUS7/hkc1/2tRXv9SMTL/OxsY/zARF/8tDBn/JAkT/xoH
C/8ZFQf/OEQQ/12CIP+KzzT/qv9H843/Q0z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP8AgAIgGBxAgFVZ/Uc+Tf9YOi//yYNR/8B/Xf+yaUH/mm1w/3lNQf9YMBv/PBwX/0AV
G/84Dh3/MAkZ/yEHEP8UCAb/KC0N/1NzIf96vjP9kehC0////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiMRFyxkPUT/pIN//8SNaP/pq4L/4Ztw/9ONZP/Dl5X/kmI7/4JR
LP9eOB7/PRwX/z4RFP8/DBn/MQcV/yoHE/8dBwz/ISAL/z5VH71GohcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORwrEj8nLvnltqr//uzf//rJrv/xsYv/7bGT/9uw
qv+xf1T/o3VB/4dhMf91Tib/SiQZ/z4SE/9BChD/OQoX/zQLG/8nCRLzKhEiHgD/gAIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIACQB8o28aDc///0ab//9Cs//zJ
qv/52dD/5ryq/+DBvv+7lXb/vo5L/5x3O/+KZTT/Wzci/0cZFf9DDQz/OwsR/zgMGf8yDBnNMzMzCgAA
AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgAI4GyanqmVf//7N
qP/+48z//dnC//vj3P/04+P/7tzc/9/P1f+3lG7/v5dQ/6qHRv+ZdDv/Xzkl/2AoG/9OGBD/QAwO/zYL
F/8zDhqR/wCAAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wCAAiYU
HGRfNDr/36GO//W7nP/6ya7/+tXF//ba0P/lzdD/077E/8y7xv+/pJH/06pc/7OQSf94VTz/eUcr/2s1
IP9PHhH/PwwM/zUKGP0lDRJ0PTcSKoC/gASA/wACAP+AAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/AIACMCAoIDkfKf2LW2f/poaa/6GDkv+3jY7/uJSW/7SSlf/cy9r/7t7j/+zS0P/VsZ//w6F9/7mG
dP+jbU3/hU4v/2k1H/9SIRT/PQsN/zAKFP8uMRH/QVUj6UuEILc/lRNqTb8aFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wJFMUGRLBoq/04rNv+HYnn/jm2R/5FzjP+cfIT/w5iV//Xb0//66On/9NrX/+nA
rf/mwLH/xI+A/6BtV/+la03/iFAy/2w2If9OHBL/OQkR/yELCv87Rhr/Unsp/2y1L/+K9DfpgP9JDoD/
AAIAAAAAAAAAAAAAAAD///8CgHWGfmdZY/8xIzP/MR0p/1s0Qv+OYYD/oXiR/9Wdk//5073//eDP//7p
3v/407//78Wu/7iOe/+BVkv/wol9/7+Dav+iakn/hk8w/2YyHv9GEQ7/LwkS/y0yEv9diiz/fN8p/4n7
L+2f30AIgP8AAgAAAAAAAAAA////ApqKnHSim6j/iXyK/1VHUP8zIDP/Nh8r/5BJVf/2spf//tCn///e
w//+5NH//tvE/+q/qP+rhXr/jWxi/8aYhv/iqp//156O/8WNcP+qblT/hUwx/2ErHP84Cw3/HRUL/0lm
HP+X4Tb/rv1Nfv///wIAAAAAAAAAAAAAAADYzdMu5d3p+5yRn/+PiJT/dm56/1RDTv81IDX/QSUx/6pd
Xv/8yqr//s+p//DHsv/Jopj/oIKE/6GCgP/YsZz/+NO+//HBp//puqr/26qS/6ByXv+TXkH/hEgw/1Ae
Ff8tCQmjSF0ePKjkPCYAAAAAAAAAAAAAAAAAAAAAAAAAAP///x7RxdDv1MzZ/5ySn/+YkJv/eGt1/1tF
VP9DLD3/NR8u/39BSv+sboH/lW6Q/494kv+mi4//5MGu//7lz//+3cP//NS4/+/Eqf+uh3T/k21b/7h8
Yv+hY0v/ajQk/zoRDrOAQAAE////AgAAAAAAAAAAAAAAAAAAAAAAAAAA////Avv7+z7QyNHr3Nfi/42E
j/+Ujpv/em52/2VQX/9EMT//NCEv/1AwPv+TXnX/xoSF//XIq//+48v//ufU//7hyv/lvqj/q4R6/556
bP/muaH/1px//8V/aP+PTjz/Rx8U+zseFTz/gAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/yDOws3B8u32/351g/+1rLT/fnB8/1JCUf9ZRFP/NSI1/0IqN/+fVFD/5KKJ/+q2o//Zr6X/vJKS/6GE
i/+zj4r/8sep//zOsP/0vaP/2pN8/6hgTv9iLSH/QygW32ZmJhT//wACAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////Av///wTb0dtk3tXb58e8yf+2r7v/Zlxo/3Zmc/9ZR1b/Nyk5/1M8W/9ILUbpgFJp34Jc
hP+XdZL/1Kaa//zZv//+4MX//tW5/+WzoP/SjoD/0H1u/5pQQv9bOx7/hJAlv5e/MCD//wACgP8AAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8Q6N3jeNLN1eXDvcr/rKCt/6OUpvlDPFK3WUlmUIBV
lQxPNENUMiAq/2c6P/+jcmD/wZeH/8KTj/+4hIr/1ZuP//zIrv/vppD/um1h/49kRf+rqzT/t9Az+6PH
J9F6sB2lX6kYdGqqKhgAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8CzMzMCu3q9la/tsRw18/fIP//
/wL///8C////Am1VWypONTz/Ty00/0MoKv8tISX/KyEp/0wwM/+lcWKz1Kd/xbeVb//Dnnz/3dhq/9Hr
S/+9zjn/rMku/bXtMf2s/T+djvE5EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////AgAA
AAD///8CAAAAAAAAAAAAAAAAmZmZCmJPT/FYQDj/dktK/2FFSv9CLSn/hmh3/2lHTYH///8ClZVFduHm
aP/U+FD/vuE+/7jZNP++7jbjxfs2Qv///wL//wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Cr6G0yXVhTf/Gs7r/1cPT88m3vbm9j5Jw0bncFv//
/wKfqlUYrLpG+cjmQv+85zX/vvI12c7/Thr///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLh3exEvaeldM60v0T///8O////AgAA
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -1,237 +1,237 @@
using System.Windows.Forms;
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code
/// </summary>
partial class TextEditor
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextEditor));
this.TextBox = new System.Windows.Forms.TextBox();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.checkSyntaxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.describeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.label1 = new System.Windows.Forms.Label();
this.SavedLabelTimer = new System.Windows.Forms.Timer(this.components);
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// TextBox
//
this.TextBox.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.TextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TextBox.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TextBox.Location = new System.Drawing.Point(0, 23);
this.TextBox.Multiline = true;
this.TextBox.Name = "TextBox";
this.TextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.TextBox.Size = new System.Drawing.Size(602, 509);
this.TextBox.TabIndex = 0;
this.TextBox.WordWrap = false;
this.TextBox.Click += new System.EventHandler(this.TextBoxClick);
this.TextBox.TextChanged += new System.EventHandler(this.HandleKeypress);
this.TextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.TextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBox_KeyUp);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.runToolStripMenuItem,
this.checkSyntaxToolStripMenuItem,
this.describeToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(602, 24);
this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newFileToolStripMenuItem,
this.openToolStripMenuItem,
this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// newFileToolStripMenuItem
//
this.newFileToolStripMenuItem.Name = "newFileToolStripMenuItem";
this.newFileToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.newFileToolStripMenuItem.Text = "New File (Ctrl + N)";
this.newFileToolStripMenuItem.Click += new System.EventHandler(this.NewFileToolStripMenuItem_Click);
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.openToolStripMenuItem.Text = "Open (Ctrl + O)";
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenToolStripMenuItem_Click);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveToolStripMenuItem.Text = "Save (Ctrl + S)";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click);
//
// saveAsToolStripMenuItem
//
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveAsToolStripMenuItem.Text = "Save As (Ctrl + Shift + S)";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.exitToolStripMenuItem.Text = "Exit (Alt + F4)";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click);
//
// runToolStripMenuItem
//
this.runToolStripMenuItem.Name = "runToolStripMenuItem";
this.runToolStripMenuItem.Size = new System.Drawing.Size(63, 20);
this.runToolStripMenuItem.Text = "Run (F5)";
this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click);
//
// checkSyntaxToolStripMenuItem
//
this.checkSyntaxToolStripMenuItem.Name = "checkSyntaxToolStripMenuItem";
this.checkSyntaxToolStripMenuItem.Size = new System.Drawing.Size(151, 20);
this.checkSyntaxToolStripMenuItem.Text = "Check Syntax (Shift + F5)";
this.checkSyntaxToolStripMenuItem.Click += new System.EventHandler(this.CheckSyntaxToolStripMenuItem_Click);
//
// describeToolStripMenuItem
//
this.describeToolStripMenuItem.Name = "describeToolStripMenuItem";
this.describeToolStripMenuItem.Size = new System.Drawing.Size(125, 20);
this.describeToolStripMenuItem.Text = "Describe (Shift + F1)";
this.describeToolStripMenuItem.Click += new System.EventHandler(this.DescribeToolStripMenuItem_Click);
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.aboutToolStripMenuItem,
this.helpToolStripMenuItem1});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "Help";
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItem_Click);
//
// helpToolStripMenuItem1
//
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(107, 22);
this.helpToolStripMenuItem1.Text = "Help";
this.helpToolStripMenuItem1.Click += new System.EventHandler(this.HelpToolStripMenuItem1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.label1.Location = new System.Drawing.Point(0, 535);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(0, 13);
this.label1.TabIndex = 2;
//
// SavedLabelTimer
//
this.SavedLabelTimer.Interval = 1000;
this.SavedLabelTimer.Tick += new System.EventHandler(this.SavedLableTimerTick);
//
// TextEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(602, 548);
this.Controls.Add(this.label1);
this.Controls.Add(this.TextBox);
this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MainMenuStrip = this.menuStrip1;
this.Name = "TextEditor";
this.Text = "Advanced Software Engineering - Text Editor";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Text_Editor_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Console_FormClosed);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox TextBox;
private MenuStrip menuStrip1;
private ToolStripMenuItem fileToolStripMenuItem;
private ToolStripMenuItem newFileToolStripMenuItem;
private ToolStripMenuItem openToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem exitToolStripMenuItem;
private ToolStripMenuItem runToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem;
private ToolStripMenuItem aboutToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem1;
private ToolStripMenuItem saveAsToolStripMenuItem;
private ToolStripMenuItem checkSyntaxToolStripMenuItem;
private Label label1;
private Timer SavedLabelTimer;
private ToolStripMenuItem describeToolStripMenuItem;
}
using System.Windows.Forms;
namespace Advanced_Software_Engineering
{
/// <summary>
/// Auto generated code
/// </summary>
partial class TextEditor
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextEditor));
this.TextBox = new System.Windows.Forms.TextBox();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.checkSyntaxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.describeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.label1 = new System.Windows.Forms.Label();
this.SavedLabelTimer = new System.Windows.Forms.Timer(this.components);
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// TextBox
//
this.TextBox.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.TextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TextBox.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TextBox.Location = new System.Drawing.Point(0, 23);
this.TextBox.Multiline = true;
this.TextBox.Name = "TextBox";
this.TextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.TextBox.Size = new System.Drawing.Size(602, 509);
this.TextBox.TabIndex = 0;
this.TextBox.WordWrap = false;
this.TextBox.Click += new System.EventHandler(this.TextBoxClick);
this.TextBox.TextChanged += new System.EventHandler(this.HandleKeypress);
this.TextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.TextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBox_KeyUp);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.runToolStripMenuItem,
this.checkSyntaxToolStripMenuItem,
this.describeToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(602, 24);
this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newFileToolStripMenuItem,
this.openToolStripMenuItem,
this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// newFileToolStripMenuItem
//
this.newFileToolStripMenuItem.Name = "newFileToolStripMenuItem";
this.newFileToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.newFileToolStripMenuItem.Text = "New File (Ctrl + N)";
this.newFileToolStripMenuItem.Click += new System.EventHandler(this.NewFileToolStripMenuItem_Click);
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.openToolStripMenuItem.Text = "Open (Ctrl + O)";
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenToolStripMenuItem_Click);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveToolStripMenuItem.Text = "Save (Ctrl + S)";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click);
//
// saveAsToolStripMenuItem
//
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveAsToolStripMenuItem.Text = "Save As (Ctrl + Shift + S)";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.exitToolStripMenuItem.Text = "Exit (Alt + F4)";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click);
//
// runToolStripMenuItem
//
this.runToolStripMenuItem.Name = "runToolStripMenuItem";
this.runToolStripMenuItem.Size = new System.Drawing.Size(63, 20);
this.runToolStripMenuItem.Text = "Run (F5)";
this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click);
//
// checkSyntaxToolStripMenuItem
//
this.checkSyntaxToolStripMenuItem.Name = "checkSyntaxToolStripMenuItem";
this.checkSyntaxToolStripMenuItem.Size = new System.Drawing.Size(151, 20);
this.checkSyntaxToolStripMenuItem.Text = "Check Syntax (Shift + F5)";
this.checkSyntaxToolStripMenuItem.Click += new System.EventHandler(this.CheckSyntaxToolStripMenuItem_Click);
//
// describeToolStripMenuItem
//
this.describeToolStripMenuItem.Name = "describeToolStripMenuItem";
this.describeToolStripMenuItem.Size = new System.Drawing.Size(125, 20);
this.describeToolStripMenuItem.Text = "Describe (Shift + F1)";
this.describeToolStripMenuItem.Click += new System.EventHandler(this.DescribeToolStripMenuItem_Click);
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.aboutToolStripMenuItem,
this.helpToolStripMenuItem1});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "Help";
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItem_Click);
//
// helpToolStripMenuItem1
//
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(107, 22);
this.helpToolStripMenuItem1.Text = "Help";
this.helpToolStripMenuItem1.Click += new System.EventHandler(this.HelpToolStripMenuItem1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.label1.Location = new System.Drawing.Point(0, 535);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(0, 13);
this.label1.TabIndex = 2;
//
// SavedLabelTimer
//
this.SavedLabelTimer.Interval = 1000;
this.SavedLabelTimer.Tick += new System.EventHandler(this.SavedLableTimerTick);
//
// TextEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(602, 548);
this.Controls.Add(this.label1);
this.Controls.Add(this.TextBox);
this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MainMenuStrip = this.menuStrip1;
this.Name = "TextEditor";
this.Text = "Advanced Software Engineering - Text Editor";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Text_Editor_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Console_FormClosed);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox TextBox;
private MenuStrip menuStrip1;
private ToolStripMenuItem fileToolStripMenuItem;
private ToolStripMenuItem newFileToolStripMenuItem;
private ToolStripMenuItem openToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem exitToolStripMenuItem;
private ToolStripMenuItem runToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem;
private ToolStripMenuItem aboutToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem1;
private ToolStripMenuItem saveAsToolStripMenuItem;
private ToolStripMenuItem checkSyntaxToolStripMenuItem;
private Label label1;
private Timer SavedLabelTimer;
private ToolStripMenuItem describeToolStripMenuItem;
}
}
@@ -1,257 +1,257 @@
using System;
using System.IO;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class TextEditor : Form {
private const string DefaultTitleString = "ASE - Text Editor";
private Draw_Preview DisplayForm = null;
private bool unsavedChanges = false;
private bool newWindow = true;
private bool okToOverwrite = false;
private string fileName = "";
/// <summary>
/// The text editor is the main window that the user will be using for writing code.
/// </summary>
public TextEditor() {
MenuManager.NumberOfWindows++;
InitializeComponent();
UpdateTitle();
}
/// <summary>
/// The text editor is the main window that the user will be using for writing code.
/// </summary>
/// <param name="openFile">File dialog which points to the file to open</param>
public TextEditor(OpenFileDialog openFile) {
MenuManager.NumberOfWindows++;
InitializeComponent();
StreamReader fileStream = new StreamReader(openFile.OpenFile());
TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false;
newWindow = false;
okToOverwrite = true;
UpdateTitle(openFile.FileName);
fileStream.Close();
}
private void UpdateTitle(string fileName) {
this.fileName = fileName;
UpdateTitle();
}
private void UpdateTitle() {
if (fileName != "") this.Text = DefaultTitleString + " - " + fileName;
else this.Text = DefaultTitleString;
if (unsavedChanges) this.Text = "* " + this.Text + " *";
}
private void SaveFile() {
if (!okToOverwrite) SaveFileAs();
else {
try {
StreamWriter fileStream = new StreamWriter(fileName);
fileStream.Write(TextBox.Text);
unsavedChanges = false;
ShowSavedMessage();
fileStream.Close();
} catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally {
UpdateTitle();
}
}
}
private void SaveFileAs() {
SaveFileDialog saveFileDialog = new SaveFileDialog {
OverwritePrompt = true,
DefaultExt = ".txt"
};
if (fileName != "") saveFileDialog.FileName = fileName;
saveFileDialog.ValidateNames = true;
DialogResult dialogResult = saveFileDialog.ShowDialog();
if (dialogResult == DialogResult.OK) {
StreamWriter fileStream = new StreamWriter(saveFileDialog.OpenFile());
try {
fileStream.Write(TextBox.Text);
unsavedChanges = false;
okToOverwrite = true;
fileName = saveFileDialog.FileName;
ShowSavedMessage();
} catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally {
fileStream.Close();
UpdateTitle();
}
}
}
private void ShowSavedMessage() {
label1.Text = "File saved";
SavedLabelTimer.Start();
}
private void UpdateRowsAndColumnsPreview() {
int line = TextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = TextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
line++;
column++;
label1.Text = "row: " + line.ToString() + " col: " + column.ToString();
}
private void HandleKeypress() {
if (newWindow) newWindow = false;
UpdateSaveStatus();
UpdateRowsAndColumnsPreview();
}
private void UpdateSaveStatus() {
if (!unsavedChanges) {
unsavedChanges = true;
UpdateTitle();
}
}
private void OpenFile() {
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK) {
if (newWindow) {
StreamReader fileStream = new StreamReader(openFileDialog.OpenFile());
TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false;
okToOverwrite = true;
newWindow = false;
UpdateTitle(openFileDialog.FileName);
fileStream.Close();
} else new TextEditor(openFileDialog).Show();
}
}
private void RunCode() {
if (DisplayForm == null || DisplayForm.IsDisposed) {
DisplayForm = new Draw_Preview(TextBox.Text);
} else {
Console.WriteLine("Removed all commands");
DisplayForm.RemoveAllCommands();
DisplayForm.SubmitCommands(TextBox.Text);
}
if (DisplayForm.IsSuccess()) {
DisplayForm.Show();
DisplayForm.Focus();
}
}
/// <summary>
/// This function checks if the code written is OK
/// </summary>
public void CheckCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text);
if (tmpDrawPreview.IsSuccess()) new ErrorWindow("No errors", "No errors found in the program", "There have been no errors found", ErrorWindow.INFO_MESSAGE).Show();
tmpDrawPreview.Close();
MenuManager.WindowClosed();
tmpDrawPreview.Dispose();
}
private void HandleExit(FormClosingEventArgs e) {
if (unsavedChanges) {
DialogResult dialogResult = MessageBox.Show("You have unsaved work. Would you like to discard your work?", "Unsaved work!", MessageBoxButtons.YesNo, MessageBoxIcon.None);
if (e != null) e.Cancel = dialogResult != DialogResult.Yes;
}
}
private void DescribeCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text);
string commandDesc = tmpDrawPreview.DescribeAllCommands();
Console.WriteLine(commandDesc);
tmpDrawPreview.Close();
MenuManager.WindowClosed();
tmpDrawPreview.Dispose();
new DetailsWindow(commandDesc, "Command explanation").Show();
}
private void Console_FormClosed(object sender, FormClosedEventArgs e) {
if (DisplayForm != null && !DisplayForm.IsDisposed) DisplayForm.ReleaseCommandLock();
MenuManager.WindowClosed();
Dispose();
}
private void RunToolStripMenuItem_Click(object sender, EventArgs e) => RunCode();
private void CreateNewInstance() => new TextEditor().Show();
private void HandleKeypress(object sender, EventArgs e) => HandleKeypress();
private void TextBoxClick(object sender, EventArgs e) => UpdateRowsAndColumnsPreview();
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e) => SaveFileAs();
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) => SaveFile();
private void NewFileToolStripMenuItem_Click(object sender, EventArgs e) => CreateNewInstance();
private void AboutToolStripMenuItem_Click(object sender, EventArgs e) => new About_Window().Show();
private void Text_Editor_FormClosing(object sender, FormClosingEventArgs e) => HandleExit(e);
private void ExitToolStripMenuItem_Click(object sender, EventArgs e) => Close();
private void OpenToolStripMenuItem_Click(object sender, EventArgs e) => OpenFile();
private void Text_Editor_PreviewKeyDown(object sender, KeyEventArgs e) {
//New window
if (e.Control && e.KeyCode == Keys.N) {
CreateNewInstance();
e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.S) {
SaveFile();
e.Handled = true;
} else if (e.Control && e.Shift && e.KeyCode == Keys.S) {
SaveFileAs();
e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.O) {
OpenFile();
e.Handled = true;
} else if (e.KeyCode == Keys.F5) {
RunCode();
e.Handled = true;
} else if (e.KeyCode == Keys.F5 && e.Shift) {
CheckCode();
e.Handled = true;
} else if (e.KeyCode == Keys.F1 && e.Shift) {
DescribeCode();
e.Handled = true;
} else {
UpdateRowsAndColumnsPreview();
}
}
private void CheckSyntaxToolStripMenuItem_Click(object sender, EventArgs e) => CheckCode();
private void DescribeToolStripMenuItem_Click(object sender, EventArgs e) => DescribeCode();
private void SavedLableTimerTick(object sender, EventArgs e) {
UpdateRowsAndColumnsPreview();
SavedLabelTimer.Stop();
}
private void TextBox_KeyUp(object sender, KeyEventArgs e) => UpdateRowsAndColumnsPreview();
private void HelpToolStripMenuItem1_Click(object sender, EventArgs e) => new CommandHelp().Show();
}
using System;
using System.IO;
using System.Windows.Forms;
namespace Advanced_Software_Engineering {
public partial class TextEditor : Form {
private const string DefaultTitleString = "ASE - Text Editor";
private Draw_Preview DisplayForm = null;
private bool unsavedChanges = false;
private bool newWindow = true;
private bool okToOverwrite = false;
private string fileName = "";
/// <summary>
/// The text editor is the main window that the user will be using for writing code.
/// </summary>
public TextEditor() {
MenuManager.NumberOfWindows++;
InitializeComponent();
UpdateTitle();
}
/// <summary>
/// The text editor is the main window that the user will be using for writing code.
/// </summary>
/// <param name="openFile">File dialog which points to the file to open</param>
public TextEditor(OpenFileDialog openFile) {
MenuManager.NumberOfWindows++;
InitializeComponent();
StreamReader fileStream = new StreamReader(openFile.OpenFile());
TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false;
newWindow = false;
okToOverwrite = true;
UpdateTitle(openFile.FileName);
fileStream.Close();
}
private void UpdateTitle(string fileName) {
this.fileName = fileName;
UpdateTitle();
}
private void UpdateTitle() {
if (fileName != "") this.Text = DefaultTitleString + " - " + fileName;
else this.Text = DefaultTitleString;
if (unsavedChanges) this.Text = "* " + this.Text + " *";
}
private void SaveFile() {
if (!okToOverwrite) SaveFileAs();
else {
try {
StreamWriter fileStream = new StreamWriter(fileName);
fileStream.Write(TextBox.Text);
unsavedChanges = false;
ShowSavedMessage();
fileStream.Close();
} catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally {
UpdateTitle();
}
}
}
private void SaveFileAs() {
SaveFileDialog saveFileDialog = new SaveFileDialog {
OverwritePrompt = true,
DefaultExt = ".txt"
};
if (fileName != "") saveFileDialog.FileName = fileName;
saveFileDialog.ValidateNames = true;
DialogResult dialogResult = saveFileDialog.ShowDialog();
if (dialogResult == DialogResult.OK) {
StreamWriter fileStream = new StreamWriter(saveFileDialog.OpenFile());
try {
fileStream.Write(TextBox.Text);
unsavedChanges = false;
okToOverwrite = true;
fileName = saveFileDialog.FileName;
ShowSavedMessage();
} catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally {
fileStream.Close();
UpdateTitle();
}
}
}
private void ShowSavedMessage() {
label1.Text = "File saved";
SavedLabelTimer.Start();
}
private void UpdateRowsAndColumnsPreview() {
int line = TextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = TextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
line++;
column++;
label1.Text = "row: " + line.ToString() + " col: " + column.ToString();
}
private void HandleKeypress() {
if (newWindow) newWindow = false;
UpdateSaveStatus();
UpdateRowsAndColumnsPreview();
}
private void UpdateSaveStatus() {
if (!unsavedChanges) {
unsavedChanges = true;
UpdateTitle();
}
}
private void OpenFile() {
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK) {
if (newWindow) {
StreamReader fileStream = new StreamReader(openFileDialog.OpenFile());
TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false;
okToOverwrite = true;
newWindow = false;
UpdateTitle(openFileDialog.FileName);
fileStream.Close();
} else new TextEditor(openFileDialog).Show();
}
}
private void RunCode() {
if (DisplayForm == null || DisplayForm.IsDisposed) {
DisplayForm = new Draw_Preview(TextBox.Text);
} else {
Console.WriteLine("Removed all commands");
DisplayForm.RemoveAllCommands();
DisplayForm.SubmitCommands(TextBox.Text);
}
if (DisplayForm.IsSuccess()) {
DisplayForm.Show();
DisplayForm.Focus();
}
}
/// <summary>
/// This function checks if the code written is OK
/// </summary>
public void CheckCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text);
if (tmpDrawPreview.IsSuccess()) new ErrorWindow("No errors", "No errors found in the program", "There have been no errors found", ErrorWindow.INFO_MESSAGE).Show();
tmpDrawPreview.Close();
MenuManager.WindowClosed();
tmpDrawPreview.Dispose();
}
private void HandleExit(FormClosingEventArgs e) {
if (unsavedChanges) {
DialogResult dialogResult = MessageBox.Show("You have unsaved work. Would you like to discard your work?", "Unsaved work!", MessageBoxButtons.YesNo, MessageBoxIcon.None);
if (e != null) e.Cancel = dialogResult != DialogResult.Yes;
}
}
private void DescribeCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text);
string commandDesc = tmpDrawPreview.DescribeAllCommands();
Console.WriteLine(commandDesc);
tmpDrawPreview.Close();
MenuManager.WindowClosed();
tmpDrawPreview.Dispose();
new DetailsWindow(commandDesc, "Command explanation").Show();
}
private void Console_FormClosed(object sender, FormClosedEventArgs e) {
if (DisplayForm != null && !DisplayForm.IsDisposed) DisplayForm.ReleaseCommandLock();
MenuManager.WindowClosed();
Dispose();
}
private void RunToolStripMenuItem_Click(object sender, EventArgs e) => RunCode();
private void CreateNewInstance() => new TextEditor().Show();
private void HandleKeypress(object sender, EventArgs e) => HandleKeypress();
private void TextBoxClick(object sender, EventArgs e) => UpdateRowsAndColumnsPreview();
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e) => SaveFileAs();
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) => SaveFile();
private void NewFileToolStripMenuItem_Click(object sender, EventArgs e) => CreateNewInstance();
private void AboutToolStripMenuItem_Click(object sender, EventArgs e) => new About_Window().Show();
private void Text_Editor_FormClosing(object sender, FormClosingEventArgs e) => HandleExit(e);
private void ExitToolStripMenuItem_Click(object sender, EventArgs e) => Close();
private void OpenToolStripMenuItem_Click(object sender, EventArgs e) => OpenFile();
private void Text_Editor_PreviewKeyDown(object sender, KeyEventArgs e) {
//New window
if (e.Control && e.KeyCode == Keys.N) {
CreateNewInstance();
e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.S) {
SaveFile();
e.Handled = true;
} else if (e.Control && e.Shift && e.KeyCode == Keys.S) {
SaveFileAs();
e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.O) {
OpenFile();
e.Handled = true;
} else if (e.KeyCode == Keys.F5) {
RunCode();
e.Handled = true;
} else if (e.KeyCode == Keys.F5 && e.Shift) {
CheckCode();
e.Handled = true;
} else if (e.KeyCode == Keys.F1 && e.Shift) {
DescribeCode();
e.Handled = true;
} else {
UpdateRowsAndColumnsPreview();
}
}
private void CheckSyntaxToolStripMenuItem_Click(object sender, EventArgs e) => CheckCode();
private void DescribeToolStripMenuItem_Click(object sender, EventArgs e) => DescribeCode();
private void SavedLableTimerTick(object sender, EventArgs e) {
UpdateRowsAndColumnsPreview();
SavedLabelTimer.Stop();
}
private void TextBox_KeyUp(object sender, KeyEventArgs e) => UpdateRowsAndColumnsPreview();
private void HelpToolStripMenuItem1_Click(object sender, EventArgs e) => new CommandHelp().Show();
}
}
@@ -1,206 +1,206 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="SavedLabelTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>59</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="SavedLabelTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>59</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8=
</value>
</data>
</root>
@@ -0,0 +1,156 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('annotated.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering.html" target="_self">Advanced_Software_Engineering</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs.html" target="_self">Verbs</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs.html" target="_self">DrawingVerbs</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_circle.html" target="_self">Circle</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_circle.html" title="Circle IVerb class.">Circle</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_clear.html" target="_self">Clear</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_clear.html" title="The Clear IVerb class.">Clear</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_dot.html" target="_self">Dot</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_dot.html" title="The Dot IVerb class">Dot</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_draw_lines.html" target="_self">DrawLines</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_draw_lines.html" title="DrawLines IVerb class">DrawLines</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_draw_to.html" target="_self">DrawTo</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_draw_to.html" title="DrawTo IVerb class">DrawTo</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_fill.html" target="_self">Fill</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_fill.html" title="Fill IVerb class">Fill</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_6_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_fill_color.html" target="_self">FillColor</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_fill_color.html" title="The FillColor IVerb class">FillColor</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_7_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_move_to.html" target="_self">MoveTo</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_move_to.html" title="MoveTo IVerb class">MoveTo</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_8_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_pen_color.html" target="_self">PenColor</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_pen_color.html" title="The PenColor IVerb class">PenColor</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_9_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_quadrilateral.html" target="_self">Quadrilateral</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_quadrilateral.html" title="The Quadrilateral IVerb class">Quadrilateral</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_10_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_rectangle.html" target="_self">Rectangle</a></td><td class="desc"><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_rectangle.html" title="Rectangle IVerb class">Rectangle</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_11_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_regular_polygon.html" target="_self">RegularPolygon</a></td><td class="desc">A class that generates a <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_regular_polygon.html" title="A class that generates a RegularPolygon IVerb.">RegularPolygon</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> </td></tr>
<tr id="row_0_0_0_12_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_reset_pen.html" target="_self">ResetPen</a></td><td class="desc">Setsets the pen to the initial position </td></tr>
<tr id="row_0_0_0_13_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_square.html" target="_self">Square</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_square.html" title="The Square IVerb class">Square</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_0_14_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_triangle.html" target="_self">Triangle</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_drawing_verbs_1_1_triangle.html" title="The Triangle IVerb class">Triangle</a> <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> class </td></tr>
<tr id="row_0_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_flow.html" target="_self">Flow</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_declare_method.html" target="_self">DeclareMethod</a></td><td class="desc">Declares a method. See DrawingVerbs.Actions.NoOp because these classes behave similarly </td></tr>
<tr id="row_0_0_1_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_for_chunk.html" target="_self">ForChunk</a></td><td class="desc">A <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_for_chunk.html" title="A ForChunk is similar to a WhileChunk. It executes a specific number of times.">ForChunk</a> is similar to a <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_while_chunk.html" title="A Chunk that loops over its code">WhileChunk</a>. It executes a specific number of times </td></tr>
<tr id="row_0_0_1_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_if_chunk.html" target="_self">IfChunk</a></td><td class="desc">A simple If Object </td></tr>
<tr id="row_0_0_1_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interface_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_i_verb_chunk.html" target="_self">IVerbChunk</a></td><td class="desc">A Collection of chunks to be executed. They extend <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> because they should be interchangable </td></tr>
<tr id="row_0_0_1_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_method_chunk.html" target="_self">MethodChunk</a></td><td class="desc">The method chunk class </td></tr>
<tr id="row_0_0_1_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_verb_chunk.html" target="_self">VerbChunk</a></td><td class="desc">A simple <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_verb_chunk.html" title="A simple VerbChunk. Used for storing and executing a bunch of verbs">VerbChunk</a>. Used for storing and executing a bunch of verbs </td></tr>
<tr id="row_0_0_1_6_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_flow_1_1_while_chunk.html" target="_self">WhileChunk</a></td><td class="desc">A Chunk that loops over its code </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_2_" class="arrow" onclick="toggleFolder('0_0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_value.html" target="_self">Value</a></td><td class="desc"></td></tr>
<tr id="row_0_0_2_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_2_0_" class="arrow" onclick="toggleFolder('0_0_2_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_objects.html" target="_self">ValueObjects</a></td><td class="desc"></td></tr>
<tr id="row_0_0_2_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_objects_1_1_point_value.html" target="_self">PointValue</a></td><td class="desc">A point <a class="el" href="interface_advanced___software___engineering_1_1_verbs_1_1_value_1_1_i_value.html" title="A value">IValue</a>. Simply the same as Point but with IValues intstead of ints </td></tr>
<tr id="row_0_0_2_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_2_1_" class="arrow" onclick="toggleFolder('0_0_2_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_types.html" target="_self">ValueTypes</a></td><td class="desc"></td></tr>
<tr id="row_0_0_2_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_types_1_1_variable_value.html" target="_self">VariableValue</a></td><td class="desc">Variable value is responsible for setting up values for <a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_update_variable.html" title="Used for updating the variables">UpdateVariable</a> to then update </td></tr>
<tr id="row_0_0_2_2_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_declare_variable.html" target="_self">DeclareVariable</a></td><td class="desc">Declares a variable </td></tr>
<tr id="row_0_0_2_3_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_expression_value.html" target="_self">ExpressionValue</a></td><td class="desc">Expression values are used when there are two IValues that need to be added or subtracted or anything from each other </td></tr>
<tr id="row_0_0_2_4_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interface_advanced___software___engineering_1_1_verbs_1_1_value_1_1_i_value.html" target="_self">IValue</a></td><td class="desc">A value </td></tr>
<tr id="row_0_0_2_5_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_update_variable.html" target="_self">UpdateVariable</a></td><td class="desc">Used for updating the variables </td></tr>
<tr id="row_0_0_2_6_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_container.html" target="_self">ValueContainer</a></td><td class="desc"></td></tr>
<tr id="row_0_0_2_7_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_factory.html" target="_self">ValueFactory</a></td><td class="desc"><a class="el" href="namespace_advanced___software___engineering_1_1_verbs_1_1_value.html">Value</a> factory creates values </td></tr>
<tr id="row_0_0_2_8_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_helper.html" target="_self">ValueHelper</a></td><td class="desc">This class contains a large amount of useful conversions </td></tr>
<tr id="row_0_0_2_9_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verbs_1_1_value_1_1_value_storage.html" target="_self">ValueStorage</a></td><td class="desc">The storage for all the values </td></tr>
<tr id="row_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_about___window.html" target="_self">About_Window</a></td><td class="desc">Auto generated code </td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html" target="_self">CommandAndParameterParserResult</a></td><td class="desc">This class is a direct replacement to the dictionaries that were returned by <a class="el" href="class_advanced___software___engineering_1_1_helper_functions.html#a9ef9da799e2adfe0213313c9642f1de8" title="Parses the commands into a directry that Commander can use. See Commander">HelperFunctions.CommandAndParameterParser(string)</a>. This class provides better intraface to the output </td></tr>
<tr id="row_0_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_commander.html" target="_self">Commander</a></td><td class="desc">The commander class takes care of commands. It also takes control of the drawer </td></tr>
<tr id="row_0_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_command_help.html" target="_self">CommandHelp</a></td><td class="desc">This class is resposible for the command help window. The command help window shows help for the commands </td></tr>
<tr id="row_0_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_details_window.html" target="_self">DetailsWindow</a></td><td class="desc">This form is reponsible for showing details. It is essentially a textbox in a form </td></tr>
<tr id="row_0_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_draw___preview.html" target="_self">Draw_Preview</a></td><td class="desc">Auto Generated Code </td></tr>
<tr id="row_0_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_drawer.html" target="_self">Drawer</a></td><td class="desc">The drawer is responsible for drawing on the graphics object </td></tr>
<tr id="row_0_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_error_window.html" target="_self">ErrorWindow</a></td><td class="desc">The error window that can show errors, warnings and messages </td></tr>
<tr id="row_0_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_helper_functions.html" target="_self">HelperFunctions</a></td><td class="desc">This class simply provides settings and some functions that are used across many components </td></tr>
<tr id="row_0_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" target="_self">IVerb</a></td><td class="desc"><a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> is an interface for executing and getting the descriptions of <a class="el" href="namespace_advanced___software___engineering_1_1_verbs.html">Verbs</a>. Some <a class="el" href="namespace_advanced___software___engineering_1_1_verbs.html">Verbs</a> draw lines, some verbs will assign </td></tr>
<tr id="row_0_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_menu.html" target="_self">Menu</a></td><td class="desc">Auto generated code </td></tr>
<tr id="row_0_12_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_text_editor.html" target="_self">TextEditor</a></td><td class="desc">Auto generated code </td></tr>
<tr id="row_0_13_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering_1_1_verb_factory.html" target="_self">VerbFactory</a></td><td class="desc">This class is responsible for creating <a class="el" href="namespace_advanced___software___engineering_1_1_verbs.html">Verbs</a> </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_advanced___software___engineering___tests.html" target="_self">Advanced_Software_Engineering_Tests</a></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering___tests_1_1_command_tester.html" target="_self">CommandTester</a></td><td class="desc">The <a class="el" href="class_advanced___software___engineering___tests_1_1_command_tester.html" title="The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it&#39;s desc...">CommandTester</a> class tests the commands possible, mostly by getting a IVerb and checking it's description. </td></tr>
<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_advanced___software___engineering___tests_1_1_helper_functions_tester.html" target="_self">HelperFunctionsTester</a></td><td class="desc">This class tests HelperFunctions methods. It uses a combination of manual and random tests </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var annotated_dup =
[
[ "Advanced_Software_Engineering", "namespace_advanced___software___engineering.html", "namespace_advanced___software___engineering" ],
[ "Advanced_Software_Engineering_Tests", "namespace_advanced___software___engineering___tests.html", "namespace_advanced___software___engineering___tests" ]
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

@@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_about___window.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.About_Window Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="class_advanced___software___engineering_1_1_about___window.html">Advanced_Software_Engineering.About_Window</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html#a0353daeb3889287b3ed4d4ae0e5c4a95">About_Window</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html">Advanced_Software_Engineering.About_Window</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html#acfb3ec119316fac00be14bc8d567c8de">Dispose</a>(bool disposing)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html">Advanced_Software_Engineering.About_Window</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,166 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Advanced_Software_Engineering.About_Window Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_about___window.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="class_advanced___software___engineering_1_1_about___window-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.About_Window Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Auto generated code
<a href="class_advanced___software___engineering_1_1_about___window.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Advanced_Software_Engineering.About_Window:</div>
<div class="dyncontent">
<div class="center">
<img src="class_advanced___software___engineering_1_1_about___window.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0353daeb3889287b3ed4d4ae0e5c4a95"><td class="memItemLeft" align="right" valign="top"><a id="a0353daeb3889287b3ed4d4ae0e5c4a95"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html#a0353daeb3889287b3ed4d4ae0e5c4a95">About_Window</a> ()</td></tr>
<tr class="memdesc:a0353daeb3889287b3ed4d4ae0e5c4a95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an About Window which shows details about the program. /summary&gt; <br /></td></tr>
<tr class="separator:a0353daeb3889287b3ed4d4ae0e5c4a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:acfb3ec119316fac00be14bc8d567c8de"><td class="memItemLeft" align="right" valign="top">override void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html#acfb3ec119316fac00be14bc8d567c8de">Dispose</a> (bool disposing)</td></tr>
<tr class="memdesc:acfb3ec119316fac00be14bc8d567c8de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clean up any resources being used. <a href="class_advanced___software___engineering_1_1_about___window.html#acfb3ec119316fac00be14bc8d567c8de">More...</a><br /></td></tr>
<tr class="separator:acfb3ec119316fac00be14bc8d567c8de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Auto generated code </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="acfb3ec119316fac00be14bc8d567c8de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfb3ec119316fac00be14bc8d567c8de">&#9670;&nbsp;</a></span>Dispose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">override void Advanced_Software_Engineering.About_Window.Dispose </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>disposing</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Clean up any resources being used. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">disposing</td><td>true if managed resources should be disposed; otherwise, false.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>Advanced Software Engineering/Windows/AboutWindow.cs</li>
<li>Advanced Software Engineering/Windows/AboutWindow.Designer.cs</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_advanced___software___engineering.html">Advanced_Software_Engineering</a></li><li class="navelem"><a class="el" href="class_advanced___software___engineering_1_1_about___window.html">About_Window</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var class_advanced___software___engineering_1_1_about___window =
[
[ "About_Window", "class_advanced___software___engineering_1_1_about___window.html#a0353daeb3889287b3ed4d4ae0e5c4a95", null ],
[ "Dispose", "class_advanced___software___engineering_1_1_about___window.html#acfb3ec119316fac00be14bc8d567c8de", null ]
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

@@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.CommandAndParameterParserResult Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html">Advanced_Software_Engineering.CommandAndParameterParserResult</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#ae53327aa9d9301559bc0e08de5c70632">CommandAndParameterParserResult</a>(string command, string[] parameters)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html">Advanced_Software_Engineering.CommandAndParameterParserResult</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#aa9e6b9e408e380587efb1e8e4f928335">GetCommand</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html">Advanced_Software_Engineering.CommandAndParameterParserResult</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#adff164e86339e3b3b0fa1da61e2305bf">GetParameters</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html">Advanced_Software_Engineering.CommandAndParameterParserResult</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,201 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Advanced_Software_Engineering.CommandAndParameterParserResult Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.CommandAndParameterParserResult Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This class is a direct replacement to the dictionaries that were returned by <a class="el" href="class_advanced___software___engineering_1_1_helper_functions.html#a9ef9da799e2adfe0213313c9642f1de8" title="Parses the commands into a directry that Commander can use. See Commander">HelperFunctions.CommandAndParameterParser(string)</a>. This class provides better intraface to the output.
<a href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae53327aa9d9301559bc0e08de5c70632"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#ae53327aa9d9301559bc0e08de5c70632">CommandAndParameterParserResult</a> (string command, string[] parameters)</td></tr>
<tr class="memdesc:ae53327aa9d9301559bc0e08de5c70632"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a new Result <a href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#ae53327aa9d9301559bc0e08de5c70632">More...</a><br /></td></tr>
<tr class="separator:ae53327aa9d9301559bc0e08de5c70632"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9e6b9e408e380587efb1e8e4f928335"><td class="memItemLeft" align="right" valign="top">string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#aa9e6b9e408e380587efb1e8e4f928335">GetCommand</a> ()</td></tr>
<tr class="memdesc:aa9e6b9e408e380587efb1e8e4f928335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the command from the result <a href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#aa9e6b9e408e380587efb1e8e4f928335">More...</a><br /></td></tr>
<tr class="separator:aa9e6b9e408e380587efb1e8e4f928335"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff164e86339e3b3b0fa1da61e2305bf"><td class="memItemLeft" align="right" valign="top">string[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#adff164e86339e3b3b0fa1da61e2305bf">GetParameters</a> ()</td></tr>
<tr class="memdesc:adff164e86339e3b3b0fa1da61e2305bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the command parameters <a href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#adff164e86339e3b3b0fa1da61e2305bf">More...</a><br /></td></tr>
<tr class="separator:adff164e86339e3b3b0fa1da61e2305bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class is a direct replacement to the dictionaries that were returned by <a class="el" href="class_advanced___software___engineering_1_1_helper_functions.html#a9ef9da799e2adfe0213313c9642f1de8" title="Parses the commands into a directry that Commander can use. See Commander">HelperFunctions.CommandAndParameterParser(string)</a>. This class provides better intraface to the output. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ae53327aa9d9301559bc0e08de5c70632"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae53327aa9d9301559bc0e08de5c70632">&#9670;&nbsp;</a></span>CommandAndParameterParserResult()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Advanced_Software_Engineering.CommandAndParameterParserResult.CommandAndParameterParserResult </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>command</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">string[]&#160;</td>
<td class="paramname"><em>parameters</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generates a new Result </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td>The command</td></tr>
<tr><td class="paramname">parameters</td><td>The parameters</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa9e6b9e408e380587efb1e8e4f928335"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9e6b9e408e380587efb1e8e4f928335">&#9670;&nbsp;</a></span>GetCommand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string Advanced_Software_Engineering.CommandAndParameterParserResult.GetCommand </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the command from the result </p>
<dl class="section return"><dt>Returns</dt><dd>the command</dd></dl>
</div>
</div>
<a id="adff164e86339e3b3b0fa1da61e2305bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adff164e86339e3b3b0fa1da61e2305bf">&#9670;&nbsp;</a></span>GetParameters()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string [] Advanced_Software_Engineering.CommandAndParameterParserResult.GetParameters </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the command parameters </p>
<dl class="section return"><dt>Returns</dt><dd>command parameters</dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Advanced Software Engineering/HelperFunctions.cs</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_advanced___software___engineering.html">Advanced_Software_Engineering</a></li><li class="navelem"><a class="el" href="class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html">CommandAndParameterParserResult</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,6 @@
var class_advanced___software___engineering_1_1_command_and_parameter_parser_result =
[
[ "CommandAndParameterParserResult", "class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#ae53327aa9d9301559bc0e08de5c70632", null ],
[ "GetCommand", "class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#aa9e6b9e408e380587efb1e8e4f928335", null ],
[ "GetParameters", "class_advanced___software___engineering_1_1_command_and_parameter_parser_result.html#adff164e86339e3b3b0fa1da61e2305bf", null ]
];
@@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_command_help.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.CommandHelp Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="class_advanced___software___engineering_1_1_command_help.html">Advanced_Software_Engineering.CommandHelp</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html#a38b129b6290edb20ec8eef80d3329581">CommandHelp</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html">Advanced_Software_Engineering.CommandHelp</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html#a10f65ed95c5177c2ecb46db714b62ecf">Dispose</a>(bool disposing)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html">Advanced_Software_Engineering.CommandHelp</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,185 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Advanced_Software_Engineering.CommandHelp Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_command_help.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="class_advanced___software___engineering_1_1_command_help-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.CommandHelp Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>This class is resposible for the command help window. The command help window shows help for the commands.
<a href="class_advanced___software___engineering_1_1_command_help.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Advanced_Software_Engineering.CommandHelp:</div>
<div class="dyncontent">
<div class="center">
<img src="class_advanced___software___engineering_1_1_command_help.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a38b129b6290edb20ec8eef80d3329581"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html#a38b129b6290edb20ec8eef80d3329581">CommandHelp</a> ()</td></tr>
<tr class="memdesc:a38b129b6290edb20ec8eef80d3329581"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initilize <a class="el" href="class_advanced___software___engineering_1_1_command_help.html" title="This class is resposible for the command help window. The command help window shows help for the comm...">CommandHelp</a>. <a href="class_advanced___software___engineering_1_1_command_help.html#a38b129b6290edb20ec8eef80d3329581">More...</a><br /></td></tr>
<tr class="separator:a38b129b6290edb20ec8eef80d3329581"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a10f65ed95c5177c2ecb46db714b62ecf"><td class="memItemLeft" align="right" valign="top">override void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html#a10f65ed95c5177c2ecb46db714b62ecf">Dispose</a> (bool disposing)</td></tr>
<tr class="memdesc:a10f65ed95c5177c2ecb46db714b62ecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clean up any resources being used. <a href="class_advanced___software___engineering_1_1_command_help.html#a10f65ed95c5177c2ecb46db714b62ecf">More...</a><br /></td></tr>
<tr class="separator:a10f65ed95c5177c2ecb46db714b62ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This class is resposible for the command help window. The command help window shows help for the commands. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a38b129b6290edb20ec8eef80d3329581"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38b129b6290edb20ec8eef80d3329581">&#9670;&nbsp;</a></span>CommandHelp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Advanced_Software_Engineering.CommandHelp.CommandHelp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initilize <a class="el" href="class_advanced___software___engineering_1_1_command_help.html" title="This class is resposible for the command help window. The command help window shows help for the comm...">CommandHelp</a>. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a10f65ed95c5177c2ecb46db714b62ecf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10f65ed95c5177c2ecb46db714b62ecf">&#9670;&nbsp;</a></span>Dispose()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">override void Advanced_Software_Engineering.CommandHelp.Dispose </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>disposing</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Clean up any resources being used. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">disposing</td><td>true if managed resources should be disposed; otherwise, false.</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>Advanced Software Engineering/Windows/CommandHelp.cs</li>
<li>Advanced Software Engineering/Windows/CommandHelp.Designer.cs</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_advanced___software___engineering.html">Advanced_Software_Engineering</a></li><li class="navelem"><a class="el" href="class_advanced___software___engineering_1_1_command_help.html">CommandHelp</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,5 @@
var class_advanced___software___engineering_1_1_command_help =
[
[ "CommandHelp", "class_advanced___software___engineering_1_1_command_help.html#a38b129b6290edb20ec8eef80d3329581", null ],
[ "Dispose", "class_advanced___software___engineering_1_1_command_help.html#a10f65ed95c5177c2ecb46db714b62ecf", null ]
];
Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

@@ -0,0 +1,110 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_commander.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.Commander Member List</div> </div>
</div><!--header-->
<div class="contents">
<p>This is the complete list of members for <a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a5302b164dd665ab04be9371715e349b1">AddCommand</a>(IVerb command)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#aeb458f428da383573abfa8d383d57c7e">Commander</a>(Graphics graphics)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#afe4b1718e56a5bf7527e79a1bca04806">Commander</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a90249188220cd4b799a8a6fc0991b070">Commander</a>(Graphics graphics, string rawCommands)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af27d54abd28b28688b68638c47ee4c16">DrawAllCommands</a>(Graphics updateGraphicsElement)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#afc12bab7c8f0c0b6f410522d7dc0006b">ExplainCommands</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a8c04ac09ab9d88ba7b20959ee8ec397f">GetLastStatus</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af26f94701ea4fe9827ac6ee0fc4791c3">ProcessCommands</a>(string rawCommands, bool pardonCommands=false)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#aa50faec513eb08ffacd646b107997785">ProcessCommandsAndExecute</a>(string rawCommands, bool pardonCommands=false)</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af92bbeb5d08ab1445f30f4e05dcee30b">RemoveAllCommands</a>()</td><td class="entry"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Advanced_Software_Engineering.Commander</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
@@ -0,0 +1,417 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Advanced Software Engineering: Advanced_Software_Engineering.Commander Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Advanced Software Engineering
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('class_advanced___software___engineering_1_1_commander.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_advanced___software___engineering_1_1_commander-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Advanced_Software_Engineering.Commander Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>The commander class takes care of commands. It also takes control of the drawer.
<a href="class_advanced___software___engineering_1_1_commander.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af27d54abd28b28688b68638c47ee4c16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af27d54abd28b28688b68638c47ee4c16">DrawAllCommands</a> (Graphics updateGraphicsElement)</td></tr>
<tr class="memdesc:af27d54abd28b28688b68638c47ee4c16"><td class="mdescLeft">&#160;</td><td class="mdescRight">This command updates the graphics element (usually) when the page repaints. <a href="class_advanced___software___engineering_1_1_commander.html#af27d54abd28b28688b68638c47ee4c16">More...</a><br /></td></tr>
<tr class="separator:af27d54abd28b28688b68638c47ee4c16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb458f428da383573abfa8d383d57c7e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#aeb458f428da383573abfa8d383d57c7e">Commander</a> (Graphics graphics)</td></tr>
<tr class="memdesc:aeb458f428da383573abfa8d383d57c7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance. <a href="class_advanced___software___engineering_1_1_commander.html#aeb458f428da383573abfa8d383d57c7e">More...</a><br /></td></tr>
<tr class="separator:aeb458f428da383573abfa8d383d57c7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe4b1718e56a5bf7527e79a1bca04806"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#afe4b1718e56a5bf7527e79a1bca04806">Commander</a> ()</td></tr>
<tr class="memdesc:afe4b1718e56a5bf7527e79a1bca04806"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance without a context. Should only be used for testing purpouses. <a href="class_advanced___software___engineering_1_1_commander.html#afe4b1718e56a5bf7527e79a1bca04806">More...</a><br /></td></tr>
<tr class="separator:afe4b1718e56a5bf7527e79a1bca04806"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90249188220cd4b799a8a6fc0991b070"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a90249188220cd4b799a8a6fc0991b070">Commander</a> (Graphics graphics, string rawCommands)</td></tr>
<tr class="memdesc:a90249188220cd4b799a8a6fc0991b070"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance with a graphics context and commands to process right off the bat. <a href="class_advanced___software___engineering_1_1_commander.html#a90249188220cd4b799a8a6fc0991b070">More...</a><br /></td></tr>
<tr class="separator:a90249188220cd4b799a8a6fc0991b070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5302b164dd665ab04be9371715e349b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a5302b164dd665ab04be9371715e349b1">AddCommand</a> (<a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html">IVerb</a> command)</td></tr>
<tr class="memdesc:a5302b164dd665ab04be9371715e349b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> to the command list to be executed. <a href="class_advanced___software___engineering_1_1_commander.html#a5302b164dd665ab04be9371715e349b1">More...</a><br /></td></tr>
<tr class="separator:a5302b164dd665ab04be9371715e349b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af26f94701ea4fe9827ac6ee0fc4791c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af26f94701ea4fe9827ac6ee0fc4791c3">ProcessCommands</a> (string rawCommands, bool pardonCommands=false)</td></tr>
<tr class="memdesc:af26f94701ea4fe9827ac6ee0fc4791c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">processes commands. Removes all commands if it fails parsing the raw commands. <a href="class_advanced___software___engineering_1_1_commander.html#af26f94701ea4fe9827ac6ee0fc4791c3">More...</a><br /></td></tr>
<tr class="separator:af26f94701ea4fe9827ac6ee0fc4791c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa50faec513eb08ffacd646b107997785"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#aa50faec513eb08ffacd646b107997785">ProcessCommandsAndExecute</a> (string rawCommands, bool pardonCommands=false)</td></tr>
<tr class="memdesc:aa50faec513eb08ffacd646b107997785"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes the commands and executes them at the same time. It's the same as <a href="class_advanced___software___engineering_1_1_commander.html#aa50faec513eb08ffacd646b107997785">More...</a><br /></td></tr>
<tr class="separator:aa50faec513eb08ffacd646b107997785"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af92bbeb5d08ab1445f30f4e05dcee30b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#af92bbeb5d08ab1445f30f4e05dcee30b">RemoveAllCommands</a> ()</td></tr>
<tr class="memdesc:af92bbeb5d08ab1445f30f4e05dcee30b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes all commands from the <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> and resets the drawer. <a href="class_advanced___software___engineering_1_1_commander.html#af92bbeb5d08ab1445f30f4e05dcee30b">More...</a><br /></td></tr>
<tr class="separator:af92bbeb5d08ab1445f30f4e05dcee30b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc12bab7c8f0c0b6f410522d7dc0006b"><td class="memItemLeft" align="right" valign="top">string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#afc12bab7c8f0c0b6f410522d7dc0006b">ExplainCommands</a> ()</td></tr>
<tr class="memdesc:afc12bab7c8f0c0b6f410522d7dc0006b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explains all of the commands in order <a href="class_advanced___software___engineering_1_1_commander.html#afc12bab7c8f0c0b6f410522d7dc0006b">More...</a><br /></td></tr>
<tr class="separator:afc12bab7c8f0c0b6f410522d7dc0006b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c04ac09ab9d88ba7b20959ee8ec397f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_advanced___software___engineering_1_1_commander.html#a8c04ac09ab9d88ba7b20959ee8ec397f">GetLastStatus</a> ()</td></tr>
<tr class="memdesc:a8c04ac09ab9d88ba7b20959ee8ec397f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the status of the code that was processed <a href="class_advanced___software___engineering_1_1_commander.html#a8c04ac09ab9d88ba7b20959ee8ec397f">More...</a><br /></td></tr>
<tr class="separator:a8c04ac09ab9d88ba7b20959ee8ec397f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The commander class takes care of commands. It also takes control of the drawer. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aeb458f428da383573abfa8d383d57c7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb458f428da383573abfa8d383d57c7e">&#9670;&nbsp;</a></span>Commander() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Advanced_Software_Engineering.Commander.Commander </td>
<td>(</td>
<td class="paramtype">Graphics&#160;</td>
<td class="paramname"><em>graphics</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">graphics</td><td>initial graphics object</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afe4b1718e56a5bf7527e79a1bca04806"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe4b1718e56a5bf7527e79a1bca04806">&#9670;&nbsp;</a></span>Commander() <span class="overload">[2/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Advanced_Software_Engineering.Commander.Commander </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance without a context. Should only be used for testing purpouses. </p>
</div>
</div>
<a id="a90249188220cd4b799a8a6fc0991b070"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90249188220cd4b799a8a6fc0991b070">&#9670;&nbsp;</a></span>Commander() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Advanced_Software_Engineering.Commander.Commander </td>
<td>(</td>
<td class="paramtype">Graphics&#160;</td>
<td class="paramname"><em>graphics</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>rawCommands</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> instance with a graphics context and commands to process right off the bat. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">graphics</td><td>Graphics contetx</td></tr>
<tr><td class="paramname">rawCommands</td><td>Commands to process</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5302b164dd665ab04be9371715e349b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5302b164dd665ab04be9371715e349b1">&#9670;&nbsp;</a></span>AddCommand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Advanced_Software_Engineering.Commander.AddCommand </td>
<td>(</td>
<td class="paramtype"><a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html">IVerb</a>&#160;</td>
<td class="paramname"><em>command</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a <a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> to the command list to be executed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">command</td><td><a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a> to be added. <dl class="section see"><dt>See also</dt><dd><a class="el" href="interface_advanced___software___engineering_1_1_i_verb.html" title="IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines,...">IVerb</a></dd></dl>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af27d54abd28b28688b68638c47ee4c16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af27d54abd28b28688b68638c47ee4c16">&#9670;&nbsp;</a></span>DrawAllCommands()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Advanced_Software_Engineering.Commander.DrawAllCommands </td>
<td>(</td>
<td class="paramtype">Graphics&#160;</td>
<td class="paramname"><em>updateGraphicsElement</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This command updates the graphics element (usually) when the page repaints. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">updateGraphicsElement</td><td>The graphics element to be updated</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afc12bab7c8f0c0b6f410522d7dc0006b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc12bab7c8f0c0b6f410522d7dc0006b">&#9670;&nbsp;</a></span>ExplainCommands()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string Advanced_Software_Engineering.Commander.ExplainCommands </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Explains all of the commands in order </p>
<dl class="section return"><dt>Returns</dt><dd>Explanation of all the commands</dd></dl>
</div>
</div>
<a id="a8c04ac09ab9d88ba7b20959ee8ec397f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c04ac09ab9d88ba7b20959ee8ec397f">&#9670;&nbsp;</a></span>GetLastStatus()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool Advanced_Software_Engineering.Commander.GetLastStatus </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the status of the code that was processed </p>
<dl class="section return"><dt>Returns</dt><dd>False if there was no error. True if there was an error</dd></dl>
</div>
</div>
<a id="af26f94701ea4fe9827ac6ee0fc4791c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af26f94701ea4fe9827ac6ee0fc4791c3">&#9670;&nbsp;</a></span>ProcessCommands()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Advanced_Software_Engineering.Commander.ProcessCommands </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>rawCommands</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>pardonCommands</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>processes commands. Removes all commands if it fails parsing the raw commands. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rawCommands</td><td>Processes commands seperated by <br />
or \r<br />
</td></tr>
<tr><td class="paramname">pardonCommands</td><td>If the command is wrong, don't remove all of the commands</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa50faec513eb08ffacd646b107997785"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa50faec513eb08ffacd646b107997785">&#9670;&nbsp;</a></span>ProcessCommandsAndExecute()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Advanced_Software_Engineering.Commander.ProcessCommandsAndExecute </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>rawCommands</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>pardonCommands</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Processes the commands and executes them at the same time. It's the same as </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">rawCommands</td><td>Processes commands seperated by <br />
or \r<br />
</td></tr>
<tr><td class="paramname">pardonCommands</td><td>If the command is wrong, don't remove all of the commands</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af92bbeb5d08ab1445f30f4e05dcee30b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af92bbeb5d08ab1445f30f4e05dcee30b">&#9670;&nbsp;</a></span>RemoveAllCommands()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void Advanced_Software_Engineering.Commander.RemoveAllCommands </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes all commands from the <a class="el" href="class_advanced___software___engineering_1_1_commander.html" title="The commander class takes care of commands. It also takes control of the drawer.">Commander</a> and resets the drawer. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>Advanced Software Engineering/Commander.cs</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespace_advanced___software___engineering.html">Advanced_Software_Engineering</a></li><li class="navelem"><a class="el" href="class_advanced___software___engineering_1_1_commander.html">Commander</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>
Loaded 100 of 667 files, more files were not shown because too many files have changed in this diff. Show more