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"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Advanced_Software_Engineering_Tests</RootNamespace> <RootNamespace>Advanced_Software_Engineering_Tests</RootNamespace>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <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> <DocumentationFile>C:\Users\Uni\Documents\Projects\Advanced Software Engineering\Advanced Software Engineering\Advanced Software Engineering Tests\Advanced Software Engineering Tests.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.0" /> <PackageReference Include="MSTest.TestAdapter" Version="2.1.0" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.0" /> <PackageReference Include="MSTest.TestFramework" Version="2.1.0" />
<PackageReference Include="coverlet.collector" Version="1.2.0" /> <PackageReference Include="coverlet.collector" Version="1.2.0" />
<PackageReference Include="System.Drawing.Common" Version="4.7.0" /> <PackageReference Include="System.Drawing.Common" Version="4.7.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Advanced Software Engineering\Advanced Software Engineering.csproj" /> <ProjectReference Include="..\Advanced Software Engineering\Advanced Software Engineering.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Update="Properties\Resources.Designer.cs"> <Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx"> <EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
</Project> </Project>
@@ -1,242 +1,242 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<doc> <doc>
<assembly> <assembly>
<name>Advanced Software Engineering Tests</name> <name>Advanced Software Engineering Tests</name>
</assembly> </assembly>
<members> <members>
<member name="T:Advanced_Software_Engineering_Tests.CommandTester"> <member name="T:Advanced_Software_Engineering_Tests.CommandTester">
<summary> <summary>
The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description.. The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.VerbFactoryTester_Automatic1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.VerbFactoryTester_Automatic1">
<summary> <summary>
Automatically tests: Automatically tests:
- moveto - moveto
- drawto - drawto
- line - line
- rp - rp
Current todo list: Current todo list:
- square - square
- rectangle - rectangle
- circle - circle
- triangle - triangle
- dot - dot
- clear - clear
- pen - pen
- fill - fill
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual1">
<summary> <summary>
tests the "move" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>. tests the "move" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.MoveToTester_Manual2">
<summary> <summary>
tests the "moveto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>. tests the "moveto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.MoveTo"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual1">
<summary> <summary>
tests the "drawto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>. tests the "drawto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual2">
<summary> <summary>
tests the "line" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>. tests the "line" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual3"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.DrawToTester_Manual3">
<summary> <summary>
tests the "lineto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>. tests the "lineto" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.DrawTo"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual1">
<summary> <summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>. tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual2">
<summary> <summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>. tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual3"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual3">
<summary> <summary>
tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>. tests the "regularpolygon" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual4"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.RegularPolygonTester_Manual4">
<summary> <summary>
tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>. tests the "rp" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.RegularPolygon"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual1">
<summary> <summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>. tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.SquareTester_Manual2">
<summary> <summary>
tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>. tests the "square" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Square"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.CircleTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.CircleTester_Manual1">
<summary> <summary>
Tests the "circle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>. Tests the "circle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual1">
<summary> <summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>. tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.TriangleTester_Manual2">
<summary> <summary>
tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>. tests the "triangle" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Triangle"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.DotTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.DotTester_Manual1">
<summary> <summary>
test the "dot" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Dot"/>. test the "dot" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Dot"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ClearTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.ClearTester_Manual1">
<summary> <summary>
tests the "clear" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>. tests the "clear" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.Circle"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual1">
<summary> <summary>
Tests the "reset" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/> Tests the "reset" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.ResetPenTester_Manual2">
<summary> <summary>
Tests the "resetpen" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>. Tests the "resetpen" command. See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.ResetPen"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.PenTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.PenTester_Manual1">
<summary> <summary>
Tests the command "pen". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.PenColor"/> Tests the command "pen". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.PenColor"/>
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.FillTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.FillTester_Manual1">
<summary> <summary>
Tests the command "fill". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.FillColor"/>. Tests the command "fill". See <see cref="T:Advanced_Software_Engineering.Verbs.DrawingVerbs.FillColor"/>.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.IfTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.IfTester_Manual1">
<summary> <summary>
Tests the "if" command. It hasn't been implemented yet. Tests the "if" command. It hasn't been implemented yet.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.MethodTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.MethodTester_Manual1">
<summary> <summary>
Tests the "def" command. It hasn't been implemented yet. Tests the "def" command. It hasn't been implemented yet.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.CommandTester.ValueTester_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.CommandTester.ValueTester_Manual1">
<summary> <summary>
Tests the "int" declaration and assignment. It hasn't been implemented yet. Tests the "int" declaration and assignment. It hasn't been implemented yet.
</summary> </summary>
</member> </member>
<member name="T:Advanced_Software_Engineering_Tests.HelperFunctionsTester"> <member name="T:Advanced_Software_Engineering_Tests.HelperFunctionsTester">
<summary> <summary>
This class tests <see cref="T:Advanced_Software_Engineering.HelperFunctions"/> methods. It uses a combination of manual and random tests. This class tests <see cref="T:Advanced_Software_Engineering.HelperFunctions"/> methods. It uses a combination of manual and random tests.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Random1"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Random1">
<summary> <summary>
Random strip spaces test Random strip spaces test
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual1">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.Strip_Manual2">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.Strip(System.String)"/> test
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual1">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.StripStringArray_Manual2">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.StripStringArray(System.String[])"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual1"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual1">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual2"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual2">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual3"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual3">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual4"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Manual4">
<summary> <summary>
Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test. Manual <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Random1"> <member name="M:Advanced_Software_Engineering_Tests.HelperFunctionsTester.CommandAndParameterParser_Random1">
<summary> <summary>
Random <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test. Random <see cref="M:Advanced_Software_Engineering.HelperFunctions.CommandAndParameterParser(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="T:Advanced_Software_Engineering_Tests.Properties.Resources"> <member name="T:Advanced_Software_Engineering_Tests.Properties.Resources">
<summary> <summary>
A strongly-typed resource class, for looking up localized strings, etc. A strongly-typed resource class, for looking up localized strings, etc.
</summary> </summary>
</member> </member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.ResourceManager"> <member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.ResourceManager">
<summary> <summary>
Returns the cached ResourceManager instance used by this class. Returns the cached ResourceManager instance used by this class.
</summary> </summary>
</member> </member>
<member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.Culture"> <member name="P:Advanced_Software_Engineering_Tests.Properties.Resources.Culture">
<summary> <summary>
Overrides the current thread's CurrentUICulture property for all Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class. resource lookups using this strongly typed resource class.
</summary> </summary>
</member> </member>
<member name="T:Advanced_Software_Engineering_Tests.ValueHelperTester"> <member name="T:Advanced_Software_Engineering_Tests.ValueHelperTester">
<summary> <summary>
This class tests <see cref="T:Advanced_Software_Engineering.Verbs.Value.ValueHelper"/> methods. It uses a combination of manual and random tests. This class tests <see cref="T:Advanced_Software_Engineering.Verbs.Value.ValueHelper"/> methods. It uses a combination of manual and random tests.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToInt_Random1"> <member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToInt_Random1">
<summary> <summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToInt(System.String)"/> test. Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToInt(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random1"> <member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random1">
<summary> <summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test. Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random2"> <member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random2">
<summary> <summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test. Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary> </summary>
</member> </member>
<member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random3"> <member name="M:Advanced_Software_Engineering_Tests.ValueHelperTester.ConvertToDouble_Random3">
<summary> <summary>
Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test. Random <see cref="M:Advanced_Software_Engineering.Verbs.Value.ValueHelper.ConvertToDouble(System.String)"/> test.
</summary> </summary>
</member> </member>
</members> </members>
</doc> </doc>
@@ -1,446 +1,446 @@
using Advanced_Software_Engineering; using Advanced_Software_Engineering;
using Advanced_Software_Engineering.Verbs.DrawingVerbs; using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering_Tests { namespace Advanced_Software_Engineering_Tests {
/// <summary> /// <summary>
/// The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description.. /// The CommandTester class tests the commands possible, mostly by getting a IVerb and checking it's description..
/// </summary> /// </summary>
[TestClass] [TestClass]
public class CommandTester { public class CommandTester {
private readonly Random rand = new Random(); private readonly Random rand = new Random();
/// <summary> /// <summary>
/// Automatically tests: /// Automatically tests:
/// - moveto /// - moveto
/// - drawto /// - drawto
/// - line /// - line
/// - rp /// - rp
/// Current todo list: /// Current todo list:
/// - square /// - square
/// - rectangle /// - rectangle
/// - circle /// - circle
/// - triangle /// - triangle
/// - dot /// - dot
/// - clear /// - clear
/// - pen /// - pen
/// - fill /// - fill
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void VerbFactoryTester_Automatic1() { public void VerbFactoryTester_Automatic1() {
Dictionary<string, int[]> commandParamaterNumber = new Dictionary<string, int[]> Dictionary<string, int[]> commandParamaterNumber = new Dictionary<string, int[]>
{ {
{"moveto", new int[] { 2 } }, {"moveto", new int[] { 2 } },
{"drawto", new int[] { 2 } }, {"drawto", new int[] { 2 } },
{"line", new int[] { 2 } }, {"line", new int[] { 2 } },
{"lineto", new int[] { 2 } }, {"lineto", new int[] { 2 } },
{"rp", new int[] { 2, 3 } }, {"rp", new int[] { 2, 3 } },
//todo: //todo:
{"square", new int[] { 1, 2, 8 } }, {"square", new int[] { 1, 2, 8 } },
{"rectangle", new int[] { 1, 2, 6 } }, {"rectangle", new int[] { 1, 2, 6 } },
{"circle", new int[] { 1 } }, {"circle", new int[] { 1 } },
{"triangle", new int[] { 1, 2 } }, {"triangle", new int[] { 1, 2 } },
{"dot", new int[] { 0 } }, {"dot", new int[] { 0 } },
{"clear", new int[] { 0 } }, {"clear", new int[] { 0 } },
{"pen", new int[] { 1, 3 } }, {"pen", new int[] { 1, 3 } },
{"fill", new int[] { 1, 3 } } {"fill", new int[] { 1, 3 } }
}; };
foreach (string command in commandParamaterNumber.Keys) { foreach (string command in commandParamaterNumber.Keys) {
foreach (int commandParameterNumbers in commandParamaterNumber[command]) { foreach (int commandParameterNumbers in commandParamaterNumber[command]) {
string input = command + " "; string input = command + " ";
List<int> inputParameters = new List<int>(); List<int> inputParameters = new List<int>();
for (int paramater = 0; paramater < commandParameterNumbers; paramater++) { for (int paramater = 0; paramater < commandParameterNumbers; paramater++) {
int inputParameter = rand.Next(1000); int inputParameter = rand.Next(1000);
inputParameters.Add(inputParameter); inputParameters.Add(inputParameter);
input += inputParameter + (paramater - 1 != commandParameterNumbers ? ", " : ""); input += inputParameter + (paramater - 1 != commandParameterNumbers ? ", " : "");
} }
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
if (command == "moveto") { if (command == "moveto") {
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "drawto" || command == "lineto" || command == "line") { } else if (command == "drawto" || command == "lineto" || command == "line") {
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} else if (command == "shape") { } else if (command == "shape") {
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc; string correctDesc;
if (commandParameterNumbers == 2) if (commandParameterNumbers == 2)
correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of 0 radians, with inner radius of " + (double)inputParameters[1]; correctDesc = "Draws a " + inputParameters[0] + " sided regular polygon, with rotation of 0 radians, with inner radius of " + (double)inputParameters[1];
else 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]; 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); Assert.AreEqual(correctDesc, verbDesc);
} }
} }
} }
} }
/// <summary> /// <summary>
/// tests the "move" command. See <see cref="MoveTo"/>. /// tests the "move" command. See <see cref="MoveTo"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void MoveToTester_Manual1() { public void MoveToTester_Manual1() {
string input = "move 200, 300"; string input = "move 200, 300";
string[] inputParameters = { "200", "300" }; string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "moveto" command. See <see cref="MoveTo"/>. /// tests the "moveto" command. See <see cref="MoveTo"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void MoveToTester_Manual2() { public void MoveToTester_Manual2() {
string input = "moveto 200, 300"; string input = "moveto 200, 300";
string[] inputParameters = { "200", "300" }; string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Move origin to " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "drawto" command. See <see cref="DrawTo"/>. /// tests the "drawto" command. See <see cref="DrawTo"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void DrawToTester_Manual1() { public void DrawToTester_Manual1() {
string input = "drawto 200, 300"; string input = "drawto 200, 300";
string[] inputParameters = { "200", "300" }; string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "line" command. See <see cref="DrawTo"/>. /// tests the "line" command. See <see cref="DrawTo"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void DrawToTester_Manual2() { public void DrawToTester_Manual2() {
string input = "line 200, 300"; string input = "line 200, 300";
string[] inputParameters = { "200", "300" }; string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "lineto" command. See <see cref="DrawTo"/>. /// tests the "lineto" command. See <see cref="DrawTo"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void DrawToTester_Manual3() { public void DrawToTester_Manual3() {
string input = "lineto 200, 300"; string input = "lineto 200, 300";
string[] inputParameters = { "200", "300" }; string[] inputParameters = { "200", "300" };
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1]; string correctDesc = "Draw line " + inputParameters[0] + ", " + inputParameters[1];
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>. /// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void RegularPolygonTester_Manual1() { public void RegularPolygonTester_Manual1() {
string input = "regularpolygon 3, 50"; string input = "regularpolygon 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 50; double scale = 50;
double offset = 0; double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>. /// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void RegularPolygonTester_Manual2() { public void RegularPolygonTester_Manual2() {
string input = "rp 3, 50"; string input = "rp 3, 50";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 50; double scale = 50;
double offset = 0; double offset = 0;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>. /// tests the "regularpolygon" command. See <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void RegularPolygonTester_Manual3() { public void RegularPolygonTester_Manual3() {
string input = "regularpolygon 3, 50, 25"; string input = "regularpolygon 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 50; double scale = 50;
double offset = 25 * Math.PI / 180; double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "rp" command. See <see cref="RegularPolygon"/>. /// tests the "rp" command. See <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void RegularPolygonTester_Manual4() { public void RegularPolygonTester_Manual4() {
string input = "rp 3, 50, 25"; string input = "rp 3, 50, 25";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 50; double scale = 50;
double offset = 25 * Math.PI / 180; double offset = 25 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "square" command. See <see cref="Square"/>. /// tests the "square" command. See <see cref="Square"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void SquareTester_Manual1() { public void SquareTester_Manual1() {
string input = "square 500"; string input = "square 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 4; int sides = 4;
double scale = 500; double scale = 500;
double offset = 0 * Math.PI / 180; double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "square" command. See <see cref="Square"/>. /// tests the "square" command. See <see cref="Square"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void SquareTester_Manual2() { public void SquareTester_Manual2() {
string input = "square 500, 45"; string input = "square 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 4; int sides = 4;
double scale = 500; double scale = 500;
double offset = 45 * Math.PI / 180; double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "circle" command. See <see cref="Circle"/>. /// Tests the "circle" command. See <see cref="Circle"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CircleTester_Manual1() { public void CircleTester_Manual1() {
string input = "circle 100"; string input = "circle 100";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Draws a circle radius " + 100d.ToString() + ", with origin of the pen"; string correctDesc = "Draws a circle radius " + 100d.ToString() + ", with origin of the pen";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>. /// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void TriangleTester_Manual1() { public void TriangleTester_Manual1() {
string input = "triangle 500"; string input = "triangle 500";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 500; double scale = 500;
double offset = 0 * Math.PI / 180; double offset = 0 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "triangle" command. See <see cref="Triangle"/>. /// tests the "triangle" command. See <see cref="Triangle"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void TriangleTester_Manual2() { public void TriangleTester_Manual2() {
string input = "triangle 500, 45"; string input = "triangle 500, 45";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
int sides = 3; int sides = 3;
double scale = 500; double scale = 500;
double offset = 45 * Math.PI / 180; double offset = 45 * Math.PI / 180;
string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale; string correctDesc = "Draws a " + sides + " sided regular polygon, with rotation of " + offset + " radians, with inner radius of " + scale;
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// test the "dot" command. See <see cref="Dot"/>. /// test the "dot" command. See <see cref="Dot"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void DotTester_Manual1() { public void DotTester_Manual1() {
string input = "dot"; string input = "dot";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Places a dot where the pen currently is"; string correctDesc = "Places a dot where the pen currently is";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// tests the "clear" command. See <see cref="Circle"/>. /// tests the "clear" command. See <see cref="Circle"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ClearTester_Manual1() { public void ClearTester_Manual1() {
string input = "clear"; string input = "clear";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Clears the canvas"; string correctDesc = "Clears the canvas";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "reset" command. See <see cref="ResetPen"/> /// Tests the "reset" command. See <see cref="ResetPen"/>
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ResetPenTester_Manual1() { public void ResetPenTester_Manual1() {
string input = "reset"; string input = "reset";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)"; string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "resetpen" command. See <see cref="ResetPen"/>. /// Tests the "resetpen" command. See <see cref="ResetPen"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ResetPenTester_Manual2() { public void ResetPenTester_Manual2() {
string input = "resetpen"; string input = "resetpen";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Moves pen to the start (0, 0)"; string correctDesc = "Moves pen to the start (0, 0)";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the command "pen". See <see cref="PenColor"/> /// Tests the command "pen". See <see cref="PenColor"/>
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void PenTester_Manual1() { public void PenTester_Manual1() {
string input = "pen red"; string input = "pen red";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Set pen color to: Color [Red]"; string correctDesc = "Set pen color to: Color [Red]";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the command "fill". See <see cref="FillColor"/>. /// Tests the command "fill". See <see cref="FillColor"/>.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void FillTester_Manual1() { public void FillTester_Manual1() {
string input = "fill pink"; string input = "fill pink";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Set fill color to: Color [Pink]"; string correctDesc = "Set fill color to: Color [Pink]";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "if" command. It hasn't been implemented yet. /// Tests the "if" command. It hasn't been implemented yet.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void IfTester_Manual1() { public void IfTester_Manual1() {
string input = "if i == 10"; string input = "if i == 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Tests if variable 'i' is equal to 10"; string correctDesc = "Tests if variable 'i' is equal to 10";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "def" command. It hasn't been implemented yet. /// Tests the "def" command. It hasn't been implemented yet.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void MethodTester_Manual1() { public void MethodTester_Manual1() {
string input = "def duck, int i"; string input = "def duck, int i";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Create a new method called 'duck' with input 'int i'. The method: "; string correctDesc = "Create a new method called 'duck' with input 'int i'. The method: ";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
/// <summary> /// <summary>
/// Tests the "int" declaration and assignment. It hasn't been implemented yet. /// Tests the "int" declaration and assignment. It hasn't been implemented yet.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ValueTester_Manual1() { public void ValueTester_Manual1() {
string input = "int i = 10"; string input = "int i = 10";
IVerb IVerb = VerbFactory.MakeVerb(null, input); IVerb IVerb = VerbFactory.MakeVerb(null, input);
string verbDesc = IVerb.GetDescription(); string verbDesc = IVerb.GetDescription();
string correctDesc = "Declares and sets integer 'i' to '10'"; string correctDesc = "Declares and sets integer 'i' to '10'";
Assert.AreEqual(correctDesc, verbDesc); Assert.AreEqual(correctDesc, verbDesc);
} }
} }
} }
@@ -1,169 +1,169 @@
using Advanced_Software_Engineering; using Advanced_Software_Engineering;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace Advanced_Software_Engineering_Tests { namespace Advanced_Software_Engineering_Tests {
/// <summary> /// <summary>
/// This class tests <see cref="HelperFunctions"/> methods. It uses a combination of manual and random tests. /// This class tests <see cref="HelperFunctions"/> methods. It uses a combination of manual and random tests.
/// </summary> /// </summary>
[TestClass] [TestClass]
public class HelperFunctionsTester { public class HelperFunctionsTester {
private readonly string alphabet = "abcdefghijklmnopqrstuvwxzy"; private readonly string alphabet = "abcdefghijklmnopqrstuvwxzy";
private readonly Random rand = new Random(); private readonly Random rand = new Random();
/// <summary> /// <summary>
/// Random strip spaces test /// Random strip spaces test
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void Strip_Random1() { public void Strip_Random1() {
for (int test = 0; test < 200; test++) { for (int test = 0; test < 200; test++) {
int until = rand.Next(50); int until = rand.Next(50);
string correctOutput = ""; string correctOutput = "";
for (int i = 0; i < until; i++) { for (int i = 0; i < until; i++) {
correctOutput += alphabet[rand.Next(alphabet.Length)]; correctOutput += alphabet[rand.Next(alphabet.Length)];
} }
string obfuscatedInput = correctOutput; string obfuscatedInput = correctOutput;
obfuscatedInput = RandomSpaces() + obfuscatedInput + RandomSpaces(); obfuscatedInput = RandomSpaces() + obfuscatedInput + RandomSpaces();
Assert.AreEqual(correctOutput, HelperFunctions.Strip(obfuscatedInput)); Assert.AreEqual(correctOutput, HelperFunctions.Strip(obfuscatedInput));
} }
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test /// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void Strip_Manual1() { public void Strip_Manual1() {
string input = " a simple sentence surrounded by spaces "; string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces"; string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input)); Assert.AreEqual(expected, HelperFunctions.Strip(input));
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.Strip(string)"/> test /// Manual <see cref="HelperFunctions.Strip(string)"/> test
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void Strip_Manual2() { public void Strip_Manual2() {
string input = " a simple sentence surrounded by spaces "; string input = " a simple sentence surrounded by spaces ";
string expected = "a simple sentence surrounded by spaces"; string expected = "a simple sentence surrounded by spaces";
Assert.AreEqual(expected, HelperFunctions.Strip(input)); Assert.AreEqual(expected, HelperFunctions.Strip(input));
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test. /// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void StripStringArray_Manual1() { public void StripStringArray_Manual1() {
string[] input = { " ", " a ", " test", "t", "asdf ", "" }; string[] input = { " ", " a ", " test", "t", "asdf ", "" };
string[] expected = (new List<string> { "a", "test", "t", "asdf" }).ToArray(); string[] expected = (new List<string> { "a", "test", "t", "asdf" }).ToArray();
int i = 0; int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) { foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s); Assert.AreEqual(expected[i++], s);
} }
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test. /// Manual <see cref="HelperFunctions.StripStringArray(string[])"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void StripStringArray_Manual2() { public void StripStringArray_Manual2() {
string[] input = "a simple sentence surrounded by spaces".Split(" "[0]); string[] input = "a simple sentence surrounded by spaces".Split(" "[0]);
string[] expected = (new List<string> { "a", "simple", "sentence", "surrounded", "by", "spaces" }).ToArray(); string[] expected = (new List<string> { "a", "simple", "sentence", "surrounded", "by", "spaces" }).ToArray();
int i = 0; int i = 0;
foreach (string s in HelperFunctions.StripStringArray(input)) { foreach (string s in HelperFunctions.StripStringArray(input)) {
Assert.AreEqual(expected[i++], s); Assert.AreEqual(expected[i++], s);
} }
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test. /// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CommandAndParameterParser_Manual1() { public void CommandAndParameterParser_Manual1() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("moveto 200, 200"); CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("moveto 200, 200");
Assert.AreEqual("moveto", commands.GetCommand()); Assert.AreEqual("moveto", commands.GetCommand());
Assert.AreEqual("200", commands.GetParameters()[0]); Assert.AreEqual("200", commands.GetParameters()[0]);
Assert.AreEqual("200", commands.GetParameters()[1]); Assert.AreEqual("200", commands.GetParameters()[1]);
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test. /// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CommandAndParameterParser_Manual2() { public void CommandAndParameterParser_Manual2() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("clear"); CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("clear");
Assert.AreEqual("clear", commands.GetCommand()); Assert.AreEqual("clear", commands.GetCommand());
Assert.IsTrue(commands.GetParameters() == null); Assert.IsTrue(commands.GetParameters() == null);
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test. /// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CommandAndParameterParser_Manual3() { public void CommandAndParameterParser_Manual3() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(""); CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser("");
Assert.IsTrue(commands == null); Assert.IsTrue(commands == null);
} }
/// <summary> /// <summary>
/// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test. /// Manual <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CommandAndParameterParser_Manual4() { public void CommandAndParameterParser_Manual4() {
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(" genericCommand 2, 3,4 5"); CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(" genericCommand 2, 3,4 5");
Assert.AreEqual("genericCommand", commands.GetCommand()); Assert.AreEqual("genericCommand", commands.GetCommand());
string[] parameters = commands.GetParameters(); string[] parameters = commands.GetParameters();
Assert.AreEqual("2", parameters[0]); Assert.AreEqual("2", parameters[0]);
Assert.AreEqual("3", parameters[1]); Assert.AreEqual("3", parameters[1]);
Assert.AreEqual("4 5", parameters[2]); Assert.AreEqual("4 5", parameters[2]);
} }
private string RandomSpaces() { private string RandomSpaces() {
string spaces = " "; string spaces = " ";
for (int i = 0; i < 50; i++) spaces += " "; for (int i = 0; i < 50; i++) spaces += " ";
return spaces; return spaces;
} }
/// <summary> /// <summary>
/// Random <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test. /// Random <see cref="HelperFunctions.CommandAndParameterParser(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void CommandAndParameterParser_Random1() { public void CommandAndParameterParser_Random1() {
string[] randomCommands = { "test", "moveto", "lineto", "markiplier", "clear", "shape", "etc" }; string[] randomCommands = { "test", "moveto", "lineto", "markiplier", "clear", "shape", "etc" };
for (int test = 0; test < 10000; test++) { for (int test = 0; test < 10000; test++) {
string command = randomCommands[rand.Next(randomCommands.Length)]; string command = randomCommands[rand.Next(randomCommands.Length)];
string input = RandomSpaces() + command; string input = RandomSpaces() + command;
List<string> parameters = new List<string>(); List<string> parameters = new List<string>();
for (int parameterI = 0; parameterI < rand.Next(99) + 1; parameterI++) { for (int parameterI = 0; parameterI < rand.Next(99) + 1; parameterI++) {
string parameter = (rand.NextDouble() * rand.Next(-1000, 1000)).ToString(); string parameter = (rand.NextDouble() * rand.Next(-1000, 1000)).ToString();
parameters.Add(parameter); parameters.Add(parameter);
input += RandomSpaces() + parameter + RandomSpaces() + "," + RandomSpaces(); input += RandomSpaces() + parameter + RandomSpaces() + "," + RandomSpaces();
} }
CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(input); CommandAndParameterParserResult commands = HelperFunctions.CommandAndParameterParser(input);
Assert.AreEqual(command, commands.GetCommand()); Assert.AreEqual(command, commands.GetCommand());
int i = 0; int i = 0;
foreach (string expected in parameters) { foreach (string expected in parameters) {
Assert.AreEqual(expected, commands.GetParameters()[i++]); Assert.AreEqual(expected, commands.GetParameters()[i++]);
} }
} }
} }
} }
} }
@@ -1,63 +1,63 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.42000 // Runtime Version:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Advanced_Software_Engineering_Tests.Properties { namespace Advanced_Software_Engineering_Tests.Properties {
using System; using System;
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio. // class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen // To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project. // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() { internal Resources() {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Returns the cached ResourceManager instance used by this class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
get { get {
if (object.ReferenceEquals(resourceMan, null)) { if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering_Tests.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering_Tests.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
} }
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class. /// resource lookups using this strongly typed resource class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
get { get {
return resourceCulture; return resourceCulture;
} }
set { set {
resourceCulture = value; resourceCulture = value;
} }
} }
} }
} }
@@ -1,101 +1,101 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 1.3
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] [base64 mime encoded serialized .NET Framework object]
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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] [base64 mime encoded string representing a byte array form of the .NET Framework object]
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>1.3</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
</root> </root>
@@ -1,66 +1,66 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using System; using System;
namespace Advanced_Software_Engineering_Tests { namespace Advanced_Software_Engineering_Tests {
/// <summary> /// <summary>
/// This class tests <see cref="ValueHelper"/> methods. It uses a combination of manual and random tests. /// This class tests <see cref="ValueHelper"/> methods. It uses a combination of manual and random tests.
/// </summary> /// </summary>
[TestClass] [TestClass]
internal class ValueHelperTester { internal class ValueHelperTester {
private readonly Random rand = new Random(); private readonly Random rand = new Random();
/// <summary> /// <summary>
/// Random <see cref="ValueHelper.ConvertToInt(string)"/> test. /// Random <see cref="ValueHelper.ConvertToInt(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ConvertToInt_Random1() { public void ConvertToInt_Random1() {
for (int i = 0; i < 100000; i++) { for (int i = 0; i < 100000; i++) {
int expected = rand.Next(int.MinValue, int.MaxValue); int expected = rand.Next(int.MinValue, int.MaxValue);
string input = expected.ToString(); string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToInt(input)); Assert.AreEqual(expected, ValueHelper.ConvertToInt(input));
} }
} }
/// <summary> /// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test. /// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ConvertToDouble_Random1() { public void ConvertToDouble_Random1() {
for (int i = 0; i < 100000; i++) { for (int i = 0; i < 100000; i++) {
double expected = rand.NextDouble(); double expected = rand.NextDouble();
string input = expected.ToString(); string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input)); Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
} }
} }
/// <summary> /// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test. /// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ConvertToDouble_Random2() { public void ConvertToDouble_Random2() {
for (int i = 0; i < 100000; i++) { for (int i = 0; i < 100000; i++) {
double expected = rand.Next(100, 100) * rand.NextDouble(); double expected = rand.Next(100, 100) * rand.NextDouble();
string input = expected.ToString(); string input = expected.ToString();
Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input)); Assert.AreEqual(expected, ValueHelper.ConvertToDouble(input));
} }
} }
/// <summary> /// <summary>
/// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test. /// Random <see cref="ValueHelper.ConvertToDouble(string)"/> test.
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void ConvertToDouble_Random3() { public void ConvertToDouble_Random3() {
for (int i = 0; i < 100000; i++) { for (int i = 0; i < 100000; i++) {
int expected = rand.Next(100, 100); int expected = rand.Next(100, 100);
string input = ((double)expected).ToString(); string input = ((double)expected).ToString();
Assert.AreEqual((double)expected, ValueHelper.ConvertToDouble(input)); Assert.AreEqual((double)expected, ValueHelper.ConvertToDouble(input));
} }
} }
} }
} }
@@ -1,4 +1,4 @@
[*.cs] [*.cs]
# CS1591: Missing XML comment for publicly visible type or member # CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = warning dotnet_diagnostic.CS1591.severity = warning
@@ -1,229 +1,229 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <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')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}</ProjectGuid> <ProjectGuid>{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}</ProjectGuid>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>Advanced_Software_Engineering</RootNamespace> <RootNamespace>Advanced_Software_Engineering</RootNamespace>
<AssemblyName>Advanced Software Engineering</AssemblyName> <AssemblyName>Advanced Software Engineering</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<PublishUrl>publish\</PublishUrl> <PublishUrl>publish\</PublishUrl>
<Install>true</Install> <Install>true</Install>
<InstallFrom>Disk</InstallFrom> <InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled> <UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode> <UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval> <UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits> <UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically> <UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired> <UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions> <MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision> <ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper> <IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled> <BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\Advanced Software Engineering.xml</DocumentationFile> <DocumentationFile>bin\Debug\Advanced Software Engineering.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<StartupObject> <StartupObject>
</StartupObject> </StartupObject>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>Resources\logo.ico</ApplicationIcon> <ApplicationIcon>Resources\logo.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Deployment" /> <Reference Include="System.Deployment" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="MenuManager.cs" /> <Compile Include="MenuManager.cs" />
<Compile Include="Properties\Resources.Designer.cs"> <Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<Compile Include="Verbs\DrawingVerbs\Actions\NoOp.cs" /> <Compile Include="Verbs\DrawingVerbs\Actions\NoOp.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Circle.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Circle.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\Clear.cs" /> <Compile Include="Verbs\DrawingVerbs\Actions\Clear.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Dot.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Dot.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\DrawLines.cs" /> <Compile Include="Verbs\DrawingVerbs\Actions\DrawLines.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\DrawTo.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\DrawTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\Fill.cs" /> <Compile Include="Verbs\DrawingVerbs\Color\Fill.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\FillColor.cs" /> <Compile Include="Verbs\DrawingVerbs\Color\FillColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\MoveTo.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\MoveTo.cs" />
<Compile Include="Verbs\DrawingVerbs\Color\PenColor.cs" /> <Compile Include="Verbs\DrawingVerbs\Color\PenColor.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Quadrilateral.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Quadrilateral.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Rectangle.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Rectangle.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\RegularPolygon.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\RegularPolygon.cs" />
<Compile Include="Verbs\DrawingVerbs\Actions\ResetPen.cs" /> <Compile Include="Verbs\DrawingVerbs\Actions\ResetPen.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Square.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Square.cs" />
<Compile Include="Verbs\DrawingVerbs\Shape\Triangle.cs" /> <Compile Include="Verbs\DrawingVerbs\Shape\Triangle.cs" />
<Compile Include="Verbs\Flow\DeclareMethod.cs" /> <Compile Include="Verbs\Flow\DeclareMethod.cs" />
<Compile Include="Verbs\Flow\ForChunk.cs" /> <Compile Include="Verbs\Flow\ForChunk.cs" />
<Compile Include="Verbs\Flow\IfChunk.cs" /> <Compile Include="Verbs\Flow\IfChunk.cs" />
<Compile Include="Verbs\Flow\IVerbChunk.cs" /> <Compile Include="Verbs\Flow\IVerbChunk.cs" />
<Compile Include="Verbs\Flow\MethodChunk.cs" /> <Compile Include="Verbs\Flow\MethodChunk.cs" />
<Compile Include="Verbs\Flow\WhileChunk.cs" /> <Compile Include="Verbs\Flow\WhileChunk.cs" />
<Compile Include="Verbs\Value\ValueObjects\PointValue.cs" /> <Compile Include="Verbs\Value\ValueObjects\PointValue.cs" />
<Compile Include="Verbs\Value\ValueStorage.cs" /> <Compile Include="Verbs\Value\ValueStorage.cs" />
<Compile Include="Verbs\Value\ValueTypes\ComparisonValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\ComparisonValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\ExpressionValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\ExpressionValue.cs" />
<Compile Include="Verbs\Value\DeclareVariable.cs" /> <Compile Include="Verbs\Value\DeclareVariable.cs" />
<Compile Include="Verbs\Value\UpdateVariable.cs" /> <Compile Include="Verbs\Value\UpdateVariable.cs" />
<Compile Include="Verbs\Value\ValueFactory.cs" /> <Compile Include="Verbs\Value\ValueFactory.cs" />
<Compile Include="Verbs\Value\IValue.cs" /> <Compile Include="Verbs\Value\IValue.cs" />
<Compile Include="Verbs\Value\ValueHelper.cs" /> <Compile Include="Verbs\Value\ValueHelper.cs" />
<Compile Include="Verbs\IVerb.cs" /> <Compile Include="Verbs\IVerb.cs" />
<Compile Include="Verbs\Value\ValueTypes\BoolValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\BoolValue.cs" />
<Compile Include="Verbs\Value\ValueObjects\ColorValue.cs" /> <Compile Include="Verbs\Value\ValueObjects\ColorValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\DoubleValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\DoubleValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\IntValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\IntValue.cs" />
<Compile Include="Verbs\Value\ValueTypes\VariableValue.cs" /> <Compile Include="Verbs\Value\ValueTypes\VariableValue.cs" />
<Compile Include="Verbs\Flow\VerbChunk.cs" /> <Compile Include="Verbs\Flow\VerbChunk.cs" />
<Compile Include="Windows\AboutWindow.cs"> <Compile Include="Windows\AboutWindow.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\AboutWindow.Designer.cs"> <Compile Include="Windows\AboutWindow.Designer.cs">
<DependentUpon>AboutWindow.cs</DependentUpon> <DependentUpon>AboutWindow.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Verbs\VerbFactory.cs" /> <Compile Include="Verbs\VerbFactory.cs" />
<Compile Include="Commander.cs" /> <Compile Include="Commander.cs" />
<Compile Include="Drawer.cs" /> <Compile Include="Drawer.cs" />
<Compile Include="Windows\CommandHelp.cs"> <Compile Include="Windows\CommandHelp.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\CommandHelp.Designer.cs"> <Compile Include="Windows\CommandHelp.Designer.cs">
<DependentUpon>CommandHelp.cs</DependentUpon> <DependentUpon>CommandHelp.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Windows\DrawPreview.cs"> <Compile Include="Windows\DrawPreview.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\DrawPreview.Designer.cs"> <Compile Include="Windows\DrawPreview.Designer.cs">
<DependentUpon>DrawPreview.cs</DependentUpon> <DependentUpon>DrawPreview.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Windows\DetailsWindow.cs"> <Compile Include="Windows\DetailsWindow.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\DetailsWindow.Designer.cs"> <Compile Include="Windows\DetailsWindow.Designer.cs">
<DependentUpon>DetailsWindow.cs</DependentUpon> <DependentUpon>DetailsWindow.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Windows\ErrorWindow.cs"> <Compile Include="Windows\ErrorWindow.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\ErrorWindow.Designer.cs"> <Compile Include="Windows\ErrorWindow.Designer.cs">
<DependentUpon>ErrorWindow.cs</DependentUpon> <DependentUpon>ErrorWindow.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Windows\TextEditor.cs"> <Compile Include="Windows\TextEditor.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\TextEditor.Designer.cs"> <Compile Include="Windows\TextEditor.Designer.cs">
<DependentUpon>TextEditor.cs</DependentUpon> <DependentUpon>TextEditor.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="HelperFunctions.cs" /> <Compile Include="HelperFunctions.cs" />
<Compile Include="Windows\Menu.cs"> <Compile Include="Windows\Menu.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Windows\Menu.Designer.cs"> <Compile Include="Windows\Menu.Designer.cs">
<DependentUpon>Menu.cs</DependentUpon> <DependentUpon>Menu.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Windows\AboutWindow.resx"> <EmbeddedResource Include="Windows\AboutWindow.resx">
<DependentUpon>AboutWindow.cs</DependentUpon> <DependentUpon>AboutWindow.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\CommandHelp.resx"> <EmbeddedResource Include="Windows\CommandHelp.resx">
<DependentUpon>CommandHelp.cs</DependentUpon> <DependentUpon>CommandHelp.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\DrawPreview.resx"> <EmbeddedResource Include="Windows\DrawPreview.resx">
<DependentUpon>DrawPreview.cs</DependentUpon> <DependentUpon>DrawPreview.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\DetailsWindow.resx"> <EmbeddedResource Include="Windows\DetailsWindow.resx">
<DependentUpon>DetailsWindow.cs</DependentUpon> <DependentUpon>DetailsWindow.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\ErrorWindow.resx"> <EmbeddedResource Include="Windows\ErrorWindow.resx">
<DependentUpon>ErrorWindow.cs</DependentUpon> <DependentUpon>ErrorWindow.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\TextEditor.resx"> <EmbeddedResource Include="Windows\TextEditor.resx">
<DependentUpon>TextEditor.cs</DependentUpon> <DependentUpon>TextEditor.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Windows\Menu.resx"> <EmbeddedResource Include="Windows\Menu.resx">
<DependentUpon>Menu.cs</DependentUpon> <DependentUpon>Menu.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<None Include=".editorconfig" /> <None Include=".editorconfig" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput> <LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None> </None>
<Compile Include="Properties\Settings.Designer.cs"> <Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2"> <BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible> <Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName> <ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install> <Install>true</Install>
</BootstrapperPackage> </BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible> <Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName> <ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install> <Install>false</Install>
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="Resources\warning.png" /> <None Include="Resources\warning.png" />
<None Include="Resources\info.png" /> <None Include="Resources\info.png" />
<None Include="Resources\error.png" /> <None Include="Resources\error.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Resources\logo.ico" /> <Content Include="Resources\logo.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Exceptions\" /> <Folder Include="Exceptions\" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>
@@ -1,36 +1,36 @@
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 16
VisualStudioVersion = 16.0.30503.244 VisualStudioVersion = 16.0.30503.244
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Advanced Software Engineering", "Advanced Software Engineering.csproj", "{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Advanced Software Engineering", "Advanced Software Engineering.csproj", "{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}"
EndProject 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}" 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D7948692-84F9-491E-8C8A-5B754BCB74F1}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D7948692-84F9-491E-8C8A-5B754BCB74F1}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig .editorconfig = .editorconfig
EndProjectSection EndProjectSection
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {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}.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.ActiveCfg = Release|Any CPU
{B9DF94A0-9DFB-4F1E-B126-38DFBBE72C0C}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
{3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.Build.0 = Release|Any CPU {3CD5C4CF-DA9E-41B2-8718-17217DB8BCD5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9FDA9473-A0FB-4D7C-8582-494F98D5391D} SolutionGuid = {9FDA9473-A0FB-4D7C-8582-494F98D5391D}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup> </startup>
</configuration> </configuration>
@@ -1,172 +1,172 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// The commander class takes care of commands. It also takes control of the drawer. /// The commander class takes care of commands. It also takes control of the drawer.
/// </summary> /// </summary>
public class Commander { public class Commander {
private Graphics graphics; private Graphics graphics;
private List<IVerb> commands = new List<IVerb>(); private List<IVerb> commands = new List<IVerb>();
private readonly Drawer drawer; private readonly Drawer drawer;
private bool commands_ok = true; private bool commands_ok = true;
/// <summary> /// <summary>
/// This command updates the graphics element (usually) when the page repaints. /// This command updates the graphics element (usually) when the page repaints.
/// </summary> /// </summary>
/// <param name="updateGraphicsElement">The graphics element to be updated</param> /// <param name="updateGraphicsElement">The graphics element to be updated</param>
public void DrawAllCommands(Graphics updateGraphicsElement) { public void DrawAllCommands(Graphics updateGraphicsElement) {
graphics = updateGraphicsElement; graphics = updateGraphicsElement;
drawer.ResetDrawer(); drawer.ResetDrawer();
drawer.SetGraphics(updateGraphicsElement); drawer.SetGraphics(updateGraphicsElement);
foreach (IVerb IVerb in commands) { foreach (IVerb IVerb in commands) {
IVerb.ExecuteVerb(); IVerb.ExecuteVerb();
} }
} }
/// <summary> /// <summary>
/// Create a new Commander instance. /// Create a new Commander instance.
/// </summary> /// </summary>
/// <param name="graphics">initial graphics object</param> /// <param name="graphics">initial graphics object</param>
public Commander(Graphics graphics) { public Commander(Graphics graphics) {
this.graphics = graphics; this.graphics = graphics;
this.drawer = new Drawer(this.graphics); this.drawer = new Drawer(this.graphics);
drawer.ResetDrawer(); drawer.ResetDrawer();
} }
/// <summary> /// <summary>
/// Creates a new Commander instance without a context. Should only be used for testing purpouses. /// Creates a new Commander instance without a context. Should only be used for testing purpouses.
/// </summary> /// </summary>
public Commander() { public Commander() {
Console.WriteLine("Warning! No graphics context!!!"); Console.WriteLine("Warning! No graphics context!!!");
} }
/// <summary> /// <summary>
/// Creates a new Commander instance with a graphics context and commands to process right off the bat. /// Creates a new Commander instance with a graphics context and commands to process right off the bat.
/// </summary> /// </summary>
/// <param name="graphics">Graphics contetx</param> /// <param name="graphics">Graphics contetx</param>
/// <param name="rawCommands">Commands to process</param> /// <param name="rawCommands">Commands to process</param>
public Commander(Graphics graphics, string rawCommands) { public Commander(Graphics graphics, string rawCommands) {
this.graphics = graphics; this.graphics = graphics;
this.drawer = new Drawer(this.graphics); this.drawer = new Drawer(this.graphics);
this.ProcessCommands(rawCommands); this.ProcessCommands(rawCommands);
drawer.ResetDrawer(); drawer.ResetDrawer();
} }
/// <summary> /// <summary>
/// Adds a IVerb to the command list to be executed. /// Adds a IVerb to the command list to be executed.
/// </summary> /// </summary>
/// <param name="command">IVerb to be added. <seealso cref="IVerb"/></param> /// <param name="command">IVerb to be added. <seealso cref="IVerb"/></param>
public void AddCommand(IVerb command) { public void AddCommand(IVerb command) {
commands.Add(command); commands.Add(command);
} }
/// <summary> /// <summary>
/// processes commands. Removes all commands if it fails parsing the raw commands. /// processes commands. Removes all commands if it fails parsing the raw commands.
/// </summary> /// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param> /// <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> /// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommands(string rawCommands, bool pardonCommands = false) { public void ProcessCommands(string rawCommands, bool pardonCommands = false) {
//ignore case //ignore case
rawCommands = rawCommands.ToLower(); rawCommands = rawCommands.ToLower();
Console.WriteLine("Processing:\n" + rawCommands); Console.WriteLine("Processing:\n" + rawCommands);
//remove windows' \r if they exist //remove windows' \r if they exist
rawCommands = rawCommands.Replace("\r", ""); rawCommands = rawCommands.Replace("\r", "");
//isolate commands //isolate commands
string[] commands = rawCommands.Split("\n"[0]); string[] commands = rawCommands.Split("\n"[0]);
Console.WriteLine("\nThe rawCommand processed:"); Console.WriteLine("\nThe rawCommand processed:");
int lineNumber = 0; int lineNumber = 0;
bool failed = false; bool failed = false;
foreach (string rawCommand in commands) { foreach (string rawCommand in commands) {
string fullCommand = rawCommand; string fullCommand = rawCommand;
lineNumber++; lineNumber++;
//Remove comments //Remove comments
if (fullCommand.Contains("@")) { if (fullCommand.Contains("@")) {
fullCommand = fullCommand.Substring(0, fullCommand.IndexOf("@")); fullCommand = fullCommand.Substring(0, fullCommand.IndexOf("@"));
} }
fullCommand = HelperFunctions.Strip(fullCommand); fullCommand = HelperFunctions.Strip(fullCommand);
if (fullCommand == "") continue; if (fullCommand == "") continue;
try { try {
AddCommand(VerbFactory.MakeVerb(drawer, fullCommand)); AddCommand(VerbFactory.MakeVerb(drawer, fullCommand));
Console.WriteLine(rawCommand); Console.WriteLine(rawCommand);
} catch (Exception e) { } catch (Exception e) {
Console.WriteLine("Error!"); 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(); 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; failed = true;
break; break;
} }
} }
if (failed) { if (failed) {
if (!pardonCommands) RemoveAllCommands(); if (!pardonCommands) RemoveAllCommands();
commands_ok = false; commands_ok = false;
} else { } else {
commands_ok = true; commands_ok = true;
} }
Console.WriteLine("\n\nHere is what the program is going to do:"); Console.WriteLine("\n\nHere is what the program is going to do:");
Console.WriteLine("Set origin to 0, 0"); Console.WriteLine("Set origin to 0, 0");
foreach (IVerb IVerb in this.commands) { foreach (IVerb IVerb in this.commands) {
Console.WriteLine(IVerb.GetDescription()); Console.WriteLine(IVerb.GetDescription());
} }
} }
/// <summary> /// <summary>
/// Processes the commands and executes them at the same time. It's the same as <see></see> /// Processes the commands and executes them at the same time. It's the same as <see></see>
/// </summary> /// </summary>
/// <param name="rawCommands">Processes commands seperated by \n or \r\n</param> /// <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> /// <param name="pardonCommands">If the command is wrong, don't remove all of the commands</param>
public void ProcessCommandsAndExecute(string rawCommands, bool pardonCommands = false) { public void ProcessCommandsAndExecute(string rawCommands, bool pardonCommands = false) {
int start = commands.Count; int start = commands.Count;
ProcessCommands(rawCommands, pardonCommands); ProcessCommands(rawCommands, pardonCommands);
for (; start < commands.Count; start++) { for (; start < commands.Count; start++) {
try { try {
commands[start].ExecuteVerb(); commands[start].ExecuteVerb();
} catch (Exception e) { } catch (Exception e) {
IVerb tmp = commands[start]; IVerb tmp = commands[start];
if (!pardonCommands) RemoveAllCommands(); if (!pardonCommands) RemoveAllCommands();
else commands.Remove(commands[start]); 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(); 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; break;
} }
} }
} }
/// <summary> /// <summary>
/// Removes all commands from the Commander and resets the drawer. /// Removes all commands from the Commander and resets the drawer.
/// </summary> /// </summary>
public void RemoveAllCommands() { public void RemoveAllCommands() {
commands = new List<IVerb>(); commands = new List<IVerb>();
drawer.ResetDrawer(); drawer.ResetDrawer();
} }
/// <summary> /// <summary>
/// Explains all of the commands in order /// Explains all of the commands in order
/// </summary> /// </summary>
/// <returns>Explanation of all the commands</returns> /// <returns>Explanation of all the commands</returns>
public string ExplainCommands() { public string ExplainCommands() {
string desc = ""; string desc = "";
foreach (IVerb command in commands) { foreach (IVerb command in commands) {
desc += command.GetDescription() + Environment.NewLine; desc += command.GetDescription() + Environment.NewLine;
} }
return desc; return desc;
} }
/// <summary> /// <summary>
/// Gets the status of the code that was processed /// Gets the status of the code that was processed
/// </summary> /// </summary>
/// <returns>False if there was no error. True if there was an error</returns> /// <returns>False if there was no error. True if there was an error</returns>
public bool GetLastStatus() { public bool GetLastStatus() {
return commands_ok; return commands_ok;
} }
} }
} }
@@ -1,91 +1,91 @@
namespace Advanced_Software_Engineering namespace Advanced_Software_Engineering
{ {
public static class Converters public static class Converters
{ {
/// <summary> /// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested. /// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary> /// </summary>
/// <param name="text">Simply any string of any size</param> /// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns> /// <returns>A string without spaces at the begining or the end</returns>
/// <example> /// <example>
/// For example /// For example
/// <code> /// <code>
/// string a = " a simple sentence surrounded by spaces "; /// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a); /// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces"; /// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code> /// </code>
/// </example> /// </example>
/// <example> /// <example>
/// The code won't remove internal double spaces: /// The code won't remove internal double spaces:
/// <code> /// <code>
/// string a = " a simple sentence surrounded by spaces "; /// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a); /// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces"; /// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code> /// </code>
/// </example> /// </example>
public static string Strip(string text) public static string Strip(string text)
{ {
int start; int start;
for (start = 0; start < text.Length; start++) for (start = 0; start < text.Length; start++)
{ {
char character = text[start]; char character = text[start];
if (character != " "[0]) break; if (character != " "[0]) break;
} }
int end; int end;
for (end = text.Length - 1; end >= 0; end--) for (end = text.Length - 1; end >= 0; end--)
{ {
char character = text[end]; char character = text[end];
if (character != " "[0]) break; if (character != " "[0]) break;
} }
return text.Substring(start, end); return text.Substring(start, end);
} }
public static int ConvertToInt(string text) public static int ConvertToInt(string text)
{ {
text = Strip(text); text = Strip(text);
return int.Parse(text); return int.Parse(text);
} }
public static List<string> StripStringArray(string[] array) public static List<string> StripStringArray(string[] array)
{ {
List<string> newStringList = new List<string>(); List<string> newStringList = new List<string>();
foreach (string arrayElement in array) foreach (string arrayElement in array)
{ {
string strippedElement = Strip(arrayElement); string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue; if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement); else newStringList.Add(strippedElement);
} }
return newStringList; return newStringList;
} }
public static Dictionary<string, string[]> CommandAndParameterParser(string text) public static Dictionary<string, string[]> CommandAndParameterParser(string text)
{ {
Dictionary<string, string[]> commandAndParameters = new Dictionary<string, string[]>(); Dictionary<string, string[]> commandAndParameters = new Dictionary<string, string[]>();
//split the command from the parameters //split the command from the parameters
string[] parameters = Strip(text).Split(new char[] { " "[0] }, 2); string[] parameters = Strip(text).Split(new char[] { " "[0] }, 2);
//set command var //set command var
string command = Strip(parameters[0]); string command = Strip(parameters[0]);
commandAndParameters["command"] = new string[] { command }; commandAndParameters["command"] = new string[] { command };
//seperate all of the parameters by a comma //seperate all of the parameters by a comma
parameters = parameters[1].Split(","[0]); parameters = parameters[1].Split(","[0]);
//Remove spaces around parameters //Remove spaces around parameters
parameters = StripStringArray(parameters).ToArray(); parameters = StripStringArray(parameters).ToArray();
//set parameter list //set parameter list
commandAndParameters["parameters"] = parameters; commandAndParameters["parameters"] = parameters;
return commandAndParameters; return commandAndParameters;
} }
} }
} }
@@ -1,226 +1,226 @@
using Advanced_Software_Engineering.Verbs.Flow; using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// The drawer is responsible for drawing on the graphics object. /// The drawer is responsible for drawing on the graphics object.
/// </summary> /// </summary>
public class Drawer { public class Drawer {
/// <summary> /// <summary>
/// Value storage is used for storing all of the variables and their IValues. See <see cref="ValueStorage"/> and see <see cref="IValue"/> /// Value storage is used for storing all of the variables and their IValues. See <see cref="ValueStorage"/> and see <see cref="IValue"/>
/// </summary> /// </summary>
private readonly ValueStorage valueStorage = new ValueStorage(); private readonly ValueStorage valueStorage = new ValueStorage();
/// <summary> /// <summary>
/// List of verbChunks used to create for loops, if statements, while loops and methods. /// 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"/>. /// See <see cref="ForChunk"/>, <see cref="IfChunk"/>, <see cref="MethodChunk"/>, <see cref="WhileChunk"/> and <seealso cref="IVerbChunk"/>.
/// </summary> /// </summary>
public List<IVerbChunk> verbChunks = new List<IVerbChunk>(); public List<IVerbChunk> verbChunks = new List<IVerbChunk>();
/// <summary> /// <summary>
/// A veriable that represents wether the last verbchunk is a method. See <see cref="MethodChunk"/> /// A veriable that represents wether the last verbchunk is a method. See <see cref="MethodChunk"/>
/// </summary> /// </summary>
public bool verbChunkGeneratingMethod = false; public bool verbChunkGeneratingMethod = false;
/// <summary> /// <summary>
/// A list of methods. See <see cref="MethodChunk"/> /// A list of methods. See <see cref="MethodChunk"/>
/// </summary> /// </summary>
public Dictionary<string, MethodChunk> Methods = new Dictionary<string, MethodChunk>(); public Dictionary<string, MethodChunk> Methods = new Dictionary<string, MethodChunk>();
/// <summary> /// <summary>
/// The starting color of the pen / brush /// The starting color of the pen / brush
/// </summary> /// </summary>
protected static Color defaultColor = Color.Black; protected static Color defaultColor = Color.Black;
/// <summary> /// <summary>
/// The deafult width of the pen /// The deafult width of the pen
/// </summary> /// </summary>
protected static float defaultWidth = 1f; protected static float defaultWidth = 1f;
/// <summary> /// <summary>
/// Weather enclosed spaces will have fill. /// Weather enclosed spaces will have fill.
/// </summary> /// </summary>
protected bool fill = false; protected bool fill = false;
/// <summary> /// <summary>
/// The Brush object /// The Brush object
/// </summary> /// </summary>
protected SolidBrush brush; protected SolidBrush brush;
/// <summary> /// <summary>
/// The Pen object /// The Pen object
/// </summary> /// </summary>
protected Pen pen; protected Pen pen;
/// <summary> /// <summary>
/// The current position of the pen. /// The current position of the pen.
/// </summary> /// </summary>
protected Point penPosition; protected Point penPosition;
/// <summary> /// <summary>
/// The graphics object /// The graphics object
/// </summary> /// </summary>
protected Graphics graphics; protected Graphics graphics;
/// <summary> /// <summary>
/// Creates a new drawer object. /// Creates a new drawer object.
/// </summary> /// </summary>
/// <param name="graphics">Graphics context</param> /// <param name="graphics">Graphics context</param>
public Drawer(Graphics graphics) { public Drawer(Graphics graphics) {
this.graphics = graphics; this.graphics = graphics;
ResetDrawer(); ResetDrawer();
} }
/// <summary> /// <summary>
/// Restart the drawer. /// Restart the drawer.
/// </summary> /// </summary>
public void ResetDrawer() { public void ResetDrawer() {
graphics.Clear(Color.White); graphics.Clear(Color.White);
penPosition = new Point(0, 0); penPosition = new Point(0, 0);
pen = new Pen(defaultColor, defaultWidth); pen = new Pen(defaultColor, defaultWidth);
brush = new SolidBrush(defaultColor); brush = new SolidBrush(defaultColor);
fill = false; fill = false;
valueStorage.Reset(); valueStorage.Reset();
verbChunks = new List<IVerbChunk>(); verbChunks = new List<IVerbChunk>();
Methods = new Dictionary<string, MethodChunk>(); Methods = new Dictionary<string, MethodChunk>();
} }
/// <summary> /// <summary>
/// Set thhe graphics context. /// Set thhe graphics context.
/// </summary> /// </summary>
/// <param name="graphics"></param> /// <param name="graphics"></param>
public void SetGraphics(Graphics graphics) => this.graphics = graphics; public void SetGraphics(Graphics graphics) => this.graphics = graphics;
/// <summary> /// <summary>
/// Move the pen to the point. /// Move the pen to the point.
/// </summary> /// </summary>
/// <param name="point">Position to move the pen to</param> /// <param name="point">Position to move the pen to</param>
public void MovePen(Point point) => penPosition = point; public void MovePen(Point point) => penPosition = point;
/// <summary> /// <summary>
/// Returns the current pen position /// Returns the current pen position
/// </summary> /// </summary>
/// <returns>The curren pen position</returns> /// <returns>The curren pen position</returns>
public Point GetPenPosition() => new Point(penPosition.X, penPosition.Y); public Point GetPenPosition() => new Point(penPosition.X, penPosition.Y);
/// <summary> /// <summary>
/// Get current fill status /// Get current fill status
/// </summary> /// </summary>
/// <returns>current fill satus</returns> /// <returns>current fill satus</returns>
public bool GetFill() => fill; public bool GetFill() => fill;
/// <summary> /// <summary>
/// Allows the filling of objects. /// Allows the filling of objects.
/// </summary> /// </summary>
public void EnableFill() => fill = true; public void EnableFill() => fill = true;
/// <summary> /// <summary>
/// Disables the filling of objects. /// Disables the filling of objects.
/// </summary> /// </summary>
public void DisableFill() => fill = false; public void DisableFill() => fill = false;
/// <summary> /// <summary>
/// Set the filling of objects /// Set the filling of objects
/// </summary> /// </summary>
/// <param name="fill">Set fill</param> /// <param name="fill">Set fill</param>
public void SetFill(bool fill) => this.fill = fill; public void SetFill(bool fill) => this.fill = fill;
/// <summary> /// <summary>
/// Set the pen color /// Set the pen color
/// </summary> /// </summary>
/// <param name="color">Pen color</param> /// <param name="color">Pen color</param>
public void SetPenColor(Color color) => pen.Color = color; public void SetPenColor(Color color) => pen.Color = color;
/// <summary> /// <summary>
/// Set the width of the pen /// Set the width of the pen
/// </summary> /// </summary>
/// <param name="width">Pen width</param> /// <param name="width">Pen width</param>
public void SetPenWidth(float width) => pen.Width = width; public void SetPenWidth(float width) => pen.Width = width;
/// <summary> /// <summary>
/// Set fill color /// Set fill color
/// </summary> /// </summary>
/// <param name="color">Fill color</param> /// <param name="color">Fill color</param>
public void SetFillColor(Color color) => brush.Color = color; public void SetFillColor(Color color) => brush.Color = color;
/// <summary> /// <summary>
/// Draws a line from the current pen position to the one specified in the parameter. This also sets the pens new position. /// Draws a line from the current pen position to the one specified in the parameter. This also sets the pens new position.
/// </summary> /// </summary>
/// <param name="point">Draw to point</param> /// <param name="point">Draw to point</param>
public void DrawLine(Point point) { public void DrawLine(Point point) {
graphics.DrawLine(pen, penPosition, point); graphics.DrawLine(pen, penPosition, point);
penPosition = point; penPosition = point;
} }
/// <summary> /// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position. /// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary> /// </summary>
/// <param name="points">Points to draw to</param> /// <param name="points">Points to draw to</param>
public void DrawLines(Point[] points) { public void DrawLines(Point[] points) {
if (points.Length < 2) { if (points.Length < 2) {
throw new Exception("Cannot have less than two points in a line"); throw new Exception("Cannot have less than two points in a line");
} }
//Make it relative to the pen //Make it relative to the pen
for (int pointIndex = 0; pointIndex < points.Length; pointIndex++) for (int pointIndex = 0; pointIndex < points.Length; pointIndex++)
points[pointIndex] = new Point(points[pointIndex].X + penPosition.X, points[pointIndex].Y + penPosition.Y); points[pointIndex] = new Point(points[pointIndex].X + penPosition.X, points[pointIndex].Y + penPosition.Y);
GraphicsPath path = new GraphicsPath { GraphicsPath path = new GraphicsPath {
FillMode = FillMode.Winding FillMode = FillMode.Winding
}; };
path.AddLines(points); path.AddLines(points);
path.AddLine(points[0], points.Last()); //Add final line path.AddLine(points[0], points.Last()); //Add final line
DrawLines(path); DrawLines(path);
} }
/// <summary> /// <summary>
/// Draws multiple lines to multiple points. This doesn't change the pens position. /// Draws multiple lines to multiple points. This doesn't change the pens position.
/// </summary> /// </summary>
/// <param name="path">GraphicsPath to draw to</param> /// <param name="path">GraphicsPath to draw to</param>
public void DrawLines(GraphicsPath path) { public void DrawLines(GraphicsPath path) {
//path.Widen(pen); //path.Widen(pen);
if (fill) graphics.FillPath(brush, path); if (fill) graphics.FillPath(brush, path);
graphics.DrawPath(pen, path); graphics.DrawPath(pen, path);
} }
/// <summary> /// <summary>
/// Draws a circle of a scale ath the pen's position /// Draws a circle of a scale ath the pen's position
/// </summary> /// </summary>
/// <param name="scale">Scale of the circle</param> /// <param name="scale">Scale of the circle</param>
public void DrawCircle(double scale) { public void DrawCircle(double scale) {
if (fill) graphics.FillEllipse(brush, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2); 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); graphics.DrawEllipse(pen, penPosition.X - (float)(scale), penPosition.Y - (float)(scale), (float)scale * 2, (float)scale * 2);
} }
/// <summary> /// <summary>
/// Clears the canvas /// Clears the canvas
/// </summary> /// </summary>
public void ClearCanvas() { public void ClearCanvas() {
graphics.Clear(Color.White); graphics.Clear(Color.White);
} }
/// <summary> /// <summary>
/// Draws a single pixel with the pen's color at the pen's position. /// Draws a single pixel with the pen's color at the pen's position.
/// </summary> /// </summary>
public void DrawDot() { public void DrawDot() {
graphics.FillRectangle(new SolidBrush(pen.Color), penPosition.X, penPosition.Y, 1, 1); graphics.FillRectangle(new SolidBrush(pen.Color), penPosition.X, penPosition.Y, 1, 1);
} }
/// <summary> /// <summary>
/// Gets the valueStorage object /// Gets the valueStorage object
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public ValueStorage GetValueStorage() { public ValueStorage GetValueStorage() {
return valueStorage; return valueStorage;
} }
} }
} }
@@ -1,130 +1,130 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// This class is a direct replacement to the dictionaries that were returned by <see cref="HelperFunctions.CommandAndParameterParser(string)"/>. /// 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. /// This class provides better intraface to the output.
/// </summary> /// </summary>
public class CommandAndParameterParserResult { public class CommandAndParameterParserResult {
private readonly string command; private readonly string command;
private readonly string[] parameters; private readonly string[] parameters;
/// <summary> /// <summary>
/// Generates a new Result /// Generates a new Result
/// </summary> /// </summary>
/// <param name="command">The command</param> /// <param name="command">The command</param>
/// <param name="parameters">The parameters</param> /// <param name="parameters">The parameters</param>
public CommandAndParameterParserResult(string command, string[] parameters) { public CommandAndParameterParserResult(string command, string[] parameters) {
this.command = command; this.command = command;
this.parameters = parameters; this.parameters = parameters;
} }
/// <summary> /// <summary>
/// Gets the command from the result /// Gets the command from the result
/// </summary> /// </summary>
/// <returns>the command</returns> /// <returns>the command</returns>
public string GetCommand() { public string GetCommand() {
return command; return command;
} }
/// <summary> /// <summary>
/// Gets the command parameters /// Gets the command parameters
/// </summary> /// </summary>
/// <returns>command parameters</returns> /// <returns>command parameters</returns>
public string[] GetParameters() { public string[] GetParameters() {
return parameters; return parameters;
} }
} }
/// <summary> /// <summary>
/// This class simply provides settings and some functions that are used across many components. /// This class simply provides settings and some functions that are used across many components.
/// </summary> /// </summary>
public class HelperFunctions { public class HelperFunctions {
/// <summary> /// <summary>
/// This function removes spaces from the start and the end of the text. This should be unit tested. /// This function removes spaces from the start and the end of the text. This should be unit tested.
/// </summary> /// </summary>
/// <param name="text">Simply any string of any size</param> /// <param name="text">Simply any string of any size</param>
/// <returns>A string without spaces at the begining or the end</returns> /// <returns>A string without spaces at the begining or the end</returns>
/// <example> /// <example>
/// For example /// For example
/// <code> /// <code>
/// string a = " a simple sentence surrounded by spaces "; /// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a); /// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces"; /// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code> /// </code>
/// </example> /// </example>
/// <example> /// <example>
/// The code won't remove internal double spaces: /// The code won't remove internal double spaces:
/// <code> /// <code>
/// string a = " a simple sentence surrounded by spaces "; /// string a = " a simple sentence surrounded by spaces ";
/// string b = StripSpaces(a); /// string b = StripSpaces(a);
/// Console.WriteLine(b); // => "a simple sentence surrounded by spaces"; /// Console.WriteLine(b); // => "a simple sentence surrounded by spaces";
/// </code> /// </code>
/// </example> /// </example>
public static string Strip(string text) { public static string Strip(string text) {
return text.Trim(); return text.Trim();
} }
/// <summary> /// <summary>
/// Strips the strings of the full array. See <see cref="Strip(string)"/> /// Strips the strings of the full array. See <see cref="Strip(string)"/>
/// </summary> /// </summary>
/// <example> /// <example>
/// string[] tmp = {" text ", " ", " with", "spaces ", ""}; /// string[] tmp = {" text ", " ", " with", "spaces ", ""};
/// Console.WriteLine(StripStringArray(tmp)); // => {"text", "with", "spaces"} /// Console.WriteLine(StripStringArray(tmp)); // => {"text", "with", "spaces"}
/// </example> /// </example>
/// <param name="array">Dirty array with spaces</param> /// <param name="array">Dirty array with spaces</param>
/// <returns>A stripped aray</returns> /// <returns>A stripped aray</returns>
public static List<string> StripStringArray(string[] array) { public static List<string> StripStringArray(string[] array) {
List<string> newStringList = new List<string>(); List<string> newStringList = new List<string>();
foreach (string arrayElement in array) { foreach (string arrayElement in array) {
string strippedElement = Strip(arrayElement); string strippedElement = Strip(arrayElement);
if (strippedElement.Length == 0) continue; if (strippedElement.Length == 0) continue;
else newStringList.Add(strippedElement); else newStringList.Add(strippedElement);
} }
return newStringList; return newStringList;
} }
/// <summary> /// <summary>
/// Parses the commands into a directry that Commander can use. See <see cref="Commander"/> /// Parses the commands into a directry that Commander can use. See <see cref="Commander"/>
/// </summary> /// </summary>
/// <param name="text">A string command</param> /// <param name="text">A string command</param>
/// <returns>Directory with the command and its parameters cleanly separated</returns> /// <returns>Directory with the command and its parameters cleanly separated</returns>
public static CommandAndParameterParserResult CommandAndParameterParser(string text) { public static CommandAndParameterParserResult CommandAndParameterParser(string text) {
//prepare the parameters by stripping them of spaces //prepare the parameters by stripping them of spaces
string prepParameters = Strip(text); string prepParameters = Strip(text);
if (prepParameters.Length == 0) return null; if (prepParameters.Length == 0) return null;
//split the command from the parameters //split the command from the parameters
string[] splitCommand = prepParameters.Split(new char[] { " "[0] }, 2); string[] splitCommand = prepParameters.Split(new char[] { " "[0] }, 2);
string command = null; string command = null;
string[] parameters = null; string[] parameters = null;
//There are parameters, make the command //There are parameters, make the command
if (splitCommand.Length > 0) { if (splitCommand.Length > 0) {
//set command var //set command var
command = Strip(splitCommand[0]); command = Strip(splitCommand[0]);
} }
//There is at least one parameter //There is at least one parameter
if (splitCommand.Length > 1) { if (splitCommand.Length > 1) {
//seperate all of the parameters by a comma //seperate all of the parameters by a comma
splitCommand = splitCommand[1].Split(","[0]); splitCommand = splitCommand[1].Split(","[0]);
//Remove spaces around parameters //Remove spaces around parameters
splitCommand = StripStringArray(splitCommand).ToArray(); splitCommand = StripStringArray(splitCommand).ToArray();
//We don't want parameters if there aren't any //We don't want parameters if there aren't any
if (!(splitCommand.Length == 1 && splitCommand[0] == "")) { if (!(splitCommand.Length == 1 && splitCommand[0] == "")) {
//set parameter list //set parameter list
parameters = splitCommand; parameters = splitCommand;
} }
} }
return new CommandAndParameterParserResult(command, parameters); return new CommandAndParameterParserResult(command, parameters);
} }
} }
} }
@@ -1,27 +1,27 @@
using System; using System;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <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. /// 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"/>. /// See <see cref="Menu"/>.
/// </summary> /// </summary>
public static partial class MenuManager { public static partial class MenuManager {
/// <summary> /// <summary>
/// The variable simply keep track of the windows that are currently shown (excluding <see cref="Menu"/>). /// The variable simply keep track of the windows that are currently shown (excluding <see cref="Menu"/>).
/// </summary> /// </summary>
public static int NumberOfWindows = 0; public static int NumberOfWindows = 0;
/// <summary> /// <summary>
/// This helper function is executed when a window is closed. It shows the <see cref="Menu"/> when the count is 0 /// This helper function is executed when a window is closed. It shows the <see cref="Menu"/> when the count is 0
/// </summary> /// </summary>
public static void WindowClosed() { public static void WindowClosed() {
NumberOfWindows--; NumberOfWindows--;
if (NumberOfWindows == 0) { if (NumberOfWindows == 0) {
Console.WriteLine("Showing MainMenu"); Console.WriteLine("Showing MainMenu");
Program.MainMenu.Show(); Program.MainMenu.Show();
} }
} }
} }
} }
@@ -1,21 +1,21 @@
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
internal static class Program { internal static class Program {
public static Form MainMenu; public static Form MainMenu;
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
[STAThread] [STAThread]
private static void Main() { private static void Main() {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
MainMenu = new Menu(); MainMenu = new Menu();
Application.Run(MainMenu); Application.Run(MainMenu);
} }
} }
} }
@@ -1,35 +1,35 @@
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("Advanced Software Engineering")] [assembly: AssemblyTitle("Advanced Software Engineering")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Advanced Software Engineering")] [assembly: AssemblyProduct("Advanced Software Engineering")]
[assembly: AssemblyCopyright("Copyright © 2020")] [assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible // 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 // to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type. // COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b9df94a0-9dfb-4f1e-b126-38dfbbe72c0c")] [assembly: Guid("b9df94a0-9dfb-4f1e-b126-38dfbbe72c0c")]
// Version information for an assembly consists of the following four values: // Version information for an assembly consists of the following four values:
// //
// Major Version // Major Version
// Minor Version // Minor Version
// Build Number // Build Number
// Revision // Revision
// //
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
@@ -1,93 +1,93 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.42000 // Runtime Version:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties { namespace Advanced_Software_Engineering.Properties {
using System; using System;
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio. // class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen // To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project. // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() { internal Resources() {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Returns the cached ResourceManager instance used by this class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
get { get {
if (object.ReferenceEquals(resourceMan, null)) { if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Advanced_Software_Engineering.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
} }
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class. /// resource lookups using this strongly typed resource class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
get { get {
return resourceCulture; return resourceCulture;
} }
set { set {
resourceCulture = value; resourceCulture = value;
} }
} }
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap error { internal static System.Drawing.Bitmap error {
get { get {
object obj = ResourceManager.GetObject("error", resourceCulture); object obj = ResourceManager.GetObject("error", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap info { internal static System.Drawing.Bitmap info {
get { get {
object obj = ResourceManager.GetObject("info", resourceCulture); object obj = ResourceManager.GetObject("info", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap warning { internal static System.Drawing.Bitmap warning {
get { get {
object obj = ResourceManager.GetObject("warning", resourceCulture); object obj = ResourceManager.GetObject("warning", resourceCulture);
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }
} }
} }
@@ -1,130 +1,130 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <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"> <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> <value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms"> <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> <value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="warning" type="System.Resources.ResXFileRef, System.Windows.Forms"> <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> <value>..\Resources\warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
</root> </root>
@@ -1,26 +1,26 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.42000 // Runtime Version:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace Advanced_Software_Engineering.Properties { namespace Advanced_Software_Engineering.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default { public static Settings Default {
get { get {
return defaultInstance; return defaultInstance;
} }
} }
} }
} }
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles> <Profiles>
<Profile Name="(Default)" /> <Profile Name="(Default)" />
</Profiles> </Profiles>
<Settings /> <Settings />
</SettingsFile> </SettingsFile>
@@ -1,30 +1,30 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The Clear IVerb class. /// The Clear IVerb class.
/// </summary> /// </summary>
public class Clear : IVerb { public class Clear : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
/// <summary> /// <summary>
/// Create the clear IVerb /// Create the clear IVerb
/// </summary> /// </summary>
/// <param name="drawer"></param> /// <param name="drawer"></param>
public Clear(Drawer drawer) { public Clear(Drawer drawer) {
this.drawer = drawer; this.drawer = drawer;
} }
/// <summary> /// <summary>
/// Execute the clear IVerb. It clears the drawer. /// Execute the clear IVerb. It clears the drawer.
/// </summary> /// </summary>
public void ExecuteVerb() => drawer.ClearCanvas(); public void ExecuteVerb() => drawer.ClearCanvas();
/// <summary> /// <summary>
/// Describes the clearing. /// Describes the clearing.
/// </summary> /// </summary>
/// <returns>A description of clearing</returns> /// <returns>A description of clearing</returns>
public string GetDescription() { public string GetDescription() {
return "Clears the canvas"; return "Clears the canvas";
} }
} }
} }
@@ -1,41 +1,41 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// DrawLines IVerb class /// DrawLines IVerb class
/// </summary> /// </summary>
public class DrawLines : IVerb { public class DrawLines : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly PointValue[] points; private readonly PointValue[] points;
/// <summary> /// <summary>
/// DrawLines constructor /// DrawLines constructor
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="points">All of the points to visit</param> /// <param name="points">All of the points to visit</param>
public DrawLines(Drawer drawer, PointValue[] points) { public DrawLines(Drawer drawer, PointValue[] points) {
this.drawer = drawer; this.drawer = drawer;
this.points = points; this.points = points;
} }
/// <summary> /// <summary>
/// Draws all the lines /// Draws all the lines
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
List<Point> pointList = new List<Point>(); List<Point> pointList = new List<Point>();
foreach (PointValue pointValue in points) pointList.Add(pointValue.GetPoint()); foreach (PointValue pointValue in points) pointList.Add(pointValue.GetPoint());
drawer.DrawLines(pointList.ToArray()); drawer.DrawLines(pointList.ToArray());
} }
/// <summary> /// <summary>
/// Gets description of the command. /// Gets description of the command.
/// </summary> /// </summary>
/// <returns>A generic description of the command</returns> /// <returns>A generic description of the command</returns>
public string GetDescription() { public string GetDescription() {
return "Draws a shape at specific points."; return "Draws a shape at specific points.";
} }
} }
} }
@@ -1,12 +1,12 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions {
internal class NoOp : IVerb { internal class NoOp : IVerb {
public void ExecuteVerb() { public void ExecuteVerb() {
} }
public string GetDescription() { public string GetDescription() {
return "NoOp"; return "NoOp";
} }
} }
} }
@@ -1,30 +1,30 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// Setsets the pen to the initial position. /// Setsets the pen to the initial position.
/// </summary> /// </summary>
public class ResetPen : IVerb { public class ResetPen : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
/// <summary> /// <summary>
/// Creates the ResetPen IVerb /// Creates the ResetPen IVerb
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
public ResetPen(Drawer drawer) { public ResetPen(Drawer drawer) {
this.drawer = drawer; this.drawer = drawer;
} }
/// <summary> /// <summary>
/// Moves the pen to 0, 0 /// Moves the pen to 0, 0
/// </summary> /// </summary>
public void ExecuteVerb() => drawer.MovePen(new System.Drawing.Point(0, 0)); public void ExecuteVerb() => drawer.MovePen(new System.Drawing.Point(0, 0));
/// <summary> /// <summary>
/// Gets the description of the command. /// Gets the description of the command.
/// </summary> /// </summary>
/// <returns>The description of the command</returns> /// <returns>The description of the command</returns>
public string GetDescription() { public string GetDescription() {
return "Moves pen to the start (0, 0)"; return "Moves pen to the start (0, 0)";
} }
} }
} }
@@ -1,37 +1,37 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// Fill IVerb class /// Fill IVerb class
/// </summary> /// </summary>
public class Fill : IVerb { public class Fill : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly bool enable; private readonly bool enable;
/// <summary> /// <summary>
/// Fill enables or disables the fill insider drawer /// Fill enables or disables the fill insider drawer
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="enable">Enable fill?</param> /// <param name="enable">Enable fill?</param>
public Fill(Drawer drawer, bool enable) { public Fill(Drawer drawer, bool enable) {
this.drawer = drawer; this.drawer = drawer;
this.enable = enable; this.enable = enable;
} }
/// <summary> /// <summary>
/// Sets the fill status /// Sets the fill status
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
if (enable) drawer.EnableFill(); if (enable) drawer.EnableFill();
else drawer.DisableFill(); else drawer.DisableFill();
} }
/// <summary> /// <summary>
/// Describes what the command will do /// Describes what the command will do
/// </summary> /// </summary>
/// <returns>Description of what the IVerb will do</returns> /// <returns>Description of what the IVerb will do</returns>
public string GetDescription() { public string GetDescription() {
if (enable) return "Enable fill"; if (enable) return "Enable fill";
else return "Disable fill"; else return "Disable fill";
} }
} }
} }
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The FillColor IVerb class /// The FillColor IVerb class
/// </summary> /// </summary>
public class FillColor : IVerb { public class FillColor : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly IValue color; private readonly IValue color;
/// <summary> /// <summary>
/// Create the FillColor instance /// Create the FillColor instance
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="color">The color of the fill</param> /// <param name="color">The color of the fill</param>
public FillColor(Drawer drawer, IValue color) { public FillColor(Drawer drawer, IValue color) {
this.drawer = drawer; this.drawer = drawer;
this.color = color; this.color = color;
} }
/// <summary> /// <summary>
/// Set the fill color /// Set the fill color
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
drawer.SetFillColor(color.ToColor()); drawer.SetFillColor(color.ToColor());
} }
/// <summary> /// <summary>
/// Get description of the color that the drawer will use /// Get description of the color that the drawer will use
/// </summary> /// </summary>
/// <returns>Description of the fill color</returns> /// <returns>Description of the fill color</returns>
public string GetDescription() { public string GetDescription() {
return "Set fill color to the specified color"; return "Set fill color to the specified color";
} }
} }
} }
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The PenColor IVerb class /// The PenColor IVerb class
/// </summary> /// </summary>
public class PenColor : IVerb { public class PenColor : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly IValue color; private readonly IValue color;
/// <summary> /// <summary>
/// Creates a PenColor instance /// Creates a PenColor instance
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="color">Pen color</param> /// <param name="color">Pen color</param>
public PenColor(Drawer drawer, IValue color) { public PenColor(Drawer drawer, IValue color) {
this.drawer = drawer; this.drawer = drawer;
this.color = color; this.color = color;
} }
/// <summary> /// <summary>
/// Sets the pen color /// Sets the pen color
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
drawer.SetPenColor(color.ToColor()); drawer.SetPenColor(color.ToColor());
} }
/// <summary> /// <summary>
/// Describes the pen color /// Describes the pen color
/// </summary> /// </summary>
/// <returns>The description pen color</returns> /// <returns>The description pen color</returns>
public string GetDescription() { public string GetDescription() {
return "Set pen color"; return "Set pen color";
} }
} }
} }
@@ -1,38 +1,38 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// Circle IVerb class. /// Circle IVerb class.
/// </summary> /// </summary>
public class Circle : IVerb { public class Circle : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly IValue scale; private readonly IValue scale;
/// <summary> /// <summary>
/// Circle constructor creates the Circle IVerb. /// Circle constructor creates the Circle IVerb.
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="scale">scale of the circle</param> /// <param name="scale">scale of the circle</param>
public Circle(Drawer drawer, IValue scale) { public Circle(Drawer drawer, IValue scale) {
this.drawer = drawer; this.drawer = drawer;
this.scale = scale; this.scale = scale;
} }
/// <summary> /// <summary>
/// Execute the Circle IVerb, which is to draw a circle with the drawer. /// Execute the Circle IVerb, which is to draw a circle with the drawer.
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
double scale = this.scale.ToDouble(); double scale = this.scale.ToDouble();
drawer.DrawCircle(scale); drawer.DrawCircle(scale);
} }
/// <summary> /// <summary>
/// Describes how the circle will be drawn. /// Describes how the circle will be drawn.
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetDescription() { public string GetDescription() {
return "Draws a circle with a certain radius, with origin of the pen"; return "Draws a circle with a certain radius, with origin of the pen";
} }
} }
} }
@@ -1,32 +1,32 @@
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The Dot IVerb class /// The Dot IVerb class
/// </summary> /// </summary>
public class Dot : IVerb { public class Dot : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
/// <summary> /// <summary>
/// Creates the Dot IVerb /// Creates the Dot IVerb
/// </summary> /// </summary>
/// <param name="drawer"></param> /// <param name="drawer"></param>
public Dot(Drawer drawer) { public Dot(Drawer drawer) {
this.drawer = drawer; this.drawer = drawer;
} }
/// <summary> /// <summary>
/// Draws a dot where the pen currently is. /// Draws a dot where the pen currently is.
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
drawer.DrawDot(); drawer.DrawDot();
} }
/// <summary> /// <summary>
/// Gets the description of the command /// Gets the description of the command
/// </summary> /// </summary>
/// <returns>The description of the command</returns> /// <returns>The description of the command</returns>
public string GetDescription() { public string GetDescription() {
return "Places a dot where the pen currently is"; return "Places a dot where the pen currently is";
} }
} }
} }
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// DrawTo IVerb class /// DrawTo IVerb class
/// </summary> /// </summary>
public class DrawTo : IVerb { public class DrawTo : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly PointValue moveToPoint; private readonly PointValue moveToPoint;
/// <summary> /// <summary>
/// Creates the DrawTo intstance /// Creates the DrawTo intstance
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param> /// <param name="point">Position to move to</param>
public DrawTo(Drawer drawer, PointValue point) { public DrawTo(Drawer drawer, PointValue point) {
this.drawer = drawer; this.drawer = drawer;
moveToPoint = point; moveToPoint = point;
} }
/// <summary> /// <summary>
/// Draws the line /// Draws the line
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
drawer.DrawLine(moveToPoint.GetPoint()); drawer.DrawLine(moveToPoint.GetPoint());
} }
/// <summary> /// <summary>
/// Describes how the line is going to be drawn /// Describes how the line is going to be drawn
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetDescription() { public string GetDescription() {
return "Draws a line"; return "Draws a line";
} }
} }
} }
@@ -1,37 +1,37 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// MoveTo IVerb class /// MoveTo IVerb class
/// </summary> /// </summary>
public class MoveTo : IVerb { public class MoveTo : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly PointValue moveToPoint; private readonly PointValue moveToPoint;
/// <summary> /// <summary>
/// Creates a MoveTo instance /// Creates a MoveTo instance
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="point">Position to move to</param> /// <param name="point">Position to move to</param>
public MoveTo(Drawer drawer, PointValue point) { public MoveTo(Drawer drawer, PointValue point) {
this.drawer = drawer; this.drawer = drawer;
moveToPoint = point; moveToPoint = point;
} }
/// <summary> /// <summary>
/// Moves the pen to the position /// Moves the pen to the position
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
drawer.MovePen(moveToPoint.GetPoint()); drawer.MovePen(moveToPoint.GetPoint());
} }
/// <summary> /// <summary>
/// Describes where the pen will move. /// Describes where the pen will move.
/// </summary> /// </summary>
/// <returns>Description where the pen will move to</returns> /// <returns>Description where the pen will move to</returns>
public string GetDescription() { public string GetDescription() {
return "Move origin"; return "Move origin";
} }
} }
} }
@@ -1,34 +1,34 @@
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The Quadrilateral IVerb class /// The Quadrilateral IVerb class
/// </summary> /// </summary>
public class Quadrilateral : IVerb { public class Quadrilateral : IVerb {
private readonly IVerb IVerb; private readonly IVerb IVerb;
/// <summary> /// <summary>
/// Creates a Quadrilateral instances /// Creates a Quadrilateral instances
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="point1">first point</param> /// <param name="point1">first point</param>
/// <param name="point2">second point</param> /// <param name="point2">second point</param>
/// <param name="point3">third point</param> /// <param name="point3">third point</param>
/// <param name="point4">fourth point</param> /// <param name="point4">fourth point</param>
public Quadrilateral(Drawer drawer, PointValue point1, PointValue point2, PointValue point3, PointValue point4) { public Quadrilateral(Drawer drawer, PointValue point1, PointValue point2, PointValue point3, PointValue point4) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3, point4 }); IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3, point4 });
} }
/// <summary> /// <summary>
/// Draws a quadrilateral from the points /// Draws a quadrilateral from the points
/// </summary> /// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb(); public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary> /// <summary>
/// Describes all of the points /// Describes all of the points
/// </summary> /// </summary>
/// <returns>Description of the quadrilateral points</returns> /// <returns>Description of the quadrilateral points</returns>
public string GetDescription() => IVerb.GetDescription(); public string GetDescription() => IVerb.GetDescription();
} }
} }
@@ -1,54 +1,54 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// Rectangle IVerb class /// Rectangle IVerb class
/// </summary> /// </summary>
/// <todo> /// <todo>
/// Correct /// Correct
/// </todo> /// </todo>
public class Rectangle : IVerb { public class Rectangle : IVerb {
private readonly PointValue[] points; private readonly PointValue[] points;
private readonly IVerb verb; private readonly IVerb verb;
/// <summary> /// <summary>
/// Create a rectangle instance. Makes sure that /// Create a rectangle instance. Makes sure that
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="width">rectangle width</param> /// <param name="width">rectangle width</param>
/// <param name="height">rectangle height</param> /// <param name="height">rectangle height</param>
public Rectangle(Drawer drawer, IValue width, IValue height) { public Rectangle(Drawer drawer, IValue width, IValue height) {
IValue negativeWidth = new ExpressionValue(new IntValue(0), width, ExpressionValue.SUBTRACT); IValue negativeWidth = new ExpressionValue(new IntValue(0), width, ExpressionValue.SUBTRACT);
IValue negativeHeight = new ExpressionValue(new IntValue(0), height, ExpressionValue.SUBTRACT); IValue negativeHeight = new ExpressionValue(new IntValue(0), height, ExpressionValue.SUBTRACT);
points = new PointValue[] points = new PointValue[]
{ {
new PointValue(negativeWidth, negativeHeight), new PointValue(negativeWidth, negativeHeight),
new PointValue(width, negativeHeight), new PointValue(width, negativeHeight),
new PointValue(width, height), new PointValue(width, height),
new PointValue(negativeWidth, height) new PointValue(negativeWidth, height)
}; };
verb = new DrawLines(drawer, points); verb = new DrawLines(drawer, points);
} }
/// <summary> /// <summary>
/// Gets the description from the rectangle /// Gets the description from the rectangle
/// </summary> /// </summary>
/// <returns>Describes the rectangle</returns> /// <returns>Describes the rectangle</returns>
public string GetDescription() { public string GetDescription() {
return "Draws a rectangle with the pen in the center"; return "Draws a rectangle with the pen in the center";
} }
/// <summary> /// <summary>
/// Draws the rectangle /// Draws the rectangle
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
verb.ExecuteVerb(); verb.ExecuteVerb();
} }
} }
} }
@@ -1,68 +1,68 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// A class that generates a RegularPolygon IVerb. /// A class that generates a RegularPolygon IVerb.
/// </summary> /// </summary>
public class RegularPolygon : IVerb { public class RegularPolygon : IVerb {
private readonly Drawer drawer; private readonly Drawer drawer;
private readonly IValue sides; private readonly IValue sides;
private readonly IValue scale; private readonly IValue scale;
private readonly IValue offset; private readonly IValue offset;
private readonly IValue degMode; private readonly IValue degMode;
/// <summary> /// <summary>
/// Draws a regular polygon. /// Draws a regular polygon.
/// See <see href="https://en.wikipedia.org/wiki/Regular_polygon"/>. /// See <see href="https://en.wikipedia.org/wiki/Regular_polygon"/>.
/// See also <seealso href="https://www.mathsisfun.com/geometry/regular-polygons.html"/>. /// See also <seealso href="https://www.mathsisfun.com/geometry/regular-polygons.html"/>.
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="sides">Number of sides in the regular polygon</param> /// <param name="sides">Number of sides in the regular polygon</param>
/// <param name="scale">The scale of 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="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> /// <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) { public RegularPolygon(Drawer drawer, IValue sides, IValue scale, IValue offset, IValue degMode) {
this.sides = sides; this.sides = sides;
this.scale = scale; this.scale = scale;
this.drawer = drawer; this.drawer = drawer;
this.offset = offset; this.offset = offset;
this.degMode = degMode; this.degMode = degMode;
} }
/// <summary> /// <summary>
/// Draws the regular polygons /// Draws the regular polygons
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
double offset = this.offset.ToDouble(); double offset = this.offset.ToDouble();
//if in degMode, convert the offset to radian //if in degMode, convert the offset to radian
if (degMode.ToBool()) offset = Math.PI * offset / 180; if (degMode.ToBool()) offset = Math.PI * offset / 180;
//Scale needs to be corercted to work correctly with Rectangle //Scale needs to be corercted to work correctly with Rectangle
double scale = this.scale.ToInt() * 2 / Math.Sqrt(2); double scale = this.scale.ToInt() * 2 / Math.Sqrt(2);
List<PointValue> points = new List<PointValue>(); List<PointValue> points = new List<PointValue>();
double constantAngleDelta = 2 * Math.PI / sides.ToInt(); double constantAngleDelta = 2 * Math.PI / sides.ToInt();
for (int side = 0; side < sides.ToInt(); side++) { for (int side = 0; side < sides.ToInt(); side++) {
double angle = (constantAngleDelta * side) + offset; double angle = (constantAngleDelta * side) + offset;
double dx = scale * Math.Sin(angle); double dx = scale * Math.Sin(angle);
double dy = scale * Math.Cos(angle); double dy = scale * Math.Cos(angle);
points.Add(new PointValue(new IntValue((int)Math.Round(dx)), new IntValue((int)Math.Round(dy)))); points.Add(new PointValue(new IntValue((int)Math.Round(dx)), new IntValue((int)Math.Round(dy))));
} }
new DrawLines(drawer, points.ToArray()).ExecuteVerb(); new DrawLines(drawer, points.ToArray()).ExecuteVerb();
} }
/// <summary> /// <summary>
/// Describes how the regular polygon will be drawn /// Describes how the regular polygon will be drawn
/// </summary> /// </summary>
/// <returns>A description of how the polygon will be drawn</returns> /// <returns>A description of how the polygon will be drawn</returns>
public string GetDescription() { public string GetDescription() {
return "Draws a regular polygon."; return "Draws a regular polygon.";
} }
} }
} }
@@ -1,42 +1,42 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The Square IVerb class /// The Square IVerb class
/// </summary> /// </summary>
public class Square : IVerb { public class Square : IVerb {
private readonly IVerb IVerb; private readonly IVerb IVerb;
/// <summary> /// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/> /// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param> /// <param name="scale">size of the square</param>
public Square(Drawer drawer, IValue scale) { public Square(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, new IntValue(0), new BoolValue(true)); IVerb = new RegularPolygon(drawer, new IntValue(4), scale, new IntValue(0), new BoolValue(true));
} }
/// <summary> /// <summary>
/// A new Squre instance. Draws squares using <see cref="RegularPolygon"/> /// A new Squre instance. Draws squares using <see cref="RegularPolygon"/>
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="scale">size of the square</param> /// <param name="scale">size of the square</param>
/// <param name="offset">rotation offset in degrees</param> /// <param name="offset">rotation offset in degrees</param>
public Square(Drawer drawer, IValue scale, IValue offset) { public Square(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(4), scale, offset, new BoolValue(true)); IVerb = new RegularPolygon(drawer, new IntValue(4), scale, offset, new BoolValue(true));
} }
/// <summary> /// <summary>
/// Draws the regular polygon (square) /// Draws the regular polygon (square)
/// </summary> /// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb(); public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary> /// <summary>
/// Gets description of how it will draw the regular polygon (square) /// Gets description of how it will draw the regular polygon (square)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetDescription() => IVerb.GetDescription(); public string GetDescription() => IVerb.GetDescription();
} }
} }
@@ -1,54 +1,54 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs { namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// <summary> /// <summary>
/// The Triangle IVerb class /// The Triangle IVerb class
/// </summary> /// </summary>
public class Triangle : IVerb { public class Triangle : IVerb {
private readonly IVerb IVerb; private readonly IVerb IVerb;
/// <summary> /// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>. /// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param> /// <param name="scale">the scale of the triangle</param>
public Triangle(Drawer drawer, IValue scale) { public Triangle(Drawer drawer, IValue scale) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, new IntValue(0), new BoolValue(true)); IVerb = new RegularPolygon(drawer, new IntValue(3), scale, new IntValue(0), new BoolValue(true));
} }
/// <summary> /// <summary>
/// Creates a new Triangle instance using <see cref="RegularPolygon"/>. /// Creates a new Triangle instance using <see cref="RegularPolygon"/>.
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="scale">the scale of the triangle</param> /// <param name="scale">the scale of the triangle</param>
/// <param name="offset">the offset of the triangle in degrees</param> /// <param name="offset">the offset of the triangle in degrees</param>
public Triangle(Drawer drawer, IValue scale, IValue offset) { public Triangle(Drawer drawer, IValue scale, IValue offset) {
IVerb = new RegularPolygon(drawer, new IntValue(3), scale, offset, new BoolValue(true)); IVerb = new RegularPolygon(drawer, new IntValue(3), scale, offset, new BoolValue(true));
} }
/// <summary> /// <summary>
/// Creates a new Triangle instance using <see cref="DrawLines"/>. It draws lines to the points provided /// Creates a new Triangle instance using <see cref="DrawLines"/>. It draws lines to the points provided
/// </summary> /// </summary>
/// <param name="drawer">drawer</param> /// <param name="drawer">drawer</param>
/// <param name="point1">first point</param> /// <param name="point1">first point</param>
/// <param name="point2">second point</param> /// <param name="point2">second point</param>
/// <param name="point3">third point</param> /// <param name="point3">third point</param>
public Triangle(Drawer drawer, PointValue point1, PointValue point2, PointValue point3) { public Triangle(Drawer drawer, PointValue point1, PointValue point2, PointValue point3) {
IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3 }); IVerb = new DrawLines(drawer, new PointValue[] { point1, point2, point3 });
} }
/// <summary> /// <summary>
/// Executes the created IVerb, either <see cref="RegularPolygon"/> or <see cref="DrawLines"/>. /// Executes the created IVerb, either <see cref="RegularPolygon"/> or <see cref="DrawLines"/>.
/// </summary> /// </summary>
public void ExecuteVerb() => IVerb.ExecuteVerb(); public void ExecuteVerb() => IVerb.ExecuteVerb();
/// <summary> /// <summary>
/// Describes how the triangle will be drawn /// Describes how the triangle will be drawn
/// </summary> /// </summary>
/// <returns>Description of how the triangle will be drawn</returns> /// <returns>Description of how the triangle will be drawn</returns>
public string GetDescription() => IVerb.GetDescription(); public string GetDescription() => IVerb.GetDescription();
} }
} }
@@ -1,43 +1,43 @@
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// Declares a method. See <see cref="DrawingVerbs.Actions.NoOp"/> because these classes behave similarly /// Declares a method. See <see cref="DrawingVerbs.Actions.NoOp"/> because these classes behave similarly
/// </summary> /// </summary>
public class DeclareMethod : IVerb, IVerbChunk { public class DeclareMethod : IVerb, IVerbChunk {
private readonly string methodName; private readonly string methodName;
private readonly Drawer drawer; private readonly Drawer drawer;
/// <summary> /// <summary>
/// Creates a new DeclareMethod object /// Creates a new DeclareMethod object
/// </summary> /// </summary>
/// <param name="drawer">The drawer is used for getting the method specifically</param> /// <param name="drawer">The drawer is used for getting the method specifically</param>
/// <param name="methodName">The name of the method</param> /// <param name="methodName">The name of the method</param>
public DeclareMethod(Drawer drawer, string methodName) { public DeclareMethod(Drawer drawer, string methodName) {
this.drawer = drawer; this.drawer = drawer;
this.methodName = methodName; this.methodName = methodName;
} }
/// <summary> /// <summary>
/// Adds a verb to the verb list. More specifically, the verb list of the MethodChunk. /// Adds a verb to the verb list. More specifically, the verb list of the MethodChunk.
/// See <see cref="MethodChunk"/> /// See <see cref="MethodChunk"/>
/// </summary> /// </summary>
/// <param name="verb">The verb to add</param> /// <param name="verb">The verb to add</param>
public void AddVerb(IVerb verb) { public void AddVerb(IVerb verb) {
MethodChunk methodChunk = drawer.Methods[methodName]; MethodChunk methodChunk = drawer.Methods[methodName];
methodChunk.AddVerb(verb); methodChunk.AddVerb(verb);
} }
/// <summary> /// <summary>
/// This method quite literally does nothing upon execution because the declaration of method happens at parse time /// This method quite literally does nothing upon execution because the declaration of method happens at parse time
/// </summary> /// </summary>
public void ExecuteVerb() { } public void ExecuteVerb() { }
/// <summary> /// <summary>
/// Gets the description of what the chunk will do /// Gets the description of what the chunk will do
/// </summary> /// </summary>
/// <returns>A description of the chunk's actions</returns> /// <returns>A description of the chunk's actions</returns>
public string GetDescription() { public string GetDescription() {
return "Declares a method"; return "Declares a method";
} }
} }
} }
@@ -1,47 +1,47 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// A ForChunk is similar to a <see cref="WhileChunk"/>. It executes a specific number of times. /// A ForChunk is similar to a <see cref="WhileChunk"/>. It executes a specific number of times.
/// </summary> /// </summary>
public class ForChunk : VerbChunk, IVerbChunk, IVerb { public class ForChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional; private readonly IValue conditional;
private readonly ValueStorage valueStorage; private readonly ValueStorage valueStorage;
/// <summary> /// <summary>
/// A For Loop object /// A For Loop object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="conditional">Preferably <see cref="Value.ValueTypes.IntValue"/>, the number of times the loop should execute.</param>
public ForChunk(ValueStorage valueStorage, IValue conditional) : base() { public ForChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// A For Loop object /// A For Loop object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="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> /// <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 }) { public ForChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// Executes the chunk the number of specified times /// Executes the chunk the number of specified times
/// </summary> /// </summary>
public new void ExecuteVerb() { public new void ExecuteVerb() {
int iterations = conditional.ToInt(); int iterations = conditional.ToInt();
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
for (; iterations > 0; iterations--) base.ExecuteVerb(); for (; iterations > 0; iterations--) base.ExecuteVerb();
valueStorage.DecreaseStack(); valueStorage.DecreaseStack();
} }
} }
} }
@@ -1,25 +1,25 @@
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// A Collection of chunks to be executed. They extend IVerb because they should be interchangable. /// A Collection of chunks to be executed. They extend IVerb because they should be interchangable.
/// </summary> /// </summary>
public interface IVerbChunk : IVerb { public interface IVerbChunk : IVerb {
/// <summary> /// <summary>
/// Adds a verb to the verb list /// Adds a verb to the verb list
/// </summary> /// </summary>
/// <param name="verb">The verb to add</param> /// <param name="verb">The verb to add</param>
void AddVerb(IVerb verb); void AddVerb(IVerb verb);
/// <summary> /// <summary>
/// Execute the whole chunk /// Execute the whole chunk
/// </summary> /// </summary>
new void ExecuteVerb(); new void ExecuteVerb();
/// <summary> /// <summary>
/// Gets the description of what the chunk will do /// Gets the description of what the chunk will do
/// </summary> /// </summary>
/// <returns>A description of the chunk's actions</returns> /// <returns>A description of the chunk's actions</returns>
new string GetDescription(); new string GetDescription();
} }
} }
@@ -1,45 +1,45 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// A simple If Object /// A simple If Object
/// </summary> /// </summary>
public class IfChunk : VerbChunk, IVerbChunk, IVerb { public class IfChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional; private readonly IValue conditional;
private readonly ValueStorage valueStorage; private readonly ValueStorage valueStorage;
/// <summary> /// <summary>
/// Create a new if object /// Create a new if object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, if the chunk should execute.</param>
public IfChunk(ValueStorage valueStorage, IValue conditional) : base() { public IfChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// Create a new if object /// Create a new if object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="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> /// <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 }) { public IfChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// Executes the chunk if the conditional is true /// Executes the chunk if the conditional is true
/// </summary> /// </summary>
public new void ExecuteVerb() { public new void ExecuteVerb() {
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
if (conditional.ToBool()) base.ExecuteVerb(); if (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack(); valueStorage.DecreaseStack();
} }
} }
} }
@@ -1,146 +1,146 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// The method chunk class /// The method chunk class
/// </summary> /// </summary>
public class MethodChunk : VerbChunk, IVerb, IValue { public class MethodChunk : VerbChunk, IVerb, IValue {
private readonly ValueStorage valueStorage; private readonly ValueStorage valueStorage;
private readonly DeclareVariable[] variables; private readonly DeclareVariable[] variables;
private UpdateVariable[] updateVariables; private UpdateVariable[] updateVariables;
private bool init = false; private bool init = false;
private IValue result; private IValue result;
/// <summary> /// <summary>
/// The method chunk /// The method chunk
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param>
/// <param name="variables">The variables to pass into the method</param> /// <param name="variables">The variables to pass into the method</param>
public MethodChunk(ValueStorage valueStorage, DeclareVariable[] variables) : base() { public MethodChunk(ValueStorage valueStorage, DeclareVariable[] variables) : base() {
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
this.variables = variables; this.variables = variables;
} }
/// <summary> /// <summary>
/// Gets all of the variable names /// Gets all of the variable names
/// </summary> /// </summary>
/// <returns>The names of all the variables</returns> /// <returns>The names of all the variables</returns>
public List<string> GetVariableNames() { public List<string> GetVariableNames() {
List<string> VariableNames = new List<string>(); List<string> VariableNames = new List<string>();
foreach (DeclareVariable variable in variables) VariableNames.Add(variable.GetName()); foreach (DeclareVariable variable in variables) VariableNames.Add(variable.GetName());
return VariableNames; return VariableNames;
} }
/// <summary> /// <summary>
/// MUST BE CALLED. This method is really important for setting the updated values into the method's stack. /// MUST BE CALLED. This method is really important for setting the updated values into the method's stack.
/// </summary> /// </summary>
/// <param name="updateVariables">The new values of the method</param> /// <param name="updateVariables">The new values of the method</param>
public void SetVariableValues(UpdateVariable[] updateVariables) { public void SetVariableValues(UpdateVariable[] updateVariables) {
this.updateVariables = updateVariables; this.updateVariables = updateVariables;
} }
/// <summary> /// <summary>
/// This method allows the method chunk to replicate itself before being ran. Essential for recursion. /// This method allows the method chunk to replicate itself before being ran. Essential for recursion.
/// </summary> /// </summary>
/// <returns>A method chunk with the exact same values and verbs</returns> /// <returns>A method chunk with the exact same values and verbs</returns>
public MethodChunk DuplicateForExecution() { public MethodChunk DuplicateForExecution() {
MethodChunk method = new MethodChunk(valueStorage, variables); MethodChunk method = new MethodChunk(valueStorage, variables);
method.SetVariableValues(updateVariables); method.SetVariableValues(updateVariables);
foreach (IVerb verb in base.GetVerbs()) method.AddVerb(verb); foreach (IVerb verb in base.GetVerbs()) method.AddVerb(verb);
return method; return method;
} }
/// <summary> /// <summary>
/// Executes the method chunk. /// Executes the method chunk.
/// </summary> /// </summary>
public new void ExecuteVerb() { public new void ExecuteVerb() {
init = false; init = false;
result = null; result = null;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
//Declare everything //Declare everything
foreach (DeclareVariable variable in variables) variable.ExecuteVerb(); foreach (DeclareVariable variable in variables) variable.ExecuteVerb();
//Set the values of everything //Set the values of everything
foreach (UpdateVariable variable in updateVariables) variable.ExecuteVerb(); foreach (UpdateVariable variable in updateVariables) variable.ExecuteVerb();
//Run code //Run code
base.ExecuteVerb(); base.ExecuteVerb();
if (valueStorage.CheckVariableExists("ret")) { if (valueStorage.CheckVariableExists("ret")) {
result = valueStorage.GetVariable("ret"); result = valueStorage.GetVariable("ret");
init = true; init = true;
} }
valueStorage.DecreaseStack(); valueStorage.DecreaseStack();
} }
/// <summary> /// <summary>
/// Gets a result from the method. (Experimental) /// Gets a result from the method. (Experimental)
/// </summary> /// </summary>
/// <returns>the result</returns> /// <returns>the result</returns>
public IValue GetResult() { public IValue GetResult() {
return result; return result;
} }
/// <summary> /// <summary>
/// Clones the result of the method (Experimental) /// Clones the result of the method (Experimental)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public IValue Clone() { public IValue Clone() {
return GetResult().Clone(); return GetResult().Clone();
} }
/// <summary> /// <summary>
/// Gets the original type of the result of the method (Experimental) /// Gets the original type of the result of the method (Experimental)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetOriginalType() { public string GetOriginalType() {
return GetResult().GetOriginalType(); return GetResult().GetOriginalType();
} }
/// <summary> /// <summary>
/// Checks if the result is initilised (Experimental) /// Checks if the result is initilised (Experimental)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public bool IsInitialised() { public bool IsInitialised() {
return init; return init;
} }
/// <summary> /// <summary>
/// Converts the result to boolean (Experimental) /// Converts the result to boolean (Experimental)
/// </summary> /// </summary>
/// <returns>boolean representation of the result</returns> /// <returns>boolean representation of the result</returns>
public bool ToBool() { public bool ToBool() {
return GetResult().ToBool(); return GetResult().ToBool();
} }
/// <summary> /// <summary>
/// Converts the result to color (Experimental) /// Converts the result to color (Experimental)
/// </summary> /// </summary>
/// <returns>color representation of the result</returns> /// <returns>color representation of the result</returns>
public Color ToColor() { public Color ToColor() {
return GetResult().ToColor(); return GetResult().ToColor();
} }
/// <summary> /// <summary>
/// Converts the result to double (Experimental) /// Converts the result to double (Experimental)
/// </summary> /// </summary>
/// <returns>double representation of the result</returns> /// <returns>double representation of the result</returns>
public double ToDouble() { public double ToDouble() {
return GetResult().ToDouble(); return GetResult().ToDouble();
} }
/// <summary> /// <summary>
/// Converts the result to integer (Experimental) /// Converts the result to integer (Experimental)
/// </summary> /// </summary>
/// <returns>integer representation of the result</returns> /// <returns>integer representation of the result</returns>
public int ToInt() { public int ToInt() {
return GetResult().ToInt(); return GetResult().ToInt();
} }
} }
} }
@@ -1,59 +1,59 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// A simple VerbChunk. Used for storing and executing a bunch of verbs /// A simple VerbChunk. Used for storing and executing a bunch of verbs
/// </summary> /// </summary>
public class VerbChunk : IVerbChunk, IVerb { public class VerbChunk : IVerbChunk, IVerb {
private readonly List<IVerb> verbs; private readonly List<IVerb> verbs;
/// <summary> /// <summary>
/// Create a new VerbChunk with verbs in it. /// Create a new VerbChunk with verbs in it.
/// </summary> /// </summary>
/// <param name="verbs">Verbs to be added to the verb chunk</param> /// <param name="verbs">Verbs to be added to the verb chunk</param>
public VerbChunk(List<IVerb> verbs) { public VerbChunk(List<IVerb> verbs) {
this.verbs = verbs; this.verbs = verbs;
} }
/// <summary> /// <summary>
/// Create an empty VerbChunk /// Create an empty VerbChunk
/// </summary> /// </summary>
public VerbChunk() { public VerbChunk() {
verbs = new List<IVerb> { }; verbs = new List<IVerb> { };
} }
/// <summary> /// <summary>
/// Adds a verb to the verb list /// Adds a verb to the verb list
/// </summary> /// </summary>
/// <param name="verb"></param> /// <param name="verb"></param>
public void AddVerb(IVerb verb) { public void AddVerb(IVerb verb) {
verbs.Add(verb); verbs.Add(verb);
} }
/// <summary> /// <summary>
/// Executes all of the verbs in order /// Executes all of the verbs in order
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
foreach (IVerb verb in verbs) verb.ExecuteVerb(); foreach (IVerb verb in verbs) verb.ExecuteVerb();
} }
/// <summary> /// <summary>
/// Returns all of the verbs stored /// Returns all of the verbs stored
/// </summary> /// </summary>
/// <returns>the verbs stored</returns> /// <returns>the verbs stored</returns>
public IVerb[] GetVerbs() { public IVerb[] GetVerbs() {
return verbs.ToArray(); return verbs.ToArray();
} }
/// <summary> /// <summary>
/// Gets a description of every verb /// Gets a description of every verb
/// </summary> /// </summary>
/// <returns>The descriptions of every verb</returns> /// <returns>The descriptions of every verb</returns>
public string GetDescription() { public string GetDescription() {
string s = "VerbChunk Start"; string s = "VerbChunk Start";
foreach (IVerb verb in verbs) s += "\n" + verb.GetDescription(); foreach (IVerb verb in verbs) s += "\n" + verb.GetDescription();
return s + "\n" + "VerbChunk End"; return s + "\n" + "VerbChunk End";
} }
} }
} }
@@ -1,45 +1,45 @@
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Flow { namespace Advanced_Software_Engineering.Verbs.Flow {
/// <summary> /// <summary>
/// A Chunk that loops over its code /// A Chunk that loops over its code
/// </summary> /// </summary>
public class WhileChunk : VerbChunk, IVerbChunk, IVerb { public class WhileChunk : VerbChunk, IVerbChunk, IVerb {
private readonly IValue conditional; private readonly IValue conditional;
private readonly ValueStorage valueStorage; private readonly ValueStorage valueStorage;
/// <summary> /// <summary>
/// A For Loop object /// A For Loop object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="conditional">Preferably <see cref="Value.ValueTypes.BoolValue"/>, weather the loop should continue to execute.</param>
public WhileChunk(ValueStorage valueStorage, IValue conditional) : base() { public WhileChunk(ValueStorage valueStorage, IValue conditional) : base() {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// Create a new if object /// Create a new if object
/// </summary> /// </summary>
/// <param name="valueStorage">The ValueStorage for increasing and decreasing the stack</param> /// <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="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> /// <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 }) { public WhileChunk(ValueStorage valueStorage, IValue conditional, IVerb oneLineVerb) : base(new List<IVerb> { oneLineVerb }) {
this.conditional = conditional; this.conditional = conditional;
this.valueStorage = valueStorage; this.valueStorage = valueStorage;
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
} }
/// <summary> /// <summary>
/// Executes every verb in the chunk /// Executes every verb in the chunk
/// </summary> /// </summary>
public new void ExecuteVerb() { public new void ExecuteVerb() {
valueStorage.IncreaseStack(); valueStorage.IncreaseStack();
while (conditional.ToBool()) base.ExecuteVerb(); while (conditional.ToBool()) base.ExecuteVerb();
valueStorage.DecreaseStack(); valueStorage.DecreaseStack();
} }
} }
} }
@@ -1,19 +1,19 @@
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines, some verbs will assign /// IVerb is an interface for executing and getting the descriptions of Verbs. Some Verbs draw lines, some verbs will assign
/// </summary> /// </summary>
public interface IVerb { public interface IVerb {
/// <summary> /// <summary>
/// This executes the IVerb to the drawer inside it. /// This executes the IVerb to the drawer inside it.
/// </summary> /// </summary>
void ExecuteVerb(); void ExecuteVerb();
/// <summary> /// <summary>
/// The description of what the IVerb will do. /// The description of what the IVerb will do.
/// </summary> /// </summary>
/// <returns>A string description of what the IVerb will do</returns> /// <returns>A string description of what the IVerb will do</returns>
string GetDescription(); string GetDescription();
} }
} }
@@ -1,143 +1,143 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System; using System;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// Declares a variable /// Declares a variable
/// </summary> /// </summary>
public class DeclareVariable : IVerb { public class DeclareVariable : IVerb {
private readonly ValueStorage storage; private readonly ValueStorage storage;
private readonly IValue value; private readonly IValue value;
private readonly string name; private readonly string name;
//Common characters that people might try //Common characters that people might try
private static readonly char[] illegalCharacters = "1234567890!?/+- \"'@#~;:><,.`¬|[]{}\\£$%^&*()".ToCharArray(); private static readonly char[] illegalCharacters = "1234567890!?/+- \"'@#~;:><,.`¬|[]{}\\£$%^&*()".ToCharArray();
private static readonly string[] illegalNames = private static readonly string[] illegalNames =
{ "var", { "var",
"move", "moveto", "move", "moveto",
"drawto", "line", "lineto", "drawto", "line", "lineto",
"regularpolygon", "rp", "regularpolygon", "rp",
"square", "square",
"quadrilateral", "quadrilateral",
"rectangle", "rectangle",
"circle", "circle",
"triangle", "triangle",
"dot", "dot",
"clear", "clear",
"reset", "resetpen", "reset", "resetpen",
"fillon", "filloff", "fillon", "filloff",
"pen", "pen",
"fill", "fill",
"if", "def", "ret" "if", "def", "ret"
}; };
/// <summary> /// <summary>
/// Checks if the name provided is valid /// Checks if the name provided is valid
/// </summary> /// </summary>
/// <param name="name">The name of the variable</param> /// <param name="name">The name of the variable</param>
/// <returns>True if the name is valid, otherwise false</returns> /// <returns>True if the name is valid, otherwise false</returns>
private bool CheckName(string name) { private bool CheckName(string name) {
foreach (char character in illegalCharacters) { foreach (char character in illegalCharacters) {
if (name.Contains(character.ToString())) return false; if (name.Contains(character.ToString())) return false;
} }
foreach (string illegalName in illegalNames) { foreach (string illegalName in illegalNames) {
if (illegalName == name) return false; if (illegalName == name) return false;
} }
return true; return true;
} }
/// <summary> /// <summary>
/// Creates a new Declare variable /// Creates a new Declare variable
/// </summary> /// </summary>
/// <param name="storage">The storage to use</param> /// <param name="storage">The storage to use</param>
/// <param name="assignment">The assignment</param> /// <param name="assignment">The assignment</param>
public DeclareVariable(ValueStorage storage, string assignment) { public DeclareVariable(ValueStorage storage, string assignment) {
this.storage = storage; this.storage = storage;
//seperate assignment characters from everything else //seperate assignment characters from everything else
foreach (string op in new string[] { "=", "+", "-", "*", "/" }) { foreach (string op in new string[] { "=", "+", "-", "*", "/" }) {
assignment = assignment.Replace(op, " " + op + " "); assignment = assignment.Replace(op, " " + op + " ");
} }
// Get variable name // Get variable name
// assignment looks something like this at this point: // assignment looks something like this at this point:
// i = 20 // i = 20
// or // or
// i = 2 = 5 // i = 2 = 5
// so after splitting it should look like // so after splitting it should look like
// ["i", "=", "20"] // ["i", "=", "20"]
assignment = HelperFunctions.Strip(assignment); assignment = HelperFunctions.Strip(assignment);
//seperate on spaces //seperate on spaces
string[] assignmentStrings = HelperFunctions.StripStringArray(assignment.Split(" "[0])).ToArray(); string[] assignmentStrings = HelperFunctions.StripStringArray(assignment.Split(" "[0])).ToArray();
//check if is actually assignment //check if is actually assignment
if (assignmentStrings.Length > 1 && !(assignmentStrings[1] == "=")) throw new Exception("No assignment in " + assignment); if (assignmentStrings.Length > 1 && !(assignmentStrings[1] == "=")) throw new Exception("No assignment in " + assignment);
name = assignmentStrings[0]; name = assignmentStrings[0];
if (storage.CheckVariableExists(name)) throw new Exception("Declaration failed. " + name + " has been declared before"); if (storage.CheckVariableExists(name)) throw new Exception("Declaration failed. " + name + " has been declared before");
if (!CheckName(name)) throw new Exception("'" + name + "' name not allowed"); if (!CheckName(name)) throw new Exception("'" + name + "' name not allowed");
//preassign name //preassign name
storage.SetVariable(name, null); storage.SetVariable(name, null);
//for single number assignments ["i", "=", "20"] //for single number assignments ["i", "=", "20"]
if (assignmentStrings.Length == 3) value = ValueFactory.CreateValue(storage, assignmentStrings[2]); if (assignmentStrings.Length == 3) value = ValueFactory.CreateValue(storage, assignmentStrings[2]);
//for expressions ["i", "=", "20", "+", "30"] //for expressions ["i", "=", "20", "+", "30"]
//or some comparisons ["i", "=", "20", ">", "30"] //or some comparisons ["i", "=", "20", ">", "30"]
else if (assignmentStrings.Length == 5) { else if (assignmentStrings.Length == 5) {
string op = assignmentStrings[3]; string op = assignmentStrings[3];
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[2]); IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[4]); IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[4]);
switch (op) { switch (op) {
case "+": case "+":
case "-": case "-":
case "/": case "/":
case "*": case "*":
value = new ExpressionValue(value1, value2, op); value = new ExpressionValue(value1, value2, op);
break; break;
case ">": case ">":
case "<": case "<":
case "=": case "=":
case "!": case "!":
value = new ComparisonValue(value1, value2, op); value = new ComparisonValue(value1, value2, op);
break; break;
default: default:
throw new Exception("Bad operation"); throw new Exception("Bad operation");
} }
} }
} }
/// <summary> /// <summary>
/// Sets the variable to null /// Sets the variable to null
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
if (value != null) storage.SetVariable(name, value.Clone()); if (value != null) storage.SetVariable(name, value.Clone());
else storage.SetVariable(name, value); else storage.SetVariable(name, value);
} }
/// <summary> /// <summary>
/// Gets the description of the verb /// Gets the description of the verb
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetDescription() { public string GetDescription() {
return "Declares the variable " + name; return "Declares the variable " + name;
} }
/// <summary> /// <summary>
/// Gets the name of the variable to assign /// Gets the name of the variable to assign
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetName() { public string GetName() {
return name; return name;
} }
} }
} }
@@ -1,58 +1,58 @@
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// A value /// A value
/// </summary> /// </summary>
public interface IValue { public interface IValue {
/// <summary> /// <summary>
/// The description of the value /// The description of the value
/// </summary> /// </summary>
/// <returns>The description of the IValue</returns> /// <returns>The description of the IValue</returns>
string GetDescription(); string GetDescription();
/// <summary> /// <summary>
/// Converts the value to an integer /// Converts the value to an integer
/// </summary> /// </summary>
/// <returns>the integer representation if the IValue</returns> /// <returns>the integer representation if the IValue</returns>
int ToInt(); int ToInt();
/// <summary> /// <summary>
/// Get the double representation if the IValue /// Get the double representation if the IValue
/// </summary> /// </summary>
/// <returns>the double representation if the IValue</returns> /// <returns>the double representation if the IValue</returns>
double ToDouble(); double ToDouble();
/// <summary> /// <summary>
/// Get the boolean representation if the IValue /// Get the boolean representation if the IValue
/// </summary> /// </summary>
/// <returns>the boolean representation if the IValue</returns> /// <returns>the boolean representation if the IValue</returns>
bool ToBool(); bool ToBool();
/// <summary> /// <summary>
/// Get the color representation if the IValue /// Get the color representation if the IValue
/// </summary> /// </summary>
/// <returns>the color representation if the IValue</returns> /// <returns>the color representation if the IValue</returns>
Color ToColor(); Color ToColor();
/// <summary> /// <summary>
/// Gets the original type of the IValue /// Gets the original type of the IValue
/// </summary> /// </summary>
/// <returns>original type of the IValue</returns> /// <returns>original type of the IValue</returns>
string GetOriginalType(); string GetOriginalType();
/// <summary> /// <summary>
/// Checks if the IValue is initialised /// Checks if the IValue is initialised
/// </summary> /// </summary>
/// <returns>True if IValue is initialised</returns> /// <returns>True if IValue is initialised</returns>
bool IsInitialised(); bool IsInitialised();
/// <summary> /// <summary>
/// Clones the IValue /// Clones the IValue
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
IValue Clone(); IValue Clone();
} }
} }
@@ -1,63 +1,63 @@
using System; using System;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// Used for updating the variables /// Used for updating the variables
/// </summary> /// </summary>
public class UpdateVariable : IVerb { public class UpdateVariable : IVerb {
private ValueStorage storage; private ValueStorage storage;
private string name; private string name;
private IValue value; private IValue value;
/// <summary> /// <summary>
/// Initilise the object /// Initilise the object
/// </summary> /// </summary>
/// <param name="storage">The storage object</param> /// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param> /// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param> /// <param name="value">The value of the variable</param>
private void Init(ValueStorage storage, string name, IValue value) { private void Init(ValueStorage storage, string name, IValue value) {
this.name = name; this.name = name;
this.value = value; this.value = value;
this.storage = storage; this.storage = storage;
} }
/// <summary> /// <summary>
/// Create a new UpdateVariable object /// Create a new UpdateVariable object
/// </summary> /// </summary>
/// <param name="storage">The storage object</param> /// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param> /// <param name="name">The name of the variable</param>
/// <param name="value">The value of the variable</param> /// <param name="value">The value of the variable</param>
public UpdateVariable(ValueStorage storage, string name, IValue value) { public UpdateVariable(ValueStorage storage, string name, IValue value) {
Init(storage, name, value); Init(storage, name, value);
} }
/// <summary> /// <summary>
/// Create a new UpdateVariable object /// Create a new UpdateVariable object
/// </summary> /// </summary>
/// <param name="storage">The storage object</param> /// <param name="storage">The storage object</param>
/// <param name="name">The name of the variable</param> /// <param name="name">The name of the variable</param>
/// <param name="value">The expression of the value</param> /// <param name="value">The expression of the value</param>
public UpdateVariable(ValueStorage storage, string name, string value) { public UpdateVariable(ValueStorage storage, string name, string value) {
// incoming values look something like this "= 10" // incoming values look something like this "= 10"
// or "= 10 + i" // or "= 10 + i"
Init(storage, name, ValueHelper.ConvertToIValue(value, storage)); Init(storage, name, ValueHelper.ConvertToIValue(value, storage));
} }
/// <summary> /// <summary>
/// Executes the verb and updates the variable /// Executes the verb and updates the variable
/// </summary> /// </summary>
public void ExecuteVerb() { public void ExecuteVerb() {
if (!storage.CheckVariableExists(name)) throw new Exception("Cannot update variable because it is not declared"); if (!storage.CheckVariableExists(name)) throw new Exception("Cannot update variable because it is not declared");
storage.SetVariable(name, value.Clone()); storage.SetVariable(name, value.Clone());
} }
/// <summary> /// <summary>
/// Gets the description of the update /// Gets the description of the update
/// </summary> /// </summary>
/// <returns>A string representation of the description of the update</returns> /// <returns>A string representation of the description of the update</returns>
public string GetDescription() { public string GetDescription() {
return "Updates " + name + " to " + value; return "Updates " + name + " to " + value;
} }
} }
} }
@@ -1,28 +1,28 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
class ValueContainer { class ValueContainer {
Dictionary<string, IValue> variables = new Dictionary<string, IValue>(); Dictionary<string, IValue> variables = new Dictionary<string, IValue>();
public ValueContainer() { public ValueContainer() {
} }
public void SetVariable(string variableName, IValue iValue) { public void SetVariable(string variableName, IValue iValue) {
if (variables.ContainsKey(variableName)) ; if (variables.ContainsKey(variableName)) ;
} }
public void DeclareVariable(string variableName, IValue iValue) { public void DeclareVariable(string variableName, IValue iValue) {
} }
public void DeclareAndSetVariable(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.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System; using System;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// Value factory creates values /// Value factory creates values
/// </summary> /// </summary>
public class ValueFactory { public class ValueFactory {
/// <summary> /// <summary>
/// Creates a constant Value to be used later during execution /// Creates a constant Value to be used later during execution
/// </summary> /// </summary>
/// <param name="value">Text representation of the value</param> /// <param name="value">Text representation of the value</param>
/// <param name="type">What type the value should be</param> /// <param name="type">What type the value should be</param>
/// <returns>a new IValue</returns> /// <returns>a new IValue</returns>
public static IValue CreateValue(string value, string type) { public static IValue CreateValue(string value, string type) {
switch (type) { switch (type) {
case "int": case "int":
return new IntValue(ValueHelper.ConvertToInt(value)); return new IntValue(ValueHelper.ConvertToInt(value));
case "double": case "double":
return new DoubleValue(ValueHelper.ConvertToDouble(value)); return new DoubleValue(ValueHelper.ConvertToDouble(value));
case "color": case "color":
return new ColorValue(ValueHelper.TextToColor(value)); return new ColorValue(ValueHelper.TextToColor(value));
case "bool": case "bool":
return new BoolValue(ValueHelper.ConvertToBool(value)); return new BoolValue(ValueHelper.ConvertToBool(value));
default: default:
throw new Exception("Unknown expected type: " + type.ToString()); throw new Exception("Unknown expected type: " + type.ToString());
} }
} }
/// <summary> /// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color /// Creates a constant Value to be used later during execution. Only used for Color
/// </summary> /// </summary>
/// <param name="storage">The storage</param> /// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param> /// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param> /// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param> /// <param name="parameter3">Third parameter</param>
/// <param name="parameter4">Fourth parameter</param> /// <param name="parameter4">Fourth parameter</param>
/// <param name="type">the type</param> /// <param name="type">the type</param>
/// <returns>a new IValue</returns> /// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string parameter4, string type) { public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string parameter4, string type) {
switch (type) { switch (type) {
case "color": case "color":
IValue p1 = CreateValue(storage, paramater1); IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2); IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3); IValue p3 = CreateValue(storage, parameter3);
IValue p4 = CreateValue(storage, parameter4); IValue p4 = CreateValue(storage, parameter4);
return new ColorValue(p1, p2, p3, p4); return new ColorValue(p1, p2, p3, p4);
default: default:
throw new Exception("Unknown expected type: " + type.ToString()); throw new Exception("Unknown expected type: " + type.ToString());
} }
} }
/// <summary> /// <summary>
/// Creates a constant Value to be used later during execution. Only used for Color /// Creates a constant Value to be used later during execution. Only used for Color
/// </summary> /// </summary>
/// <param name="storage">The storage</param> /// <param name="storage">The storage</param>
/// <param name="paramater1">First parameter</param> /// <param name="paramater1">First parameter</param>
/// <param name="paramater2">Second parameter</param> /// <param name="paramater2">Second parameter</param>
/// <param name="parameter3">Third parameter</param> /// <param name="parameter3">Third parameter</param>
/// <param name="type">the type</param> /// <param name="type">the type</param>
/// <returns>a new IValue</returns> /// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string type) { public static IValue CreateValue(ValueStorage storage, string paramater1, string paramater2, string parameter3, string type) {
switch (type) { switch (type) {
case "color": case "color":
IValue p1 = CreateValue(storage, paramater1); IValue p1 = CreateValue(storage, paramater1);
IValue p2 = CreateValue(storage, paramater2); IValue p2 = CreateValue(storage, paramater2);
IValue p3 = CreateValue(storage, parameter3); IValue p3 = CreateValue(storage, parameter3);
return new ColorValue(p1, p2, p3); return new ColorValue(p1, p2, p3);
default: default:
throw new Exception("Unknown expected type: " + type.ToString()); throw new Exception("Unknown expected type: " + type.ToString());
} }
} }
/// <summary> /// <summary>
/// Creates a constant Value to be used later during execution /// Creates a constant Value to be used later during execution
/// </summary> /// </summary>
/// <param name="value">Text representation of the value</param> /// <param name="value">Text representation of the value</param>
/// <param name="storage">The value storage to check</param> /// <param name="storage">The value storage to check</param>
/// <returns>a new IValue</returns> /// <returns>a new IValue</returns>
public static IValue CreateValue(ValueStorage storage, string value) { public static IValue CreateValue(ValueStorage storage, string value) {
value = HelperFunctions.Strip(value); value = HelperFunctions.Strip(value);
if (storage.CheckVariableExists(value)) return new VariableValue(storage, value); if (storage.CheckVariableExists(value)) return new VariableValue(storage, value);
else return ValueHelper.ConvertToIValue(value, storage); else return ValueHelper.ConvertToIValue(value, storage);
} }
/// <summary> /// <summary>
/// Create a new boolean IValue /// Create a new boolean IValue
/// </summary> /// </summary>
/// <param name="b">boolean input</param> /// <param name="b">boolean input</param>
/// <returns><see cref="BoolValue"/></returns> /// <returns><see cref="BoolValue"/></returns>
public static IValue CreateValue(bool b) { public static IValue CreateValue(bool b) {
return new BoolValue(b); return new BoolValue(b);
} }
/// <summary> /// <summary>
/// Create a new double IValue /// Create a new double IValue
/// </summary> /// </summary>
/// <param name="d">double input</param> /// <param name="d">double input</param>
/// <returns><see cref="DoubleValue"/></returns> /// <returns><see cref="DoubleValue"/></returns>
public static IValue CreateValue(double d) { public static IValue CreateValue(double d) {
return new DoubleValue(d); return new DoubleValue(d);
} }
/// <summary> /// <summary>
/// Create a new int IValue /// Create a new int IValue
/// </summary> /// </summary>
/// <param name="i">int input</param> /// <param name="i">int input</param>
/// <returns><see cref="IntValue"/></returns> /// <returns><see cref="IntValue"/></returns>
public static IValue CreateValue(int i) { public static IValue CreateValue(int i) {
return new IntValue(i); return new IntValue(i);
} }
} }
} }
@@ -1,213 +1,212 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// This class contains a large amount of useful conversions /// This class contains a large amount of useful conversions
/// </summary> /// </summary>
public class ValueHelper { public class ValueHelper {
/// <summary> /// <summary>
/// Converts string to int (if possible) /// Converts string to int (if possible)
/// </summary> /// </summary>
/// <param name="text">String to be converted to int</param> /// <param name="text">String to be converted to int</param>
/// <returns>Integer representation of string</returns> /// <returns>Integer representation of string</returns>
public static int ConvertToInt(string text) { public static int ConvertToInt(string text) {
text = HelperFunctions.Strip(text); text = HelperFunctions.Strip(text);
return int.Parse(text); return int.Parse(text);
} }
/// <summary> /// <summary>
/// Converts string to double (if possible) /// Converts string to double (if possible)
/// </summary> /// </summary>
/// <param name="text">String to be converted to double</param> /// <param name="text">String to be converted to double</param>
/// <returns>Double representation of string</returns> /// <returns>Double representation of string</returns>
public static double ConvertToDouble(string text) { public static double ConvertToDouble(string text) {
text = HelperFunctions.Strip(text); text = HelperFunctions.Strip(text);
return double.Parse(text); return double.Parse(text);
} }
/// <summary> /// <summary>
/// Converts two strings to a point object. /// Converts two strings to a point object.
/// </summary> /// </summary>
/// <param name="text1">X parameter</param> /// <param name="text1">X parameter</param>
/// <param name="text2">Y parameter</param> /// <param name="text2">Y parameter</param>
/// <returns>A Point object</returns> /// <returns>A Point object</returns>
/// <todo>Make unit tests for this function</todo> /// <todo>Make unit tests for this function</todo>
public static Point ConvertToPoint(string text1, string text2) { public static Point ConvertToPoint(string text1, string text2) {
return new Point(ConvertToInt(text1), ConvertToInt(text2)); return new Point(ConvertToInt(text1), ConvertToInt(text2));
} }
//TODO: Make unit tests for this function //TODO: Make unit tests for this function
/// <summary> /// <summary>
/// This function convers text to Color. /// This function convers text to Color.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// It can parse several different types of strings. /// It can parse several different types of strings.
/// Types of string accepted: /// 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 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 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). /// - A string that represents a Hex Quadruplet (<code>#rrggbbaa</code>, where <code>aa</code> represents alpha).
/// </remarks> /// </remarks>
/// <example> /// <example>
/// Color tmp = TextToColor("red"); /// Color tmp = TextToColor("red");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "red" /// Console.WriteLine("Name: " + tmp.toString()) //=> "red"
/// ///
/// tmp = TextToColor("deadbe"); /// tmp = TextToColor("deadbe");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "00deadbe" /// 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. /// //It's important to remember that C# doesn't work like HTML colors, putting alpha first, rather than last.
/// ///
/// tmp = TextToColor("deadbeef"); /// tmp = TextToColor("deadbeef");
/// Console.WriteLine("Name: " + tmp.toString()) //=> "efdeadbe" /// Console.WriteLine("Name: " + tmp.toString()) //=> "efdeadbe"
/// </example> /// </example>
/// ///
/// <param name="text">a string with a valid name or format</param> /// <param name="text">a string with a valid name or format</param>
/// <returns>color of the string</returns> /// <returns>color of the string</returns>
public static Color TextToColor(string text) { public static Color TextToColor(string text) {
Color color = Color.FromName(text); Color color = Color.FromName(text);
if (color.IsKnownColor) return color; if (color.IsKnownColor) return color;
if (text.StartsWith("#")) if (text.StartsWith("#"))
text = text.Substring(1); text = text.Substring(1);
switch (text.Length) { switch (text.Length) {
case 6: case 6:
return Color.FromArgb( return Color.FromArgb(
int.Parse(text.Substring(0, 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(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)); int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
case 8: case 8:
return Color.FromArgb( return Color.FromArgb(
int.Parse(text.Substring(6, 2), System.Globalization.NumberStyles.HexNumber), int.Parse(text.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(0, 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(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)); int.Parse(text.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
default: default:
throw new Exception("Color not valid"); throw new Exception("Color not valid");
} }
} }
/// <summary> /// <summary>
/// Generate a color from RGB(A) int values /// Generate a color from RGB(A) int values
/// </summary> /// </summary>
/// <param name="r">Red</param> /// <param name="r">Red</param>
/// <param name="g">Green</param> /// <param name="g">Green</param>
/// <param name="b">Blue</param> /// <param name="b">Blue</param>
/// <param name="a">Optional: Alpha/Transparancy (default is 255, 0 is transparent)</param> /// <param name="a">Optional: Alpha/Transparancy (default is 255, 0 is transparent)</param>
/// <returns></returns> /// <returns></returns>
public static Color IntsToColor(int r, int g, int b, int a = 255) { public static Color IntsToColor(int r, int g, int b, int a = 255) {
return Color.FromArgb(a, r, g, b); return Color.FromArgb(a, r, g, b);
} }
/// <summary> /// <summary>
/// Convert to boolean /// Convert to boolean
/// </summary> /// </summary>
/// <param name="text">A text boolean</param> /// <param name="text">A text boolean</param>
/// <returns>boolean representation of the text</returns> /// <returns>boolean representation of the text</returns>
public static bool ConvertToBool(string text) { public static bool ConvertToBool(string text) {
switch (text) { switch (text) {
case "true": case "true":
case "1": case "1":
case "on": case "on":
return true; return true;
case "false": case "false":
case "0": case "0":
case "off": case "off":
return false; return false;
default: default:
throw new Exception("Invalid input"); throw new Exception("Invalid input");
} }
} }
/// <summary> /// <summary>
/// Converts the text to IValue /// Converts the text to IValue
/// </summary> /// </summary>
/// <param name="text">text to convert</param> /// <param name="text">text to convert</param>
/// <param name="storage">storage to use (can be null) (optional)</param> /// <param name="storage">storage to use (can be null) (optional)</param>
/// <returns>An IValue representation of the text</returns> /// <returns>An IValue representation of the text</returns>
public static IValue ConvertToIValue(string text, ValueStorage storage = null) { public static IValue ConvertToIValue(string text, ValueStorage storage = null) {
text = HelperFunctions.Strip(text); text = HelperFunctions.Strip(text);
string value = text; string value = text;
//seperate assignment characters from everything else TODO FIX foreach (string op in new string[] { "=", "+", "-", "*", "/", "<", ">", "!" }) {
foreach (string op in new string[] { "=", "+", "-", "*", "/", "<", ">", "!" }) { value = value.Replace(op, " " + op + " ");
value = value.Replace(op, " " + op + " "); }
}
bool removedFirstChar = false;
bool removedFirstChar = false; value = HelperFunctions.Strip(value);
value = HelperFunctions.Strip(value); if (value[0] == "="[0]) {
if (value[0] == "="[0]) { value = value.Substring(1);
value = value.Substring(1); removedFirstChar = true;
removedFirstChar = true; }
} // now will definitly look like this:
// now will definitly look like this: // 10 + i or i
// 10 + i or i
string[] assignmentStrings = HelperFunctions.StripStringArray(value.Split(" "[0])).ToArray();
string[] assignmentStrings = HelperFunctions.StripStringArray(value.Split(" "[0])).ToArray();
//No assignmnet
//No assignmnet
if (!text.Contains("#")) {
if (!text.Contains("#")) { //Check if string is a number
//Check if string is a number if (!text.Contains(".")) {
if (!text.Contains(".")) { try {
try { return ValueFactory.CreateValue(text, "int");
return ValueFactory.CreateValue(text, "int"); } catch (Exception) { }
} catch (Exception) { } }
}
//Check if string is a double
//Check if string is a double else {
else { try {
try { return ValueFactory.CreateValue(text, "double");
return ValueFactory.CreateValue(text, "double"); } catch (Exception) { }
} catch (Exception) { } }
}
//Check if color
//Check if color try {
try { return ValueFactory.CreateValue(text, "color");
return ValueFactory.CreateValue(text, "color"); } catch (Exception) { }
} catch (Exception) { }
//check for expression
//check for expression if (storage != null) {
if (storage != null) { try {
try { // assignmentStrings will look something like this:
// assignmentStrings will look something like this: // ["i"] or ["10", "+", "i"]
// ["i"] or ["10", "+", "i"] if (assignmentStrings.Length == 1 && removedFirstChar) return ValueFactory.CreateValue(storage, assignmentStrings[0]);
if (assignmentStrings.Length == 1 && removedFirstChar) return ValueFactory.CreateValue(storage, assignmentStrings[0]); else if (assignmentStrings.Length == 3) {
else if (assignmentStrings.Length == 3) { // assignmentStrings looks like this => ["10", "+", "i"]
// assignmentStrings looks like this => ["10", "+", "i"] IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]); string op = assignmentStrings[1];
string op = assignmentStrings[1]; IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]); return new ExpressionValue(value1, value2, op);
return new ExpressionValue(value1, value2, op); }
} } catch (Exception) { }
} catch (Exception) { } }
} } else {
} else { //Check if color
//Check if color try {
try { return ValueFactory.CreateValue(text, "color");
return ValueFactory.CreateValue(text, "color"); } catch (Exception) { }
} catch (Exception) { } }
}
if (storage != null) {
if (storage != null) { // Check if string is a comparison
// Check if string is a comparison // assignmentStrings will look something like this:
// assignmentStrings will look something like this: // ["i"] or ["10", "=", "i"]
// ["i"] or ["10", "=", "i"] if (assignmentStrings.Length == 3) {
if (assignmentStrings.Length == 3) { IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]);
IValue value1 = ValueFactory.CreateValue(storage, assignmentStrings[0]); string op = assignmentStrings[1];
string op = assignmentStrings[1]; IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]);
IValue value2 = ValueFactory.CreateValue(storage, assignmentStrings[2]); return new ComparisonValue(value1, value2, op);
return new ComparisonValue(value1, value2, op); }
} }
}
throw new Exception("Could not convert " + text + " to any type");
throw new Exception("Could not convert " + text + " to any type"); }
} }
}
} }
@@ -1,70 +1,70 @@
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects { namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
internal class ColorValue : IValue { internal class ColorValue : IValue {
private readonly IValue r; private readonly IValue r;
private readonly IValue g; private readonly IValue g;
private readonly IValue b; private readonly IValue b;
private readonly bool hasAlpha; private readonly bool hasAlpha;
private readonly IValue a; private readonly IValue a;
public ColorValue(Color value) { public ColorValue(Color value) {
r = new IntValue(value.R); r = new IntValue(value.R);
g = new IntValue(value.G); g = new IntValue(value.G);
b = new IntValue(value.B); b = new IntValue(value.B);
a = new IntValue(value.A); a = new IntValue(value.A);
hasAlpha = true; hasAlpha = true;
} }
public ColorValue(IValue r, IValue g, IValue b, IValue a) { public ColorValue(IValue r, IValue g, IValue b, IValue a) {
this.r = r; this.r = r;
this.g = g; this.g = g;
this.b = b; this.b = b;
this.a = a; this.a = a;
hasAlpha = true; hasAlpha = true;
} }
public ColorValue(IValue r, IValue g, IValue b) { public ColorValue(IValue r, IValue g, IValue b) {
this.r = r; this.r = r;
this.g = g; this.g = g;
this.b = b; this.b = b;
hasAlpha = false; hasAlpha = false;
} }
public string GetDescription() { public string GetDescription() {
return "A color value"; return "A color value";
} }
public string GetOriginalType() { public string GetOriginalType() {
return "color"; return "color";
} }
public bool ToBool() { public bool ToBool() {
return ToColor().GetBrightness() > 0.5; return ToColor().GetBrightness() > 0.5;
} }
public Color ToColor() { public Color ToColor() {
if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt()); if (hasAlpha) return Color.FromArgb(a.ToInt(), r.ToInt(), g.ToInt(), b.ToInt());
else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt()); else return Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt());
} }
public double ToDouble() { public double ToDouble() {
return ToColor().GetBrightness(); return ToColor().GetBrightness();
} }
public int ToInt() { public int ToInt() {
return ToColor().ToArgb(); return ToColor().ToArgb();
} }
public bool IsInitialised() { public bool IsInitialised() {
return true; return true;
} }
public IValue Clone() { public IValue Clone() {
return new ColorValue(this.ToColor()); return new ColorValue(this.ToColor());
} }
} }
} }
@@ -1,46 +1,46 @@
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects { namespace Advanced_Software_Engineering.Verbs.Value.ValueObjects {
/// <summary> /// <summary>
/// A point IValue. Simply the same as <see cref="Point"/> but with IValues intstead of ints. /// A point IValue. Simply the same as <see cref="Point"/> but with IValues intstead of ints.
/// </summary> /// </summary>
public class PointValue { public class PointValue {
private readonly IValue x; private readonly IValue x;
private readonly IValue y; private readonly IValue y;
/// <summary> /// <summary>
/// Create a new PointValue /// Create a new PointValue
/// </summary> /// </summary>
/// <param name="x">X IValue</param> /// <param name="x">X IValue</param>
/// <param name="y">Y IValue</param> /// <param name="y">Y IValue</param>
public PointValue(IValue x, IValue y) { public PointValue(IValue x, IValue y) {
this.x = x; this.x = x;
this.y = y; this.y = y;
} }
/// <summary> /// <summary>
/// Get the X component /// Get the X component
/// </summary> /// </summary>
/// <returns>the X component</returns> /// <returns>the X component</returns>
public int GetX() { public int GetX() {
return x.ToInt(); return x.ToInt();
} }
/// <summary> /// <summary>
/// Get the Y component /// Get the Y component
/// </summary> /// </summary>
/// <returns>the Y component</returns> /// <returns>the Y component</returns>
public int GetY() { public int GetY() {
return y.ToInt(); return y.ToInt();
} }
/// <summary> /// <summary>
/// Get the <see cref="Point"/>. /// Get the <see cref="Point"/>.
/// </summary> /// </summary>
/// <returns><see cref="Point"/></returns> /// <returns><see cref="Point"/></returns>
public Point GetPoint() { public Point GetPoint() {
return new Point(GetX(), GetY()); return new Point(GetX(), GetY());
} }
} }
} }
@@ -1,144 +1,144 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// The storage for all the values /// The storage for all the values
/// </summary> /// </summary>
public class ValueStorage { public class ValueStorage {
private int currentStack; private int currentStack;
/// <summary> /// <summary>
/// The list is structured something like this: /// The list is structured something like this:
/// <code> /// <code>
/// {stack, stack, stack stack} /// {stack, stack, stack stack}
/// </code> /// </code>
/// Where 'stack' is a dictionary of the names and the values of the variables /// Where 'stack' is a dictionary of the names and the values of the variables
/// </summary> /// </summary>
private List<Dictionary<string, IValue>> Variables; private List<Dictionary<string, IValue>> Variables;
/// <summary> /// <summary>
/// Create a new ValueStorage /// Create a new ValueStorage
/// </summary> /// </summary>
public ValueStorage() { public ValueStorage() {
Reset(); Reset();
} }
/// <summary> /// <summary>
/// Reset the ValueStorage /// Reset the ValueStorage
/// </summary> /// </summary>
public void Reset() { public void Reset() {
Variables = new List<Dictionary<string, IValue>> { Variables = new List<Dictionary<string, IValue>> {
new Dictionary<string, IValue>() new Dictionary<string, IValue>()
}; };
currentStack = 0; currentStack = 0;
} }
/// <summary> /// <summary>
/// Set the ValueStorage stack /// Set the ValueStorage stack
/// </summary> /// </summary>
/// <param name="stack">stack number</param> /// <param name="stack">stack number</param>
private void SetStack(int stack) { private void SetStack(int stack) {
if (stack < 0) throw new Exception("Stack cannot be less than 0"); if (stack < 0) throw new Exception("Stack cannot be less than 0");
//Decreased Stack //Decreased Stack
if (currentStack > stack) { if (currentStack > stack) {
Variables.RemoveAt(currentStack); Variables.RemoveAt(currentStack);
} }
//Increased Stack //Increased Stack
else if (currentStack < stack) { else if (currentStack < stack) {
Variables.Add(new Dictionary<string, IValue>()); Variables.Add(new Dictionary<string, IValue>());
} }
currentStack = stack; currentStack = stack;
} }
/// <summary> /// <summary>
/// Increase the stack /// Increase the stack
/// </summary> /// </summary>
public void IncreaseStack() { public void IncreaseStack() {
SetStack(currentStack + 1); SetStack(currentStack + 1);
} }
/// <summary> /// <summary>
/// Decrease the stack /// Decrease the stack
/// </summary> /// </summary>
public void DecreaseStack() { public void DecreaseStack() {
if (currentStack > 0) { if (currentStack > 0) {
SetStack(currentStack - 1); SetStack(currentStack - 1);
} }
} }
/// <summary> /// <summary>
/// Set a variable /// Set a variable
/// </summary> /// </summary>
/// <param name="name">Variable name</param> /// <param name="name">Variable name</param>
/// <param name="stack">the start stack</param> /// <param name="stack">the start stack</param>
/// <param name="value">the IValue</param> /// <param name="value">the IValue</param>
private void SetVariable(string name, int stack, IValue value) { private void SetVariable(string name, int stack, IValue value) {
for (int internalStack = stack; internalStack >= 0; internalStack--) { for (int internalStack = stack; internalStack >= 0; internalStack--) {
if (value == null || CheckVariableExists(name, internalStack)) { if (value == null || CheckVariableExists(name, internalStack)) {
Variables[internalStack][name] = value; Variables[internalStack][name] = value;
return; return;
} }
} }
Variables[stack][name] = value; Variables[stack][name] = value;
} }
/// <summary> /// <summary>
/// Set a variable /// Set a variable
/// </summary> /// </summary>
/// <param name="name">Variable name</param> /// <param name="name">Variable name</param>
/// <param name="value">the IValue</param> /// <param name="value">the IValue</param>
public void SetVariable(string name, IValue value) { public void SetVariable(string name, IValue value) {
SetVariable(name, currentStack, value); SetVariable(name, currentStack, value);
} }
/// <summary> /// <summary>
/// Gets the variable at the specified stack /// Gets the variable at the specified stack
/// </summary> /// </summary>
/// <param name="name">variable name</param> /// <param name="name">variable name</param>
/// <param name="stack">stack</param> /// <param name="stack">stack</param>
/// <returns>IValue</returns> /// <returns>IValue</returns>
private IValue GetVariable(string name, int stack) { private IValue GetVariable(string name, int stack) {
return Variables[stack][name]; return Variables[stack][name];
} }
/// <summary> /// <summary>
/// Gets the variable at the first available stack /// Gets the variable at the first available stack
/// </summary> /// </summary>
/// <param name="name">the names of the variable</param> /// <param name="name">the names of the variable</param>
/// <returns>IValue</returns> /// <returns>IValue</returns>
public IValue GetVariable(string name) { public IValue GetVariable(string name) {
for (int stack = currentStack; stack >= 0; stack--) { for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack) && GetVariable(name, stack) != null) return GetVariable(name, stack); if (CheckVariableExists(name, stack) && GetVariable(name, stack) != null) return GetVariable(name, stack);
} }
throw new Exception("Cannot find variable " + name); throw new Exception("Cannot find variable " + name);
} }
/// <summary> /// <summary>
/// Check if the variable exists at the stack specified /// Check if the variable exists at the stack specified
/// </summary> /// </summary>
/// <param name="name">variable name</param> /// <param name="name">variable name</param>
/// <param name="stack">stack</param> /// <param name="stack">stack</param>
/// <returns>IValue</returns> /// <returns>IValue</returns>
private bool CheckVariableExists(string name, int stack) { private bool CheckVariableExists(string name, int stack) {
if (name == null) return false; if (name == null) return false;
return Variables[stack].ContainsKey(name); return Variables[stack].ContainsKey(name);
} }
/// <summary> /// <summary>
/// Check if the variable exists in the first available stack /// Check if the variable exists in the first available stack
/// </summary> /// </summary>
/// <param name="name">variable name</param> /// <param name="name">variable name</param>
/// <returns>IValue</returns> /// <returns>IValue</returns>
public bool CheckVariableExists(string name) { public bool CheckVariableExists(string name) {
if (name == null) return false; if (name == null) return false;
for (int stack = currentStack; stack >= 0; stack--) { for (int stack = currentStack; stack >= 0; stack--) {
if (CheckVariableExists(name, stack)) return true; if (CheckVariableExists(name, stack)) return true;
} }
return false; return false;
} }
} }
} }
@@ -1,53 +1,53 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class BoolValue : IValue { internal class BoolValue : IValue {
private readonly bool initialised = false; private readonly bool initialised = false;
private readonly bool value; private readonly bool value;
public BoolValue(bool value) { public BoolValue(bool value) {
this.value = value; this.value = value;
initialised = true; initialised = true;
} }
public BoolValue() { public BoolValue() {
} }
public string GetDescription() { public string GetDescription() {
if (initialised) return "boolean of value " + value.ToString(); if (initialised) return "boolean of value " + value.ToString();
else return "an unset boolean value"; else return "an unset boolean value";
} }
public string GetOriginalType() { public string GetOriginalType() {
return "bool"; return "bool";
} }
public bool ToBool() { public bool ToBool() {
if (initialised) return value; if (initialised) return value;
else throw new Exception("Not initilised"); else throw new Exception("Not initilised");
} }
public Color ToColor() { public Color ToColor() {
return ToBool() ? Color.White : Color.Black; return ToBool() ? Color.White : Color.Black;
} }
public double ToDouble() { public double ToDouble() {
return ToBool() ? 1d : 0d; return ToBool() ? 1d : 0d;
} }
public int ToInt() { public int ToInt() {
return ToBool() ? 1 : 0; return ToBool() ? 1 : 0;
} }
public bool IsInitialised() { public bool IsInitialised() {
return initialised; return initialised;
} }
public IValue Clone() { public IValue Clone() {
return new BoolValue(value); return new BoolValue(value);
} }
} }
} }
@@ -1,80 +1,80 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class ComparisonValue : IValue { internal class ComparisonValue : IValue {
private readonly string op; private readonly string op;
private readonly IValue value1; private readonly IValue value1;
private readonly IValue value2; private readonly IValue value2;
public ComparisonValue(IValue value1, IValue value2, string op) { public ComparisonValue(IValue value1, IValue value2, string op) {
this.value1 = value1; this.value1 = value1;
this.value2 = value2; this.value2 = value2;
switch (op) { switch (op) {
case "=": case "=":
case "!": case "!":
case ">": case ">":
case "<": case "<":
break; break;
default: default:
throw new Exception("Invalid operation"); throw new Exception("Invalid operation");
} }
this.op = op; this.op = op;
} }
public string GetDescription() { public string GetDescription() {
return "Compare two values"; return "Compare two values";
} }
public string GetOriginalType() { public string GetOriginalType() {
return Evaluate().GetOriginalType(); return Evaluate().GetOriginalType();
} }
public bool IsInitialised() { public bool IsInitialised() {
return true; return true;
} }
private IValue Evaluate() { private IValue Evaluate() {
switch (op) { switch (op) {
case "=": case "=":
return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt()); return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt());
case "!": case "!":
return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt()); return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt());
case ">": case ">":
return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt()); return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt());
case "<": case "<":
return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt()); return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt());
default: default:
throw new Exception("Bad operator"); throw new Exception("Bad operator");
} }
} }
public bool ToBool() { public bool ToBool() {
return Evaluate().ToBool(); return Evaluate().ToBool();
} }
public Color ToColor() { public Color ToColor() {
return Evaluate().ToColor(); return Evaluate().ToColor();
} }
public double ToDouble() { public double ToDouble() {
return Evaluate().ToDouble(); return Evaluate().ToDouble();
} }
public int ToInt() { public int ToInt() {
return Evaluate().ToInt(); return Evaluate().ToInt();
} }
public IValue Clone() { public IValue Clone() {
return new ComparisonValue(value1, value2, op); return new ComparisonValue(value1, value2, op);
} }
} }
} }
@@ -1,57 +1,57 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class DoubleValue : IValue { internal class DoubleValue : IValue {
private readonly bool initialised = false; private readonly bool initialised = false;
private bool colorValueCacheAvailable = false; private bool colorValueCacheAvailable = false;
private Color colorValueCache; private Color colorValueCache;
private readonly double value; private readonly double value;
public DoubleValue(double value) { public DoubleValue(double value) {
this.value = value; this.value = value;
} }
public string GetDescription() { public string GetDescription() {
return "an double value of " + value; return "an double value of " + value;
} }
public string GetOriginalType() { public string GetOriginalType() {
return "double"; return "double";
} }
public bool ToBool() { public bool ToBool() {
return value > 0; return value > 0;
} }
public Color ToColor() { public Color ToColor() {
if (!colorValueCacheAvailable) { if (!colorValueCacheAvailable) {
int i = (int)Math.Round(value * 255); int i = (int)Math.Round(value * 255);
i = Math.Min(255, i); i = Math.Min(255, i);
if (i < 0) i = 0; if (i < 0) i = 0;
colorValueCache = ValueHelper.IntsToColor(i, i, i); colorValueCache = ValueHelper.IntsToColor(i, i, i);
colorValueCacheAvailable = true; colorValueCacheAvailable = true;
} }
return colorValueCache; return colorValueCache;
} }
public double ToDouble() { public double ToDouble() {
return value; return value;
} }
public int ToInt() { public int ToInt() {
return (int)Math.Round(value); return (int)Math.Round(value);
} }
public bool IsInitialised() { public bool IsInitialised() {
return initialised; return initialised;
} }
public IValue Clone() { public IValue Clone() {
return new DoubleValue(value); return new DoubleValue(value);
} }
} }
} }
@@ -1,214 +1,214 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value { namespace Advanced_Software_Engineering.Verbs.Value {
/// <summary> /// <summary>
/// Expression values are used when there are two IValues that need to be added or subtracted or anything from each other. /// Expression values are used when there are two IValues that need to be added or subtracted or anything from each other.
/// </summary> /// </summary>
public class ExpressionValue : IValue { public class ExpressionValue : IValue {
/// <summary> /// <summary>
/// An operation denoting addition /// An operation denoting addition
/// </summary> /// </summary>
public const int ADD = 0; public const int ADD = 0;
/// <summary> /// <summary>
/// An operation denoting subtraction /// An operation denoting subtraction
/// </summary> /// </summary>
public const int SUBTRACT = 1; public const int SUBTRACT = 1;
/// <summary> /// <summary>
/// An operation denoting multiplication /// An operation denoting multiplication
/// </summary> /// </summary>
public const int MULTIPLY = 2; public const int MULTIPLY = 2;
/// <summary> /// <summary>
/// An operation denoting division /// An operation denoting division
/// </summary> /// </summary>
public const int DIVIDE = 3; public const int DIVIDE = 3;
private readonly IValue variable1; private readonly IValue variable1;
private readonly IValue variable2; private readonly IValue variable2;
private readonly int operation; private readonly int operation;
/// <summary> /// <summary>
/// Create a new Expression Value based on the two IValues /// Create a new Expression Value based on the two IValues
/// </summary> /// </summary>
/// <param name="variable1">IValue to perform the operation on</param> /// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">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> /// <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) { public ExpressionValue(IValue variable1, IValue variable2, int operation) {
this.variable1 = variable1; this.variable1 = variable1;
this.variable2 = variable2; this.variable2 = variable2;
this.operation = operation; this.operation = operation;
//Check for bad input //Check for bad input
if (operation > 3 && operation < 0) throw new Exception("Bad operation"); if (operation > 3 && operation < 0) throw new Exception("Bad operation");
} }
/// <summary> /// <summary>
/// Create a new Expression Value based on the two IValues /// Create a new Expression Value based on the two IValues
/// </summary> /// </summary>
/// <param name="variable1">IValue to perform the operation on</param> /// <param name="variable1">IValue to perform the operation on</param>
/// <param name="variable2">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> /// <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) { public ExpressionValue(IValue variable1, IValue variable2, string operation) {
switch (operation) { switch (operation) {
case "+": case "+":
this.operation = ADD; this.operation = ADD;
break; break;
case "-": case "-":
this.operation = SUBTRACT; this.operation = SUBTRACT;
break; break;
case "*": case "*":
this.operation = MULTIPLY; this.operation = MULTIPLY;
break; break;
case "/": case "/":
this.operation = DIVIDE; this.operation = DIVIDE;
break; break;
default: default:
throw new Exception("Undefined operation"); throw new Exception("Undefined operation");
} }
this.variable1 = variable1; this.variable1 = variable1;
this.variable2 = variable2; this.variable2 = variable2;
//Check for bad input //Check for bad input
if (this.operation > 3 && this.operation < 0) throw new Exception("Bad operation"); if (this.operation > 3 && this.operation < 0) throw new Exception("Bad operation");
} }
/// <summary> /// <summary>
/// Evaluates the expression. /// Evaluates the expression.
/// </summary> /// </summary>
/// <returns>an IValue with the result</returns> /// <returns>an IValue with the result</returns>
private IValue Evaluate() { private IValue Evaluate() {
IValue variable1 = this.variable1.Clone(); IValue variable1 = this.variable1.Clone();
IValue variable2 = this.variable2.Clone(); IValue variable2 = this.variable2.Clone();
IValue evaluatedValue = null; IValue evaluatedValue = null;
string outputType = variable1.GetOriginalType(); string outputType = variable1.GetOriginalType();
switch (outputType) { switch (outputType) {
case "bool": case "bool":
//operations as standard for bool expressions eg //operations as standard for bool expressions eg
// (a + b) => a or b, (a * b) => a and b, (a ^ b) => a xor b // (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()); if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() || variable2.ToBool());
else if (operation == SUBTRACT) 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 == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() && variable2.ToBool());
else if (operation == DIVIDE) throw new Exception("Bool cannot be divided"); else if (operation == DIVIDE) throw new Exception("Bool cannot be divided");
else throw new Exception("Bad operation"); else throw new Exception("Bad operation");
break; break;
case "int": case "int":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable2.ToInt()); if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable2.ToInt());
else if (operation == SUBTRACT) 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 == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() * variable2.ToInt());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable2.ToInt()); else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable2.ToInt());
else throw new Exception("Bad operation"); else throw new Exception("Bad operation");
break; break;
case "double": case "double":
if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable2.ToDouble()); if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable2.ToDouble());
else if (operation == SUBTRACT) 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 == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() * variable2.ToDouble());
else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable2.ToDouble()); else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable2.ToDouble());
else throw new Exception("Bad operation"); else throw new Exception("Bad operation");
break; break;
case "color": case "color":
throw new Exception("Colors are immutable"); throw new Exception("Colors are immutable");
} }
return evaluatedValue; return evaluatedValue;
} }
/// <summary> /// <summary>
/// Describes the expression /// Describes the expression
/// </summary> /// </summary>
/// <returns>A string description of the expression</returns> /// <returns>A string description of the expression</returns>
public string GetDescription() { public string GetDescription() {
string operation; string operation;
switch (this.operation) { switch (this.operation) {
case ADD: case ADD:
operation = "added"; operation = "added";
break; break;
case SUBTRACT: case SUBTRACT:
operation = "subtracted"; operation = "subtracted";
break; break;
case MULTIPLY: case MULTIPLY:
operation = "multiplied"; operation = "multiplied";
break; break;
case DIVIDE: case DIVIDE:
operation = "divided"; operation = "divided";
break; break;
default: default:
throw new Exception("Bad operation"); throw new Exception("Bad operation");
} }
return "Expression of the variables " + variable1 + " and " + variable2 + " being " + operation; return "Expression of the variables " + variable1 + " and " + variable2 + " being " + operation;
} }
/// <summary> /// <summary>
/// Get the type of the expression /// Get the type of the expression
/// </summary> /// </summary>
/// <returns>"expression"</returns> /// <returns>"expression"</returns>
public string GetOriginalType() { public string GetOriginalType() {
return "expression"; return "expression";
} }
/// <summary> /// <summary>
/// Expressions are always initialised /// Expressions are always initialised
/// </summary> /// </summary>
/// <returns>true</returns> /// <returns>true</returns>
public bool IsInitialised() { public bool IsInitialised() {
return true; return true;
} }
/// <summary> /// <summary>
/// Gets the bool of the result /// Gets the bool of the result
/// </summary> /// </summary>
/// <returns>bool value of the result</returns> /// <returns>bool value of the result</returns>
public bool ToBool() { public bool ToBool() {
return Evaluate().ToBool(); return Evaluate().ToBool();
} }
/// <summary> /// <summary>
/// Gets the color of the result /// Gets the color of the result
/// </summary> /// </summary>
/// <returns>color value of the result</returns> /// <returns>color value of the result</returns>
public Color ToColor() { public Color ToColor() {
return Evaluate().ToColor(); return Evaluate().ToColor();
} }
/// <summary> /// <summary>
/// Gets the double value of the result /// Gets the double value of the result
/// </summary> /// </summary>
/// <returns>double value of the result</returns> /// <returns>double value of the result</returns>
public double ToDouble() { public double ToDouble() {
return Evaluate().ToDouble(); return Evaluate().ToDouble();
} }
/// <summary> /// <summary>
/// Gets the int of the result /// Gets the int of the result
/// </summary> /// </summary>
/// <returns>int value of the result</returns> /// <returns>int value of the result</returns>
public int ToInt() { public int ToInt() {
return Evaluate().ToInt(); return Evaluate().ToInt();
} }
/// <summary> /// <summary>
/// Clones the value of the result /// Clones the value of the result
/// </summary> /// </summary>
/// <returns>A new IValue</returns> /// <returns>A new IValue</returns>
public IValue Clone() { public IValue Clone() {
return Evaluate(); return Evaluate();
} }
} }
} }
@@ -1,71 +1,71 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
internal class IntValue : IValue { internal class IntValue : IValue {
private readonly bool initialised = false; private readonly bool initialised = false;
private readonly int value; private readonly int value;
private bool doubleValueCacheAvaiable = false; private bool doubleValueCacheAvaiable = false;
private double doubleValueCache; private double doubleValueCache;
private bool boolValueCacheAvailable = false; private bool boolValueCacheAvailable = false;
private bool boolValueCache; private bool boolValueCache;
private bool colorValueCacheAvailable = false; private bool colorValueCacheAvailable = false;
private Color colorValueCache; private Color colorValueCache;
public IntValue(int value) { public IntValue(int value) {
this.value = value; this.value = value;
} }
public string GetDescription() { public string GetDescription() {
return "an integer value of " + value; return "an integer value of " + value;
} }
public string GetOriginalType() { public string GetOriginalType() {
return "int"; return "int";
} }
public bool ToBool() { public bool ToBool() {
if (!boolValueCacheAvailable) { if (!boolValueCacheAvailable) {
boolValueCache = value <= 0; boolValueCache = value <= 0;
boolValueCacheAvailable = true; boolValueCacheAvailable = true;
} }
return boolValueCache; return boolValueCache;
} }
public Color ToColor() { public Color ToColor() {
if (!colorValueCacheAvailable) { if (!colorValueCacheAvailable) {
byte[] bytes = BitConverter.GetBytes(value); byte[] bytes = BitConverter.GetBytes(value);
Array.Reverse(bytes); Array.Reverse(bytes);
colorValueCache = ValueHelper.IntsToColor(bytes[1], bytes[2], bytes[3], bytes[0]); colorValueCache = ValueHelper.IntsToColor(bytes[1], bytes[2], bytes[3], bytes[0]);
colorValueCacheAvailable = true; colorValueCacheAvailable = true;
} }
return colorValueCache; return colorValueCache;
} }
public double ToDouble() { public double ToDouble() {
if (!doubleValueCacheAvaiable) { if (!doubleValueCacheAvaiable) {
doubleValueCache = value; doubleValueCache = value;
doubleValueCacheAvaiable = true; doubleValueCacheAvaiable = true;
} }
return doubleValueCache; return doubleValueCache;
} }
public int ToInt() { public int ToInt() {
return value; return value;
} }
public bool IsInitialised() { public bool IsInitialised() {
return initialised; return initialised;
} }
public IValue Clone() { public IValue Clone() {
return new IntValue(value); return new IntValue(value);
} }
} }
} }
@@ -1,96 +1,96 @@
using System; using System;
using System.Drawing; using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
/// <summary> /// <summary>
/// Variable value is responsible for setting up values for <see cref="UpdateVariable"/> to then update /// Variable value is responsible for setting up values for <see cref="UpdateVariable"/> to then update
/// </summary> /// </summary>
public class VariableValue : IValue { public class VariableValue : IValue {
private readonly ValueStorage storage; private readonly ValueStorage storage;
private readonly string variableName; private readonly string variableName;
/// <summary> /// <summary>
/// The new VariableValue /// The new VariableValue
/// </summary> /// </summary>
/// <param name="storage">the storage to use</param> /// <param name="storage">the storage to use</param>
/// <param name="variableName">variable name</param> /// <param name="variableName">variable name</param>
public VariableValue(ValueStorage storage, string variableName) { public VariableValue(ValueStorage storage, string variableName) {
this.variableName = variableName; this.variableName = variableName;
if (!storage.CheckVariableExists(variableName)) throw new Exception("Tried to access " + variableName + " before it was assigned. "); if (!storage.CheckVariableExists(variableName)) throw new Exception("Tried to access " + variableName + " before it was assigned. ");
this.storage = storage; this.storage = storage;
} }
/// <summary> /// <summary>
/// Get the variable value /// Get the variable value
/// </summary> /// </summary>
/// <returns><see cref="IValue"/></returns> /// <returns><see cref="IValue"/></returns>
private IValue Get() { private IValue Get() {
return storage.GetVariable(variableName); return storage.GetVariable(variableName);
} }
/// <summary> /// <summary>
/// Gets the description of the IValue /// Gets the description of the IValue
/// </summary> /// </summary>
/// <returns>description of the IValue</returns> /// <returns>description of the IValue</returns>
public string GetDescription() { public string GetDescription() {
return Get().GetDescription(); return Get().GetDescription();
} }
/// <summary> /// <summary>
/// Gets the original type of the IValue /// Gets the original type of the IValue
/// </summary> /// </summary>
/// <returns>original type of the IValue</returns> /// <returns>original type of the IValue</returns>
public string GetOriginalType() { public string GetOriginalType() {
return Get().GetOriginalType(); return Get().GetOriginalType();
} }
/// <summary> /// <summary>
/// Get the initialised state of the IValue /// Get the initialised state of the IValue
/// </summary> /// </summary>
/// <returns>initialised state of the IValue</returns> /// <returns>initialised state of the IValue</returns>
public bool IsInitialised() { public bool IsInitialised() {
return Get().IsInitialised(); return Get().IsInitialised();
} }
/// <summary> /// <summary>
/// Converts the IValue to a boolean /// Converts the IValue to a boolean
/// </summary> /// </summary>
/// <returns>Boolean value of the IValue</returns> /// <returns>Boolean value of the IValue</returns>
public bool ToBool() { public bool ToBool() {
return Get().ToBool(); return Get().ToBool();
} }
/// <summary> /// <summary>
/// Converts the IValue to a color /// Converts the IValue to a color
/// </summary> /// </summary>
/// <returns>Color value of the IValue</returns> /// <returns>Color value of the IValue</returns>
public Color ToColor() { public Color ToColor() {
return Get().ToColor(); return Get().ToColor();
} }
/// <summary> /// <summary>
/// Converts the IValue to a double /// Converts the IValue to a double
/// </summary> /// </summary>
/// <returns>Double value of the IValue</returns> /// <returns>Double value of the IValue</returns>
public double ToDouble() { public double ToDouble() {
return Get().ToDouble(); return Get().ToDouble();
} }
/// <summary> /// <summary>
/// Converts the IValue to an integer /// Converts the IValue to an integer
/// </summary> /// </summary>
/// <returns>Int value of the IValue</returns> /// <returns>Int value of the IValue</returns>
public int ToInt() { public int ToInt() {
return Get().ToInt(); return Get().ToInt();
} }
/// <summary> /// <summary>
/// Clone the value and return it /// Clone the value and return it
/// </summary> /// </summary>
/// <returns>Cloned IValue</returns> /// <returns>Cloned IValue</returns>
public IValue Clone() { public IValue Clone() {
return Get().Clone(); return Get().Clone();
} }
} }
} }
@@ -1,367 +1,367 @@
using Advanced_Software_Engineering.Verbs.DrawingVerbs; using Advanced_Software_Engineering.Verbs.DrawingVerbs;
using Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions; using Advanced_Software_Engineering.Verbs.DrawingVerbs.Actions;
using Advanced_Software_Engineering.Verbs.Flow; using Advanced_Software_Engineering.Verbs.Flow;
using Advanced_Software_Engineering.Verbs.Value; using Advanced_Software_Engineering.Verbs.Value;
using Advanced_Software_Engineering.Verbs.Value.ValueObjects; using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
using Advanced_Software_Engineering.Verbs.Value.ValueTypes; using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// This class is responsible for creating Verbs. /// This class is responsible for creating Verbs.
/// </summary> /// </summary>
public class VerbFactory { public class VerbFactory {
/// <summary> /// <summary>
/// This function returns a IVerb from a command and drawer. /// This function returns a IVerb from a command and drawer.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// This factory is specifically useful since it automatically converts the parameters to what they should be. /// This factory is specifically useful since it automatically converts the parameters to what they should be.
/// </remarks> /// </remarks>
/// <param name="drawer">The drawer to affect</param> /// <param name="drawer">The drawer to affect</param>
/// <param name="fullCommand">The command as a string</param> /// <param name="fullCommand">The command as a string</param>
/// <returns>A IVerb that maches the command</returns> /// <returns>A IVerb that maches the command</returns>
public static IVerb MakeVerb(Drawer drawer, string fullCommand) { public static IVerb MakeVerb(Drawer drawer, string fullCommand) {
ValueStorage rootValueStorage = drawer.GetValueStorage(); ValueStorage rootValueStorage = drawer.GetValueStorage();
List<IVerbChunk> verbChunks = drawer.verbChunks; List<IVerbChunk> verbChunks = drawer.verbChunks;
if (verbChunks.Count == 0) verbChunks.Add(null); if (verbChunks.Count == 0) verbChunks.Add(null);
int chunkDepth = verbChunks.Count - 1; int chunkDepth = verbChunks.Count - 1;
IVerbChunk currentChunk = verbChunks[chunkDepth]; IVerbChunk currentChunk = verbChunks[chunkDepth];
CommandAndParameterParserResult result = HelperFunctions.CommandAndParameterParser(fullCommand); CommandAndParameterParserResult result = HelperFunctions.CommandAndParameterParser(fullCommand);
string command = result.GetCommand(); string command = result.GetCommand();
if (command == null) return new NoOp(); if (command == null) return new NoOp();
string[] commandParameters = result.GetParameters(); string[] commandParameters = result.GetParameters();
if (command == null) throw new Exception("There is no command to process"); if (command == null) throw new Exception("There is no command to process");
IVerb tmpVerb = null; IVerb tmpVerb = null;
bool parsed = false; bool parsed = false;
//check for names in directory //check for names in directory
if (rootValueStorage.CheckVariableExists(command)) { if (rootValueStorage.CheckVariableExists(command)) {
if (commandParameters.Length == 1) { if (commandParameters.Length == 1) {
tmpVerb = new UpdateVariable(rootValueStorage, command, commandParameters[0]); tmpVerb = new UpdateVariable(rootValueStorage, command, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb; if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb); currentChunk.AddVerb(tmpVerb);
return new NoOp(); return new NoOp();
} else throw new Exception(command + "needs something to be assigned to it"); } else throw new Exception(command + "needs something to be assigned to it");
} }
//process declarations //process declarations
if (!(commandParameters == null) && !parsed) { if (!(commandParameters == null) && !parsed) {
switch (command) { switch (command) {
case "var": case "var":
if (commandParameters.Length == 1) { if (commandParameters.Length == 1) {
tmpVerb = new DeclareVariable(rootValueStorage, commandParameters[0]); tmpVerb = new DeclareVariable(rootValueStorage, commandParameters[0]);
if (chunkDepth == 0) return tmpVerb; if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb); currentChunk.AddVerb(tmpVerb);
return new NoOp(); return new NoOp();
} else throw new Exception(command + "s need to be initialised"); } else throw new Exception(command + "s need to be initialised");
default: default:
//assignment //assignment
if (rootValueStorage.CheckVariableExists(command)) { if (rootValueStorage.CheckVariableExists(command)) {
string[] assignmentCommands = command.Split("="[0]); string[] assignmentCommands = command.Split("="[0]);
if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments"); if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments");
tmpVerb = new UpdateVariable(rootValueStorage, assignmentCommands[0], ValueFactory.CreateValue(rootValueStorage, assignmentCommands[1])); tmpVerb = new UpdateVariable(rootValueStorage, assignmentCommands[0], ValueFactory.CreateValue(rootValueStorage, assignmentCommands[1]));
if (chunkDepth == 0) return tmpVerb; if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb); currentChunk.AddVerb(tmpVerb);
return new NoOp(); return new NoOp();
} }
break; break;
} }
} }
//Parse flow verbs //Parse flow verbs
switch (command) { switch (command) {
case "if": case "if":
if (commandParameters.Length == 1) { if (commandParameters.Length == 1) {
verbChunks.Add(new IfChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0]))); verbChunks.Add(new IfChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1; chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth]; currentChunk = verbChunks[chunkDepth];
parsed = true; parsed = true;
tmpVerb = new NoOp(); tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if } else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first , string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new IfChunk(rootValueStorage, conditional, AfterIf); //Create the chunk tmpVerb = new IfChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true; parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "while": case "while":
if (commandParameters.Length == 1) { if (commandParameters.Length == 1) {
verbChunks.Add(new WhileChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0]))); verbChunks.Add(new WhileChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1; chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth]; currentChunk = verbChunks[chunkDepth];
parsed = true; parsed = true;
tmpVerb = new NoOp(); tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if } else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first , string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new WhileChunk(rootValueStorage, conditional, AfterIf); //Create the chunk tmpVerb = new WhileChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true; parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "for": case "for":
if (commandParameters.Length == 1) { if (commandParameters.Length == 1) {
verbChunks.Add(new ForChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0]))); verbChunks.Add(new ForChunk(rootValueStorage, ValueFactory.CreateValue(rootValueStorage, commandParameters[0])));
chunkDepth = verbChunks.Count - 1; chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth]; currentChunk = verbChunks[chunkDepth];
parsed = true; parsed = true;
tmpVerb = new NoOp(); tmpVerb = new NoOp();
} else if (commandParameters.Length >= 2) { //single line if } else if (commandParameters.Length >= 2) { //single line if
string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first , string commandAfterIf = fullCommand.Substring(fullCommand.IndexOf(",") + 1); // find the first ,
IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional IValue conditional = ValueFactory.CreateValue(rootValueStorage, commandParameters[0]); //make the conditional
IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command IVerb AfterIf = MakeVerb(drawer, commandAfterIf); //make the following command
tmpVerb = new ForChunk(rootValueStorage, conditional, AfterIf); //Create the chunk tmpVerb = new ForChunk(rootValueStorage, conditional, AfterIf); //Create the chunk
parsed = true; parsed = true;
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "def": case "def":
if (drawer.verbChunkGeneratingMethod) throw new Exception("Cannot declare a method while declaring method"); 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 (chunkDepth != 0) throw new Exception("Cannot declare a method above root chunk"); //TODO, explain better
else if (commandParameters.Length >= 1) { else if (commandParameters.Length >= 1) {
rootValueStorage.IncreaseStack(); rootValueStorage.IncreaseStack();
//All parameters //All parameters
DeclareVariable[] methodParameters = new DeclareVariable[] { }; DeclareVariable[] methodParameters = new DeclareVariable[] { };
//if assignments exist, make them //if assignments exist, make them
if (commandParameters.Length > 1) { if (commandParameters.Length > 1) {
List<DeclareVariable> methodParameterList = new List<DeclareVariable>(); List<DeclareVariable> methodParameterList = new List<DeclareVariable>();
for (int index = 1; index < commandParameters.Length; index++) { for (int index = 1; index < commandParameters.Length; index++) {
methodParameterList.Add(new DeclareVariable(rootValueStorage, commandParameters[index])); methodParameterList.Add(new DeclareVariable(rootValueStorage, commandParameters[index]));
} }
methodParameters = methodParameterList.ToArray(); methodParameters = methodParameterList.ToArray();
} }
//Get method name //Get method name
string methodName = commandParameters[0]; string methodName = commandParameters[0];
MethodChunk methodChunk = new MethodChunk(rootValueStorage, methodParameters); MethodChunk methodChunk = new MethodChunk(rootValueStorage, methodParameters);
DeclareMethod declareMethod = new DeclareMethod(drawer, methodName); DeclareMethod declareMethod = new DeclareMethod(drawer, methodName);
drawer.Methods.Add(methodName, methodChunk); drawer.Methods.Add(methodName, methodChunk);
verbChunks.Add(declareMethod); verbChunks.Add(declareMethod);
chunkDepth = verbChunks.Count - 1; chunkDepth = verbChunks.Count - 1;
currentChunk = verbChunks[chunkDepth]; currentChunk = verbChunks[chunkDepth];
parsed = true; parsed = true;
tmpVerb = new NoOp(); tmpVerb = new NoOp();
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
} }
if (!parsed) { if (!parsed) {
List<IValue> parameters = new List<IValue>(); List<IValue> parameters = new List<IValue>();
if (!(commandParameters == null)) foreach (string parameter in commandParameters) { if (!(commandParameters == null)) foreach (string parameter in commandParameters) {
parameters.Add(ValueFactory.CreateValue(rootValueStorage, parameter)); parameters.Add(ValueFactory.CreateValue(rootValueStorage, parameter));
} }
int parameterLength = parameters.Count; int parameterLength = parameters.Count;
//Check if method //Check if method
if (drawer.Methods.ContainsKey(command)) { if (drawer.Methods.ContainsKey(command)) {
MethodChunk methodChunk = drawer.Methods[command]; MethodChunk methodChunk = drawer.Methods[command];
string[] methodVariableNames = methodChunk.GetVariableNames().ToArray(); string[] methodVariableNames = methodChunk.GetVariableNames().ToArray();
//Handle errors //Handle errors
if (methodVariableNames.Length != parameterLength) throw new Exception("Method " + command + "Has an incorrect number of parameters"); if (methodVariableNames.Length != parameterLength) throw new Exception("Method " + command + "Has an incorrect number of parameters");
/* So something like this: /* So something like this:
* def abc d * def abc d
* circle d * circle d
* *
* abc 5 * abc 5
* *
* would have to be translated into something like this * would have to be translated into something like this
* @increase stack * @increase stack
* var d = 5 (of course in a higher stack) * var d = 5 (of course in a higher stack)
* *
* @run abc (abc doesn't increase it's own stack) * @run abc (abc doesn't increase it's own stack)
* *
*/ */
// Update the values of the variables // Update the values of the variables
List<UpdateVariable> UpdateVariableList = new List<UpdateVariable>(); List<UpdateVariable> UpdateVariableList = new List<UpdateVariable>();
for (int variableIndex = 0; variableIndex < methodVariableNames.Length; variableIndex++) { for (int variableIndex = 0; variableIndex < methodVariableNames.Length; variableIndex++) {
UpdateVariableList.Add(new UpdateVariable(rootValueStorage, methodVariableNames[variableIndex], parameters[variableIndex])); UpdateVariableList.Add(new UpdateVariable(rootValueStorage, methodVariableNames[variableIndex], parameters[variableIndex]));
} }
methodChunk.SetVariableValues(UpdateVariableList.ToArray()); methodChunk.SetVariableValues(UpdateVariableList.ToArray());
tmpVerb = methodChunk.DuplicateForExecution(); tmpVerb = methodChunk.DuplicateForExecution();
} }
//process drawing commands and extras //process drawing commands and extras
else switch (command) { else switch (command) {
//Drawing commands //Drawing commands
case "move": case "move":
case "moveto": case "moveto":
//Check parameters //Check parameters
if (parameterLength == 2) { if (parameterLength == 2) {
tmpVerb = new MoveTo(drawer, new PointValue(parameters[0], parameters[1])); tmpVerb = new MoveTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "drawto": case "drawto":
case "line": case "line":
case "lineto": case "lineto":
//Check parameters //Check parameters
if (parameterLength == 2) { if (parameterLength == 2) {
tmpVerb = new DrawTo(drawer, new PointValue(parameters[0], parameters[1])); tmpVerb = new DrawTo(drawer, new PointValue(parameters[0], parameters[1]));
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "regularpolygon": case "regularpolygon":
case "rp": case "rp":
//Check parameters //Check parameters
if (parameterLength == 2) { if (parameterLength == 2) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], new IntValue(0), new BoolValue(true)); tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], new IntValue(0), new BoolValue(true));
} else if (parameterLength == 3) { } else if (parameterLength == 3) {
tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], parameters[2], new BoolValue(true)); tmpVerb = new RegularPolygon(drawer, parameters[0], parameters[1], parameters[2], new BoolValue(true));
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "square": case "square":
//Check parameters //Check parameters
if (parameterLength == 1) { if (parameterLength == 1) {
tmpVerb = new tmpVerb = new
Square(drawer, parameters[0]); Square(drawer, parameters[0]);
} else if (parameterLength == 2) { } else if (parameterLength == 2) {
tmpVerb = new Square(drawer, parameters[0], parameters[1]); tmpVerb = new Square(drawer, parameters[0], parameters[1]);
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "quadrilateral": case "quadrilateral":
//Check parameters //Check parameters
if (parameterLength == 8) { if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer, tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]), new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]), new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]), new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7]) new PointValue(parameters[6], parameters[7])
); );
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "rectangle": case "rectangle":
//Check parameters //Check parameters
if (parameterLength == 2) { if (parameterLength == 2) {
tmpVerb = new Rectangle(drawer, parameters[0], parameters[1]); tmpVerb = new Rectangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 8) { } else if (parameterLength == 8) {
tmpVerb = new Quadrilateral(drawer, tmpVerb = new Quadrilateral(drawer,
new PointValue(parameters[0], parameters[1]), new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]), new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]), new PointValue(parameters[4], parameters[5]),
new PointValue(parameters[6], parameters[7]) new PointValue(parameters[6], parameters[7])
); );
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "circle": case "circle":
//Check parameters //Check parameters
if (parameterLength == 1) { if (parameterLength == 1) {
tmpVerb = new Circle(drawer, parameters[0]); tmpVerb = new Circle(drawer, parameters[0]);
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "triangle": case "triangle":
//Check parameters //Check parameters
if (parameterLength == 1) { if (parameterLength == 1) {
tmpVerb = new tmpVerb = new
Triangle(drawer, parameters[0]); Triangle(drawer, parameters[0]);
} else if (parameterLength == 2) { } else if (parameterLength == 2) {
tmpVerb = new tmpVerb = new
Triangle(drawer, parameters[0], parameters[1]); Triangle(drawer, parameters[0], parameters[1]);
} else if (parameterLength == 6) { } else if (parameterLength == 6) {
tmpVerb = new Triangle(drawer, tmpVerb = new Triangle(drawer,
new PointValue(parameters[0], parameters[1]), new PointValue(parameters[0], parameters[1]),
new PointValue(parameters[2], parameters[3]), new PointValue(parameters[2], parameters[3]),
new PointValue(parameters[4], parameters[5]) new PointValue(parameters[4], parameters[5])
); );
} else throw new Exception(command + " has an incorrect number of parameters"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "dot": case "dot":
if (parameterLength == 0) { if (parameterLength == 0) {
tmpVerb = new Dot(drawer); tmpVerb = new Dot(drawer);
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
case "clear": case "clear":
if (parameterLength == 0) { if (parameterLength == 0) {
tmpVerb = new Clear(drawer); tmpVerb = new Clear(drawer);
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
case "reset": case "reset":
case "resetpen": case "resetpen":
if (parameterLength == 0) { if (parameterLength == 0) {
tmpVerb = new ResetPen(drawer); tmpVerb = new ResetPen(drawer);
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
case "fillon": case "fillon":
if (parameterLength == 0) { if (parameterLength == 0) {
tmpVerb = new Fill(drawer, true); tmpVerb = new Fill(drawer, true);
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
case "filloff": case "filloff":
if (parameterLength == 0) { if (parameterLength == 0) {
tmpVerb = new Fill(drawer, false); tmpVerb = new Fill(drawer, false);
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
case "pen": case "pen":
if (parameterLength == 1) { if (parameterLength == 1) {
tmpVerb = new PenColor(drawer, parameters[0]); tmpVerb = new PenColor(drawer, parameters[0]);
} else if (parameterLength == 3) { } else if (parameterLength == 3) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2])); tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2]));
} else if (parameterLength == 4) { } else if (parameterLength == 4) {
tmpVerb = new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3])); 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"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
case "fill": case "fill":
if (parameterLength == 1) { if (parameterLength == 1) {
tmpVerb = new FillColor(drawer, parameters[0]); tmpVerb = new FillColor(drawer, parameters[0]);
} else if (parameterLength == 3) { } else if (parameterLength == 3) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], new IntValue(255))); tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], new IntValue(255)));
} else if (parameterLength == 4) { } else if (parameterLength == 4) {
tmpVerb = new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3])); 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"); } else throw new Exception(command + " has an incorrect number of parameters");
break; break;
//exit flow //exit flow
case "end": case "end":
if (parameterLength == 0) { if (parameterLength == 0) {
if (currentChunk == null) throw new Exception("Cannot end at root level"); //Todo, describe better if (currentChunk == null) throw new Exception("Cannot end at root level"); //Todo, describe better
verbChunks.Remove(currentChunk); verbChunks.Remove(currentChunk);
chunkDepth = verbChunks.Count - 1; chunkDepth = verbChunks.Count - 1;
if (chunkDepth == 0) drawer.verbChunkGeneratingMethod = false; if (chunkDepth == 0) drawer.verbChunkGeneratingMethod = false;
tmpVerb = currentChunk; tmpVerb = currentChunk;
currentChunk = verbChunks[chunkDepth]; currentChunk = verbChunks[chunkDepth];
rootValueStorage.DecreaseStack(); rootValueStorage.DecreaseStack();
} else throw new Exception(command + " doesn't take parameters"); } else throw new Exception(command + " doesn't take parameters");
break; break;
default: default:
throw new Exception("Unknown command or cannot parse"); throw new Exception("Unknown command or cannot parse");
} }
} }
if (chunkDepth == 0) return tmpVerb; if (chunkDepth == 0) return tmpVerb;
currentChunk.AddVerb(tmpVerb); currentChunk.AddVerb(tmpVerb);
return new NoOp(); return new NoOp();
} }
} }
} }
@@ -1,115 +1,115 @@
namespace Advanced_Software_Engineering namespace Advanced_Software_Engineering
{ {
/// <summary> /// <summary>
/// Auto generated code /// Auto generated code
/// </summary> /// </summary>
partial class About_Window partial class About_Window
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
if (disposing && (components != null)) if (disposing && (components != null))
{ {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About_Window)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About_Window));
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9); this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(196, 13); this.label1.Size = new System.Drawing.Size(196, 13);
this.label1.TabIndex = 0; this.label1.TabIndex = 0;
this.label1.Text = "Advanced Software Engineering Project"; this.label1.Text = "Advanced Software Engineering Project";
// //
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 26); this.label2.Location = new System.Drawing.Point(12, 26);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(235, 13); this.label2.Size = new System.Drawing.Size(235, 13);
this.label2.TabIndex = 1; this.label2.TabIndex = 1;
this.label2.Text = "Drawing Programming Language Implementation"; this.label2.Text = "Drawing Programming Language Implementation";
// //
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(253, 26); this.label3.Location = new System.Drawing.Point(253, 26);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(35, 13); this.label3.Size = new System.Drawing.Size(35, 13);
this.label3.TabIndex = 1; this.label3.TabIndex = 1;
this.label3.Text = "Part 1"; this.label3.Text = "Part 1";
// //
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(13, 63); this.label4.Location = new System.Drawing.Point(13, 63);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(160, 13); this.label4.Size = new System.Drawing.Size(160, 13);
this.label4.TabIndex = 2; this.label4.TabIndex = 2;
this.label4.Text = "Programming by Lukasz Baldyga"; this.label4.Text = "Programming by Lukasz Baldyga";
// //
// label5 // label5
// //
this.label5.AutoSize = true; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(15, 89); this.label5.Location = new System.Drawing.Point(15, 89);
this.label5.Name = "label5"; this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(143, 13); this.label5.Size = new System.Drawing.Size(143, 13);
this.label5.TabIndex = 3; this.label5.TabIndex = 3;
this.label5.Text = "Icons by Sorana Ioana Marin"; this.label5.Text = "Icons by Sorana Ioana Marin";
// //
// About_Window // About_Window
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(312, 206); this.ClientSize = new System.Drawing.Size(312, 206);
this.Controls.Add(this.label5); this.Controls.Add(this.label5);
this.Controls.Add(this.label4); this.Controls.Add(this.label4);
this.Controls.Add(this.label3); this.Controls.Add(this.label3);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "About_Window"; this.Name = "About_Window";
this.Text = "About"; this.Text = "About";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.About_Window_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.About_Window_FormClosed);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label5;
} }
} }
@@ -1,24 +1,24 @@
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
partial class About_Window : Form { partial class About_Window : Form {
///<summary> ///<summary>
///Creates an About Window which shows details about the program. ///Creates an About Window which shows details about the program.
///</summary> ///</summary>
public About_Window() { public About_Window() {
InitializeComponent(); InitializeComponent();
MenuManager.NumberOfWindows++; MenuManager.NumberOfWindows++;
} }
/// <summary> /// <summary>
/// When the form closes, the window count should be updated which this function is responsible for. /// When the form closes, the window count should be updated which this function is responsible for.
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void About_Window_FormClosed(object sender, FormClosedEventArgs e) { private void About_Window_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed(); MenuManager.WindowClosed();
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA 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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
File diff suppressed because it is too large. Load diff
@@ -1,17 +1,17 @@
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// This class is resposible for the command help window. The command help window shows help for the commands. /// This class is resposible for the command help window. The command help window shows help for the commands.
/// </summary> /// </summary>
public partial class CommandHelp : Form { public partial class CommandHelp : Form {
/// <summary> /// <summary>
/// Initilize CommandHelp. /// Initilize CommandHelp.
/// </summary> /// </summary>
public CommandHelp() { public CommandHelp() {
InitializeComponent(); InitializeComponent();
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA 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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
@@ -1,63 +1,63 @@
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
partial class DetailsWindow { partial class DetailsWindow {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) { protected override void Dispose(bool disposing) {
if (disposing && (components != null)) { if (disposing && (components != null)) {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() { private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DetailsWindow)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DetailsWindow));
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// textBox1 // textBox1
// //
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill; 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.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.Location = new System.Drawing.Point(0, 0);
this.textBox1.Multiline = true; this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1"; this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true; this.textBox1.ReadOnly = true;
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBox1.Size = new System.Drawing.Size(365, 405); this.textBox1.Size = new System.Drawing.Size(365, 405);
this.textBox1.TabIndex = 0; this.textBox1.TabIndex = 0;
// //
// DetailsWindow // DetailsWindow
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(365, 405); this.ClientSize = new System.Drawing.Size(365, 405);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "DetailsWindow"; this.Name = "DetailsWindow";
this.Text = "Details"; this.Text = "Details";
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox1;
} }
} }
@@ -1,30 +1,30 @@
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// This form is reponsible for showing details. It is essentially a textbox in a form. /// This form is reponsible for showing details. It is essentially a textbox in a form.
/// </summary> /// </summary>
public partial class DetailsWindow : Form { public partial class DetailsWindow : Form {
/// <summary> /// <summary>
/// A details window dedicated to showing details. /// A details window dedicated to showing details.
/// </summary> /// </summary>
/// <param name="details">The textbox text</param> /// <param name="details">The textbox text</param>
public DetailsWindow(string details) { public DetailsWindow(string details) {
InitializeComponent(); InitializeComponent();
textBox1.Text = details; textBox1.Text = details;
} }
/// <summary> /// <summary>
/// A details window that shows details in the textbox and title as the window title. /// A details window that shows details in the textbox and title as the window title.
/// </summary> /// </summary>
/// <param name="details">the details to be shown in the textbox</param> /// <param name="details">the details to be shown in the textbox</param>
/// <param name="title">the title of the window</param> /// <param name="title">the title of the window</param>
public DetailsWindow(string details, string title) { public DetailsWindow(string details, string title) {
InitializeComponent(); InitializeComponent();
textBox1.Text = details; textBox1.Text = details;
Text = title; Text = title;
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA 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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
@@ -1,98 +1,98 @@
namespace Advanced_Software_Engineering namespace Advanced_Software_Engineering
{ {
/// <summary> /// <summary>
/// Auto Generated Code /// Auto Generated Code
/// </summary> /// </summary>
partial class Draw_Preview partial class Draw_Preview
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
if (disposing && (components != null)) if (disposing && (components != null))
{ {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Draw_Preview)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Draw_Preview));
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout(); this.SuspendLayout();
// //
// button1 // button1
// //
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 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.Location = new System.Drawing.Point(455, 480);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(83, 22); this.button1.Size = new System.Drawing.Size(83, 22);
this.button1.TabIndex = 0; this.button1.TabIndex = 0;
this.button1.Text = "Submit"; this.button1.Text = "Submit";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.SubmitCommand); this.button1.Click += new System.EventHandler(this.SubmitCommand);
// //
// textBox1 // textBox1
// //
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.textBox1.Location = new System.Drawing.Point(0, 481); this.textBox1.Location = new System.Drawing.Point(0, 481);
this.textBox1.Name = "textBox1"; this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(449, 20); this.textBox1.Size = new System.Drawing.Size(449, 20);
this.textBox1.TabIndex = 1; this.textBox1.TabIndex = 1;
this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown); this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown);
// //
// panel1 // panel1
// //
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.panel1.BackColor = System.Drawing.Color.White; this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(537, 474); this.panel1.Size = new System.Drawing.Size(537, 474);
this.panel1.TabIndex = 2; this.panel1.TabIndex = 2;
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint); this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
// //
// Draw_Preview // Draw_Preview
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(537, 501); this.ClientSize = new System.Drawing.Size(537, 501);
this.Controls.Add(this.panel1); this.Controls.Add(this.panel1);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Draw_Preview"; this.Name = "Draw_Preview";
this.Text = "Draw Preview"; this.Text = "Draw Preview";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.DrawPreview_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.DrawPreview_FormClosed);
this.ResizeEnd += new System.EventHandler(this.DrawPreviewPane_Paint); this.ResizeEnd += new System.EventHandler(this.DrawPreviewPane_Paint);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint); this.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel1;
} }
} }
@@ -1,115 +1,115 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
public partial class Draw_Preview : Form { public partial class Draw_Preview : Form {
private Graphics graphics; private Graphics graphics;
private readonly Commander commander; private readonly Commander commander;
private bool pardonCommands; private bool pardonCommands;
/// <summary> /// <summary>
/// The draw preview window. Spawns the basic DrawPreview. /// The draw preview window. Spawns the basic DrawPreview.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// This window is responsible for showing what has been drawn. /// This window is responsible for showing what has been drawn.
/// </remarks> /// </remarks>
public Draw_Preview() { public Draw_Preview() {
InitializeComponent(); InitializeComponent();
MenuManager.NumberOfWindows++; MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics(); graphics = panel1.CreateGraphics();
graphics.ResetClip(); graphics.ResetClip();
commander = new Commander(graphics); commander = new Commander(graphics);
pardonCommands = true; pardonCommands = true;
} }
/// <summary> /// <summary>
/// The draw preview window. Spawns the DrawPreview with commands locked. /// The draw preview window. Spawns the DrawPreview with commands locked.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// This window is responsible for showing what has been drawn. /// This window is responsible for showing what has been drawn.
/// </remarks> /// </remarks>
public Draw_Preview(string commands) { public Draw_Preview(string commands) {
InitializeComponent(); InitializeComponent();
MenuManager.NumberOfWindows++; MenuManager.NumberOfWindows++;
graphics = panel1.CreateGraphics(); graphics = panel1.CreateGraphics();
graphics.ResetClip(); graphics.ResetClip();
commander = new Commander(graphics, commands); commander = new Commander(graphics, commands);
pardonCommands = false; pardonCommands = false;
//disable components //disable components
textBox1.Enabled = false; textBox1.Enabled = false;
button1.Enabled = false; button1.Enabled = false;
} }
private void DrawPreview_FormClosed(object sender, FormClosedEventArgs e) { private void DrawPreview_FormClosed(object sender, FormClosedEventArgs e) {
MenuManager.WindowClosed(); MenuManager.WindowClosed();
Dispose(); Dispose();
} }
private void DrawPreviewPane_Paint(object sender, EventArgs e) { private void DrawPreviewPane_Paint(object sender, EventArgs e) {
DrawPreviewPane_Paint(sender, null); DrawPreviewPane_Paint(sender, null);
} }
private void DrawPreviewPane_Paint(object sender, PaintEventArgs e) { private void DrawPreviewPane_Paint(object sender, PaintEventArgs e) {
graphics = panel1.CreateGraphics(); graphics = panel1.CreateGraphics();
commander.DrawAllCommands(graphics); commander.DrawAllCommands(graphics);
} }
private void SubmitCommand(object sender, EventArgs e) { private void SubmitCommand(object sender, EventArgs e) {
commander.ProcessCommandsAndExecute(textBox1.Text, pardonCommands); commander.ProcessCommandsAndExecute(textBox1.Text, pardonCommands);
textBox1.Text = ""; textBox1.Text = "";
} }
/// <summary> /// <summary>
/// Submit commands to the commander to execute on the form. /// Submit commands to the commander to execute on the form.
/// </summary> /// </summary>
/// <param name="comamnds">Commands seperated by new lines</param> /// <param name="comamnds">Commands seperated by new lines</param>
public void SubmitCommands(string comamnds) { public void SubmitCommands(string comamnds) {
commander.ProcessCommandsAndExecute(comamnds, pardonCommands); commander.ProcessCommandsAndExecute(comamnds, pardonCommands);
} }
/// <summary> /// <summary>
/// Removes all the commands from the form /// Removes all the commands from the form
/// </summary> /// </summary>
public void RemoveAllCommands() { public void RemoveAllCommands() {
commander.RemoveAllCommands(); commander.RemoveAllCommands();
} }
/// <summary> /// <summary>
/// Enables the textbox and submit button to allow the user to interract with the preview directly /// Enables the textbox and submit button to allow the user to interract with the preview directly
/// </summary> /// </summary>
public void ReleaseCommandLock() { public void ReleaseCommandLock() {
textBox1.Enabled = true; textBox1.Enabled = true;
button1.Enabled = true; button1.Enabled = true;
pardonCommands = true; pardonCommands = true;
} }
/// <summary> /// <summary>
/// Describes all of the current commands stored inside commander. /// Describes all of the current commands stored inside commander.
/// </summary> /// </summary>
/// <returns>A string with all the command descriptions</returns> /// <returns>A string with all the command descriptions</returns>
public string DescribeAllCommands() { public string DescribeAllCommands() {
return commander.ExplainCommands(); return commander.ExplainCommands();
} }
/// <summary> /// <summary>
/// Returns weather there were any errors in the commander. /// Returns weather there were any errors in the commander.
/// </summary> /// </summary>
/// <returns>A boolean describing the success of command phrasing</returns> /// <returns>A boolean describing the success of command phrasing</returns>
public bool IsSuccess() { public bool IsSuccess() {
return commander.GetLastStatus(); return commander.GetLastStatus();
} }
/// <summary> /// <summary>
/// Submits the form /// Submits the form
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
if (e.KeyCode == Keys.Enter && textBox1.Enabled) { if (e.KeyCode == Keys.Enter && textBox1.Enabled) {
button1.PerformClick(); button1.PerformClick();
} }
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv// Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz /wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7 Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
IJ11rjGhke46mZT/PCb///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IJ11rjGhke46mZT/PCb///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///8CMSEhPpthXv+wdFT/qWhE/45WNP+OUS7/hkc1/2tRXv9SMTL/OxsY/zARF/8tDBn/JAkT/xoH AAD///8CMSEhPpthXv+wdFT/qWhE/45WNP+OUS7/hkc1/2tRXv9SMTL/OxsY/zARF/8tDBn/JAkT/xoH
C/8ZFQf/OEQQ/12CIP+KzzT/qv9H843/Q0z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA C/8ZFQf/OEQQ/12CIP+KzzT/qv9H843/Q0z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP8AgAIgGBxAgFVZ/Uc+Tf9YOi//yYNR/8B/Xf+yaUH/mm1w/3lNQf9YMBv/PBwX/0AV AAAAAAAAAAAAAP8AgAIgGBxAgFVZ/Uc+Tf9YOi//yYNR/8B/Xf+yaUH/mm1w/3lNQf9YMBv/PBwX/0AV
G/84Dh3/MAkZ/yEHEP8UCAb/KC0N/1NzIf96vjP9kehC0////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA G/84Dh3/MAkZ/yEHEP8UCAb/KC0N/1NzIf96vjP9kehC0////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiMRFyxkPUT/pIN//8SNaP/pq4L/4Ztw/9ONZP/Dl5X/kmI7/4JR AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiMRFyxkPUT/pIN//8SNaP/pq4L/4Ztw/9ONZP/Dl5X/kmI7/4JR
LP9eOB7/PRwX/z4RFP8/DBn/MQcV/yoHE/8dBwz/ISAL/z5VH71GohcWAAAAAAAAAAAAAAAAAAAAAAAA LP9eOB7/PRwX/z4RFP8/DBn/MQcV/yoHE/8dBwz/ISAL/z5VH71GohcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORwrEj8nLvnltqr//uzf//rJrv/xsYv/7bGT/9uw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORwrEj8nLvnltqr//uzf//rJrv/xsYv/7bGT/9uw
qv+xf1T/o3VB/4dhMf91Tib/SiQZ/z4SE/9BChD/OQoX/zQLG/8nCRLzKhEiHgD/gAIAAAAAAAAAAAAA qv+xf1T/o3VB/4dhMf91Tib/SiQZ/z4SE/9BChD/OQoX/zQLG/8nCRLzKhEiHgD/gAIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIACQB8o28aDc///0ab//9Cs//zJ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIACQB8o28aDc///0ab//9Cs//zJ
qv/52dD/5ryq/+DBvv+7lXb/vo5L/5x3O/+KZTT/Wzci/0cZFf9DDQz/OwsR/zgMGf8yDBnNMzMzCgAA qv/52dD/5ryq/+DBvv+7lXb/vo5L/5x3O/+KZTT/Wzci/0cZFf9DDQz/OwsR/zgMGf8yDBnNMzMzCgAA
AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgAI4GyanqmVf//7N AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgAI4GyanqmVf//7N
qP/+48z//dnC//vj3P/04+P/7tzc/9/P1f+3lG7/v5dQ/6qHRv+ZdDv/Xzkl/2AoG/9OGBD/QAwO/zYL qP/+48z//dnC//vj3P/04+P/7tzc/9/P1f+3lG7/v5dQ/6qHRv+ZdDv/Xzkl/2AoG/9OGBD/QAwO/zYL
F/8zDhqR/wCAAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wCAAiYU F/8zDhqR/wCAAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wCAAiYU
HGRfNDr/36GO//W7nP/6ya7/+tXF//ba0P/lzdD/077E/8y7xv+/pJH/06pc/7OQSf94VTz/eUcr/2s1 HGRfNDr/36GO//W7nP/6ya7/+tXF//ba0P/lzdD/077E/8y7xv+/pJH/06pc/7OQSf94VTz/eUcr/2s1
IP9PHhH/PwwM/zUKGP0lDRJ0PTcSKoC/gASA/wACAP+AAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IP9PHhH/PwwM/zUKGP0lDRJ0PTcSKoC/gASA/wACAP+AAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/AIACMCAoIDkfKf2LW2f/poaa/6GDkv+3jY7/uJSW/7SSlf/cy9r/7t7j/+zS0P/VsZ//w6F9/7mG AAD/AIACMCAoIDkfKf2LW2f/poaa/6GDkv+3jY7/uJSW/7SSlf/cy9r/7t7j/+zS0P/VsZ//w6F9/7mG
dP+jbU3/hU4v/2k1H/9SIRT/PQsN/zAKFP8uMRH/QVUj6UuEILc/lRNqTb8aFAAAAAAAAAAAAAAAAAAA dP+jbU3/hU4v/2k1H/9SIRT/PQsN/zAKFP8uMRH/QVUj6UuEILc/lRNqTb8aFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wJFMUGRLBoq/04rNv+HYnn/jm2R/5FzjP+cfIT/w5iV//Xb0//66On/9NrX/+nA 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/ rf/mwLH/xI+A/6BtV/+la03/iFAy/2w2If9OHBL/OQkR/yELCv87Rhr/Unsp/2y1L/+K9DfpgP9JDoD/
AAIAAAAAAAAAAAAAAAD///8CgHWGfmdZY/8xIzP/MR0p/1s0Qv+OYYD/oXiR/9Wdk//5073//eDP//7p 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 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 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 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 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 Xv/8yqr//s+p//DHsv/Jopj/oIKE/6GCgP/YsZz/+NO+//HBp//puqr/26qS/6ByXv+TXkH/hEgw/1Ae
Ff8tCQmjSF0ePKjkPCYAAAAAAAAAAAAAAAAAAAAAAAAAAP///x7RxdDv1MzZ/5ySn/+YkJv/eGt1/1tF Ff8tCQmjSF0ePKjkPCYAAAAAAAAAAAAAAAAAAAAAAAAAAP///x7RxdDv1MzZ/5ySn/+YkJv/eGt1/1tF
VP9DLD3/NR8u/39BSv+sboH/lW6Q/494kv+mi4//5MGu//7lz//+3cP//NS4/+/Eqf+uh3T/k21b/7h8 VP9DLD3/NR8u/39BSv+sboH/lW6Q/494kv+mi4//5MGu//7lz//+3cP//NS4/+/Eqf+uh3T/k21b/7h8
Yv+hY0v/ajQk/zoRDrOAQAAE////AgAAAAAAAAAAAAAAAAAAAAAAAAAA////Avv7+z7QyNHr3Nfi/42E Yv+hY0v/ajQk/zoRDrOAQAAE////AgAAAAAAAAAAAAAAAAAAAAAAAAAA////Avv7+z7QyNHr3Nfi/42E
j/+Ujpv/em52/2VQX/9EMT//NCEv/1AwPv+TXnX/xoSF//XIq//+48v//ufU//7hyv/lvqj/q4R6/556 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// bP/muaH/1px//8V/aP+PTjz/Rx8U+zseFTz/gAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/yDOws3B8u32/351g/+1rLT/fnB8/1JCUf9ZRFP/NSI1/0IqN/+fVFD/5KKJ/+q2o//Zr6X/vJKS/6GE /yDOws3B8u32/351g/+1rLT/fnB8/1JCUf9ZRFP/NSI1/0IqN/+fVFD/5KKJ/+q2o//Zr6X/vJKS/6GE
i/+zj4r/8sep//zOsP/0vaP/2pN8/6hgTv9iLSH/QygW32ZmJhT//wACAAAAAAAAAAAAAAAAAAAAAAAA i/+zj4r/8sep//zOsP/0vaP/2pN8/6hgTv9iLSH/QygW32ZmJhT//wACAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////Av///wTb0dtk3tXb58e8yf+2r7v/Zlxo/3Zmc/9ZR1b/Nyk5/1M8W/9ILUbpgFJp34Jc AAAAAAAA////Av///wTb0dtk3tXb58e8yf+2r7v/Zlxo/3Zmc/9ZR1b/Nyk5/1M8W/9ILUbpgFJp34Jc
hP+XdZL/1Kaa//zZv//+4MX//tW5/+WzoP/SjoD/0H1u/5pQQv9bOx7/hJAlv5e/MCD//wACgP8AAgAA hP+XdZL/1Kaa//zZv//+4MX//tW5/+WzoP/SjoD/0H1u/5pQQv9bOx7/hJAlv5e/MCD//wACgP8AAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8Q6N3jeNLN1eXDvcr/rKCt/6OUpvlDPFK3WUlmUIBV AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8Q6N3jeNLN1eXDvcr/rKCt/6OUpvlDPFK3WUlmUIBV
lQxPNENUMiAq/2c6P/+jcmD/wZeH/8KTj/+4hIr/1ZuP//zIrv/vppD/um1h/49kRf+rqzT/t9Az+6PH lQxPNENUMiAq/2c6P/+jcmD/wZeH/8KTj/+4hIr/1ZuP//zIrv/vppD/um1h/49kRf+rqzT/t9Az+6PH
J9F6sB2lX6kYdGqqKhgAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8CzMzMCu3q9la/tsRw18/fIP// J9F6sB2lX6kYdGqqKhgAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8CzMzMCu3q9la/tsRw18/fIP//
/wL///8C////Am1VWypONTz/Ty00/0MoKv8tISX/KyEp/0wwM/+lcWKz1Kd/xbeVb//Dnnz/3dhq/9Hr /wL///8C////Am1VWypONTz/Ty00/0MoKv8tISX/KyEp/0wwM/+lcWKz1Kd/xbeVb//Dnnz/3dhq/9Hr
S/+9zjn/rMku/bXtMf2s/T+djvE5EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////AgAA S/+9zjn/rMku/bXtMf2s/T+djvE5EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////AgAA
AAD///8CAAAAAAAAAAAAAAAAmZmZCmJPT/FYQDj/dktK/2FFSv9CLSn/hmh3/2lHTYH///8ClZVFduHm AAD///8CAAAAAAAAAAAAAAAAmZmZCmJPT/FYQDj/dktK/2FFSv9CLSn/hmh3/2lHTYH///8ClZVFduHm
aP/U+FD/vuE+/7jZNP++7jbjxfs2Qv///wL//wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aP/U+FD/vuE+/7jZNP++7jbjxfs2Qv///wL//wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Cr6G0yXVhTf/Gs7r/1cPT88m3vbm9j5Jw0bncFv// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Cr6G0yXVhTf/Gs7r/1cPT88m3vbm9j5Jw0bncFv//
/wKfqlUYrLpG+cjmQv+85zX/vvI12c7/Thr///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wKfqlUYrLpG+cjmQv+85zX/vvI12c7/Thr///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLh3exEvaeldM60v0T///8O////AgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLh3exEvaeldM60v0T///8O////AgAA
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
@@ -1,122 +1,122 @@
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
partial class ErrorWindow { partial class ErrorWindow {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) { protected override void Dispose(bool disposing) {
if (disposing && (components != null)) { if (disposing && (components != null)) {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
//#region Windows Form Designer generated code //#region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() { private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorWindow)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorWindow));
this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button(); this.ExitButton = new System.Windows.Forms.Button();
this.ShowDetailsButton = new System.Windows.Forms.Button(); this.ShowDetailsButton = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// pictureBox1 // pictureBox1
// //
this.pictureBox1.Image = global::Advanced_Software_Engineering.Properties.Resources.warning; this.pictureBox1.Image = global::Advanced_Software_Engineering.Properties.Resources.warning;
this.pictureBox1.Location = new System.Drawing.Point(6, 19); this.pictureBox1.Location = new System.Drawing.Point(6, 19);
this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(56, 60); this.pictureBox1.Size = new System.Drawing.Size(56, 60);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0; this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false; this.pictureBox1.TabStop = false;
// //
// label1 // label1
// //
this.label1.AutoEllipsis = true; this.label1.AutoEllipsis = true;
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(68, 19); this.label1.Location = new System.Drawing.Point(68, 19);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(60, 13); this.label1.Size = new System.Drawing.Size(60, 13);
this.label1.TabIndex = 2; this.label1.TabIndex = 2;
this.label1.Text = "Error Name"; this.label1.Text = "Error Name";
// //
// ExitButton // ExitButton
// //
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Bottom; this.ExitButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ExitButton.Location = new System.Drawing.Point(0, 127); this.ExitButton.Location = new System.Drawing.Point(0, 127);
this.ExitButton.Name = "ExitButton"; this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(336, 23); this.ExitButton.Size = new System.Drawing.Size(336, 23);
this.ExitButton.TabIndex = 1; this.ExitButton.TabIndex = 1;
this.ExitButton.Text = "Exit"; this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true; this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.Exit_Click); this.ExitButton.Click += new System.EventHandler(this.Exit_Click);
// //
// ShowDetailsButton // ShowDetailsButton
// //
this.ShowDetailsButton.Dock = System.Windows.Forms.DockStyle.Bottom; this.ShowDetailsButton.Dock = System.Windows.Forms.DockStyle.Bottom;
this.ShowDetailsButton.Location = new System.Drawing.Point(0, 104); this.ShowDetailsButton.Location = new System.Drawing.Point(0, 104);
this.ShowDetailsButton.Name = "ShowDetailsButton"; this.ShowDetailsButton.Name = "ShowDetailsButton";
this.ShowDetailsButton.Size = new System.Drawing.Size(336, 23); this.ShowDetailsButton.Size = new System.Drawing.Size(336, 23);
this.ShowDetailsButton.TabIndex = 5; this.ShowDetailsButton.TabIndex = 5;
this.ShowDetailsButton.Text = "Show Details"; this.ShowDetailsButton.Text = "Show Details";
this.ShowDetailsButton.UseVisualStyleBackColor = true; this.ShowDetailsButton.UseVisualStyleBackColor = true;
this.ShowDetailsButton.Click += new System.EventHandler(this.ShowDescriptionButton_Click); this.ShowDetailsButton.Click += new System.EventHandler(this.ShowDescriptionButton_Click);
// //
// groupBox1 // groupBox1
// //
this.groupBox1.AutoSize = true; this.groupBox1.AutoSize = true;
this.groupBox1.Controls.Add(this.pictureBox1); this.groupBox1.Controls.Add(this.pictureBox1);
this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom; this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.groupBox1.Location = new System.Drawing.Point(0, 6); this.groupBox1.Location = new System.Drawing.Point(0, 6);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(336, 98); this.groupBox1.Size = new System.Drawing.Size(336, 98);
this.groupBox1.TabIndex = 4; this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "Error"; this.groupBox1.Text = "Error";
// //
// ErrorWindow // ErrorWindow
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(336, 150); this.ClientSize = new System.Drawing.Size(336, 150);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.ShowDetailsButton); this.Controls.Add(this.ShowDetailsButton);
this.Controls.Add(this.ExitButton); this.Controls.Add(this.ExitButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "ErrorWindow"; this.Name = "ErrorWindow";
this.Text = "Error"; this.Text = "Error";
this.Load += new System.EventHandler(this.ErrorWindow_Load); this.Load += new System.EventHandler(this.ErrorWindow_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout(); this.groupBox1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
//#endregion //#endregion
private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button ExitButton; private System.Windows.Forms.Button ExitButton;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button ShowDetailsButton; private System.Windows.Forms.Button ShowDetailsButton;
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox1;
} }
} }
@@ -1,115 +1,115 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
/// <summary> /// <summary>
/// The error window that can show errors, warnings and messages. /// The error window that can show errors, warnings and messages.
/// </summary> /// </summary>
public partial class ErrorWindow : Form { public partial class ErrorWindow : Form {
private readonly string desc; private readonly string desc;
/// <summary> /// <summary>
/// The error message type. /// The error message type.
/// </summary> /// </summary>
public const int ERROR_MESSAGE = 0; public const int ERROR_MESSAGE = 0;
/// <summary> /// <summary>
/// The warning message type /// The warning message type
/// </summary> /// </summary>
public const int WARNING_MESSAGE = 1; public const int WARNING_MESSAGE = 1;
/// <summary> /// <summary>
/// The info message type /// The info message type
/// </summary> /// </summary>
public const int INFO_MESSAGE = 2; public const int INFO_MESSAGE = 2;
/// <summary> /// <summary>
/// The image directory which links the message types to the image to display. /// The image directory which links the message types to the image to display.
/// </summary> /// </summary>
protected Dictionary<int, Image> IMAGEDIR = new Dictionary<int, Image> { protected Dictionary<int, Image> IMAGEDIR = new Dictionary<int, Image> {
{ ERROR_MESSAGE, Properties.Resources.error }, { ERROR_MESSAGE, Properties.Resources.error },
{ WARNING_MESSAGE, Properties.Resources.warning }, { WARNING_MESSAGE, Properties.Resources.warning },
{ INFO_MESSAGE, Properties.Resources.info } { INFO_MESSAGE, Properties.Resources.info }
}; };
/// <summary> /// <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. /// 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> /// </summary>
public ErrorWindow() { public ErrorWindow() {
InitializeComponent(); InitializeComponent();
this.Text = "Error"; this.Text = "Error";
label1.Text = "An error has occured"; label1.Text = "An error has occured";
desc = "None"; desc = "None";
SetPicture(ERROR_MESSAGE); SetPicture(ERROR_MESSAGE);
Focus(); Focus();
} }
/// <summary> /// <summary>
/// The error window constructor. /// The error window constructor.
/// It is responsible for creating an error form which shows the user information depending on the parameters. /// It is responsible for creating an error form which shows the user information depending on the parameters.
/// </summary> /// </summary>
/// <param name="title">Title of the window</param> /// <param name="title">Title of the window</param>
/// <param name="brief">A brief description of the message</param> /// <param name="brief">A brief description of the message</param>
/// <param name="desc">A detailed 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> /// <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) { public ErrorWindow(string title, string brief, string desc, int type) {
InitializeComponent(); InitializeComponent();
this.Text = title; this.Text = title;
label1.Text = brief; label1.Text = brief;
this.desc = desc; this.desc = desc;
SetPicture(type); SetPicture(type);
Focus(); Focus();
} }
/// <summary> /// <summary>
/// Sets the picture of the window. /// Sets the picture of the window.
/// </summary> /// </summary>
/// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param> /// <param name="type">The type of message (can either be: ERROR_MESSAGE, WARNING_MESSAGE or INFO_MESSAGE</param>
public void SetPicture(int type) { public void SetPicture(int type) {
pictureBox1.Image = IMAGEDIR[type]; pictureBox1.Image = IMAGEDIR[type];
pictureBox1.Refresh(); pictureBox1.Refresh();
switch (type) { switch (type) {
case ERROR_MESSAGE: case ERROR_MESSAGE:
groupBox1.Text = "Error"; groupBox1.Text = "Error";
break; break;
case WARNING_MESSAGE: case WARNING_MESSAGE:
groupBox1.Text = "Warning"; groupBox1.Text = "Warning";
break; break;
case INFO_MESSAGE: case INFO_MESSAGE:
groupBox1.Text = "Info"; groupBox1.Text = "Info";
break; break;
} }
} }
/// <summary> /// <summary>
/// Closes the from. /// Closes the from.
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void Exit_Click(object sender, EventArgs e) { private void Exit_Click(object sender, EventArgs e) {
Close(); Close();
} }
/// <summary> /// <summary>
/// Show description window. /// Show description window.
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void ShowDescriptionButton_Click(object sender, EventArgs e) { private void ShowDescriptionButton_Click(object sender, EventArgs e) {
new DetailsWindow(desc).Show(); new DetailsWindow(desc).Show();
} }
private void ErrorWindow_Load(object sender, EventArgs e) { private void ErrorWindow_Load(object sender, EventArgs e) {
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA 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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
@@ -1,140 +1,140 @@
namespace Advanced_Software_Engineering namespace Advanced_Software_Engineering
{ {
/// <summary> /// <summary>
/// Auto generated code. /// Auto generated code.
/// </summary> /// </summary>
partial class Menu partial class Menu
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
if (disposing && (components != null)) if (disposing && (components != null))
{ {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Menu)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Menu));
this.InteractivePreviewButton = new System.Windows.Forms.Button(); this.InteractivePreviewButton = new System.Windows.Forms.Button();
this.TextEditorButton = new System.Windows.Forms.Button(); this.TextEditorButton = new System.Windows.Forms.Button();
this.AboutButton = new System.Windows.Forms.Button(); this.AboutButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.ExitButton = new System.Windows.Forms.Button(); this.ExitButton = new System.Windows.Forms.Button();
this.SuspendLayout(); this.SuspendLayout();
// //
// InteractivePreviewButton // InteractivePreviewButton
// //
this.InteractivePreviewButton.Dock = System.Windows.Forms.DockStyle.Top; this.InteractivePreviewButton.Dock = System.Windows.Forms.DockStyle.Top;
this.InteractivePreviewButton.Location = new System.Drawing.Point(0, 26); this.InteractivePreviewButton.Location = new System.Drawing.Point(0, 26);
this.InteractivePreviewButton.Name = "InteractivePreviewButton"; this.InteractivePreviewButton.Name = "InteractivePreviewButton";
this.InteractivePreviewButton.Size = new System.Drawing.Size(172, 23); this.InteractivePreviewButton.Size = new System.Drawing.Size(172, 23);
this.InteractivePreviewButton.TabIndex = 0; this.InteractivePreviewButton.TabIndex = 0;
this.InteractivePreviewButton.Text = "Interactive Preview"; this.InteractivePreviewButton.Text = "Interactive Preview";
this.InteractivePreviewButton.UseVisualStyleBackColor = true; this.InteractivePreviewButton.UseVisualStyleBackColor = true;
this.InteractivePreviewButton.Click += new System.EventHandler(this.InteractivePreviewClick); this.InteractivePreviewButton.Click += new System.EventHandler(this.InteractivePreviewClick);
// //
// TextEditorButton // TextEditorButton
// //
this.TextEditorButton.Dock = System.Windows.Forms.DockStyle.Top; this.TextEditorButton.Dock = System.Windows.Forms.DockStyle.Top;
this.TextEditorButton.Location = new System.Drawing.Point(0, 49); this.TextEditorButton.Location = new System.Drawing.Point(0, 49);
this.TextEditorButton.Name = "TextEditorButton"; this.TextEditorButton.Name = "TextEditorButton";
this.TextEditorButton.Size = new System.Drawing.Size(172, 23); this.TextEditorButton.Size = new System.Drawing.Size(172, 23);
this.TextEditorButton.TabIndex = 0; this.TextEditorButton.TabIndex = 0;
this.TextEditorButton.Text = "Text Editor"; this.TextEditorButton.Text = "Text Editor";
this.TextEditorButton.UseVisualStyleBackColor = true; this.TextEditorButton.UseVisualStyleBackColor = true;
this.TextEditorButton.Click += new System.EventHandler(this.TextEditorClick); this.TextEditorButton.Click += new System.EventHandler(this.TextEditorClick);
// //
// AboutButton // AboutButton
// //
this.AboutButton.Dock = System.Windows.Forms.DockStyle.Top; this.AboutButton.Dock = System.Windows.Forms.DockStyle.Top;
this.AboutButton.Location = new System.Drawing.Point(0, 72); this.AboutButton.Location = new System.Drawing.Point(0, 72);
this.AboutButton.Name = "AboutButton"; this.AboutButton.Name = "AboutButton";
this.AboutButton.Size = new System.Drawing.Size(172, 23); this.AboutButton.Size = new System.Drawing.Size(172, 23);
this.AboutButton.TabIndex = 0; this.AboutButton.TabIndex = 0;
this.AboutButton.Text = "About"; this.AboutButton.Text = "About";
this.AboutButton.UseVisualStyleBackColor = true; this.AboutButton.UseVisualStyleBackColor = true;
this.AboutButton.Click += new System.EventHandler(this.AboutWindowClick); this.AboutButton.Click += new System.EventHandler(this.AboutWindowClick);
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Top; this.label1.Dock = System.Windows.Forms.DockStyle.Top;
this.label1.Location = new System.Drawing.Point(0, 0); this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 13); this.label1.Size = new System.Drawing.Size(160, 13);
this.label1.TabIndex = 1; this.label1.TabIndex = 1;
this.label1.Text = "Advanced Software Engineering"; this.label1.Text = "Advanced Software Engineering";
// //
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Dock = System.Windows.Forms.DockStyle.Top; this.label2.Dock = System.Windows.Forms.DockStyle.Top;
this.label2.Location = new System.Drawing.Point(0, 13); this.label2.Location = new System.Drawing.Point(0, 13);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 13); this.label2.Size = new System.Drawing.Size(88, 13);
this.label2.TabIndex = 2; this.label2.TabIndex = 2;
this.label2.Text = "Drawing Program"; this.label2.Text = "Drawing Program";
// //
// ExitButton // ExitButton
// //
this.ExitButton.Dock = System.Windows.Forms.DockStyle.Top; this.ExitButton.Dock = System.Windows.Forms.DockStyle.Top;
this.ExitButton.Location = new System.Drawing.Point(0, 95); this.ExitButton.Location = new System.Drawing.Point(0, 95);
this.ExitButton.Name = "ExitButton"; this.ExitButton.Name = "ExitButton";
this.ExitButton.Size = new System.Drawing.Size(172, 23); this.ExitButton.Size = new System.Drawing.Size(172, 23);
this.ExitButton.TabIndex = 0; this.ExitButton.TabIndex = 0;
this.ExitButton.Text = "Exit"; this.ExitButton.Text = "Exit";
this.ExitButton.UseVisualStyleBackColor = true; this.ExitButton.UseVisualStyleBackColor = true;
this.ExitButton.Click += new System.EventHandler(this.ExitClick); this.ExitButton.Click += new System.EventHandler(this.ExitClick);
// //
// Menu // Menu
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(172, 118); this.ClientSize = new System.Drawing.Size(172, 118);
this.Controls.Add(this.ExitButton); this.Controls.Add(this.ExitButton);
this.Controls.Add(this.AboutButton); this.Controls.Add(this.AboutButton);
this.Controls.Add(this.TextEditorButton); this.Controls.Add(this.TextEditorButton);
this.Controls.Add(this.InteractivePreviewButton); this.Controls.Add(this.InteractivePreviewButton);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "Menu"; this.Name = "Menu";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Text = "Menu"; this.Text = "Menu";
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.Button InteractivePreviewButton; private System.Windows.Forms.Button InteractivePreviewButton;
private System.Windows.Forms.Button TextEditorButton; private System.Windows.Forms.Button TextEditorButton;
private System.Windows.Forms.Button AboutButton; private System.Windows.Forms.Button AboutButton;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button ExitButton; private System.Windows.Forms.Button ExitButton;
} }
} }
@@ -1,37 +1,37 @@
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
public partial class Menu : Form { public partial class Menu : Form {
/// <summary> /// <summary>
/// This creates the main menu window you see when launching the program. /// This creates the main menu window you see when launching the program.
/// </summary> /// </summary>
/// <remarks> /// <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. /// 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> /// </remarks>
public Menu() { public Menu() {
InitializeComponent(); InitializeComponent();
} }
private void InteractivePreviewClick(object sender, EventArgs e) { private void InteractivePreviewClick(object sender, EventArgs e) {
new Draw_Preview().Show(); new Draw_Preview().Show();
this.Hide(); this.Hide();
} }
private void TextEditorClick(object sender, EventArgs e) { private void TextEditorClick(object sender, EventArgs e) {
new TextEditor().Show(); new TextEditor().Show();
this.Hide(); this.Hide();
} }
private void AboutWindowClick(object sender, EventArgs e) { private void AboutWindowClick(object sender, EventArgs e) {
new About_Window().Show(); new About_Window().Show();
this.Hide(); this.Hide();
} }
private void ExitClick(object sender, EventArgs e) { private void ExitClick(object sender, EventArgs e) {
this.Close(); this.Close();
} }
} }
} }
@@ -1,197 +1,197 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA
AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAACqlUqDGtKUM9PND3/MRAN/y4O
DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA DvcqERnDJRAabioVIBgAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wJWPkY+gEg5/W5D
Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv// Lf9bMCD/UCEV/zESEv8rFRv/KRIa9SYJFKMlCBU+KioqBgAAAAIAAAAAAAAAAoD/AAKA/wAC/4AAAv//
/wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz /wL///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Akwz
Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7 Mzx3S0r/cEAw/4JLL/95Qij/ZC8c/1AqLv86JzD/MBge/yYNFv8lChXlIAsTnRUGCHgdHQeLOEYPlVR7
IJ11rjGhke46mZT/PCb///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IJ11rjGhke46mZT/PCb///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///8CMSEhPpthXv+wdFT/qWhE/45WNP+OUS7/hkc1/2tRXv9SMTL/OxsY/zARF/8tDBn/JAkT/xoH AAD///8CMSEhPpthXv+wdFT/qWhE/45WNP+OUS7/hkc1/2tRXv9SMTL/OxsY/zARF/8tDBn/JAkT/xoH
C/8ZFQf/OEQQ/12CIP+KzzT/qv9H843/Q0z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA C/8ZFQf/OEQQ/12CIP+KzzT/qv9H843/Q0z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP8AgAIgGBxAgFVZ/Uc+Tf9YOi//yYNR/8B/Xf+yaUH/mm1w/3lNQf9YMBv/PBwX/0AV AAAAAAAAAAAAAP8AgAIgGBxAgFVZ/Uc+Tf9YOi//yYNR/8B/Xf+yaUH/mm1w/3lNQf9YMBv/PBwX/0AV
G/84Dh3/MAkZ/yEHEP8UCAb/KC0N/1NzIf96vjP9kehC0////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA G/84Dh3/MAkZ/yEHEP8UCAb/KC0N/1NzIf96vjP9kehC0////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiMRFyxkPUT/pIN//8SNaP/pq4L/4Ztw/9ONZP/Dl5X/kmI7/4JR AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiMRFyxkPUT/pIN//8SNaP/pq4L/4Ztw/9ONZP/Dl5X/kmI7/4JR
LP9eOB7/PRwX/z4RFP8/DBn/MQcV/yoHE/8dBwz/ISAL/z5VH71GohcWAAAAAAAAAAAAAAAAAAAAAAAA LP9eOB7/PRwX/z4RFP8/DBn/MQcV/yoHE/8dBwz/ISAL/z5VH71GohcWAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORwrEj8nLvnltqr//uzf//rJrv/xsYv/7bGT/9uw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACORwrEj8nLvnltqr//uzf//rJrv/xsYv/7bGT/9uw
qv+xf1T/o3VB/4dhMf91Tib/SiQZ/z4SE/9BChD/OQoX/zQLG/8nCRLzKhEiHgD/gAIAAAAAAAAAAAAA qv+xf1T/o3VB/4dhMf91Tib/SiQZ/z4SE/9BChD/OQoX/zQLG/8nCRLzKhEiHgD/gAIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIACQB8o28aDc///0ab//9Cs//zJ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIACQB8o28aDc///0ab//9Cs//zJ
qv/52dD/5ryq/+DBvv+7lXb/vo5L/5x3O/+KZTT/Wzci/0cZFf9DDQz/OwsR/zgMGf8yDBnNMzMzCgAA qv/52dD/5ryq/+DBvv+7lXb/vo5L/5x3O/+KZTT/Wzci/0cZFf9DDQz/OwsR/zgMGf8yDBnNMzMzCgAA
AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgAI4GyanqmVf//7N AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgAI4GyanqmVf//7N
qP/+48z//dnC//vj3P/04+P/7tzc/9/P1f+3lG7/v5dQ/6qHRv+ZdDv/Xzkl/2AoG/9OGBD/QAwO/zYL qP/+48z//dnC//vj3P/04+P/7tzc/9/P1f+3lG7/v5dQ/6qHRv+ZdDv/Xzkl/2AoG/9OGBD/QAwO/zYL
F/8zDhqR/wCAAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wCAAiYU F/8zDhqR/wCAAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wCAAiYU
HGRfNDr/36GO//W7nP/6ya7/+tXF//ba0P/lzdD/077E/8y7xv+/pJH/06pc/7OQSf94VTz/eUcr/2s1 HGRfNDr/36GO//W7nP/6ya7/+tXF//ba0P/lzdD/077E/8y7xv+/pJH/06pc/7OQSf94VTz/eUcr/2s1
IP9PHhH/PwwM/zUKGP0lDRJ0PTcSKoC/gASA/wACAP+AAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IP9PHhH/PwwM/zUKGP0lDRJ0PTcSKoC/gASA/wACAP+AAoD/AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/AIACMCAoIDkfKf2LW2f/poaa/6GDkv+3jY7/uJSW/7SSlf/cy9r/7t7j/+zS0P/VsZ//w6F9/7mG AAD/AIACMCAoIDkfKf2LW2f/poaa/6GDkv+3jY7/uJSW/7SSlf/cy9r/7t7j/+zS0P/VsZ//w6F9/7mG
dP+jbU3/hU4v/2k1H/9SIRT/PQsN/zAKFP8uMRH/QVUj6UuEILc/lRNqTb8aFAAAAAAAAAAAAAAAAAAA dP+jbU3/hU4v/2k1H/9SIRT/PQsN/zAKFP8uMRH/QVUj6UuEILc/lRNqTb8aFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wJFMUGRLBoq/04rNv+HYnn/jm2R/5FzjP+cfIT/w5iV//Xb0//66On/9NrX/+nA 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/ rf/mwLH/xI+A/6BtV/+la03/iFAy/2w2If9OHBL/OQkR/yELCv87Rhr/Unsp/2y1L/+K9DfpgP9JDoD/
AAIAAAAAAAAAAAAAAAD///8CgHWGfmdZY/8xIzP/MR0p/1s0Qv+OYYD/oXiR/9Wdk//5073//eDP//7p 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 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 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 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 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 Xv/8yqr//s+p//DHsv/Jopj/oIKE/6GCgP/YsZz/+NO+//HBp//puqr/26qS/6ByXv+TXkH/hEgw/1Ae
Ff8tCQmjSF0ePKjkPCYAAAAAAAAAAAAAAAAAAAAAAAAAAP///x7RxdDv1MzZ/5ySn/+YkJv/eGt1/1tF Ff8tCQmjSF0ePKjkPCYAAAAAAAAAAAAAAAAAAAAAAAAAAP///x7RxdDv1MzZ/5ySn/+YkJv/eGt1/1tF
VP9DLD3/NR8u/39BSv+sboH/lW6Q/494kv+mi4//5MGu//7lz//+3cP//NS4/+/Eqf+uh3T/k21b/7h8 VP9DLD3/NR8u/39BSv+sboH/lW6Q/494kv+mi4//5MGu//7lz//+3cP//NS4/+/Eqf+uh3T/k21b/7h8
Yv+hY0v/ajQk/zoRDrOAQAAE////AgAAAAAAAAAAAAAAAAAAAAAAAAAA////Avv7+z7QyNHr3Nfi/42E Yv+hY0v/ajQk/zoRDrOAQAAE////AgAAAAAAAAAAAAAAAAAAAAAAAAAA////Avv7+z7QyNHr3Nfi/42E
j/+Ujpv/em52/2VQX/9EMT//NCEv/1AwPv+TXnX/xoSF//XIq//+48v//ufU//7hyv/lvqj/q4R6/556 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// bP/muaH/1px//8V/aP+PTjz/Rx8U+zseFTz/gAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/yDOws3B8u32/351g/+1rLT/fnB8/1JCUf9ZRFP/NSI1/0IqN/+fVFD/5KKJ/+q2o//Zr6X/vJKS/6GE /yDOws3B8u32/351g/+1rLT/fnB8/1JCUf9ZRFP/NSI1/0IqN/+fVFD/5KKJ/+q2o//Zr6X/vJKS/6GE
i/+zj4r/8sep//zOsP/0vaP/2pN8/6hgTv9iLSH/QygW32ZmJhT//wACAAAAAAAAAAAAAAAAAAAAAAAA i/+zj4r/8sep//zOsP/0vaP/2pN8/6hgTv9iLSH/QygW32ZmJhT//wACAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////Av///wTb0dtk3tXb58e8yf+2r7v/Zlxo/3Zmc/9ZR1b/Nyk5/1M8W/9ILUbpgFJp34Jc AAAAAAAA////Av///wTb0dtk3tXb58e8yf+2r7v/Zlxo/3Zmc/9ZR1b/Nyk5/1M8W/9ILUbpgFJp34Jc
hP+XdZL/1Kaa//zZv//+4MX//tW5/+WzoP/SjoD/0H1u/5pQQv9bOx7/hJAlv5e/MCD//wACgP8AAgAA hP+XdZL/1Kaa//zZv//+4MX//tW5/+WzoP/SjoD/0H1u/5pQQv9bOx7/hJAlv5e/MCD//wACgP8AAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8Q6N3jeNLN1eXDvcr/rKCt/6OUpvlDPFK3WUlmUIBV AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8Q6N3jeNLN1eXDvcr/rKCt/6OUpvlDPFK3WUlmUIBV
lQxPNENUMiAq/2c6P/+jcmD/wZeH/8KTj/+4hIr/1ZuP//zIrv/vppD/um1h/49kRf+rqzT/t9Az+6PH lQxPNENUMiAq/2c6P/+jcmD/wZeH/8KTj/+4hIr/1ZuP//zIrv/vppD/um1h/49kRf+rqzT/t9Az+6PH
J9F6sB2lX6kYdGqqKhgAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8CzMzMCu3q9la/tsRw18/fIP// J9F6sB2lX6kYdGqqKhgAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8CzMzMCu3q9la/tsRw18/fIP//
/wL///8C////Am1VWypONTz/Ty00/0MoKv8tISX/KyEp/0wwM/+lcWKz1Kd/xbeVb//Dnnz/3dhq/9Hr /wL///8C////Am1VWypONTz/Ty00/0MoKv8tISX/KyEp/0wwM/+lcWKz1Kd/xbeVb//Dnnz/3dhq/9Hr
S/+9zjn/rMku/bXtMf2s/T+djvE5EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////AgAA S/+9zjn/rMku/bXtMf2s/T+djvE5EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////AgAA
AAD///8CAAAAAAAAAAAAAAAAmZmZCmJPT/FYQDj/dktK/2FFSv9CLSn/hmh3/2lHTYH///8ClZVFduHm AAD///8CAAAAAAAAAAAAAAAAmZmZCmJPT/FYQDj/dktK/2FFSv9CLSn/hmh3/2lHTYH///8ClZVFduHm
aP/U+FD/vuE+/7jZNP++7jbjxfs2Qv///wL//wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aP/U+FD/vuE+/7jZNP++7jbjxfs2Qv///wL//wACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Cr6G0yXVhTf/Gs7r/1cPT88m3vbm9j5Jw0bncFv// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8Cr6G0yXVhTf/Gs7r/1cPT88m3vbm9j5Jw0bncFv//
/wKfqlUYrLpG+cjmQv+85zX/vvI12c7/Thr///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wKfqlUYrLpG+cjmQv+85zX/vvI12c7/Thr///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLh3exEvaeldM60v0T///8O////AgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wLh3exEvaeldM60v0T///8O////AgAA
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </root>
@@ -1,237 +1,237 @@
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering namespace Advanced_Software_Engineering
{ {
/// <summary> /// <summary>
/// Auto generated code /// Auto generated code
/// </summary> /// </summary>
partial class TextEditor partial class TextEditor
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
/// </summary> /// </summary>
private System.ComponentModel.IContainer components = null; private System.ComponentModel.IContainer components = null;
/// <summary> /// <summary>
/// Clean up any resources being used. /// Clean up any resources being used.
/// </summary> /// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
if (disposing && (components != null)) if (disposing && (components != null))
{ {
components.Dispose(); components.Dispose();
} }
base.Dispose(disposing); base.Dispose(disposing);
} }
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextEditor)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TextEditor));
this.TextBox = new System.Windows.Forms.TextBox(); this.TextBox = new System.Windows.Forms.TextBox();
this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.newFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.checkSyntaxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.checkSyntaxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.describeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.describeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.SavedLabelTimer = new System.Windows.Forms.Timer(this.components); this.SavedLabelTimer = new System.Windows.Forms.Timer(this.components);
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// TextBox // TextBox
// //
this.TextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.TextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 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.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.Location = new System.Drawing.Point(0, 23);
this.TextBox.Multiline = true; this.TextBox.Multiline = true;
this.TextBox.Name = "TextBox"; this.TextBox.Name = "TextBox";
this.TextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.TextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.TextBox.Size = new System.Drawing.Size(602, 509); this.TextBox.Size = new System.Drawing.Size(602, 509);
this.TextBox.TabIndex = 0; this.TextBox.TabIndex = 0;
this.TextBox.WordWrap = false; this.TextBox.WordWrap = false;
this.TextBox.Click += new System.EventHandler(this.TextBoxClick); this.TextBox.Click += new System.EventHandler(this.TextBoxClick);
this.TextBox.TextChanged += new System.EventHandler(this.HandleKeypress); this.TextBox.TextChanged += new System.EventHandler(this.HandleKeypress);
this.TextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown); this.TextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.TextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBox_KeyUp); this.TextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.TextBox_KeyUp);
// //
// menuStrip1 // menuStrip1
// //
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem, this.fileToolStripMenuItem,
this.runToolStripMenuItem, this.runToolStripMenuItem,
this.checkSyntaxToolStripMenuItem, this.checkSyntaxToolStripMenuItem,
this.describeToolStripMenuItem, this.describeToolStripMenuItem,
this.helpToolStripMenuItem}); this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(602, 24); this.menuStrip1.Size = new System.Drawing.Size(602, 24);
this.menuStrip1.TabIndex = 1; this.menuStrip1.TabIndex = 1;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
// fileToolStripMenuItem // fileToolStripMenuItem
// //
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newFileToolStripMenuItem, this.newFileToolStripMenuItem,
this.openToolStripMenuItem, this.openToolStripMenuItem,
this.saveToolStripMenuItem, this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem, this.saveAsToolStripMenuItem,
this.exitToolStripMenuItem}); this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File"; this.fileToolStripMenuItem.Text = "File";
// //
// newFileToolStripMenuItem // newFileToolStripMenuItem
// //
this.newFileToolStripMenuItem.Name = "newFileToolStripMenuItem"; this.newFileToolStripMenuItem.Name = "newFileToolStripMenuItem";
this.newFileToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.newFileToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.newFileToolStripMenuItem.Text = "New File (Ctrl + N)"; this.newFileToolStripMenuItem.Text = "New File (Ctrl + N)";
this.newFileToolStripMenuItem.Click += new System.EventHandler(this.NewFileToolStripMenuItem_Click); this.newFileToolStripMenuItem.Click += new System.EventHandler(this.NewFileToolStripMenuItem_Click);
// //
// openToolStripMenuItem // openToolStripMenuItem
// //
this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.openToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.openToolStripMenuItem.Text = "Open (Ctrl + O)"; this.openToolStripMenuItem.Text = "Open (Ctrl + O)";
this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenToolStripMenuItem_Click); this.openToolStripMenuItem.Click += new System.EventHandler(this.OpenToolStripMenuItem_Click);
// //
// saveToolStripMenuItem // saveToolStripMenuItem
// //
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.saveToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveToolStripMenuItem.Text = "Save (Ctrl + S)"; this.saveToolStripMenuItem.Text = "Save (Ctrl + S)";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click); this.saveToolStripMenuItem.Click += new System.EventHandler(this.SaveToolStripMenuItem_Click);
// //
// saveAsToolStripMenuItem // saveAsToolStripMenuItem
// //
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.saveAsToolStripMenuItem.Text = "Save As (Ctrl + Shift + S)"; this.saveAsToolStripMenuItem.Text = "Save As (Ctrl + Shift + S)";
this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click); this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.SaveAsToolStripMenuItem_Click);
// //
// exitToolStripMenuItem // exitToolStripMenuItem
// //
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(202, 22); this.exitToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.exitToolStripMenuItem.Text = "Exit (Alt + F4)"; this.exitToolStripMenuItem.Text = "Exit (Alt + F4)";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click); this.exitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click);
// //
// runToolStripMenuItem // runToolStripMenuItem
// //
this.runToolStripMenuItem.Name = "runToolStripMenuItem"; this.runToolStripMenuItem.Name = "runToolStripMenuItem";
this.runToolStripMenuItem.Size = new System.Drawing.Size(63, 20); this.runToolStripMenuItem.Size = new System.Drawing.Size(63, 20);
this.runToolStripMenuItem.Text = "Run (F5)"; this.runToolStripMenuItem.Text = "Run (F5)";
this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click); this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click);
// //
// checkSyntaxToolStripMenuItem // checkSyntaxToolStripMenuItem
// //
this.checkSyntaxToolStripMenuItem.Name = "checkSyntaxToolStripMenuItem"; this.checkSyntaxToolStripMenuItem.Name = "checkSyntaxToolStripMenuItem";
this.checkSyntaxToolStripMenuItem.Size = new System.Drawing.Size(151, 20); this.checkSyntaxToolStripMenuItem.Size = new System.Drawing.Size(151, 20);
this.checkSyntaxToolStripMenuItem.Text = "Check Syntax (Shift + F5)"; this.checkSyntaxToolStripMenuItem.Text = "Check Syntax (Shift + F5)";
this.checkSyntaxToolStripMenuItem.Click += new System.EventHandler(this.CheckSyntaxToolStripMenuItem_Click); this.checkSyntaxToolStripMenuItem.Click += new System.EventHandler(this.CheckSyntaxToolStripMenuItem_Click);
// //
// describeToolStripMenuItem // describeToolStripMenuItem
// //
this.describeToolStripMenuItem.Name = "describeToolStripMenuItem"; this.describeToolStripMenuItem.Name = "describeToolStripMenuItem";
this.describeToolStripMenuItem.Size = new System.Drawing.Size(125, 20); this.describeToolStripMenuItem.Size = new System.Drawing.Size(125, 20);
this.describeToolStripMenuItem.Text = "Describe (Shift + F1)"; this.describeToolStripMenuItem.Text = "Describe (Shift + F1)";
this.describeToolStripMenuItem.Click += new System.EventHandler(this.DescribeToolStripMenuItem_Click); this.describeToolStripMenuItem.Click += new System.EventHandler(this.DescribeToolStripMenuItem_Click);
// //
// helpToolStripMenuItem // helpToolStripMenuItem
// //
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.aboutToolStripMenuItem, this.aboutToolStripMenuItem,
this.helpToolStripMenuItem1}); this.helpToolStripMenuItem1});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "Help"; this.helpToolStripMenuItem.Text = "Help";
// //
// aboutToolStripMenuItem // aboutToolStripMenuItem
// //
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22); this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.aboutToolStripMenuItem.Text = "About"; this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItem_Click); this.aboutToolStripMenuItem.Click += new System.EventHandler(this.AboutToolStripMenuItem_Click);
// //
// helpToolStripMenuItem1 // helpToolStripMenuItem1
// //
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1"; this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(107, 22); this.helpToolStripMenuItem1.Size = new System.Drawing.Size(107, 22);
this.helpToolStripMenuItem1.Text = "Help"; this.helpToolStripMenuItem1.Text = "Help";
this.helpToolStripMenuItem1.Click += new System.EventHandler(this.HelpToolStripMenuItem1_Click); this.helpToolStripMenuItem1.Click += new System.EventHandler(this.HelpToolStripMenuItem1_Click);
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Bottom; this.label1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.label1.Location = new System.Drawing.Point(0, 535); this.label1.Location = new System.Drawing.Point(0, 535);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(0, 13); this.label1.Size = new System.Drawing.Size(0, 13);
this.label1.TabIndex = 2; this.label1.TabIndex = 2;
// //
// SavedLabelTimer // SavedLabelTimer
// //
this.SavedLabelTimer.Interval = 1000; this.SavedLabelTimer.Interval = 1000;
this.SavedLabelTimer.Tick += new System.EventHandler(this.SavedLableTimerTick); this.SavedLabelTimer.Tick += new System.EventHandler(this.SavedLableTimerTick);
// //
// TextEditor // TextEditor
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(602, 548); this.ClientSize = new System.Drawing.Size(602, 548);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.TextBox); this.Controls.Add(this.TextBox);
this.Controls.Add(this.menuStrip1); this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true; this.KeyPreview = true;
this.MainMenuStrip = this.menuStrip1; this.MainMenuStrip = this.menuStrip1;
this.Name = "TextEditor"; this.Name = "TextEditor";
this.Text = "Advanced Software Engineering - Text Editor"; this.Text = "Advanced Software Engineering - Text Editor";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Text_Editor_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Text_Editor_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Console_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Console_FormClosed);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Text_Editor_PreviewKeyDown);
this.menuStrip1.ResumeLayout(false); this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout(); this.menuStrip1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
#endregion #endregion
private System.Windows.Forms.TextBox TextBox; private System.Windows.Forms.TextBox TextBox;
private MenuStrip menuStrip1; private MenuStrip menuStrip1;
private ToolStripMenuItem fileToolStripMenuItem; private ToolStripMenuItem fileToolStripMenuItem;
private ToolStripMenuItem newFileToolStripMenuItem; private ToolStripMenuItem newFileToolStripMenuItem;
private ToolStripMenuItem openToolStripMenuItem; private ToolStripMenuItem openToolStripMenuItem;
private ToolStripMenuItem saveToolStripMenuItem; private ToolStripMenuItem saveToolStripMenuItem;
private ToolStripMenuItem exitToolStripMenuItem; private ToolStripMenuItem exitToolStripMenuItem;
private ToolStripMenuItem runToolStripMenuItem; private ToolStripMenuItem runToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem; private ToolStripMenuItem helpToolStripMenuItem;
private ToolStripMenuItem aboutToolStripMenuItem; private ToolStripMenuItem aboutToolStripMenuItem;
private ToolStripMenuItem helpToolStripMenuItem1; private ToolStripMenuItem helpToolStripMenuItem1;
private ToolStripMenuItem saveAsToolStripMenuItem; private ToolStripMenuItem saveAsToolStripMenuItem;
private ToolStripMenuItem checkSyntaxToolStripMenuItem; private ToolStripMenuItem checkSyntaxToolStripMenuItem;
private Label label1; private Label label1;
private Timer SavedLabelTimer; private Timer SavedLabelTimer;
private ToolStripMenuItem describeToolStripMenuItem; private ToolStripMenuItem describeToolStripMenuItem;
} }
} }
@@ -1,257 +1,257 @@
using System; using System;
using System.IO; using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
namespace Advanced_Software_Engineering { namespace Advanced_Software_Engineering {
public partial class TextEditor : Form { public partial class TextEditor : Form {
private const string DefaultTitleString = "ASE - Text Editor"; private const string DefaultTitleString = "ASE - Text Editor";
private Draw_Preview DisplayForm = null; private Draw_Preview DisplayForm = null;
private bool unsavedChanges = false; private bool unsavedChanges = false;
private bool newWindow = true; private bool newWindow = true;
private bool okToOverwrite = false; private bool okToOverwrite = false;
private string fileName = ""; private string fileName = "";
/// <summary> /// <summary>
/// The text editor is the main window that the user will be using for writing code. /// The text editor is the main window that the user will be using for writing code.
/// </summary> /// </summary>
public TextEditor() { public TextEditor() {
MenuManager.NumberOfWindows++; MenuManager.NumberOfWindows++;
InitializeComponent(); InitializeComponent();
UpdateTitle(); UpdateTitle();
} }
/// <summary> /// <summary>
/// The text editor is the main window that the user will be using for writing code. /// The text editor is the main window that the user will be using for writing code.
/// </summary> /// </summary>
/// <param name="openFile">File dialog which points to the file to open</param> /// <param name="openFile">File dialog which points to the file to open</param>
public TextEditor(OpenFileDialog openFile) { public TextEditor(OpenFileDialog openFile) {
MenuManager.NumberOfWindows++; MenuManager.NumberOfWindows++;
InitializeComponent(); InitializeComponent();
StreamReader fileStream = new StreamReader(openFile.OpenFile()); StreamReader fileStream = new StreamReader(openFile.OpenFile());
TextBox.Text = fileStream.ReadToEnd(); TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false; unsavedChanges = false;
newWindow = false; newWindow = false;
okToOverwrite = true; okToOverwrite = true;
UpdateTitle(openFile.FileName); UpdateTitle(openFile.FileName);
fileStream.Close(); fileStream.Close();
} }
private void UpdateTitle(string fileName) { private void UpdateTitle(string fileName) {
this.fileName = fileName; this.fileName = fileName;
UpdateTitle(); UpdateTitle();
} }
private void UpdateTitle() { private void UpdateTitle() {
if (fileName != "") this.Text = DefaultTitleString + " - " + fileName; if (fileName != "") this.Text = DefaultTitleString + " - " + fileName;
else this.Text = DefaultTitleString; else this.Text = DefaultTitleString;
if (unsavedChanges) this.Text = "* " + this.Text + " *"; if (unsavedChanges) this.Text = "* " + this.Text + " *";
} }
private void SaveFile() { private void SaveFile() {
if (!okToOverwrite) SaveFileAs(); if (!okToOverwrite) SaveFileAs();
else { else {
try { try {
StreamWriter fileStream = new StreamWriter(fileName); StreamWriter fileStream = new StreamWriter(fileName);
fileStream.Write(TextBox.Text); fileStream.Write(TextBox.Text);
unsavedChanges = false; unsavedChanges = false;
ShowSavedMessage(); ShowSavedMessage();
fileStream.Close(); fileStream.Close();
} catch (Exception e) { } catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show(); new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally { } finally {
UpdateTitle(); UpdateTitle();
} }
} }
} }
private void SaveFileAs() { private void SaveFileAs() {
SaveFileDialog saveFileDialog = new SaveFileDialog { SaveFileDialog saveFileDialog = new SaveFileDialog {
OverwritePrompt = true, OverwritePrompt = true,
DefaultExt = ".txt" DefaultExt = ".txt"
}; };
if (fileName != "") saveFileDialog.FileName = fileName; if (fileName != "") saveFileDialog.FileName = fileName;
saveFileDialog.ValidateNames = true; saveFileDialog.ValidateNames = true;
DialogResult dialogResult = saveFileDialog.ShowDialog(); DialogResult dialogResult = saveFileDialog.ShowDialog();
if (dialogResult == DialogResult.OK) { if (dialogResult == DialogResult.OK) {
StreamWriter fileStream = new StreamWriter(saveFileDialog.OpenFile()); StreamWriter fileStream = new StreamWriter(saveFileDialog.OpenFile());
try { try {
fileStream.Write(TextBox.Text); fileStream.Write(TextBox.Text);
unsavedChanges = false; unsavedChanges = false;
okToOverwrite = true; okToOverwrite = true;
fileName = saveFileDialog.FileName; fileName = saveFileDialog.FileName;
ShowSavedMessage(); ShowSavedMessage();
} catch (Exception e) { } catch (Exception e) {
new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show(); new ErrorWindow("Write Failed!", "The program failed to write the file.", e.Message + "\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show();
} finally { } finally {
fileStream.Close(); fileStream.Close();
UpdateTitle(); UpdateTitle();
} }
} }
} }
private void ShowSavedMessage() { private void ShowSavedMessage() {
label1.Text = "File saved"; label1.Text = "File saved";
SavedLabelTimer.Start(); SavedLabelTimer.Start();
} }
private void UpdateRowsAndColumnsPreview() { private void UpdateRowsAndColumnsPreview() {
int line = TextBox.GetLineFromCharIndex(TextBox.SelectionStart); int line = TextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = TextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line); int column = TextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
line++; line++;
column++; column++;
label1.Text = "row: " + line.ToString() + " col: " + column.ToString(); label1.Text = "row: " + line.ToString() + " col: " + column.ToString();
} }
private void HandleKeypress() { private void HandleKeypress() {
if (newWindow) newWindow = false; if (newWindow) newWindow = false;
UpdateSaveStatus(); UpdateSaveStatus();
UpdateRowsAndColumnsPreview(); UpdateRowsAndColumnsPreview();
} }
private void UpdateSaveStatus() { private void UpdateSaveStatus() {
if (!unsavedChanges) { if (!unsavedChanges) {
unsavedChanges = true; unsavedChanges = true;
UpdateTitle(); UpdateTitle();
} }
} }
private void OpenFile() { private void OpenFile() {
OpenFileDialog openFileDialog = new OpenFileDialog(); OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK) { if (openFileDialog.ShowDialog() == DialogResult.OK) {
if (newWindow) { if (newWindow) {
StreamReader fileStream = new StreamReader(openFileDialog.OpenFile()); StreamReader fileStream = new StreamReader(openFileDialog.OpenFile());
TextBox.Text = fileStream.ReadToEnd(); TextBox.Text = fileStream.ReadToEnd();
unsavedChanges = false; unsavedChanges = false;
okToOverwrite = true; okToOverwrite = true;
newWindow = false; newWindow = false;
UpdateTitle(openFileDialog.FileName); UpdateTitle(openFileDialog.FileName);
fileStream.Close(); fileStream.Close();
} else new TextEditor(openFileDialog).Show(); } else new TextEditor(openFileDialog).Show();
} }
} }
private void RunCode() { private void RunCode() {
if (DisplayForm == null || DisplayForm.IsDisposed) { if (DisplayForm == null || DisplayForm.IsDisposed) {
DisplayForm = new Draw_Preview(TextBox.Text); DisplayForm = new Draw_Preview(TextBox.Text);
} else { } else {
Console.WriteLine("Removed all commands"); Console.WriteLine("Removed all commands");
DisplayForm.RemoveAllCommands(); DisplayForm.RemoveAllCommands();
DisplayForm.SubmitCommands(TextBox.Text); DisplayForm.SubmitCommands(TextBox.Text);
} }
if (DisplayForm.IsSuccess()) { if (DisplayForm.IsSuccess()) {
DisplayForm.Show(); DisplayForm.Show();
DisplayForm.Focus(); DisplayForm.Focus();
} }
} }
/// <summary> /// <summary>
/// This function checks if the code written is OK /// This function checks if the code written is OK
/// </summary> /// </summary>
public void CheckCode() { public void CheckCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview(); Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide(); tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text); 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(); 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(); tmpDrawPreview.Close();
MenuManager.WindowClosed(); MenuManager.WindowClosed();
tmpDrawPreview.Dispose(); tmpDrawPreview.Dispose();
} }
private void HandleExit(FormClosingEventArgs e) { private void HandleExit(FormClosingEventArgs e) {
if (unsavedChanges) { if (unsavedChanges) {
DialogResult dialogResult = MessageBox.Show("You have unsaved work. Would you like to discard your work?", "Unsaved work!", MessageBoxButtons.YesNo, MessageBoxIcon.None); 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; if (e != null) e.Cancel = dialogResult != DialogResult.Yes;
} }
} }
private void DescribeCode() { private void DescribeCode() {
Draw_Preview tmpDrawPreview = new Draw_Preview(); Draw_Preview tmpDrawPreview = new Draw_Preview();
tmpDrawPreview.Hide(); tmpDrawPreview.Hide();
tmpDrawPreview.SubmitCommands(TextBox.Text); tmpDrawPreview.SubmitCommands(TextBox.Text);
string commandDesc = tmpDrawPreview.DescribeAllCommands(); string commandDesc = tmpDrawPreview.DescribeAllCommands();
Console.WriteLine(commandDesc); Console.WriteLine(commandDesc);
tmpDrawPreview.Close(); tmpDrawPreview.Close();
MenuManager.WindowClosed(); MenuManager.WindowClosed();
tmpDrawPreview.Dispose(); tmpDrawPreview.Dispose();
new DetailsWindow(commandDesc, "Command explanation").Show(); new DetailsWindow(commandDesc, "Command explanation").Show();
} }
private void Console_FormClosed(object sender, FormClosedEventArgs e) { private void Console_FormClosed(object sender, FormClosedEventArgs e) {
if (DisplayForm != null && !DisplayForm.IsDisposed) DisplayForm.ReleaseCommandLock(); if (DisplayForm != null && !DisplayForm.IsDisposed) DisplayForm.ReleaseCommandLock();
MenuManager.WindowClosed(); MenuManager.WindowClosed();
Dispose(); Dispose();
} }
private void RunToolStripMenuItem_Click(object sender, EventArgs e) => RunCode(); private void RunToolStripMenuItem_Click(object sender, EventArgs e) => RunCode();
private void CreateNewInstance() => new TextEditor().Show(); private void CreateNewInstance() => new TextEditor().Show();
private void HandleKeypress(object sender, EventArgs e) => HandleKeypress(); private void HandleKeypress(object sender, EventArgs e) => HandleKeypress();
private void TextBoxClick(object sender, EventArgs e) => UpdateRowsAndColumnsPreview(); private void TextBoxClick(object sender, EventArgs e) => UpdateRowsAndColumnsPreview();
private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e) => SaveFileAs(); private void SaveAsToolStripMenuItem_Click(object sender, EventArgs e) => SaveFileAs();
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) => SaveFile(); private void SaveToolStripMenuItem_Click(object sender, EventArgs e) => SaveFile();
private void NewFileToolStripMenuItem_Click(object sender, EventArgs e) => CreateNewInstance(); private void NewFileToolStripMenuItem_Click(object sender, EventArgs e) => CreateNewInstance();
private void AboutToolStripMenuItem_Click(object sender, EventArgs e) => new About_Window().Show(); 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 Text_Editor_FormClosing(object sender, FormClosingEventArgs e) => HandleExit(e);
private void ExitToolStripMenuItem_Click(object sender, EventArgs e) => Close(); private void ExitToolStripMenuItem_Click(object sender, EventArgs e) => Close();
private void OpenToolStripMenuItem_Click(object sender, EventArgs e) => OpenFile(); private void OpenToolStripMenuItem_Click(object sender, EventArgs e) => OpenFile();
private void Text_Editor_PreviewKeyDown(object sender, KeyEventArgs e) { private void Text_Editor_PreviewKeyDown(object sender, KeyEventArgs e) {
//New window //New window
if (e.Control && e.KeyCode == Keys.N) { if (e.Control && e.KeyCode == Keys.N) {
CreateNewInstance(); CreateNewInstance();
e.Handled = true; e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.S) { } else if (e.Control && e.KeyCode == Keys.S) {
SaveFile(); SaveFile();
e.Handled = true; e.Handled = true;
} else if (e.Control && e.Shift && e.KeyCode == Keys.S) { } else if (e.Control && e.Shift && e.KeyCode == Keys.S) {
SaveFileAs(); SaveFileAs();
e.Handled = true; e.Handled = true;
} else if (e.Control && e.KeyCode == Keys.O) { } else if (e.Control && e.KeyCode == Keys.O) {
OpenFile(); OpenFile();
e.Handled = true; e.Handled = true;
} else if (e.KeyCode == Keys.F5) { } else if (e.KeyCode == Keys.F5) {
RunCode(); RunCode();
e.Handled = true; e.Handled = true;
} else if (e.KeyCode == Keys.F5 && e.Shift) { } else if (e.KeyCode == Keys.F5 && e.Shift) {
CheckCode(); CheckCode();
e.Handled = true; e.Handled = true;
} else if (e.KeyCode == Keys.F1 && e.Shift) { } else if (e.KeyCode == Keys.F1 && e.Shift) {
DescribeCode(); DescribeCode();
e.Handled = true; e.Handled = true;
} else { } else {
UpdateRowsAndColumnsPreview(); UpdateRowsAndColumnsPreview();
} }
} }
private void CheckSyntaxToolStripMenuItem_Click(object sender, EventArgs e) => CheckCode(); private void CheckSyntaxToolStripMenuItem_Click(object sender, EventArgs e) => CheckCode();
private void DescribeToolStripMenuItem_Click(object sender, EventArgs e) => DescribeCode(); private void DescribeToolStripMenuItem_Click(object sender, EventArgs e) => DescribeCode();
private void SavedLableTimerTick(object sender, EventArgs e) { private void SavedLableTimerTick(object sender, EventArgs e) {
UpdateRowsAndColumnsPreview(); UpdateRowsAndColumnsPreview();
SavedLabelTimer.Stop(); SavedLabelTimer.Stop();
} }
private void TextBox_KeyUp(object sender, KeyEventArgs e) => UpdateRowsAndColumnsPreview(); private void TextBox_KeyUp(object sender, KeyEventArgs e) => UpdateRowsAndColumnsPreview();
private void HelpToolStripMenuItem1_Click(object sender, EventArgs e) => new CommandHelp().Show(); private void HelpToolStripMenuItem1_Click(object sender, EventArgs e) => new CommandHelp().Show();
} }
} }
@@ -1,206 +1,206 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <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> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <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="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="SavedLabelTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="SavedLabelTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value> <value>132, 17</value>
</metadata> </metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>59</value> <value>59</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAL/AIACAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgIAIMxQPMi4UDzJQICAQ/wCAAgAA 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
AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///8CAAAAAP///wK95DnJyOxC/cf8OPXR/0Ys////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av// AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Av//
/wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wIAAAAAAAAAAAAAAAAAAAAA////AprQMIm58zn/yv88av///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wACd70wOqTsNZX///8CAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA AAAAAAAAAAAAAAAAAAAAAAAA///////////x////4L///4AP//+AAgf/gAAD/4AAAf+AAAH/gAAD/4AA
A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c A//AAAH/wAAA/8AAAA/AAAAPwAAAA4AAAAMAAAAHAAAAHwAAAB8AAAAfgAAAD8AAAAPwAAAA+AAAAP5c
AAD//AAD//wKB///ng////4f//////////8= AAD//AAD//wKB///ng////4f//////////8=
</value> </value>
</data> </data>
</root> </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