Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3805 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
339 changed files with 8415 additions and 1642 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,69 +0,0 @@
@@ -1,69 +0,0 @@
|
||||
To be on the safe side and leave enough space for the future, |
||||
the in-memory size of an assembly used here should be 8 times the disk image size. |
||||
That should allow an assembly to grow to more than twice its old size without having to update this list. |
||||
|
||||
Sysinternals Processexplorer can show relocated assemblies in yellow in the DLL View. |
||||
|
||||
adr = 0x5000000 |
||||
def AddModule(kbsize as int): |
||||
print "0x${adr.ToString('x')} - 0x${(adr + 3 * kbsize * 1024).ToString('x')}" |
||||
adr += 8 * kbsize * 1024 |
||||
adr = 0x80000 * System.Math.Ceiling(cast(double,adr) / 0x80000) |
||||
|
||||
def AddModules(*names as (string)): |
||||
for name in names: |
||||
System.Console.Write("${name}:\t") |
||||
AddModule(System.IO.FileInfo("d:\\serralongue\\sharpdevelop\\bin\\" + name + ".dll").Length / 1024) |
||||
|
||||
All addresses are between 0x0500 0000 and 0x0fff ffff |
||||
|
||||
AssemblyName: startaddress - endaddress |
||||
ICSharpCode.Core: 0x5000000 - 0x504e000 |
||||
ICSharpCode.SharpDevelop: 0x5100000 - 0x5472000 |
||||
ICSharpCode.NRefactory: 0x5a80000 - 0x5b9a000 |
||||
ICSharpCode.TextEditor: 0x5d80000 - 0x5e67000 |
||||
ICSharpCode.SharpDevelop.Sda: 0x6000000 - 0x601e000 |
||||
WeifenLuo.WinFormsUI.Docking: 0x6080000 - 0x6107000 |
||||
ICSharpCode.Build.Tasks: 0x6200000 - 0x621b000 |
||||
|
||||
CSharpBinding: 0x6280000 - 0x62bc000 |
||||
ILAsmBinding: 0x6380000 - 0x639b000 |
||||
VBNetBinding: 0x6400000 - 0x643f000 |
||||
NRefactoryToBooConverter: 0x6500000 - 0x6536000 |
||||
BooBinding: 0x6600000 - 0x664e000 |
||||
|
||||
FormsDesigner: 0x6700000 - 0x676f000 |
||||
ResourceEditor: 0x6880000 - 0x689e000 |
||||
XmlEditor: 0x6900000 - 0x6948000 |
||||
|
||||
ICSharpCode.AddInMananger: 0x6a00000 - 0x6a24000 |
||||
AddInScout: 0x6a80000 - 0x6a8b400 |
||||
CodeCoverage: 0x6b00000 - 0x6b30000 |
||||
TreeListView (debugger): 0x6b80000 - 0x6be6000 |
||||
Debugger.Code: 0x6d00000 - 0x6ddb000 |
||||
Debugger.AddIn: 0x6f80000 - 0x6faa000 |
||||
FileTypeRegisterer: 0x7000000 - 0x7009000 |
||||
HighlightingEditor: 0x7080000 - 0x70ec000 |
||||
HtmlHelp2: 0x7200000 - 0x723f000 |
||||
HtmlHelp2JScriptGlobals: 0x7300000 - 0x7306c00 |
||||
MonoAddIn: 0x7380000 - 0x7395000 |
||||
NAntAddIn: 0x7400000 - 0x7427000 |
||||
PInvokeAddIn: 0x7480000 - 0x749b000 |
||||
RegExpTk: 0x7500000 - 0x7524000 |
||||
SharpQuery: 0x7580000 - 0x75b0000 |
||||
SharpReportCore: 0x7600000 - 0x7654000 |
||||
SharpReport: 0x7700000 - 0x773c000 |
||||
SharpReportAddIn: 0x7800000 - 0x781e000 |
||||
ReportGenerator: 0x7880000 - 0x78a1000 |
||||
StartPage: 0x7900000 - 0x791e000 |
||||
UnitTesting: 0x7980000 - 0x799b000 |
||||
Mono.Cecil: 0x7a00000 - 0x7b38000 |
||||
WixBinding: 0x7d80000 - 0x7dc2000 |
||||
ICSharpCode.SharpDevelop.Dom: 0x7e80000 - 0x7f19000 |
||||
CodeAnalysis: 0x8000000 - 0x8021000 |
||||
IconEditor: 0x8080000 - 0x80a1000 |
||||
IconEditor.AddIn: 0x8100000 - 0x810c000 |
||||
SharpDbTools: 0x8180000 - 0x819e000 |
||||
ICSharpCode.SD.Widgets: 0x8240000 - 0x827c000 |
||||
|
||||
Next free address: 0x08300000 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,259 @@
@@ -0,0 +1,259 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
||||
<UsingTask |
||||
TaskName="Microsoft.Build.Tasks.CreateBooManifestResourceName" |
||||
AssemblyFile="Boo.Microsoft.Build.Tasks.dll" /> |
||||
|
||||
<UsingTask |
||||
TaskName="Boo.Microsoft.Build.Tasks.Booc" |
||||
AssemblyFile="Boo.Microsoft.Build.Tasks.dll"/> |
||||
|
||||
<UsingTask |
||||
TaskName="Boo.Microsoft.Build.Tasks.ExecBoo" |
||||
AssemblyFile="Boo.Microsoft.Build.Tasks.dll"/> |
||||
|
||||
<PropertyGroup> |
||||
<MSBuildAllProjects Condition="'$(BooBinPath)' != ''"> |
||||
$(MSBuildAllProjects);$(BooBinPath)\Boo.Microsoft.Build.targets |
||||
</MSBuildAllProjects> |
||||
<MSBuildAllProjects Condition="'$(BooBinPath)' == ''"> |
||||
$(MSBuildAllProjects);$(MSBuildBinPath)\Boo.Microsoft.Build.targets |
||||
</MSBuildAllProjects> |
||||
<DefaultLanguageSourceExtension>.boo</DefaultLanguageSourceExtension> |
||||
<Language>Boo</Language> |
||||
</PropertyGroup> |
||||
|
||||
<!-- |
||||
The CreateManifestResourceNames target create the manifest resource names |
||||
from the .RESX files. |
||||
|
||||
[IN] |
||||
@(ResxWithNoCulture) - The names the non-culture .RESX files. |
||||
@(ResxWithCulture) - The names the culture .RESX files. |
||||
@(NonResxWithNoCulture) - The names of the non-culture non-RESX |
||||
files (like bitmaps, etc). |
||||
|
||||
@(NonResxWithCulture) - The names of the culture non-RESX |
||||
files (like bitmaps, etc). |
||||
|
||||
[OUT] |
||||
@(ManifestResourceWithNoCultureName) - The corresponding manifest |
||||
resource name (.RESOURCE) |
||||
|
||||
@(ManifestResourceWithCultureName) - The corresponding manifest |
||||
resource name (.RESOURCE) |
||||
|
||||
@(ManifestNonResxWithNoCulture) - The corresponding manifest |
||||
resource name. |
||||
|
||||
@(ManifestNonResxWithCulture) - The corresponding manifest |
||||
resource name. |
||||
|
||||
For Boo applications the transformation is like: |
||||
|
||||
Resources1.resx => RootNamespace.Resources1 => Build into main assembly |
||||
|
||||
SubFolder\Resources1.resx => |
||||
RootNamespace.SubFolder.Resources1 => |
||||
Build into main assembly |
||||
|
||||
Resources1.fr.resx => |
||||
RootNamespace.Resources1.fr => |
||||
Build into satellite assembly |
||||
|
||||
Resources1.notaculture.resx => |
||||
RootNamespace.Resources1.notaculture => |
||||
Build into main assembly |
||||
|
||||
For other project systems, this transformation may be different. |
||||
--> |
||||
|
||||
<PropertyGroup> |
||||
<CreateManifestResourceNamesDependsOn> |
||||
</CreateManifestResourceNamesDependsOn> |
||||
</PropertyGroup> |
||||
|
||||
<Target |
||||
Name="CreateManifestResourceNames" |
||||
DependsOnTargets="$(CreateManifestResourceNamesDependsOn)" |
||||
> |
||||
<CallTarget Targets="CreateManifestResourceNames_35" Condition="'$(MSBuildToolsVersion)' == '3.5'"/> |
||||
<CallTarget Targets="CreateManifestResourceNames_20" Condition="'$(MSBuildToolsVersion)' != '3.5'"/> |
||||
</Target> |
||||
|
||||
<Target |
||||
Name="CreateManifestResourceNames_20" |
||||
Condition="' |
||||
@(ResxWithNoCulture) |
||||
@(ResxWithCulture) |
||||
@(NonResxWithNoCulture) |
||||
@(NonResxWithCulture)'!=''" |
||||
> |
||||
<!-- Create the target resource names for non-culture resx files --> |
||||
<CreateBooManifestResourceName |
||||
Condition="'@(ResxWithNoCulture)'!=''" |
||||
ResourceFiles="@(ResxWithNoCulture)" |
||||
RootNamespace="$(RootNamespace)"> |
||||
|
||||
<Output |
||||
TaskParameter="ManifestResourceNames" |
||||
ItemName="ManifestResourceWithNoCultureName"/> |
||||
|
||||
</CreateBooManifestResourceName> |
||||
|
||||
<!-- Create the target resource names for culture resx files. --> |
||||
<CreateBooManifestResourceName |
||||
Condition="'@(ResxWithCulture)'!=''" |
||||
ResourceFiles="@(ResxWithCulture)" |
||||
RootNamespace="$(RootNamespace)"> |
||||
|
||||
<Output |
||||
TaskParameter="ManifestResourceNames" |
||||
ItemName="ManifestResourceWithCultureName"/> |
||||
|
||||
</CreateBooManifestResourceName> |
||||
|
||||
<!-- Create the target resource names for non-culture non-resx files. --> |
||||
<CreateBooManifestResourceName |
||||
Condition="'@(NonResxWithNoCulture)'!=''" |
||||
ResourceFiles="@(NonResxWithNoCulture)" |
||||
RootNamespace="$(RootNamespace)"> |
||||
|
||||
<Output |
||||
TaskParameter="ManifestResourceNames" |
||||
ItemName="ManifestNonResxWithNoCulture"/> |
||||
|
||||
</CreateBooManifestResourceName> |
||||
|
||||
<!-- Create the target resource names for culture non-resx files. --> |
||||
<CreateBooManifestResourceName |
||||
Condition="'@(NonResxWithCulture)'!=''" |
||||
ResourceFiles="@(NonResxWithCulture)" |
||||
RootNamespace="$(RootNamespace)"> |
||||
|
||||
<Output |
||||
TaskParameter="ManifestResourceNames" |
||||
ItemName="ManifestNonResxWithCulture"/> |
||||
|
||||
</CreateBooManifestResourceName> |
||||
</Target> |
||||
|
||||
<Target |
||||
Name="CreateManifestResourceNames_35" |
||||
Condition="'@(EmbeddedResource)' != ''" |
||||
> |
||||
<ItemGroup> |
||||
<_Temporary Remove="@(_Temporary)" /> |
||||
</ItemGroup> |
||||
|
||||
<CreateBooManifestResourceName |
||||
ResourceFiles="@(EmbeddedResource)" |
||||
RootNamespace="$(RootNamespace)" |
||||
Condition="'%(EmbeddedResource.ManifestResourceName)' == ''"> |
||||
|
||||
<Output TaskParameter="ResourceFilesWithManifestResourceNames" ItemName="_Temporary" /> |
||||
|
||||
</CreateBooManifestResourceName> |
||||
|
||||
<ItemGroup> |
||||
<EmbeddedResource Remove="@(EmbeddedResource)" Condition="'%(EmbeddedResource.ManifestResourceName)' == ''"/> |
||||
<EmbeddedResource Include="@(_Temporary)" /> |
||||
<_Temporary Remove="@(_Temporary)" /> |
||||
</ItemGroup> |
||||
</Target> |
||||
|
||||
|
||||
<PropertyGroup> |
||||
|
||||
<!-- |
||||
"None" is not technically a valid DebugType, so we can't pass it |
||||
in as such to the compiler. So here, we modify the properties so |
||||
they make sense. |
||||
--> |
||||
<DebugSymbols Condition="'$(DebugType)' == 'none'">false</DebugSymbols> |
||||
<DebugType Condition="'$(DebugType)' == 'none'"></DebugType> |
||||
|
||||
<!-- Provide a facility to override UseHostCompilerIfAvailable--> |
||||
<UseHostCompilerIfAvailable |
||||
Condition="'$(UseHostCompilerIfAvailable)' == ''"> |
||||
true |
||||
</UseHostCompilerIfAvailable> |
||||
|
||||
</PropertyGroup> |
||||
|
||||
<ItemGroup> |
||||
<DocFileItem |
||||
Include="$(DocumentationFile)" |
||||
Condition="'$(DocumentationFile)'!=''"> |
||||
|
||||
<InProject>false</InProject> |
||||
</DocFileItem> |
||||
</ItemGroup> |
||||
|
||||
<PropertyGroup> |
||||
<CoreCompileDependsOn> |
||||
_ComputeNonExistentFileProperty |
||||
</CoreCompileDependsOn> |
||||
</PropertyGroup> |
||||
|
||||
<PropertyGroup Condition=" '$(BoocToolPath)' != '' "> |
||||
<ReferencePath>$(ReferencePath);$(BoocToolPath)</ReferencePath> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(BoocToolPath)' == '' "> |
||||
<ReferencePath>$(ReferencePath);$(BooBinPath)</ReferencePath> |
||||
</PropertyGroup> |
||||
|
||||
<Target |
||||
Name="CoreCompile" |
||||
Inputs="$(MSBuildAllProjects); |
||||
@(Compile); |
||||
@(ManifestResourceWithNoCulture); |
||||
$(ApplicationIcon); |
||||
$(AssemblyOriginatorKeyFile); |
||||
@(ManifestNonResxWithNoCultureOnDisk); |
||||
@(ReferencePath); |
||||
@(CompiledLicenseFile)" |
||||
Outputs="@(IntermediateAssembly)" |
||||
DependsOnTargets="$(CoreCompileDependsOn)" |
||||
> |
||||
|
||||
<Booc |
||||
OutputAssembly="@(IntermediateAssembly)" |
||||
References="@(ReferencePath)" |
||||
Resources= "@(ManifestResourceWithNoCulture); |
||||
@(ManifestNonResxWithNoCultureOnDisk); |
||||
@(CompiledLicenseFile)" |
||||
ResponseFiles="$(CompilerResponseFile)" |
||||
Sources="@(Compile)" |
||||
TargetType="$(OutputType)" |
||||
ToolPath="$(BoocToolPath)" |
||||
Pipeline="$(Pipeline)" |
||||
WhiteSpaceAgnostic="$(WhiteSpaceAgnostic)" |
||||
Ducky="$(Ducky)" |
||||
Verbosity="$(BoocVerbosity)" |
||||
Culture="$(AssemblyCulture)" |
||||
SourceDirectory="$(SourceDirectory)" |
||||
KeyFile="$(AssemblyOriginatorKeyFile)" |
||||
KeyContainer="$(AssemblyKeyContainerName)" |
||||
EmitDebugInformation="$(DebugSymbols)" |
||||
DelaySign="$(DelaySign)" |
||||
NoStandardLib="$(NoStdLib)" |
||||
DefineSymbols="$(DefineConstants)" |
||||
GenerateFullPaths="$(GenerateFullPaths)" |
||||
/> |
||||
|
||||
<Copy |
||||
Condition=" '$(BoocToolPath)' == '' " |
||||
SkipUnchangedFiles="true" |
||||
SourceFiles="$(BooBinPath)\Boo.Lang.dll" |
||||
DestinationFolder="$(OutputPath)"/> |
||||
|
||||
<Copy |
||||
Condition=" '$(BoocToolPath)' != '' " |
||||
SkipUnchangedFiles="true" |
||||
SourceFiles="$(BoocToolPath)\Boo.Lang.dll" |
||||
DestinationFolder="$(OutputPath)"/> |
||||
</Target> |
||||
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" /> |
||||
</Project> |
Binary file not shown.
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
<configuration> |
||||
<startup> |
||||
<supportedRuntime version="v2.0.50727"/> |
||||
<supportedRuntime version="v1.1.4322"/> |
||||
</startup> |
||||
</configuration> |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
# This file contains command-line options that the Boo |
||||
# command-line compiler (booc) will process as part |
||||
# of every compilation, unless the "-noconfig" option |
||||
# is specified. |
||||
|
||||
# Reference the common Framework libraries |
||||
#-r:System (already included by boo) |
||||
#-r:System.Data |
||||
-r:System.Drawing |
||||
#-r:System.Management |
||||
#-r:System.Messaging |
||||
#-r:System.Runtime.Remoting |
||||
#-r:System.Runtime.Serialization.Formatters.Soap |
||||
# does not work nicely on mono |
||||
-r:System.Security |
||||
#-r:System.ServiceProcess |
||||
#-r:System.Web |
||||
#-r:System.Web.Services |
||||
#-r:System.Windows.Forms |
||||
-r:System.Xml |
@ -0,0 +1,125 @@
@@ -0,0 +1,125 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Text; |
||||
using IronPython.Compiler.Ast; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Represents a member field expression in a Control or Form:
|
||||
///
|
||||
/// self._textBox1
|
||||
/// self._textBox1.Name
|
||||
/// </summary>
|
||||
public class PythonControlFieldExpression |
||||
{ |
||||
string memberName = String.Empty; |
||||
string fullMemberName = String.Empty; |
||||
|
||||
PythonControlFieldExpression(string memberName, string fullMemberName) |
||||
{ |
||||
this.memberName = memberName; |
||||
this.fullMemberName = fullMemberName; |
||||
} |
||||
|
||||
public string MemberName { |
||||
get { return memberName; } |
||||
} |
||||
|
||||
public string FullMemberName { |
||||
get { return fullMemberName; } |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Creates a PythonControlField from a member expression:
|
||||
///
|
||||
/// self._textBox1
|
||||
/// self._textBox1.Name
|
||||
/// </summary>
|
||||
public static PythonControlFieldExpression Create(MemberExpression expression) |
||||
{ |
||||
string memberName = expression.Name.ToString(); |
||||
string fullMemberName = PythonControlFieldExpression.GetMemberName(expression); |
||||
return new PythonControlFieldExpression(memberName, fullMemberName); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the variable name from an expression of the form:
|
||||
///
|
||||
/// self._textBox1.Name
|
||||
///
|
||||
/// Returns "textBox1"
|
||||
/// </summary>
|
||||
public static string GetVariableNameFromSelfReference(string name) |
||||
{ |
||||
int startIndex = name.IndexOf('.'); |
||||
if (startIndex > 0) { |
||||
name = name.Substring(startIndex + 1); |
||||
int endIndex = name.IndexOf('.'); |
||||
if (endIndex > 0) { |
||||
return GetVariableName(name.Substring(0, endIndex)); |
||||
} |
||||
return String.Empty; |
||||
} |
||||
return name; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the variable name of the control being added.
|
||||
/// </summary>
|
||||
public static string GetControlNameBeingAdded(CallExpression node) |
||||
{ |
||||
//if (node.Args.Length > 0) {
|
||||
Arg arg = node.Args[0]; |
||||
MemberExpression memberExpression = arg.Expression as MemberExpression; |
||||
return GetVariableName(memberExpression.Name.ToString()); |
||||
//}
|
||||
//return null;
|
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Removes the underscore from the variable name.
|
||||
/// </summary>
|
||||
public static string GetVariableName(string name) |
||||
{ |
||||
if (!String.IsNullOrEmpty(name)) { |
||||
if (name.Length > 1) { |
||||
if (name[0] == '_') { |
||||
return name.Substring(1); |
||||
} |
||||
} |
||||
} |
||||
return name; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the fully qualified name being referenced in the MemberExpression.
|
||||
/// </summary>
|
||||
public static string GetMemberName(MemberExpression expression) |
||||
{ |
||||
StringBuilder typeName = new StringBuilder(); |
||||
|
||||
while (expression != null) { |
||||
typeName.Insert(0, expression.Name); |
||||
typeName.Insert(0, "."); |
||||
|
||||
NameExpression nameExpression = expression.Target as NameExpression; |
||||
expression = expression.Target as MemberExpression; |
||||
if (expression == null) { |
||||
if (nameExpression != null) { |
||||
typeName.Insert(0, nameExpression.Name); |
||||
} |
||||
} |
||||
} |
||||
|
||||
return typeName.ToString(); |
||||
} |
||||
} |
||||
} |
@ -1,33 +0,0 @@
@@ -1,33 +0,0 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Drawing; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Description of PythonFormVisitor.
|
||||
/// </summary>
|
||||
public class PythonFormVisitor |
||||
{ |
||||
public PythonFormVisitor() |
||||
{ |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Creates a form from python code.
|
||||
/// </summary>
|
||||
public Form CreateForm(string pythonCode, IComponentCreator componentCreator) |
||||
{ |
||||
Form form = (Form)componentCreator.CreateComponent(typeof(Form), "MainForm"); |
||||
form.Name = "MainForm"; |
||||
return form; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,196 @@
@@ -0,0 +1,196 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.ComponentModel; |
||||
using System.Drawing; |
||||
using System.Reflection; |
||||
using System.Text; |
||||
using System.Windows.Forms; |
||||
|
||||
using IronPython.Compiler.Ast; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Visits the code's Python AST and creates a Windows Form.
|
||||
/// </summary>
|
||||
public class PythonFormWalker : PythonWalker |
||||
{ |
||||
Form form; |
||||
PythonControlFieldExpression fieldExpression; |
||||
IComponentCreator componentCreator; |
||||
bool walkingAssignment; |
||||
Dictionary<string, object> createdObjects = new Dictionary<string, object>(); |
||||
|
||||
public PythonFormWalker(IComponentCreator componentCreator) |
||||
{ |
||||
this.componentCreator = componentCreator; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Creates a form from python code.
|
||||
/// </summary>
|
||||
public Form CreateForm(string pythonCode) |
||||
{ |
||||
PythonParser parser = new PythonParser(); |
||||
PythonAst ast = parser.CreateAst(@"Form.py", pythonCode); |
||||
ast.Walk(this); |
||||
|
||||
// Did we find the InitializeComponent method?
|
||||
if (form == null) { |
||||
throw new PythonFormWalkerException("Unable to find InitializeComponents method."); |
||||
} |
||||
|
||||
return form; |
||||
} |
||||
|
||||
public override bool Walk(ClassDefinition node) |
||||
{ |
||||
if (node.Body != null) { |
||||
node.Body.Walk(this); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public override bool Walk(FunctionDefinition node) |
||||
{ |
||||
if (IsInitializeComponentMethod(node)) { |
||||
form = (Form)componentCreator.CreateComponent(typeof(Form), "MainForm"); |
||||
node.Body.Walk(this); |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public override bool Walk(AssignmentStatement node) |
||||
{ |
||||
if (node.Left.Count > 0) { |
||||
MemberExpression memberExpression = node.Left[0] as MemberExpression; |
||||
if (memberExpression != null) { |
||||
fieldExpression = PythonControlFieldExpression.Create(memberExpression); |
||||
|
||||
walkingAssignment = true; |
||||
node.Right.Walk(this); |
||||
walkingAssignment = false; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public override bool Walk(ConstantExpression node) |
||||
{ |
||||
Control control = GetCurrentControl(); |
||||
SetPropertyValue(control, fieldExpression.MemberName, node.Value); |
||||
return false; |
||||
} |
||||
|
||||
Control GetCurrentControl() |
||||
{ |
||||
string variableName = PythonControlFieldExpression.GetVariableNameFromSelfReference(fieldExpression.FullMemberName); |
||||
if (variableName.Length > 0) { |
||||
return GetControl(variableName); |
||||
} |
||||
return form; |
||||
} |
||||
|
||||
public override bool Walk(CallExpression node) |
||||
{ |
||||
MemberExpression memberExpression = node.Target as MemberExpression; |
||||
if (memberExpression != null) { |
||||
string name = PythonControlFieldExpression.GetMemberName(memberExpression); |
||||
if (walkingAssignment) { |
||||
Type type = GetType(name); |
||||
List<object> args = GetArguments(node); |
||||
object instance = componentCreator.CreateInstance(type, args, fieldExpression.MemberName, false); |
||||
if (!SetPropertyValue(form, fieldExpression.MemberName, instance)) { |
||||
AddComponent(fieldExpression.MemberName, instance); |
||||
} |
||||
} else if (name == "self.Controls.Add") { |
||||
string controlName = PythonControlFieldExpression.GetControlNameBeingAdded(node); |
||||
form.Controls.Add(GetControl(controlName)); |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the arguments passed to the call expression.
|
||||
/// </summary>
|
||||
static List<object> GetArguments(CallExpression expression) |
||||
{ |
||||
List<object> args = new List<object>(); |
||||
foreach (Arg a in expression.Args) { |
||||
ConstantExpression constantExpression = a.Expression as ConstantExpression; |
||||
if (constantExpression != null) { |
||||
args.Add(constantExpression.Value); |
||||
} |
||||
} |
||||
return args; |
||||
} |
||||
|
||||
static bool IsInitializeComponentMethod(FunctionDefinition node) |
||||
{ |
||||
string name = node.Name.ToString().ToLowerInvariant(); |
||||
return name == "initializecomponent" || name == "initializecomponents"; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Sets the value of a form's property.
|
||||
/// </summary>
|
||||
bool SetPropertyValue(Control control, string name, object @value) |
||||
{ |
||||
PropertyInfo propertyInfo = control.GetType().GetProperty(name); |
||||
if (propertyInfo != null) { |
||||
propertyInfo.SetValue(control, @value, null); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
Type GetType(string typeName) |
||||
{ |
||||
Type type = componentCreator.GetType(typeName); |
||||
if (type == null) { |
||||
throw new PythonFormWalkerException(String.Format("Could not find type '{0}'.", typeName)); |
||||
} |
||||
return type; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Looks for the control with the specified name in the objects that have been
|
||||
/// created whilst processing the InitializeComponent method.
|
||||
/// </summary>
|
||||
Control GetControl(string name) |
||||
{ |
||||
object o = null; |
||||
if (createdObjects.TryGetValue(name, out o)) { |
||||
return o as Control; |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Adds a component to the list of created objects.
|
||||
/// </summary>
|
||||
void AddComponent(string name, object component) |
||||
{ |
||||
string variableName = PythonControlFieldExpression.GetVariableName(name); |
||||
componentCreator.Add(component as IComponent, variableName); |
||||
createdObjects.Add(variableName, component); |
||||
} |
||||
|
||||
static string GetFirstArgumentAsString(CallExpression node) |
||||
{ |
||||
List<object> args = GetArguments(node); |
||||
if (args.Count > 0) { |
||||
return args[0] as String; |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
/// <summary>
|
||||
/// Exception thrown by the PythonFormWalker class.
|
||||
/// </summary>
|
||||
public class PythonFormWalkerException : Exception |
||||
{ |
||||
public PythonFormWalkerException(string message) : base(message) |
||||
{ |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,92 @@
@@ -0,0 +1,92 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.ComponentModel; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.PythonBinding; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
[TestFixture] |
||||
public class LoadTextBoxTestFixture : LoadFormTestFixtureBase |
||||
{ |
||||
string pythonCode = "class MainForm(System.Windows.Forms.Form):\r\n" + |
||||
" def InitializeComponent(self):\r\n" + |
||||
" self._textBox1 = System.Windows.Forms.TextBox()\r\n" + |
||||
" self.SuspendLayout()\r\n" + |
||||
" # \r\n" + |
||||
" # textBox1\r\n" + |
||||
" # \r\n" + |
||||
" self._textBox1.Name = \"textBoxName\"\r\n" + |
||||
" # \r\n" + |
||||
" # form1\r\n" + |
||||
" # \r\n" + |
||||
" self.Name = \"form1\"\r\n" + |
||||
" self.Controls.Add(self._textBox1)\r\n" + |
||||
" self.ResumeLayout(False)\r\n"; |
||||
Form form; |
||||
TextBox textBox; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
form = walker.CreateForm(pythonCode); |
||||
if (form.Controls.Count > 0) { |
||||
textBox = form.Controls[0] as TextBox; |
||||
} |
||||
} |
||||
|
||||
[TestFixtureTearDown] |
||||
public void TearDownFixture() |
||||
{ |
||||
form.Dispose(); |
||||
} |
||||
|
||||
[Test] |
||||
public void TextBoxInstanceCreated() |
||||
{ |
||||
CreatedInstance instance = new CreatedInstance(typeof(TextBox), new List<object>(), "_textBox1", false); |
||||
Assert.Contains(instance, CreatedInstances); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddedComponentsContainsTextBox() |
||||
{ |
||||
CreatedInstance instance = GetCreatedInstance(typeof(TextBox)); |
||||
|
||||
AddedComponent component = new AddedComponent(instance.Object as IComponent, "textBox1"); |
||||
Assert.Contains(component, AddedComponents); |
||||
} |
||||
|
||||
[Test] |
||||
public void TextBoxAddedToForm() |
||||
{ |
||||
Assert.IsNotNull(textBox); |
||||
} |
||||
|
||||
[Test] |
||||
public void TextBoxObjectMatchesObjectAddedToComponentCreator() |
||||
{ |
||||
CreatedInstance instance = GetCreatedInstance(typeof(TextBox)); |
||||
Assert.AreSame(textBox, instance.Object as TextBox); |
||||
} |
||||
|
||||
[Test] |
||||
public void TextBoxName() |
||||
{ |
||||
Assert.AreEqual("textBoxName", textBox.Name); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.PythonBinding; |
||||
using IronPython.Compiler.Ast; |
||||
using Microsoft.Scripting; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that the PythonFormVisitor throws an exception if no InitializeComponent or
|
||||
/// InitializeComponent method can be found.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class MissingInitializeComponentMethodTestFixture : LoadFormTestFixtureBase |
||||
{ |
||||
string pythonCode = "from System.Windows.Forms import Form\r\n" + |
||||
"\r\n" + |
||||
"class MainForm(System.Windows.Forms.Form):\r\n" + |
||||
" def __init__(self):\r\n" + |
||||
" self.MissingMethod()\r\n" + |
||||
"\r\n" + |
||||
" def MissingMethod(self):\r\n" + |
||||
" pass\r\n"; |
||||
[Test] |
||||
[ExpectedException(typeof(PythonFormWalkerException))] |
||||
public void PythonFormWalkerExceptionThrown() |
||||
{ |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
walker.CreateForm(pythonCode); |
||||
Assert.Fail("Exception should have been thrown before this."); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Check that the PythonFormWalker does not try to walk the class body if it is null.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void ClassWithNoBody() |
||||
{ |
||||
ClassDefinition classDef = new ClassDefinition(new SymbolId(10), null, null); |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
walker.Walk(classDef); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Make sure we do not get an ArgumentOutOfRangeException when walking the
|
||||
/// AssignmentStatement.
|
||||
/// </summary>
|
||||
[Test] |
||||
public void NoLeftHandSideExpressionsInAssignment() |
||||
{ |
||||
List<Expression> lhs = new List<Expression>(); |
||||
AssignmentStatement assign = new AssignmentStatement(lhs.ToArray(), null); |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
walker.Walk(assign); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,87 @@
@@ -0,0 +1,87 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.CodeDom; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.PythonBinding; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.TextEditor; |
||||
using ICSharpCode.TextEditor.Document; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the code can be generated if there is no new line after the InitializeComponent method.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class NoNewLineAfterInitializeComponentMethodTestFixture |
||||
{ |
||||
IDocument document; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
using (TextEditorControl textEditor = new TextEditorControl()) { |
||||
document = textEditor.Document; |
||||
textEditor.Text = GetTextEditorCode(); |
||||
|
||||
PythonParser parser = new PythonParser(); |
||||
ICompilationUnit compilationUnit = parser.Parse(new DefaultProjectContent(), @"test.py", document.TextContent); |
||||
|
||||
using (Form form = new Form()) { |
||||
form.Name = "MainForm"; |
||||
form.ClientSize = new Size(499, 309); |
||||
|
||||
PythonDesignerGenerator.Merge(form, document, compilationUnit, new MockTextEditorProperties()); |
||||
} |
||||
} |
||||
} |
||||
|
||||
[Test] |
||||
public void GeneratedCode() |
||||
{ |
||||
string expectedCode = "from System.Windows.Forms import Form\r\n" + |
||||
"\r\n" + |
||||
"class MainForm(Form):\r\n" + |
||||
"\tdef __init__(self):\r\n" + |
||||
"\t\tself.InitializeComponent()\r\n" + |
||||
"\t\r\n" + |
||||
"\tdef InitializeComponent(self):\r\n" + |
||||
"\t\tself.SuspendLayout()\r\n" + |
||||
"\t\t# \r\n" + |
||||
"\t\t# MainForm\r\n" + |
||||
"\t\t# \r\n" + |
||||
"\t\tself.ClientSize = System.Drawing.Size(499, 309)\r\n" + |
||||
"\t\tself.Name = \"MainForm\"\r\n" + |
||||
"\t\tself.ResumeLayout(False)\r\n" + |
||||
"\t\tself.PerformLayout()\r\n"; |
||||
|
||||
Assert.AreEqual(expectedCode, document.TextContent); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// No new line after the pass statement for InitializeComponent method.
|
||||
/// </summary>
|
||||
string GetTextEditorCode() |
||||
{ |
||||
return "from System.Windows.Forms import Form\r\n" + |
||||
"\r\n" + |
||||
"class MainForm(Form):\r\n" + |
||||
"\tdef __init__(self):\r\n" + |
||||
"\t\tself.InitializeComponent()\r\n" + |
||||
"\t\r\n" + |
||||
"\tdef InitializeComponent(self):\r\n" + |
||||
"\t\tpass"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.ComponentModel; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.PythonBinding; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
/// <summary>
|
||||
/// When a text box is not added to the form's Control collection in InitializeComponent then:
|
||||
///
|
||||
/// 1) Text box should not be added to the form's Control collection when the form is created.
|
||||
/// 2) Text box should be registered with the designer via the IComponentCreator.Add method.
|
||||
/// 3) Text box should be created via the IComponentCreator.CreateInstance method.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class TextBoxNotAddedToFormTestFixture : LoadFormTestFixtureBase |
||||
{ |
||||
string pythonCode = "class MainForm(System.Windows.Forms.Form):\r\n" + |
||||
" def InitializeComponent(self):\r\n" + |
||||
" self._textBox1 = System.Windows.Forms.TextBox()\r\n" + |
||||
" self.SuspendLayout()\r\n" + |
||||
" # \r\n" + |
||||
" # textBox1\r\n" + |
||||
" # \r\n" + |
||||
" self._textBox1.Name = \"textBox1\"\r\n" + |
||||
" # \r\n" + |
||||
" # form1\r\n" + |
||||
" # \r\n" + |
||||
" self.ResumeLayout(False)\r\n"; |
||||
Form form; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
form = walker.CreateForm(pythonCode); |
||||
} |
||||
|
||||
[TestFixtureTearDown] |
||||
public void TearDownFixture() |
||||
{ |
||||
form.Dispose(); |
||||
} |
||||
|
||||
[Test] |
||||
public void AddedComponentsContainsTextBox() |
||||
{ |
||||
CreatedInstance instance = GetCreatedInstance(typeof(TextBox)); |
||||
|
||||
AddedComponent c = new AddedComponent(instance.Object as IComponent, "textBox1"); |
||||
Assert.Contains(c, AddedComponents); |
||||
} |
||||
|
||||
[Test] |
||||
public void TextBoxIsNotAddedToForm() |
||||
{ |
||||
Assert.AreEqual(0, form.Controls.Count); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.CodeDom; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.FormsDesigner; |
||||
using ICSharpCode.PythonBinding; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using ICSharpCode.TextEditor; |
||||
using ICSharpCode.TextEditor.Document; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that the indent information in the ITextEditorProperties is passed to the generator.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class TextEditorIndentPassedToGeneratorTestFixture |
||||
{ |
||||
IDocument document; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
using (FormsDesignerViewContent viewContent = new FormsDesignerViewContent(null, new MockOpenedFile("Test.py"))) { |
||||
viewContent.DesignerCodeFileContent = "class MainForm(Form):\r\n" + |
||||
" def __init__(self):\r\n" + |
||||
" self.InitializeComponent()\r\n" + |
||||
"\r\n" + |
||||
" def InitializeComponent(self):\r\n" + |
||||
" pass\r\n"; |
||||
|
||||
document = viewContent.DesignerCodeFileDocument; |
||||
|
||||
ParseInformation parseInfo = new ParseInformation(); |
||||
PythonParser parser = new PythonParser(); |
||||
ICompilationUnit compilationUnit = parser.Parse(new DefaultProjectContent(), @"test.py", document.TextContent); |
||||
parseInfo.SetCompilationUnit(compilationUnit); |
||||
|
||||
using (Form form = new Form()) { |
||||
form.Name = "MainForm"; |
||||
form.ClientSize = new Size(284, 264); |
||||
|
||||
MockTextEditorProperties textEditorProperties = new MockTextEditorProperties(); |
||||
textEditorProperties.ConvertTabsToSpaces = true; |
||||
textEditorProperties.IndentationSize = 1; |
||||
|
||||
DerivedPythonDesignerGenerator generator = new DerivedPythonDesignerGenerator(textEditorProperties); |
||||
generator.ParseInfoToReturnFromParseFileMethod = parseInfo; |
||||
generator.Attach(viewContent); |
||||
generator.MergeRootComponentChanges(form); |
||||
} |
||||
} |
||||
} |
||||
|
||||
[Test] |
||||
public void GeneratedCode() |
||||
{ |
||||
string expectedCode = "class MainForm(Form):\r\n" + |
||||
" def __init__(self):\r\n" + |
||||
" self.InitializeComponent()\r\n" + |
||||
"\r\n" + |
||||
" def InitializeComponent(self):\r\n" + |
||||
" self.SuspendLayout()\r\n" + |
||||
" # \r\n" + |
||||
" # MainForm\r\n" + |
||||
" # \r\n" + |
||||
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" + |
||||
" self.Name = \"MainForm\"\r\n" + |
||||
" self.ResumeLayout(False)\r\n" + |
||||
" self.PerformLayout()\r\n"; |
||||
|
||||
Assert.AreEqual(expectedCode, document.TextContent); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,46 @@
@@ -0,0 +1,46 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Drawing; |
||||
using System.IO; |
||||
using System.Windows.Forms; |
||||
|
||||
using ICSharpCode.PythonBinding; |
||||
using IronPython.Compiler.Ast; |
||||
using Microsoft.Scripting; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Designer |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that the PythonFormWalker throws a PythonFormWalkerException if a unknown type is used in the
|
||||
/// form.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class UnknownTypeTestFixture : LoadFormTestFixtureBase |
||||
{ |
||||
string pythonCode = "from System.Windows.Forms import Form\r\n" + |
||||
"\r\n" + |
||||
"class MainForm(System.Windows.Forms.Form):\r\n" + |
||||
" def __init__(self):\r\n" + |
||||
" self.InitializeComponent()\r\n" + |
||||
"\r\n" + |
||||
" def InitializeComponent(self):\r\n" + |
||||
" self.ClientSize = Unknown.Type(10)\r\n"; |
||||
[Test] |
||||
[ExpectedException(typeof(PythonFormWalkerException))] |
||||
public void PythonFormWalkerExceptionThrown() |
||||
{ |
||||
PythonFormWalker walker = new PythonFormWalker(this); |
||||
walker.CreateForm(pythonCode); |
||||
Assert.Fail("Exception should have been thrown before this."); |
||||
} |
||||
} |
||||
} |
@ -1,68 +0,0 @@
@@ -1,68 +0,0 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using Microsoft.Scripting.Runtime; |
||||
using System; |
||||
using System.CodeDom; |
||||
using System.CodeDom.Compiler; |
||||
using System.IO; |
||||
using IronPython; |
||||
using IronPython.Compiler; |
||||
using IronPython.Compiler.Ast; |
||||
using IronPython.Runtime; |
||||
using NUnit.Framework; |
||||
|
||||
namespace PythonBinding.Tests.Parsing |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the IronPython's parser.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class IronPythonParserTestFixture |
||||
{ |
||||
/// <summary>
|
||||
/// Cannot create PrintStatement for code com.
|
||||
/// </summary>
|
||||
// [Test]s
|
||||
// public void Test()
|
||||
// {
|
||||
// string pythonScript = "print 'Hello'";
|
||||
// PythonProvider provider = new PythonProvider();
|
||||
// CodeCompileUnit unit = provider.Parse(new StringReader(pythonScript));
|
||||
// }
|
||||
|
||||
[Test] |
||||
public void Test2() |
||||
{ |
||||
// string pythonScript = "print 'Hello'";
|
||||
// CompilerContext context = new CompilerContext();
|
||||
// Parser parser = Parser.FromString(null, context, pythonScript);
|
||||
// Statement statement = parser.ParseFileInput();
|
||||
} |
||||
|
||||
[Test] |
||||
public void Test3() |
||||
{ |
||||
// string pythonScript = "Console.WriteLine";
|
||||
// CompilerContext context = new CompilerContext();
|
||||
// Parser parser = Parser.FromString(null, context, pythonScript);
|
||||
// Statement statement = parser.ParseFileInput();
|
||||
// ResolveVisitor visitor = new ResolveVisitor();
|
||||
// statement.Walk(visitor);
|
||||
// Console.WriteLine(statement.GetType().FullName);
|
||||
} |
||||
} |
||||
|
||||
public class ResolveVisitor : PythonWalker |
||||
{ |
||||
public override bool Walk(NameExpression node) |
||||
{ |
||||
System.Console.WriteLine("NameExpression: " + node.Name); |
||||
return true; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.ComponentModel; |
||||
|
||||
namespace PythonBinding.Tests.Utils |
||||
{ |
||||
/// <summary>
|
||||
/// Component passed to the IComponentCreator.Add method.
|
||||
/// </summary>
|
||||
public class AddedComponent |
||||
{ |
||||
public AddedComponent(IComponent component, string name) |
||||
{ |
||||
Component = component; |
||||
Name = name; |
||||
} |
||||
|
||||
public string Name { get; set; } |
||||
public IComponent Component { get; set; } |
||||
|
||||
public override bool Equals(object obj) |
||||
{ |
||||
AddedComponent rhs = obj as AddedComponent; |
||||
if (rhs != null) { |
||||
return Name == rhs.Name && Component == rhs.Component; |
||||
} |
||||
return base.Equals(obj); |
||||
} |
||||
|
||||
public override int GetHashCode() |
||||
{ |
||||
return Component.GetHashCode() ^ Name.GetHashCode(); |
||||
} |
||||
|
||||
public override string ToString() |
||||
{ |
||||
return "AddedComponent [Component=" + GetComponentTypeName() + "Name=" + Name + "]"; |
||||
} |
||||
|
||||
string GetComponentTypeName() |
||||
{ |
||||
if (Component != null) { |
||||
return Component.GetType().Name; |
||||
} |
||||
return "<null>"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Text; |
||||
|
||||
namespace PythonBinding.Tests.Utils |
||||
{ |
||||
/// <summary>
|
||||
/// Helper class that stores the parameters passed when the IComponentCreator.CreateInstance method is called.
|
||||
/// </summary>
|
||||
public class CreatedInstance |
||||
{ |
||||
public CreatedInstance(Type type, ICollection arguments, string name, bool addToContainer) |
||||
{ |
||||
InstanceType = type; |
||||
Arguments = arguments; |
||||
Name = name; |
||||
AddToContainer = addToContainer; |
||||
} |
||||
|
||||
public Type InstanceType { get; set; } |
||||
public ICollection Arguments { get; set; } |
||||
public string Name { get; set; } |
||||
public bool AddToContainer { get; set; } |
||||
public object Object { get; set; } |
||||
|
||||
public override bool Equals(object obj) |
||||
{ |
||||
CreatedInstance rhs = obj as CreatedInstance; |
||||
if (rhs != null) { |
||||
return ToString() == rhs.ToString(); |
||||
} |
||||
return base.Equals(obj); |
||||
} |
||||
|
||||
public override int GetHashCode() |
||||
{ |
||||
return InstanceType.GetHashCode(); |
||||
} |
||||
|
||||
public override string ToString() |
||||
{ |
||||
return "CreatedInstance [Type=" + InstanceType + ", Name=" + Name + ArgsToString() + "]"; |
||||
} |
||||
|
||||
string ArgsToString() |
||||
{ |
||||
StringBuilder s = new StringBuilder(); |
||||
s.Append("[Args="); |
||||
|
||||
bool firstArg = true; |
||||
foreach (object o in Arguments) { |
||||
if (!firstArg) { |
||||
s.Append(", "); |
||||
} |
||||
s.Append(o); |
||||
firstArg = false; |
||||
} |
||||
s.Append("]"); |
||||
return s.ToString(); |
||||
} |
||||
} |
||||
} |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,177 @@
@@ -0,0 +1,177 @@
|
||||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} |
||||
{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} |
||||
{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} |
||||
{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} |
||||
{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} |
||||
{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} |
||||
{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} |
||||
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} |
||||
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} |
||||
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} |
||||
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} |
||||
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} |
||||
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;} |
||||
{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;} |
||||
{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} |
||||
{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} |
||||
{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} |
||||
{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} |
||||
{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} |
||||
{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} |
||||
{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} |
||||
{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} |
||||
{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} |
||||
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} |
||||
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} |
||||
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} |
||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; |
||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1 |
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 |
||||
\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* |
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 |
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 |
||||
\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}}{\*\rsidtbl \rsid11612883}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author dinov}{\operator dinov} |
||||
{\creatim\yr2007\mo10\dy30\hr14\min43}{\revtim\yr2007\mo10\dy30\hr14\min43}{\version2}{\edmins1}{\nofpages2}{\nofwords404}{\nofchars2212}{\*\company Microsoft}{\nofcharsws2611}{\vern32893}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/200 |
||||
3/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect |
||||
\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 |
||||
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot11612883 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 |
||||
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 |
||||
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang |
||||
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sb100\sa100\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 |
||||
\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\f0\fs28\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 Microsoft }{\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 |
||||
\b\f0\fs28\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 Public }{\rtlch\fcs1 \ab\af0\afs28 \ltrch\fcs0 \b\f0\fs28\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 License (Ms-PL) |
||||
\par }{\rtlch\fcs1 \ab\af0\afs24 \ltrch\fcs0 \b\f0\fs24\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 |
||||
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.}{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\insrsid11612883 |
||||
\par }{\rtlch\fcs1 \ab\af0\afs36 \ltrch\fcs0 \b\f0\fs36\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 1. Definitions |
||||
\par }{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 \hich\f0 The terms \'93\loch\f0 \hich\f0 reproduce,\'94\loch\f0 \hich\f0 \'93\loch\f0 \hich\f0 reproduction,\'94\loch\f0 \hich\f0 \'93 |
||||
\hich\af0\dbch\af31505\loch\f0 \hich\f0 derivative works,\'94\loch\f0 \hich\f0 and \'93\loch\f0 \hich\f0 distribution\'94\loch\f0 have the same meaning here as under U.S. copyright law. |
||||
\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 A \'93\loch\f0 \hich\f0 contribution\'94\loch\f0 is the original software, or any additions or changes to the software. |
||||
\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 A \'93\loch\f0 \hich\f0 contributor\'94\loch\f0 is any person that distributes its contribution under this\hich\af0\dbch\af31505\loch\f0 license. |
||||
\par \loch\af0\dbch\af31505\hich\f0 \'93\loch\f0 \hich\f0 Licensed patents\'94\loch\f0 are a contributor\hich\f0 \rquote \loch\f0 s patent claims that read directly on its contribution. |
||||
\par }{\rtlch\fcs1 \ab\af0\afs36 \ltrch\fcs0 \b\f0\fs36\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 2. Grant of Rights |
||||
\par }{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contrib |
||||
\hich\af0\dbch\af31505\loch\f0 utor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. |
||||
|
||||
\par \hich\af0\dbch\af31505\loch\f0 (B) Patent Grant- Subject to th\hich\af0\dbch\af31505\loch\f0 |
||||
e terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or o |
||||
\hich\af0\dbch\af31505\loch\f0 t\hich\af0\dbch\af31505\loch\f0 herwise dispose of its contribution in the software or derivative works of the contribution in the software. |
||||
\par }{\rtlch\fcs1 \ab\af0\afs36 \ltrch\fcs0 \b\f0\fs36\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 3. Conditions and Limitations |
||||
\par }{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\insrsid11612883 \hich\af0\dbch\af31505\loch\f0 (A) No Trademark License- This license does not grant you rights to use any contributors\hich\f0 \rquote \loch\f0 name, logo, or trademarks. |
||||
\par \hich\af0\dbch\af31505\loch\f0 (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. |
||||
\par \hich\af0\dbch\af31505\loch\f0 (C) If you distribute any portion of the software, you must ret\hich\af0\dbch\af31505\loch\f0 ain all copyright, patent, trademark, and attribution notices that are present in the software. |
||||
\par \hich\af0\dbch\af31505\loch\f0 (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with y\hich\af0\dbch\af31505\loch\f0 |
||||
our distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. |
||||
\par \hich\af0\dbch\af31505\loch\f0 \hich\f0 (E) The software is licensed \'93\loch\f0 \hich\f0 as-is.\'94\loch\f0 You bear the risk of using it. The contributors give \hich\af0\dbch\af31505\loch\f0 |
||||
no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantabil |
||||
\hich\af0\dbch\af31505\loch\f0 i\hich\af0\dbch\af31505\loch\f0 ty, fitness for a particular purpose and non-infringement. |
||||
\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\insrsid11612883 |
||||
\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8 |
||||
72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7 |
||||
2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b |
||||
44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7 |
||||
065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000 |
||||
00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08 |
||||
84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc |
||||
52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353 |
||||
bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468 |
||||
656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c |
||||
070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7 |
||||
29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65 |
||||
312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8 |
||||
a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04 |
||||
98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c |
||||
94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471 |
||||
7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671 |
||||
9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1 |
||||
e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5 |
||||
193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1 |
||||
17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2 |
||||
8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6 |
||||
6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a |
||||
668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847 |
||||
bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e |
||||
16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b |
||||
5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0 |
||||
8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2 |
||||
c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966 |
||||
0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b |
||||
7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb |
||||
9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0 |
||||
088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf |
||||
8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26 |
||||
ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0 |
||||
28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6 |
||||
345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93 |
||||
b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30 |
||||
254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74 |
||||
68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24 |
||||
51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198 |
||||
720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528 |
||||
a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000 |
||||
000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000 |
||||
002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468 |
||||
656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000 |
||||
00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000 |
||||
00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000} |
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d |
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 |
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 |
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} |
||||
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; |
||||
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9; |
||||
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7; |
||||
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference; |
||||
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000 |
||||
4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000 |
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000009055 |
||||
58f93d1bc801feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 |
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 |
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 |
||||
0000000000000000000000000000000000000000000000000105000000000000}} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue