diff --git a/src/Templates/working/content/console/.template.config/template.json b/src/Templates/working/content/console/.template.config/template.json
deleted file mode 100644
index fd228115a7..0000000000
--- a/src/Templates/working/content/console/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console" ],
- "identity": "XSharpBV.ConsoleTemplate.XSharp",
- "name": "XSharp Language Console Application",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS",
- "sourceName":"XSharp.Console",
- "shortName": "xsconsole",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/console/.vscode/launch.json b/src/Templates/working/content/console/.vscode/launch.json
deleted file mode 100644
index 26ef66dce7..0000000000
--- a/src/Templates/working/content/console/.vscode/launch.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-"version": "0.2.0",
- "configurations": [
- {
- "name": "X# Launch",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build",
- "program": "${workspaceFolder}/bin/net8.0/${workspaceFolderBasename}.dll",
- "console": "integratedTerminal",
- "stopAtEntry": false
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/console/.vscode/tasks.json b/src/Templates/working/content/console/.vscode/tasks.json
deleted file mode 100644
index 7e91fa7ebf..0000000000
--- a/src/Templates/working/content/console/.vscode/tasks.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-"version": "2.0.0",
- "tasks": [
- {
- "label": "build",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/${workspaceFolderBasename}.xsproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile",
- "group": {
- "kind": "build",
- "isDefault": true // Optionnal but useful to execute "build" with Ctrl+Shift+B
- },
- "presentation": {
- "reveal": "always", // Always show Terminal for the task
- "panel": "new" // Always open in a new panel
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/console/Program.prg b/src/Templates/working/content/console/Program.prg
deleted file mode 100644
index ebe7b6ab3c..0000000000
--- a/src/Templates/working/content/console/Program.prg
+++ /dev/null
@@ -1,17 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- Console.WriteLine("Hello World!")
- //
- VAR os := Environment.OSVersion
- Console.WriteLine("You are running on :")
- Console.WriteLine( "OS Version: " + os:Version:ToString() )
- Console.WriteLine( "OS Platform: " + os:Platform:ToString() )
- Console.WriteLine("Press any key to continue...")
- Console.ReadKey()
-
-
-
diff --git a/src/Templates/working/content/console/XSharp.Console.xsproj b/src/Templates/working/content/console/XSharp.Console.xsproj
deleted file mode 100644
index 2150e3797b..0000000000
--- a/src/Templates/working/content/console/XSharp.Console.xsproj
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- Exe
- net8.0
- enable
- enable
-
-
-
diff --git a/src/Templates/working/content/consoleCore/.template.config/template.json b/src/Templates/working/content/consoleCore/.template.config/template.json
deleted file mode 100644
index f0733495da..0000000000
--- a/src/Templates/working/content/consoleCore/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console", "X#" ],
- "identity": "XSharpBV.ConsoleCoreTemplate.XSharp",
- "name": "Console Application - Core Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# Core dialect.",
- "sourceName":"XSharp.ConsoleCore",
- "shortName": "xsconsolecore",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleCore/Program.prg b/src/Templates/working/content/consoleCore/Program.prg
deleted file mode 100644
index ebe7b6ab3c..0000000000
--- a/src/Templates/working/content/consoleCore/Program.prg
+++ /dev/null
@@ -1,17 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- Console.WriteLine("Hello World!")
- //
- VAR os := Environment.OSVersion
- Console.WriteLine("You are running on :")
- Console.WriteLine( "OS Version: " + os:Version:ToString() )
- Console.WriteLine( "OS Platform: " + os:Platform:ToString() )
- Console.WriteLine("Press any key to continue...")
- Console.ReadKey()
-
-
-
diff --git a/src/Templates/working/content/consoleCore/XSharp.ConsoleCore.xsproj b/src/Templates/working/content/consoleCore/XSharp.ConsoleCore.xsproj
deleted file mode 100644
index bd8bff3f4f..0000000000
--- a/src/Templates/working/content/consoleCore/XSharp.ConsoleCore.xsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- Exe
- net8.0
- enable
- Core
- enable
- True
- false
- false
- false
- false
- true
-
-
diff --git a/src/Templates/working/content/consoleFox/.template.config/template.json b/src/Templates/working/content/consoleFox/.template.config/template.json
deleted file mode 100644
index 49fcb5e75d..0000000000
--- a/src/Templates/working/content/consoleFox/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console", "X#" ],
- "identity": "XSharpBV.ConsoleFoxTemplate.XSharp",
- "name": "Console Application - VFP Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# VFP dialect.",
- "sourceName":"XSharp.ConsoleFox",
- "shortName": "xsconsolefox",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleFox/Program.prg b/src/Templates/working/content/consoleFox/Program.prg
deleted file mode 100644
index af18a912ad..0000000000
--- a/src/Templates/working/content/consoleFox/Program.prg
+++ /dev/null
@@ -1,19 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- ? "Hello World! Today is ",Date()
- //
- os = Environment.OSVersion
- ? "You are running on :"
- ? "OS Version: " + os.Version.ToString()
- ? "OS Platform: " + os.Platform.ToString()
- ? "Press any key to continue..."
- WAIT
- RETURN
-
-
-
-
diff --git a/src/Templates/working/content/consoleHarbour/.template.config/template.json b/src/Templates/working/content/consoleHarbour/.template.config/template.json
deleted file mode 100644
index 0814d74d85..0000000000
--- a/src/Templates/working/content/consoleHarbour/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console", "X#" ],
- "identity": "XSharpBV.ConsoleHarbourTemplate.XSharp",
- "name": "Console Application - Harbour Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# Harbour dialect.",
- "sourceName":"XSharp.ConsoleHarbour",
- "shortName": "xsconsoleharbour",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleHarbour/Program.prg b/src/Templates/working/content/consoleHarbour/Program.prg
deleted file mode 100644
index b471690363..0000000000
--- a/src/Templates/working/content/consoleHarbour/Program.prg
+++ /dev/null
@@ -1,19 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- ? "Hello World! Today is ",Today()
- //
- os = Environment.OSVersion
- ? "You are running on :"
- ? "OS Version: " + os.Version.ToString()
- ? "OS Platform: " + os.Platform.ToString()
- ? "Press any key to continue..."
- WAIT
- RETURN
-
-
-
-
diff --git a/src/Templates/working/content/consoleVFP/.template.config/template.json b/src/Templates/working/content/consoleVFP/.template.config/template.json
deleted file mode 100644
index 0f392517f6..0000000000
--- a/src/Templates/working/content/consoleVFP/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console" ],
- "identity": "XSharpBV.ConsoleVFPTemplate.XSharp",
- "name": "XSharp Language Console Application - VFP Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# VFP dialect.",
- "sourceName":"XSharp.ConsoleVFP",
- "shortName": "xsconsolevfp",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleVFP/.vscode/launch.json b/src/Templates/working/content/consoleVFP/.vscode/launch.json
deleted file mode 100644
index 26ef66dce7..0000000000
--- a/src/Templates/working/content/consoleVFP/.vscode/launch.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-"version": "0.2.0",
- "configurations": [
- {
- "name": "X# Launch",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build",
- "program": "${workspaceFolder}/bin/net8.0/${workspaceFolderBasename}.dll",
- "console": "integratedTerminal",
- "stopAtEntry": false
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/consoleVFP/.vscode/tasks.json b/src/Templates/working/content/consoleVFP/.vscode/tasks.json
deleted file mode 100644
index 7e91fa7ebf..0000000000
--- a/src/Templates/working/content/consoleVFP/.vscode/tasks.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-"version": "2.0.0",
- "tasks": [
- {
- "label": "build",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/${workspaceFolderBasename}.xsproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile",
- "group": {
- "kind": "build",
- "isDefault": true // Optionnal but useful to execute "build" with Ctrl+Shift+B
- },
- "presentation": {
- "reveal": "always", // Always show Terminal for the task
- "panel": "new" // Always open in a new panel
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/consoleVFP/Program.prg b/src/Templates/working/content/consoleVFP/Program.prg
deleted file mode 100644
index af18a912ad..0000000000
--- a/src/Templates/working/content/consoleVFP/Program.prg
+++ /dev/null
@@ -1,19 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- ? "Hello World! Today is ",Date()
- //
- os = Environment.OSVersion
- ? "You are running on :"
- ? "OS Version: " + os.Version.ToString()
- ? "OS Platform: " + os.Platform.ToString()
- ? "Press any key to continue..."
- WAIT
- RETURN
-
-
-
-
diff --git a/src/Templates/working/content/consoleVFP/XSharp.ConsoleVFP.xsproj b/src/Templates/working/content/consoleVFP/XSharp.ConsoleVFP.xsproj
deleted file mode 100644
index e3ce7b24ce..0000000000
--- a/src/Templates/working/content/consoleVFP/XSharp.ConsoleVFP.xsproj
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- Exe
- net8.0
- enable
- enable
- FoxPro
- true
- true
- true
- true
- true
- true
- True
-
-
-
-
-
-
-
diff --git a/src/Templates/working/content/consoleVO/.template.config/template.json b/src/Templates/working/content/consoleVO/.template.config/template.json
deleted file mode 100644
index 918786092a..0000000000
--- a/src/Templates/working/content/consoleVO/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console", "X#" ],
- "identity": "XSharpBV.ConsoleVOTemplate.XSharp",
- "name": "Console Application - Visual Objects Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# Visual Objects dialect.",
- "sourceName":"XSharp.ConsoleVO",
- "shortName": "xsconsolevo",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleVO/Program.prg b/src/Templates/working/content/consoleVO/Program.prg
deleted file mode 100644
index b471690363..0000000000
--- a/src/Templates/working/content/consoleVO/Program.prg
+++ /dev/null
@@ -1,19 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- ? "Hello World! Today is ",Today()
- //
- os = Environment.OSVersion
- ? "You are running on :"
- ? "OS Version: " + os.Version.ToString()
- ? "OS Platform: " + os.Platform.ToString()
- ? "Press any key to continue..."
- WAIT
- RETURN
-
-
-
-
diff --git a/src/Templates/working/content/consoleXPP/.template.config/template.json b/src/Templates/working/content/consoleXPP/.template.config/template.json
deleted file mode 100644
index 29ff76c53f..0000000000
--- a/src/Templates/working/content/consoleXPP/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "Console", "X#" ],
- "identity": "XSharpBV.ConsoleXPPTemplate.XSharp",
- "name": "Console Application - Xbase++ Dialect",
- "description": "A project for creating a command-line application that can run on .NET on Windows, Linux and macOS, with the X# Xbase++ dialect.",
- "sourceName":"XSharp.ConsoleXPP",
- "shortName": "xsconsolexpp",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "ConsoleApp1"
-}
diff --git a/src/Templates/working/content/consoleXPP/Program.prg b/src/Templates/working/content/consoleXPP/Program.prg
deleted file mode 100644
index af18a912ad..0000000000
--- a/src/Templates/working/content/consoleXPP/Program.prg
+++ /dev/null
@@ -1,19 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.Linq
-USING System.Text
-
-FUNCTION Start() AS VOID STRICT
- ? "Hello World! Today is ",Date()
- //
- os = Environment.OSVersion
- ? "You are running on :"
- ? "OS Version: " + os.Version.ToString()
- ? "OS Platform: " + os.Platform.ToString()
- ? "Press any key to continue..."
- WAIT
- RETURN
-
-
-
-
diff --git a/src/Templates/working/content/i_appmanifestinternal/.template.config/template.json b/src/Templates/working/content/i_appmanifestinternal/.template.config/template.json
new file mode 100644
index 0000000000..0c572d1f13
--- /dev/null
+++ b/src/Templates/working/content/i_appmanifestinternal/.template.config/template.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.AppManifestInternal",
+ "Name": "AppManifestInternal",
+ "Description": "A hidden app.manifest",
+ "SourceName": "AppManifestInternal",
+ "ShortName": "xsappmanifestinternali",
+ "Tags": {
+ "language": "X#",
+ "type": "item"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "app.manifest"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_appmanifestinternal/app.manifest b/src/Templates/working/content/i_appmanifestinternal/app.manifest
new file mode 100644
index 0000000000..a6b46bb755
--- /dev/null
+++ b/src/Templates/working/content/i_appmanifestinternal/app.manifest
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Templates/working/content/i_bitmap/.template.config/Bitmap.PNG b/src/Templates/working/content/i_bitmap/.template.config/Bitmap.PNG
new file mode 100644
index 0000000000..2332d23430
Binary files /dev/null and b/src/Templates/working/content/i_bitmap/.template.config/Bitmap.PNG differ
diff --git a/src/Templates/working/content/i_bitmap/.template.config/template.json b/src/Templates/working/content/i_bitmap/.template.config/template.json
new file mode 100644
index 0000000000..eff7ded178
--- /dev/null
+++ b/src/Templates/working/content/i_bitmap/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Bitmap",
+ "Name": "Bitmap",
+ "Description": "A Bitmap file",
+ "SourceName": "Bitmap",
+ "ShortName": "xsbitmapi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Bitmap.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Bitmap.bmp"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_bitmap/Bitmap.bmp b/src/Templates/working/content/i_bitmap/Bitmap.bmp
new file mode 100644
index 0000000000..912b1c1e98
Binary files /dev/null and b/src/Templates/working/content/i_bitmap/Bitmap.bmp differ
diff --git a/src/Templates/working/content/i_class/.template.config/Class.png b/src/Templates/working/content/i_class/.template.config/Class.png
new file mode 100644
index 0000000000..ca4b21465f
Binary files /dev/null and b/src/Templates/working/content/i_class/.template.config/Class.png differ
diff --git a/src/Templates/working/content/i_class/.template.config/template.json b/src/Templates/working/content/i_class/.template.config/template.json
new file mode 100644
index 0000000000..be788d8b60
--- /dev/null
+++ b/src/Templates/working/content/i_class/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Class",
+ "Name": "Class",
+ "Description": "An empty class definition",
+ "SourceName": "Class1",
+ "ShortName": "xsclassi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Class.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Class1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "Class1",
+ "fileRename": "Class1",
+ "defaultValue": "Class1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_class/Class1.prg b/src/Templates/working/content/i_class/Class1.prg
new file mode 100644
index 0000000000..fac2ea8179
--- /dev/null
+++ b/src/Templates/working/content/i_class/Class1.prg
@@ -0,0 +1,19 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The Class class.
+ ///
+ CLASS Class1
+
+ CONSTRUCTOR()
+ RETURN
+
+ END CLASS
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/i_classfox/.template.config/ClassFox.png b/src/Templates/working/content/i_classfox/.template.config/ClassFox.png
new file mode 100644
index 0000000000..50e570d94a
Binary files /dev/null and b/src/Templates/working/content/i_classfox/.template.config/ClassFox.png differ
diff --git a/src/Templates/working/content/i_classfox/.template.config/template.json b/src/Templates/working/content/i_classfox/.template.config/template.json
new file mode 100644
index 0000000000..7bb9f6695d
--- /dev/null
+++ b/src/Templates/working/content/i_classfox/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.ClassFox",
+ "Name": "ClassFox",
+ "Description": "An empty class definition using the VFP Class syntax",
+ "SourceName": "ClassFox1",
+ "ShortName": "xsclassfoxi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "ClassFox.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Class1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "Class1",
+ "fileRename": "Class1",
+ "defaultValue": "Class1"
+ }
+ },
+ "postActions": [
+ {
+ "description": "Adding mandatory NuGet package (only from Visual Studio)",
+ "actionId": "B1755282-45A0-4C2E-A430-D6E9419131AF",
+ "condition": "(HostIdentifier == \"vs\")",
+ "args": {
+ "packages": [
+ {
+ "id": "xsharp.vfp"
+ }
+ ]
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_classfox/ClassFox1.prg b/src/Templates/working/content/i_classfox/ClassFox1.prg
new file mode 100644
index 0000000000..0083a37bae
--- /dev/null
+++ b/src/Templates/working/content/i_classfox/ClassFox1.prg
@@ -0,0 +1,28 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The ClassFox class.
+ ///
+ DEFINE CLASS ClassFox
+ PROTECTED prop1 AS STRING // X# allows types
+ HIDDEN hiddenprop1 AS DATE
+ // This gets called from the (generated) constructor
+ PROCEDURE Init(p1 as STRING, p2 AS DATE) // X# allows to type the parameters
+ prop1 := p1
+ hiddenprop1 := p2
+
+
+ FUNCTION Compare (p1 as STRING, p2 as DATE) AS LOGIC
+ ? p1, p2
+ RETURN p1 == prop1 AND p2 == hiddenprop1
+
+
+ ENDDEFINE
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/i_classxpp/.template.config/ClassXpp.png b/src/Templates/working/content/i_classxpp/.template.config/ClassXpp.png
new file mode 100644
index 0000000000..ead8c65579
Binary files /dev/null and b/src/Templates/working/content/i_classxpp/.template.config/ClassXpp.png differ
diff --git a/src/Templates/working/content/i_classxpp/.template.config/template.json b/src/Templates/working/content/i_classxpp/.template.config/template.json
new file mode 100644
index 0000000000..d4bb034e49
--- /dev/null
+++ b/src/Templates/working/content/i_classxpp/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.ClassXpp",
+ "Name": "ClassXpp",
+ "Description": "An empty class definition using the Xbase\u002B\u002B class syntax",
+ "SourceName": "ClassXpp",
+ "ShortName": "xsclassxppi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "ClassXpp.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Class1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "Class1",
+ "fileRename": "Class1",
+ "defaultValue": "Class1"
+ }
+ },
+ "postActions": [
+ {
+ "description": "Adding mandatory NuGet package (only from Visual Studio)",
+ "actionId": "B1755282-45A0-4C2E-A430-D6E9419131AF",
+ "condition": "(HostIdentifier == \"vs\")",
+ "args": {
+ "packages": [
+ {
+ "id": "xsharp.xpp"
+ }
+ ]
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_classxpp/ClassXpp.prg b/src/Templates/working/content/i_classxpp/ClassXpp.prg
new file mode 100644
index 0000000000..cb713337d6
--- /dev/null
+++ b/src/Templates/working/content/i_classxpp/ClassXpp.prg
@@ -0,0 +1,38 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+// X# allows to group class inside namespaces. Namespaces are optional.
+// You can also delete the BEGIN NAMESPACE .. END NAMESPACE block
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The ClassXpp class.
+ ///
+ CLASS ClassXpp
+ EXPORTED:
+ // Instance variables
+ VAR a,b
+ // Class variables
+ CLASS VAR c,d
+ // Declare methods
+ METHOD Init
+ CLASS METHOD InitClass
+ ::a := "foo"
+ ::b := Date()
+ ENDCLASS
+ // Implement constructor
+ METHOD ClassXpp:Init()
+ ::c := 42
+ ::d := TRUE
+ RETURN
+
+ // implement class constructor
+ CLASS METHOD ClassXpp:InitClass()
+ RETURN
+
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/i_codefile/.template.config/Code.png b/src/Templates/working/content/i_codefile/.template.config/Code.png
new file mode 100644
index 0000000000..cd049435fb
Binary files /dev/null and b/src/Templates/working/content/i_codefile/.template.config/Code.png differ
diff --git a/src/Templates/working/content/i_codefile/.template.config/template.json b/src/Templates/working/content/i_codefile/.template.config/template.json
new file mode 100644
index 0000000000..91479d0f53
--- /dev/null
+++ b/src/Templates/working/content/i_codefile/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.CodeFile",
+ "Name": "CodeFile",
+ "Description": "An empty Code File",
+ "SourceName": "CodeFile",
+ "ShortName": "xscodefilei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Code.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "CodeFile.prg"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_codefile/CodeFile.prg b/src/Templates/working/content/i_codefile/CodeFile.prg
new file mode 100644
index 0000000000..e816faf3f9
--- /dev/null
+++ b/src/Templates/working/content/i_codefile/CodeFile.prg
@@ -0,0 +1,9 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+FUNCTION CodeFile AS VOID
+ RETURN
diff --git a/src/Templates/working/content/i_cursor/.template.config/Cursor.PNG b/src/Templates/working/content/i_cursor/.template.config/Cursor.PNG
new file mode 100644
index 0000000000..d4d5014b0a
Binary files /dev/null and b/src/Templates/working/content/i_cursor/.template.config/Cursor.PNG differ
diff --git a/src/Templates/working/content/i_cursor/.template.config/template.json b/src/Templates/working/content/i_cursor/.template.config/template.json
new file mode 100644
index 0000000000..9b8b2a9cef
--- /dev/null
+++ b/src/Templates/working/content/i_cursor/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Cursor",
+ "Name": "Cursor",
+ "Description": "A Cursor file",
+ "SourceName": "Cursor",
+ "ShortName": "xscursori",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Cursor.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Cursor.cur"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_cursor/cursor.cur b/src/Templates/working/content/i_cursor/cursor.cur
new file mode 100644
index 0000000000..048f06b4ae
Binary files /dev/null and b/src/Templates/working/content/i_cursor/cursor.cur differ
diff --git a/src/Templates/working/content/i_flowdocument/.template.config/WPFFlowDocument.png b/src/Templates/working/content/i_flowdocument/.template.config/WPFFlowDocument.png
new file mode 100644
index 0000000000..4d77d47da7
Binary files /dev/null and b/src/Templates/working/content/i_flowdocument/.template.config/WPFFlowDocument.png differ
diff --git a/src/Templates/working/content/i_flowdocument/.template.config/template.json b/src/Templates/working/content/i_flowdocument/.template.config/template.json
new file mode 100644
index 0000000000..9ccf71bb52
--- /dev/null
+++ b/src/Templates/working/content/i_flowdocument/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.FlowDocument",
+ "Name": "Flow Document (WPF)",
+ "Description": "Dynamically formatted XAML document",
+ "SourceName": "Flow Document (WPF)",
+ "ShortName": "xsflowdocumenti",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFFlowDocument.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "FlowDocument.xaml"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_flowdocument/FlowDocument1.xaml b/src/Templates/working/content/i_flowdocument/FlowDocument1.xaml
new file mode 100644
index 0000000000..0a9f47a225
--- /dev/null
+++ b/src/Templates/working/content/i_flowdocument/FlowDocument1.xaml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/i_form/.template.config/Form.png b/src/Templates/working/content/i_form/.template.config/Form.png
new file mode 100644
index 0000000000..06a5012e95
Binary files /dev/null and b/src/Templates/working/content/i_form/.template.config/Form.png differ
diff --git a/src/Templates/working/content/i_form/.template.config/template.json b/src/Templates/working/content/i_form/.template.config/template.json
new file mode 100644
index 0000000000..89e8bd5b30
--- /dev/null
+++ b/src/Templates/working/content/i_form/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Form",
+ "Name": "Windows Forms Form",
+ "Description": "A Windows form with separate designer.prg",
+ "SourceName": "Form1",
+ "ShortName": "xsformi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Form.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Form1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "Form1",
+ "fileRename": "Form1",
+ "defaultValue": "Form1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/winformctrli/UserControl1.designer.prg b/src/Templates/working/content/i_form/Form1.designer.prg
similarity index 74%
rename from src/Templates/working/content/winformctrli/UserControl1.designer.prg
rename to src/Templates/working/content/i_form/Form1.designer.prg
index 109b19c1e4..63b42b5693 100644
--- a/src/Templates/working/content/winformctrli/UserControl1.designer.prg
+++ b/src/Templates/working/content/i_form/Form1.designer.prg
@@ -1,19 +1,19 @@
-begin namespace XSharp.WinFormsCtrlI
+begin namespace Company.Namespace1
- partial class UserControl1
+ partial class Form1
///
/// Required designer variable.
///
- private components := NULL as System.ComponentModel.IContainer
+ private components := null as System.ComponentModel.IContainer
///
/// Clean up any resources being used.
///
/// true if managed resources should be disposed; otherwise, false.
- protected override method Dispose(disposing as logic) as void STRICT
+ protected override method Dispose(disposing as logic) as void strict
- if (disposing .AND. (components != null))
+ if (disposing .and. (components != null))
components:Dispose()
endif
Super:Dispose(disposing)
@@ -25,12 +25,13 @@
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
- private method InitializeComponent() as void STRICT
+ private method InitializeComponent() as void strict
self:components := System.ComponentModel.Container{}
self:AutoScaleMode := System.Windows.Forms.AutoScaleMode.Font
+ self:Text := "Windows Forms Form"
return
end method
#endregion
end class
-END NAMESPACE
+end namespace
diff --git a/src/Templates/working/content/i_form/Form1.prg b/src/Templates/working/content/i_form/Form1.prg
new file mode 100644
index 0000000000..0ec444ac80
--- /dev/null
+++ b/src/Templates/working/content/i_form/Form1.prg
@@ -0,0 +1,22 @@
+using System
+using System.Collections.Generic
+using System.ComponentModel
+using System.Data
+using System.Drawing
+using System.Linq
+
+using System.Text
+using System.Threading.Tasks
+
+using System.Windows.Forms
+
+begin namespace Company.Namespace1
+
+ public partial class Form inherit System.Windows.Forms.Form
+
+ public constructor() strict
+ SELF:InitializeComponent()
+ return
+ end constructor
+ end class
+end namespace
diff --git a/src/Templates/working/content/i_formsimple/.template.config/Form.png b/src/Templates/working/content/i_formsimple/.template.config/Form.png
new file mode 100644
index 0000000000..09d4c82d52
Binary files /dev/null and b/src/Templates/working/content/i_formsimple/.template.config/Form.png differ
diff --git a/src/Templates/working/content/i_formsimple/.template.config/template.json b/src/Templates/working/content/i_formsimple/.template.config/template.json
new file mode 100644
index 0000000000..23ed23a414
--- /dev/null
+++ b/src/Templates/working/content/i_formsimple/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.FormSimple",
+ "Name": "Windows Forms Simple Form",
+ "Description": "A simple Windows Forms Form without designer.prg",
+ "SourceName": "SimpleForm1",
+ "ShortName": "xsformsimplei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Form.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "SimpleForm1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "SimpleForm1",
+ "fileRename": "SimpleForm1",
+ "defaultValue": "SimpleForm1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_formsimple/SimpleForm1.prg b/src/Templates/working/content/i_formsimple/SimpleForm1.prg
new file mode 100644
index 0000000000..a21ad1383e
--- /dev/null
+++ b/src/Templates/working/content/i_formsimple/SimpleForm1.prg
@@ -0,0 +1,53 @@
+using System
+using System.Collections.Generic
+using System.ComponentModel
+using System.Data
+using System.Drawing
+using System.Linq
+
+using System.Text
+using System.Threading.Tasks
+
+using System.Windows.Forms
+
+begin namespace Company.Namespace1
+
+ public partial class Windows Forms Simple Form inherit System.Windows.Forms.Form
+
+ public constructor() strict
+ SELF:InitializeComponent()
+ return
+ end constructor
+ ///
+ /// Required designer variable.
+ ///
+ private components := null as System.ComponentModel.IContainer
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override method Dispose(disposing as logic) as void strict
+
+ if (disposing .and. (components != null))
+ components:Dispose()
+ endif
+ Super:Dispose(disposing)
+ return
+ end method
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private method InitializeComponent() as void strict
+ self:components := System.ComponentModel.Container{}
+ self:AutoScaleMode := System.Windows.Forms.AutoScaleMode.Font
+ self:Text := "Windows Forms Simple Form"
+ return
+ end method
+
+ #endregion
+ end class
+end namespace
diff --git a/src/Templates/working/content/i_header/.template.config/Header.png b/src/Templates/working/content/i_header/.template.config/Header.png
new file mode 100644
index 0000000000..523f4c7751
Binary files /dev/null and b/src/Templates/working/content/i_header/.template.config/Header.png differ
diff --git a/src/Templates/working/content/i_header/.template.config/template.json b/src/Templates/working/content/i_header/.template.config/template.json
new file mode 100644
index 0000000000..c9a7211f88
--- /dev/null
+++ b/src/Templates/working/content/i_header/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Header",
+ "Name": "Header",
+ "Description": "An empty Header File",
+ "SourceName": "Header1",
+ "ShortName": "xsheaderi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Header.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Header1.xh"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_header/Header1.xh b/src/Templates/working/content/i_header/Header1.xh
new file mode 100644
index 0000000000..83e6b57e28
--- /dev/null
+++ b/src/Templates/working/content/i_header/Header1.xh
@@ -0,0 +1,3 @@
+// Header1.xh
+
+
diff --git a/src/Templates/working/content/i_icon/.template.config/Icon.PNG b/src/Templates/working/content/i_icon/.template.config/Icon.PNG
new file mode 100644
index 0000000000..8802f48401
Binary files /dev/null and b/src/Templates/working/content/i_icon/.template.config/Icon.PNG differ
diff --git a/src/Templates/working/content/i_icon/.template.config/template.json b/src/Templates/working/content/i_icon/.template.config/template.json
new file mode 100644
index 0000000000..2d73dd2f8a
--- /dev/null
+++ b/src/Templates/working/content/i_icon/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Icon",
+ "Name": "Icon",
+ "Description": "An Icon file",
+ "SourceName": "Icon",
+ "ShortName": "xsiconi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Icon.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Icon.ico"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_icon/Icon.ico b/src/Templates/working/content/i_icon/Icon.ico
new file mode 100644
index 0000000000..5d06b9f285
Binary files /dev/null and b/src/Templates/working/content/i_icon/Icon.ico differ
diff --git a/src/Templates/working/content/i_interface/.template.config/Interface.png b/src/Templates/working/content/i_interface/.template.config/Interface.png
new file mode 100644
index 0000000000..eee64c55b5
Binary files /dev/null and b/src/Templates/working/content/i_interface/.template.config/Interface.png differ
diff --git a/src/Templates/working/content/i_interface/.template.config/template.json b/src/Templates/working/content/i_interface/.template.config/template.json
new file mode 100644
index 0000000000..9f83e25f05
--- /dev/null
+++ b/src/Templates/working/content/i_interface/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Interface",
+ "Name": "Interface",
+ "Description": "An empty interface definition",
+ "SourceName": "Interface1",
+ "ShortName": "xsinterfacei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Interface.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Interface1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and Interface.",
+ "datatype": "string",
+ "replaces": "Interface1",
+ "fileRename": "Interface1",
+ "defaultValue": "Interface1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_interface/Interface1.prg b/src/Templates/working/content/i_interface/Interface1.prg
new file mode 100644
index 0000000000..1775dfc557
--- /dev/null
+++ b/src/Templates/working/content/i_interface/Interface1.prg
@@ -0,0 +1,17 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The Interface interface.
+ ///
+ INTERFACE Interface
+
+
+ END INTERFACE
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/i_internal/.template.config/template.json b/src/Templates/working/content/i_internal/.template.config/template.json
new file mode 100644
index 0000000000..e27a7b82b8
--- /dev/null
+++ b/src/Templates/working/content/i_internal/.template.config/template.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Settings.Internal",
+ "Name": "Settings Internal",
+ "Description": "A hidden settings file",
+ "SourceName": "Settings Internal",
+ "ShortName": "xsinternali",
+ "Tags": {
+ "language": "X#",
+ "type": "item"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Settings.settings"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_internal/Resource.resX b/src/Templates/working/content/i_internal/Resource.resX
new file mode 100644
index 0000000000..4fdb1b6aff
--- /dev/null
+++ b/src/Templates/working/content/i_internal/Resource.resX
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/i_internal/Settings.settings b/src/Templates/working/content/i_internal/Settings.settings
new file mode 100644
index 0000000000..049245f401
--- /dev/null
+++ b/src/Templates/working/content/i_internal/Settings.settings
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Templates/working/content/i_nativeresource/.template.config/Rc.PNG b/src/Templates/working/content/i_nativeresource/.template.config/Rc.PNG
new file mode 100644
index 0000000000..32374afe2a
Binary files /dev/null and b/src/Templates/working/content/i_nativeresource/.template.config/Rc.PNG differ
diff --git a/src/Templates/working/content/i_nativeresource/.template.config/template.json b/src/Templates/working/content/i_nativeresource/.template.config/template.json
new file mode 100644
index 0000000000..4a31d585e9
--- /dev/null
+++ b/src/Templates/working/content/i_nativeresource/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.NativeResource",
+ "Name": "Native Resource File (.rc)",
+ "Description": "A file in which native resources can be defined",
+ "SourceName": "NativeResources1",
+ "ShortName": "xsnativeresourcei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Rc.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "NativeResources1.rc"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_nativeresource/NativeResources1.rc b/src/Templates/working/content/i_nativeresource/NativeResources1.rc
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/Templates/working/content/i_page/.template.config/WPFPage.png b/src/Templates/working/content/i_page/.template.config/WPFPage.png
new file mode 100644
index 0000000000..e24a84a72c
Binary files /dev/null and b/src/Templates/working/content/i_page/.template.config/WPFPage.png differ
diff --git a/src/Templates/working/content/i_page/.template.config/template.json b/src/Templates/working/content/i_page/.template.config/template.json
new file mode 100644
index 0000000000..7536c1b596
--- /dev/null
+++ b/src/Templates/working/content/i_page/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.Page",
+ "Name": "Page (WPF)",
+ "Description": "Windows Presentation Foundation page",
+ "SourceName": "Page1",
+ "ShortName": "xspagei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFPage.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Page1.xaml",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and page.",
+ "datatype": "string",
+ "replaces": "Page1",
+ "fileRename": "Page1",
+ "defaultValue": "Page1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_page/Page1.xaml b/src/Templates/working/content/i_page/Page1.xaml
new file mode 100644
index 0000000000..76a133ec55
--- /dev/null
+++ b/src/Templates/working/content/i_page/Page1.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/src/Templates/working/content/wpfapp/MainWindow.xaml.prg b/src/Templates/working/content/i_page/Page1.xaml.prg
similarity index 51%
rename from src/Templates/working/content/wpfapp/MainWindow.xaml.prg
rename to src/Templates/working/content/i_page/Page1.xaml.prg
index 016df9ab94..72080a1a7d 100644
--- a/src/Templates/working/content/wpfapp/MainWindow.xaml.prg
+++ b/src/Templates/working/content/i_page/Page1.xaml.prg
@@ -1,4 +1,8 @@
-using System.Text
+using System
+using System.Collections.Generic
+using System.Linq
+using System.Text
+using System.Threading.Tasks
using System.Windows
using System.Windows.Controls
using System.Windows.Data
@@ -9,18 +13,17 @@ using System.Windows.Media.Imaging
using System.Windows.Navigation
using System.Windows.Shapes
-BEGIN NAMESPACE XSharp.WpfCore
+begin namespace Company.Namespace1
///
- /// Interaction logic for MainWindow.xaml
+ /// Interaction logic for Page1.xaml
///
- PUBLIC PARTIAL CLASS MainWindow INHERIT Window
-
- PUBLIC CONSTRUCTOR()
-
+ public partial class Page1 INHERIT Page
+
+ public CONSTRUCTOR() STRICT //Page1()
InitializeComponent()
- END CONSTRUCTOR
-
- END CLASS
+ RETURN
+
-END NAMESPACE
\ No newline at end of file
+ end class
+End NameSpace
diff --git a/src/Templates/working/content/i_pagefunction/.template.config/WPFPageFunction.png b/src/Templates/working/content/i_pagefunction/.template.config/WPFPageFunction.png
new file mode 100644
index 0000000000..7611b14668
Binary files /dev/null and b/src/Templates/working/content/i_pagefunction/.template.config/WPFPageFunction.png differ
diff --git a/src/Templates/working/content/i_pagefunction/.template.config/template.json b/src/Templates/working/content/i_pagefunction/.template.config/template.json
new file mode 100644
index 0000000000..612704f236
--- /dev/null
+++ b/src/Templates/working/content/i_pagefunction/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.PageFunction",
+ "Name": "Page Function (WPF)",
+ "Description": "Windows Presentation Foundation page function",
+ "SourceName": "PageFunction1",
+ "ShortName": "xspagefunctioni",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFPageFunction.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "PageFunction1.xaml"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_pagefunction/PageFunction1.xaml b/src/Templates/working/content/i_pagefunction/PageFunction1.xaml
new file mode 100644
index 0000000000..2b28d23ab4
--- /dev/null
+++ b/src/Templates/working/content/i_pagefunction/PageFunction1.xaml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/i_pagefunction/PageFunction1.xaml.prg b/src/Templates/working/content/i_pagefunction/PageFunction1.xaml.prg
new file mode 100644
index 0000000000..16bf6621a6
--- /dev/null
+++ b/src/Templates/working/content/i_pagefunction/PageFunction1.xaml.prg
@@ -0,0 +1,27 @@
+using System
+using System.Collections.Generic
+using System.Linq
+using System.Text
+using System.Threading.Tasks
+using System.Windows
+using System.Windows.Controls
+using System.Windows.Data
+using System.Windows.Documents
+using System.Windows.Input
+using System.Windows.Media
+using System.Windows.Media.Imaging
+using System.Windows.Navigation
+using System.Windows.Shapes
+
+begin namespace Company.Namespace1
+
+ ///
+ /// Interaction logic for Page Function (WPF).xaml
+ ///
+ public partial class Page Function (WPF) inherit PageFunction
+
+ public constructor() STRICT
+ SELF:InitializeComponent()
+ return
+ end class
+end namespace
diff --git a/src/Templates/working/content/i_resource/.template.config/Resource.PNG b/src/Templates/working/content/i_resource/.template.config/Resource.PNG
new file mode 100644
index 0000000000..5f46306a2f
Binary files /dev/null and b/src/Templates/working/content/i_resource/.template.config/Resource.PNG differ
diff --git a/src/Templates/working/content/i_resource/.template.config/template.json b/src/Templates/working/content/i_resource/.template.config/template.json
new file mode 100644
index 0000000000..02a1ae9397
--- /dev/null
+++ b/src/Templates/working/content/i_resource/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Resource",
+ "Name": "Managed resource file (.resx)",
+ "Description": "A file to store managed resources",
+ "SourceName": "Resource1",
+ "ShortName": "xsresourcei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Resource.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Resource1.resx"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_resource/Resource1.resX b/src/Templates/working/content/i_resource/Resource1.resX
new file mode 100644
index 0000000000..4fdb1b6aff
--- /dev/null
+++ b/src/Templates/working/content/i_resource/Resource1.resX
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/i_resourcedictionary/.template.config/WPFResourceDictionary.png b/src/Templates/working/content/i_resourcedictionary/.template.config/WPFResourceDictionary.png
new file mode 100644
index 0000000000..82528357ad
Binary files /dev/null and b/src/Templates/working/content/i_resourcedictionary/.template.config/WPFResourceDictionary.png differ
diff --git a/src/Templates/working/content/i_resourcedictionary/.template.config/template.json b/src/Templates/working/content/i_resourcedictionary/.template.config/template.json
new file mode 100644
index 0000000000..b0543caa3b
--- /dev/null
+++ b/src/Templates/working/content/i_resourcedictionary/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.ResourceDictionary",
+ "Name": "Resource Dictionary (WPF)",
+ "Description": "XAML Resource Dictionary",
+ "SourceName": "ResourceDictionary1",
+ "ShortName": "xsresourcedictionaryi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFResourceDictionary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ResourceDictionary1.xaml"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_resourcedictionary/ResourceDictionary1.xaml b/src/Templates/working/content/i_resourcedictionary/ResourceDictionary1.xaml
new file mode 100644
index 0000000000..21a9970b46
--- /dev/null
+++ b/src/Templates/working/content/i_resourcedictionary/ResourceDictionary1.xaml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/Templates/working/content/i_structure/.template.config/Structure.png b/src/Templates/working/content/i_structure/.template.config/Structure.png
new file mode 100644
index 0000000000..8428f17c49
Binary files /dev/null and b/src/Templates/working/content/i_structure/.template.config/Structure.png differ
diff --git a/src/Templates/working/content/i_structure/.template.config/template.json b/src/Templates/working/content/i_structure/.template.config/template.json
new file mode 100644
index 0000000000..d3b2a0666e
--- /dev/null
+++ b/src/Templates/working/content/i_structure/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.Structure",
+ "Name": "Structure",
+ "Description": "An empty structure definition",
+ "SourceName": "Structure1",
+ "ShortName": "xsstructurei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Structure.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Structure1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and structure.",
+ "datatype": "string",
+ "replaces": "Structure1",
+ "fileRename": "Structure1",
+ "defaultValue": "Structure1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_structure/Structure1.prg b/src/Templates/working/content/i_structure/Structure1.prg
new file mode 100644
index 0000000000..69b7859214
--- /dev/null
+++ b/src/Templates/working/content/i_structure/Structure1.prg
@@ -0,0 +1,19 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The Structure1 structure.
+ ///
+ STRUCTURE Structure1
+
+ CONSTRUCTOR()
+ RETURN
+
+ END STRUCTURE
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/i_t4/.template.config/TextTemplate.png b/src/Templates/working/content/i_t4/.template.config/TextTemplate.png
new file mode 100644
index 0000000000..9c63993d35
Binary files /dev/null and b/src/Templates/working/content/i_t4/.template.config/TextTemplate.png differ
diff --git a/src/Templates/working/content/i_t4/.template.config/template.json b/src/Templates/working/content/i_t4/.template.config/template.json
new file mode 100644
index 0000000000..c9b08cf90d
--- /dev/null
+++ b/src/Templates/working/content/i_t4/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.T4",
+ "Name": "Text Template",
+ "Description": "A template for the T4 text template transformation system",
+ "SourceName": "TextTemplate1",
+ "ShortName": "xst4i",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "TextTemplate.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "TextTemplate1.tt"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_t4/TextTemplate1.tt b/src/Templates/working/content/i_t4/TextTemplate1.tt
new file mode 100644
index 0000000000..419ea82750
Binary files /dev/null and b/src/Templates/working/content/i_t4/TextTemplate1.tt differ
diff --git a/src/Templates/working/content/i_textfile/.template.config/Textfile.png b/src/Templates/working/content/i_textfile/.template.config/Textfile.png
new file mode 100644
index 0000000000..ebf92a5276
Binary files /dev/null and b/src/Templates/working/content/i_textfile/.template.config/Textfile.png differ
diff --git a/src/Templates/working/content/i_textfile/.template.config/template.json b/src/Templates/working/content/i_textfile/.template.config/template.json
new file mode 100644
index 0000000000..7bb178333c
--- /dev/null
+++ b/src/Templates/working/content/i_textfile/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.TextFile",
+ "Name": "TextFile",
+ "Description": "An empty text file",
+ "SourceName": "TextFile1",
+ "ShortName": "xstextfilei",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Textfile.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "TextFile1.txt"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_textfile/TextFile1.txt b/src/Templates/working/content/i_textfile/TextFile1.txt
new file mode 100644
index 0000000000..5f282702bb
--- /dev/null
+++ b/src/Templates/working/content/i_textfile/TextFile1.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/Templates/working/content/i_usercontrol/.template.config/UserControl.png b/src/Templates/working/content/i_usercontrol/.template.config/UserControl.png
new file mode 100644
index 0000000000..0186cab412
Binary files /dev/null and b/src/Templates/working/content/i_usercontrol/.template.config/UserControl.png differ
diff --git a/src/Templates/working/content/i_usercontrol/.template.config/template.json b/src/Templates/working/content/i_usercontrol/.template.config/template.json
new file mode 100644
index 0000000000..cc6ba2f97b
--- /dev/null
+++ b/src/Templates/working/content/i_usercontrol/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WinForms.UserControl",
+ "Name": "UserControl (WinForms)",
+ "Description": "Windows Forms User control",
+ "SourceName": "UserControl1",
+ "ShortName": "xsusercontroli",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "UserControl.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "UserControl1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "UserControl1",
+ "fileRename": "UserControl1",
+ "defaultValue": "UserControl1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_usercontrol/UserControl1.designer.prg b/src/Templates/working/content/i_usercontrol/UserControl1.designer.prg
new file mode 100644
index 0000000000..5a3a2cf398
--- /dev/null
+++ b/src/Templates/working/content/i_usercontrol/UserControl1.designer.prg
@@ -0,0 +1,31 @@
+begin namespace Company.Namespace1
+
+ partial class UserControl1
+ ///
+ /// Required designer variable.
+ ///
+ private instance components := null as System.ComponentModel.IContainer
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override method Dispose( disposing as logic ) as void strict
+ IF disposing .AND. components != null
+ components:Dispose()
+ endif
+ super:Dispose( disposing )
+ return
+ end method
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private method InitializeComponent() as void strict
+ self:components := System.ComponentModel.Container{}
+ self:AutoScaleMode := System.Windows.Forms.AutoScaleMode.Font
+ self:Text := "UserControl"
+ return
+ end method
+ end class
+end namespace
diff --git a/src/Templates/working/content/i_usercontrol/UserControl1.prg b/src/Templates/working/content/i_usercontrol/UserControl1.prg
new file mode 100644
index 0000000000..0786c19988
--- /dev/null
+++ b/src/Templates/working/content/i_usercontrol/UserControl1.prg
@@ -0,0 +1,24 @@
+using System
+using System.Collections.Generic
+using System.ComponentModel
+using System.Data
+using System.Drawing
+using System.Linq
+
+using System.Text
+using System.Threading.Tasks
+
+using System.Windows.Forms
+
+begin namespace Company.Namespace1
+
+ partial class UserControl1 inherit System.Windows.Forms.UserControl
+
+ public constructor() strict
+ SELF:InitializeComponent()
+ return
+ end constructor
+
+
+ end class
+end namespace
diff --git a/src/Templates/working/content/i_usercontrolwpf/.template.config/WPFUserControl.png b/src/Templates/working/content/i_usercontrolwpf/.template.config/WPFUserControl.png
new file mode 100644
index 0000000000..3697bf774f
Binary files /dev/null and b/src/Templates/working/content/i_usercontrolwpf/.template.config/WPFUserControl.png differ
diff --git a/src/Templates/working/content/i_usercontrolwpf/.template.config/template.json b/src/Templates/working/content/i_usercontrolwpf/.template.config/template.json
new file mode 100644
index 0000000000..5e614c04a2
--- /dev/null
+++ b/src/Templates/working/content/i_usercontrolwpf/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.UserControl",
+ "Name": "UserControl (WPF)",
+ "Description": "Windows Presentation Foundation user control",
+ "SourceName": "UserControl1",
+ "ShortName": "xsusercontroli",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFUserControl.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "UserControl1.xaml",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "UserControl1",
+ "fileRename": "UserControl1",
+ "defaultValue": "UserControl1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfctrl/UserControl1.xaml b/src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml
similarity index 69%
rename from src/Templates/working/content/wpfctrl/UserControl1.xaml
rename to src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml
index a45cb35aa5..992695bca3 100644
--- a/src/Templates/working/content/wpfctrl/UserControl1.xaml
+++ b/src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml
@@ -1,11 +1,11 @@
-
+ d:DesignHeight="300" d:DesignWidth="300">
diff --git a/src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml.prg b/src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml.prg
new file mode 100644
index 0000000000..9c87439b5c
--- /dev/null
+++ b/src/Templates/working/content/i_usercontrolwpf/UserControl1.xaml.prg
@@ -0,0 +1,29 @@
+using System
+using System.Collections.Generic
+using System.Linq
+using System.Text
+using System.Threading.Tasks
+using System.Windows
+using System.Windows.Controls
+using System.Windows.Data
+using System.Windows.Documents
+using System.Windows.Input
+using System.Windows.Media
+using System.Windows.Media.Imaging
+using System.Windows.Navigation
+using System.Windows.Shapes
+
+begin namespace Company.Namespace1
+
+ ///
+ /// Interaction logic for UserControl1.xaml
+ ///
+ public partial class UserControl1 INHERIT UserControl
+
+ public CONSTRUCTOR() STRICT //UserControl1()
+ SELF:InitializeComponent()
+ RETURN
+
+
+ end class
+End NameSpace
diff --git a/src/Templates/working/content/i_vodbserver/.template.config/VODBServer.PNG b/src/Templates/working/content/i_vodbserver/.template.config/VODBServer.PNG
new file mode 100644
index 0000000000..cc50065e23
Binary files /dev/null and b/src/Templates/working/content/i_vodbserver/.template.config/VODBServer.PNG differ
diff --git a/src/Templates/working/content/i_vodbserver/.template.config/template.json b/src/Templates/working/content/i_vodbserver/.template.config/template.json
new file mode 100644
index 0000000000..e164b5d824
--- /dev/null
+++ b/src/Templates/working/content/i_vodbserver/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.VODBServer",
+ "Name": "VODBServer",
+ "Description": "An empty DBServer",
+ "SourceName": "VODBServer1",
+ "ShortName": "xsvodbserveri",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "VODBServer.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VODBServer1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "VODBServer1",
+ "fileRename": "VODBServer1",
+ "defaultValue": "VODBServer1"
+ }
+ },
+ "postActions": [
+ {
+ "description": "Adding mandatory NuGet package (only from Visual Studio)",
+ "actionId": "B1755282-45A0-4C2E-A430-D6E9419131AF",
+ "condition": "(HostIdentifier == \"vs\")",
+ "args": {
+ "packages": [
+ {
+ "id": "xsharp.vo"
+ }
+ ]
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_vodbserver/VODBServer1.prg b/src/Templates/working/content/i_vodbserver/VODBServer1.prg
new file mode 100644
index 0000000000..3ccef8f0d3
--- /dev/null
+++ b/src/Templates/working/content/i_vodbserver/VODBServer1.prg
@@ -0,0 +1,211 @@
+#ifndef __XSHARP_RT__
+#include "VOSystemClasses.vh"
+#include "VOSystemLibrary.vh"
+#endif
+
+CLASS VODBServer1 INHERIT DBSERVER
+ INSTANCE cDBFPath := "" AS STRING
+ INSTANCE cName := "VODBServer" AS STRING
+ INSTANCE xDriver := "DBFNTX" AS USUAL
+ INSTANCE lReadOnlyMode:= FALSE AS LOGIC
+ INSTANCE lSharedMode := NIL AS USUAL
+ INSTANCE nOrder := 0 AS INT
+
+
+CONSTRUCTOR(cDBF, lShare, lRO, xRdd)
+ LOCAL oFS AS FILESPEC
+ LOCAL i AS DWORD
+ LOCAL nFields AS DWORD
+ LOCAL aFieldDesc AS ARRAY
+ LOCAL aIndex AS ARRAY
+ LOCAL nIndexCount AS DWORD
+ LOCAL oFSIndex AS FILESPEC
+ LOCAL nPos AS DWORD
+ LOCAL lTemp AS LOGIC
+ LOCAL oFSTemp AS FILESPEC
+
+
+ IF IsLogic(lShare)
+ SELF:lSharedMode := lShare
+ ELSE
+ IF !IsLogic(SELF:lSharedMode)
+ SELF:lSharedMode := !SetExclusive()
+ ENDIF
+ ENDIF
+
+ IF IsLogic(lRO)
+ SELF:lReadOnlyMode := lRO
+ ENDIF
+
+ IF IsString(xRdd) .OR. IsArray(xRdd)
+ SELF:xDriver := xRdd
+ ENDIF
+
+ SELF:PreInit()
+
+ IF IsString(cDBF)
+ // UH 01/18/2000
+ oFSTemp := FileSpec{SELF:cDBFPath + SELF:cName}
+ oFS := FileSpec{cDBF}
+
+ IF SLen(oFS:Drive) = 0
+ oFS:Drive := CurDrive()
+ ENDIF
+ IF SLen(oFS:Path) = 0
+ oFS:Path := "\" + CurDir()
+ ENDIF
+
+ IF SLen(oFS:FileName) = 0
+ oFS:Filename := SELF:cName
+ ENDIF
+
+ IF oFS:FullPath == oFSTemp:Fullpath
+ lTemp := .T.
+ ELSE
+ IF Left(cDBF, 2) =="\\" // Unc path, for example \\Server\Share\FileName.DBF
+ SELF:cDBFPath := oFS:Path
+ ELSE
+ SELF:cDBFPath := oFS:Drive + oFS:Path
+ ENDIF
+ SELF:cName := oFS:FileName + oFS:Extension
+ oFS := FileSpec{SELF:cDBFPath + SELF:cName}
+ ENDIF
+ ELSE
+ oFS := FileSpec{SELF:cName}
+ oFS:Path := SELF:cDBFPath
+ ENDIF
+
+
+ SUPER(oFS, SELF:lSharedMode, SELF:lReadOnlyMode , SELF:xDriver )
+
+ oHyperLabel := HyperLabel{#VODBServer, "VODBServer", "VODBServer", "VODBServer"}
+
+ IF oHLStatus = NIL
+ nFields := ALen(aFieldDesc := SELF:FieldDesc)
+ FOR i:=1 UPTO nFields
+ nPos := SELF:FieldPos( aFieldDesc[i][DBC_NAME] )
+
+ SELF:SetDataField( nPos,;
+ DataField{aFieldDesc[i][DBC_SYMBOL],aFieldDesc[i][DBC_FIELDSPEC]} )
+
+ IF String2Symbol(aFieldDesc[i][DBC_NAME]) != aFieldDesc[i][DBC_SYMBOL]
+ SELF:FieldInfo(DBS_ALIAS, nPos, Symbol2String(aFieldDesc[i][DBC_SYMBOL]) )
+ ENDIF
+ NEXT
+
+ nIndexCount := ALen(aIndex:=SELF:IndexList)
+
+ FOR i:=1 UPTO nIndexCount
+ oFSIndex := FileSpec{ aIndex[i][DBC_INDEXNAME] }
+ oFSIndex:Path := SELF:cDBFPath
+
+ IF lTemp .AND. !Empty( aIndex[i][DBC_INDEXPATH] )
+ oFSIndex:Path := aIndex[i][DBC_INDEXPATH]
+ ENDIF
+
+ IF oFSIndex:Find()
+ lTemp := SELF:SetIndex( oFSIndex )
+ ENDIF
+ NEXT
+
+ // UH 01/18/2000
+ // SELF:nOrder > 0
+ IF lTemp .AND. SELF:nOrder > 0
+ SELF:SetOrder(SELF:nOrder)
+ ENDIF
+
+ SELF:GoTop()
+ ENDIF
+
+ SELF:PostInit()
+
+ RETURN
+
+
+OVERRIDE ACCESS FieldDesc
+ //
+ // Describes all fields selected by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nFields AS DWORD
+
+ nFields := 0
+
+ IF nFields > 0
+ aRet := ArrayCreate(nFields)
+
+ //
+ // The following code creates an array of field
+ // descriptors with these items for each
+ // selected field:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_SYMBOL
+ // DBC_NAME
+ // DBC_FIELDSPEC
+ //
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+
+ RETURN aRet
+
+
+OVERRIDE ACCESS IndexList
+ //
+ // Describes all index files created or selected
+ // by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nIndexCount AS DWORD
+
+ nIndexCount := 0
+
+ IF nIndexCount > 0
+ aRet := ArrayCreate(nIndexCount)
+
+ //
+ // The following code creates an array of index
+ // file descriptors with these items for each
+ // selected index file:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_INDEXNAME
+ // DBC_INDEXPATH
+ // DBC_ORDERS
+ //
+ // Array contains an array of
+ // order descriptors with these items for each
+ // order:
+ //
+ // { , , , , }
+ //
+ // Use following predefined constants to access
+ // aOrder subarrays:
+ //
+ // DBC_TAGNAME
+ // DBC_DUPLICATE
+ // DBC_ASCENDING
+ // DBC_KEYEXP
+ // DBC_FOREXP
+ //
+
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+ RETURN aRet
+
+
+END CLASS
diff --git a/src/Templates/working/content/i_vodbserver/VODBServer1.xsdbs b/src/Templates/working/content/i_vodbserver/VODBServer1.xsdbs
new file mode 100644
index 0000000000..fdc1ba3e7a
--- /dev/null
+++ b/src/Templates/working/content/i_vodbserver/VODBServer1.xsdbs
@@ -0,0 +1,21 @@
+
+
+
+ VODBServer
+ VODBServer.dbf
+ VODBServer
+ DBSERVER
+ VODBServer
+ VODBServer
+
+
+
+
+ DBFNTX
+ 0
+ No
+
+
+
+
+
diff --git a/src/Templates/working/content/i_vofieldspec/.template.config/VOFieldSpec.PNG b/src/Templates/working/content/i_vofieldspec/.template.config/VOFieldSpec.PNG
new file mode 100644
index 0000000000..cd11dbd439
Binary files /dev/null and b/src/Templates/working/content/i_vofieldspec/.template.config/VOFieldSpec.PNG differ
diff --git a/src/Templates/working/content/i_vofieldspec/.template.config/template.json b/src/Templates/working/content/i_vofieldspec/.template.config/template.json
new file mode 100644
index 0000000000..b4bc58281a
--- /dev/null
+++ b/src/Templates/working/content/i_vofieldspec/.template.config/template.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.VOFieldSpec",
+ "Name": "VOFieldSpec",
+ "Description": "An empty FieldSpec container file",
+ "SourceName": "VOFieldSpec",
+ "ShortName": "xsvofieldspeci",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "VOFieldSpec.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "Fieldspecs.prg"
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_vofieldspec/VOFieldSpec.prg b/src/Templates/working/content/i_vofieldspec/VOFieldSpec.prg
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/Templates/working/content/i_vofieldspec/VOFieldSpec.xsfs b/src/Templates/working/content/i_vofieldspec/VOFieldSpec.xsfs
new file mode 100644
index 0000000000..4f672202fc
--- /dev/null
+++ b/src/Templates/working/content/i_vofieldspec/VOFieldSpec.xsfs
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/i_vomenu/.template.config/VOMenu.PNG b/src/Templates/working/content/i_vomenu/.template.config/VOMenu.PNG
new file mode 100644
index 0000000000..facdfe2b9c
Binary files /dev/null and b/src/Templates/working/content/i_vomenu/.template.config/VOMenu.PNG differ
diff --git a/src/Templates/working/content/i_vomenu/.template.config/template.json b/src/Templates/working/content/i_vomenu/.template.config/template.json
new file mode 100644
index 0000000000..ab7be7c59c
--- /dev/null
+++ b/src/Templates/working/content/i_vomenu/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.VOMenu",
+ "Name": "VOMenu",
+ "Description": "An empty VO Menu",
+ "SourceName": "VOMenu",
+ "ShortName": "xsvomenui",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "VOMenu.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VOMenu.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "VOMenu",
+ "fileRename": "VOMenu",
+ "defaultValue": "VOMenu"
+ }
+ },
+ "postActions": [
+ {
+ "description": "Adding mandatory NuGet package (only from Visual Studio)",
+ "actionId": "B1755282-45A0-4C2E-A430-D6E9419131AF",
+ "condition": "(HostIdentifier == \"vs\")",
+ "args": {
+ "packages": [
+ {
+ "id": "xsharp.vo"
+ }
+ ]
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_vomenu/VOMenu.prg b/src/Templates/working/content/i_vomenu/VOMenu.prg
new file mode 100644
index 0000000000..9f072b16d3
--- /dev/null
+++ b/src/Templates/working/content/i_vomenu/VOMenu.prg
@@ -0,0 +1,21 @@
+#ifndef __XSHARP_RT__
+#include "VOGUIClasses.vh"
+#endif
+
+CLASS VOMenu INHERIT Menu
+
+CONSTRUCTOR( oOwner )
+
+ SELF:PreInit()
+
+ SUPER( ResourceID { "VOMenu" , _GetInst( ) } )
+
+#define IDM_VOMenu_File_ID 15001
+ SELF:RegisterItem(IDM_VOMenu_File_ID, ;
+ HyperLabel{ #VOMenu_File , "File" , NULL_STRING , NULL_STRING })
+
+ SELF:PostInit()
+
+ RETURN
+
+END CLASS
diff --git a/src/Templates/working/content/i_vomenu/VOMenu.rc b/src/Templates/working/content/i_vomenu/VOMenu.rc
new file mode 100644
index 0000000000..f9ee055fe6
--- /dev/null
+++ b/src/Templates/working/content/i_vomenu/VOMenu.rc
@@ -0,0 +1,6 @@
+
+#define IDM_VOMenu_File_ID 15001
+VOMenu MENU
+BEGIN
+ MENUITEM "File" , IDM_VOMenu_File_ID
+END
diff --git a/src/Templates/working/content/i_vomenu/VOMenu.xsmnu b/src/Templates/working/content/i_vomenu/VOMenu.xsmnu
new file mode 100644
index 0000000000..77fc7a1475
--- /dev/null
+++ b/src/Templates/working/content/i_vomenu/VOMenu.xsmnu
@@ -0,0 +1,36 @@
+
+
+
+ VOMenu
+
+
+
+
+ Raised Toolbar
+ Icon
+ No
+
+
+
+
+
diff --git a/src/Templates/working/content/i_vomenu/VOMenu_Accelerator.rc b/src/Templates/working/content/i_vomenu/VOMenu_Accelerator.rc
new file mode 100644
index 0000000000..6f7acdc641
--- /dev/null
+++ b/src/Templates/working/content/i_vomenu/VOMenu_Accelerator.rc
@@ -0,0 +1,5 @@
+
+VOMenu_Accelerator ACCELERATORS
+BEGIN
+END
+
diff --git a/src/Templates/working/content/i_vowindow/.template.config/VOWindow.PNG b/src/Templates/working/content/i_vowindow/.template.config/VOWindow.PNG
new file mode 100644
index 0000000000..c279e6f808
Binary files /dev/null and b/src/Templates/working/content/i_vowindow/.template.config/VOWindow.PNG differ
diff --git a/src/Templates/working/content/i_vowindow/.template.config/template.json b/src/Templates/working/content/i_vowindow/.template.config/template.json
new file mode 100644
index 0000000000..af6660e8d9
--- /dev/null
+++ b/src/Templates/working/content/i_vowindow/.template.config/template.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.VOWindow",
+ "Name": "VOWindow",
+ "Description": "An empty VO Window",
+ "SourceName": "VOWindow",
+ "ShortName": "xsvowindowi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "VOWindow.PNG",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VOWindow.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "VOWindow",
+ "fileRename": "VOWindow",
+ "defaultValue": "VOWindow"
+ }
+ },
+ "postActions": [
+ {
+ "description": "Adding mandatory NuGet package (only from Visual Studio)",
+ "actionId": "B1755282-45A0-4C2E-A430-D6E9419131AF",
+ "condition": "(HostIdentifier == \"vs\")",
+ "args": {
+ "packages": [
+ {
+ "id": "xsharp.vo"
+ }
+ ]
+ },
+ "continueOnError": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_vowindow/VOWindow.prg b/src/Templates/working/content/i_vowindow/VOWindow.prg
new file mode 100644
index 0000000000..1a5124081d
--- /dev/null
+++ b/src/Templates/working/content/i_vowindow/VOWindow.prg
@@ -0,0 +1,14 @@
+#ifndef __XSHARP_RT__
+#include "VOGUIClasses.vh"
+#endif
+
+#region Defines
+STATIC DEFINE VOWindow_Dummy := 100
+#endregion
+
+CLASS VOWindow INHERIT WINDOW
+ // {{%UC%}} User code starts here (DO NOT remove this line)
+CONSTRUCTOR()
+ RETURN
+
+END CLASS
diff --git a/src/Templates/working/content/i_vowindow/VOWindow.rc b/src/Templates/working/content/i_vowindow/VOWindow.rc
new file mode 100644
index 0000000000..649e159301
--- /dev/null
+++ b/src/Templates/working/content/i_vowindow/VOWindow.rc
@@ -0,0 +1,9 @@
+#define WS_CHILD 0x40000000
+#define WS_TABSTOP 0x00010000
+
+Window1 DIALOGEX 3, 3, 279, 196
+STYLE WS_CHILD
+FONT 8, "MS Shell Dlg"
+BEGIN
+END
+
diff --git a/src/Templates/working/content/i_vowindow/VOWindow.xsfrm b/src/Templates/working/content/i_vowindow/VOWindow.xsfrm
new file mode 100644
index 0000000000..11a183977d
--- /dev/null
+++ b/src/Templates/working/content/i_vowindow/VOWindow.xsfrm
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/i_wcfitem/.template.config/WCF.png b/src/Templates/working/content/i_wcfitem/.template.config/WCF.png
new file mode 100644
index 0000000000..9707b06c17
Binary files /dev/null and b/src/Templates/working/content/i_wcfitem/.template.config/WCF.png differ
diff --git a/src/Templates/working/content/i_wcfitem/.template.config/template.json b/src/Templates/working/content/i_wcfitem/.template.config/template.json
new file mode 100644
index 0000000000..4e3e8e3ce6
--- /dev/null
+++ b/src/Templates/working/content/i_wcfitem/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WcfItem",
+ "Name": "WCF Service",
+ "Description": "A WCF Service",
+ "SourceName": "WCFService1",
+ "ShortName": "xswcfitemi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WCF.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "WCFService1.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "WCFService1",
+ "fileRename": "WCFService1",
+ "defaultValue": "WCFService1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_wcfitem/IWCFService1.prg b/src/Templates/working/content/i_wcfitem/IWCFService1.prg
new file mode 100644
index 0000000000..4d236d89ad
--- /dev/null
+++ b/src/Templates/working/content/i_wcfitem/IWCFService1.prg
@@ -0,0 +1,17 @@
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Runtime.Serialization
+USING System.ServiceModel
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ [ServiceContract];
+ PUBLIC INTERFACE IWCFService1
+
+ [OperationContract];
+ METHOD DoWork() AS VOID STRICT
+
+ END INTERFACE
+END NAMESPACE
diff --git a/src/Templates/working/content/i_wcfitem/WCFService1.prg b/src/Templates/working/content/i_wcfitem/WCFService1.prg
new file mode 100644
index 0000000000..b6e1ecfa4c
--- /dev/null
+++ b/src/Templates/working/content/i_wcfitem/WCFService1.prg
@@ -0,0 +1,15 @@
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Runtime.Serialization
+USING System.ServiceModel
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ CLASS WCFService1 IMPLEMENTS IWCFService1
+ METHOD DoWork() AS VOID STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/i_webroute/.template.config/Class.png b/src/Templates/working/content/i_webroute/.template.config/Class.png
new file mode 100644
index 0000000000..ca4b21465f
Binary files /dev/null and b/src/Templates/working/content/i_webroute/.template.config/Class.png differ
diff --git a/src/Templates/working/content/i_webroute/.template.config/template.json b/src/Templates/working/content/i_webroute/.template.config/template.json
new file mode 100644
index 0000000000..2e57896828
--- /dev/null
+++ b/src/Templates/working/content/i_webroute/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.APIController",
+ "Name": "APIController",
+ "Description": "An empty Web API controller",
+ "SourceName": "APIController",
+ "ShortName": "xsapicontrolleri",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "Class.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "APIController.prg",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "APIController",
+ "fileRename": "APIController",
+ "defaultValue": "APIController"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_webroute/APIController.prg b/src/Templates/working/content/i_webroute/APIController.prg
new file mode 100644
index 0000000000..a538045921
--- /dev/null
+++ b/src/Templates/working/content/i_webroute/APIController.prg
@@ -0,0 +1,34 @@
+// UsersController
+using System.Threading.Tasks
+using Microsoft.AspNetCore.Mvc
+using System.Collections.Generic
+
+[ApiController];
+[Route("[controller]")];
+public class APIController inherit ControllerBase
+ PUBLIC CONSTRUCTOR()
+
+ [HttpGet];
+ public async method GetMethod() as Task
+ //
+ VAR oneObject := Object{}
+ return Ok(oneObject)
+ END METHOD
+
+ [HttpPost];
+ public async method PostMethod([FromBody] items AS List ) as Task
+ //
+ VAR message := "Post Ok"
+ return Ok( message )
+ END METHOD
+
+ [HttpPost];
+ [Route("Item")];
+ public async method SingleCustomer([FromBody] item AS String ) as Task
+ //
+ VAR message := "Post Ok: " + item
+ Console.WriteLine( message )
+ return Ok( message )
+ END METHOD
+
+end class
diff --git a/src/Templates/working/content/i_window/.template.config/WPFWindow.png b/src/Templates/working/content/i_window/.template.config/WPFWindow.png
new file mode 100644
index 0000000000..82528357ad
Binary files /dev/null and b/src/Templates/working/content/i_window/.template.config/WPFWindow.png differ
diff --git a/src/Templates/working/content/i_window/.template.config/template.json b/src/Templates/working/content/i_window/.template.config/template.json
new file mode 100644
index 0000000000..533447c3c7
--- /dev/null
+++ b/src/Templates/working/content/i_window/.template.config/template.json
@@ -0,0 +1,28 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [],
+ "Identity": "XSharp.WPF.Window",
+ "Name": "Window (WPF)",
+ "Description": "Windows Presentation Foundation window",
+ "SourceName": "WPFWindow1",
+ "ShortName": "xswindowi",
+ "Tags": {
+ "language": "X#",
+ "type": "item",
+ "icon": "WPFWindow.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "WPFWindow1.xaml",
+ "symbols": {
+ "name": {
+ "type": "parameter",
+ "description": "The name of the code file and class.",
+ "datatype": "string",
+ "replaces": "WPFWindow1",
+ "fileRename": "WPFWindow1",
+ "defaultValue": "WPFWindow1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/i_window/WPFWindow1.xaml b/src/Templates/working/content/i_window/WPFWindow1.xaml
new file mode 100644
index 0000000000..10701699f0
--- /dev/null
+++ b/src/Templates/working/content/i_window/WPFWindow1.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/i_window/WPFWindow1.xaml.prg b/src/Templates/working/content/i_window/WPFWindow1.xaml.prg
new file mode 100644
index 0000000000..5c55a3fa84
--- /dev/null
+++ b/src/Templates/working/content/i_window/WPFWindow1.xaml.prg
@@ -0,0 +1,29 @@
+using System
+using System.Collections.Generic
+using System.Linq
+using System.Text
+using System.Threading.Tasks
+using System.Windows
+using System.Windows.Controls
+using System.Windows.Data
+using System.Windows.Documents
+using System.Windows.Input
+using System.Windows.Media
+using System.Windows.Media.Imaging
+using System.Windows.Navigation
+using System.Windows.Shapes
+
+begin namespace Company.Namespace1
+
+ ///
+ /// Interaction logic for WPFWindow.xaml
+ ///
+ public partial class WPFWindow INHERIT Window
+
+ public CONSTRUCTOR() STRICT //WPFWindow()
+ SELF:InitializeComponent()
+ RETURN
+
+
+ end class
+End NameSpace
diff --git a/src/Templates/working/content/p_classlibrary/.template.config/ClassLibrary.png b/src/Templates/working/content/p_classlibrary/.template.config/ClassLibrary.png
new file mode 100644
index 0000000000..b74727a55f
Binary files /dev/null and b/src/Templates/working/content/p_classlibrary/.template.config/ClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibrary/.template.config/template.json b/src/Templates/working/content/p_classlibrary/.template.config/template.json
new file mode 100644
index 0000000000..44c781fbfb
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrary/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library"
+ ],
+ "Identity": "XSharp.ClassLibrary",
+ "Name": "Class Library Core Dialect without Runtime",
+ "Description": "A project for creating a X# class library (.dll) for the Core dialect with no dependencies on the runtime",
+ "SourceName": "XSharp.ClassLibrary",
+ "ShortName": "xsclasslibrary",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "ClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.prg b/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.prg
new file mode 100644
index 0000000000..304ef03939
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.prg
@@ -0,0 +1,13 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.xsproj b/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.xsproj
new file mode 100644
index 0000000000..28e2545905
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrary/XSharp.ClassLibrary.xsproj
@@ -0,0 +1,12 @@
+
+
+
+ Library
+ ClassLibrary
+ Core
+ True
+ True
+ net8.0
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibrarycore/.template.config/CoreClassLibrary.png b/src/Templates/working/content/p_classlibrarycore/.template.config/CoreClassLibrary.png
new file mode 100644
index 0000000000..b74727a55f
Binary files /dev/null and b/src/Templates/working/content/p_classlibrarycore/.template.config/CoreClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibrarycore/.template.config/template.json b/src/Templates/working/content/p_classlibrarycore/.template.config/template.json
new file mode 100644
index 0000000000..dce5de831b
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrarycore/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library"
+ ],
+ "Identity": "XSharp.ClassLibraryCore",
+ "Name": "Class Library Core Dialect with Runtime",
+ "Description": "A project for creating a X# class library (.dll) for the Core dialect with a dependency on XSharp.Core",
+ "SourceName": "XSharp.ClassLibraryCore",
+ "ShortName": "xsclasslibrarycore",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "CoreClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.prg b/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.prg
new file mode 100644
index 0000000000..3feee23461
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.prg
@@ -0,0 +1,13 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.xsproj b/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.xsproj
new file mode 100644
index 0000000000..68c7727ddc
--- /dev/null
+++ b/src/Templates/working/content/p_classlibrarycore/XSharp.ClassLibraryCore.xsproj
@@ -0,0 +1,16 @@
+
+
+
+ Library
+ ClassLibrary
+ Core
+ True
+ True
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryfox/.template.config/FoxClassLibrary.png b/src/Templates/working/content/p_classlibraryfox/.template.config/FoxClassLibrary.png
new file mode 100644
index 0000000000..3ea5ddd538
Binary files /dev/null and b/src/Templates/working/content/p_classlibraryfox/.template.config/FoxClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibraryfox/.template.config/template.json b/src/Templates/working/content/p_classlibraryfox/.template.config/template.json
new file mode 100644
index 0000000000..b6e797f854
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryfox/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library",
+ "Visual FoxPro"
+ ],
+ "Identity": "XSharp.ClassLibraryFox",
+ "Name": "Class Library FoxPro Dialect",
+ "Description": "A project for creating a X# class library (.dll) for the Visual FoxPro Dialect",
+ "SourceName": "XSharp.ClassLibraryFox",
+ "ShortName": "xsclasslibraryfox",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "FoxClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.prg b/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.prg
new file mode 100644
index 0000000000..418c9107e7
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.prg
@@ -0,0 +1,28 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// The Class1 class.
+ ///
+ DEFINE CLASS Class1 AS Custom
+ PROTECTED prop1 AS STRING // X# allows types
+ HIDDEN hiddenprop1 AS DATE
+ // This gets called from the (generated) constructor
+ PROCEDURE Init(p1, p2)
+ prop1 := p1
+ hiddenprop1 := p2
+ RETURN
+
+
+ FUNCTION Compare (p1 as STRING, p2 as DATE) AS LOGIC
+ ? p1, p2
+ RETURN p1 == prop1 AND p2 == hiddenprop1
+
+ ENDDEFINE
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.xsproj b/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.xsproj
new file mode 100644
index 0000000000..a599d7249d
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryfox/XSharp.ClassLibraryFox.xsproj
@@ -0,0 +1,35 @@
+
+
+
+ Library
+ ClassLibrary
+ FoxPro
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ True
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryharbour/.template.config/HarbourClassLibrary.png b/src/Templates/working/content/p_classlibraryharbour/.template.config/HarbourClassLibrary.png
new file mode 100644
index 0000000000..f8f381b850
Binary files /dev/null and b/src/Templates/working/content/p_classlibraryharbour/.template.config/HarbourClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibraryharbour/.template.config/template.json b/src/Templates/working/content/p_classlibraryharbour/.template.config/template.json
new file mode 100644
index 0000000000..490f4254da
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryharbour/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library",
+ "Harbour"
+ ],
+ "Identity": "XSharp.ClassLibraryHarbour",
+ "Name": "Class Library Harbour Dialect",
+ "Description": "A project for creating a X# class library (.dll) for the Harbour Dialect",
+ "SourceName": "XSharp.ClassLibraryHarbour",
+ "ShortName": "xsclasslibraryharbour",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "HarbourClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.prg b/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.prg
new file mode 100644
index 0000000000..1ebe8af6ac
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.prg
@@ -0,0 +1,13 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.xsproj b/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.xsproj
new file mode 100644
index 0000000000..eb1063b141
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryharbour/XSharp.ClassLibraryHarbour.xsproj
@@ -0,0 +1,28 @@
+
+
+
+ Library
+ ClassLibrary
+ Harbour
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryvo/.template.config/VOClassLibrary.png b/src/Templates/working/content/p_classlibraryvo/.template.config/VOClassLibrary.png
new file mode 100644
index 0000000000..549363062e
Binary files /dev/null and b/src/Templates/working/content/p_classlibraryvo/.template.config/VOClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibraryvo/.template.config/template.json b/src/Templates/working/content/p_classlibraryvo/.template.config/template.json
new file mode 100644
index 0000000000..545984a6bd
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvo/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library",
+ "VO"
+ ],
+ "Identity": "XSharp.ClassLibraryVO",
+ "Name": "Class Library VO Dialect",
+ "Description": "A project for creating a X# class library (.dll) for the VO Dialect",
+ "SourceName": "XSharp.ClassLibraryVO",
+ "ShortName": "xsclasslibraryvo",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VOClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.prg b/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.prg
new file mode 100644
index 0000000000..e9597fd265
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.prg
@@ -0,0 +1,13 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.xsproj b/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.xsproj
new file mode 100644
index 0000000000..3c62aabea6
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvo/XSharp.ClassLibraryVO.xsproj
@@ -0,0 +1,29 @@
+
+
+
+ Library
+ ClassLibrary
+ VO
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ False
+ net8.0
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryvulcan/.template.config/VulcanClassLibrary.png b/src/Templates/working/content/p_classlibraryvulcan/.template.config/VulcanClassLibrary.png
new file mode 100644
index 0000000000..bfbe84d9ff
Binary files /dev/null and b/src/Templates/working/content/p_classlibraryvulcan/.template.config/VulcanClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibraryvulcan/.template.config/template.json b/src/Templates/working/content/p_classlibraryvulcan/.template.config/template.json
new file mode 100644
index 0000000000..65b5a2738d
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvulcan/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library",
+ "Vulcan"
+ ],
+ "Identity": "XSharp.ClassLibraryVulcan",
+ "Name": "Class Library Vulcan Dialect",
+ "Description": "A project for creating a X# class library (.dll) for the Vulcan Dialect",
+ "SourceName": "XSharp.ClassLibraryVulcan",
+ "ShortName": "xsclasslibraryvulcan",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VulcanClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.prg b/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.prg
new file mode 100644
index 0000000000..e9597fd265
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.prg
@@ -0,0 +1,13 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.xsproj b/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.xsproj
new file mode 100644
index 0000000000..87f95da8c7
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryvulcan/XSharp.ClassLibraryVulcan.xsproj
@@ -0,0 +1,28 @@
+
+
+
+ Library
+ ClassLibrary
+ VO
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryxpp/.template.config/XPPClassLibrary.png b/src/Templates/working/content/p_classlibraryxpp/.template.config/XPPClassLibrary.png
new file mode 100644
index 0000000000..f442e8f8dc
Binary files /dev/null and b/src/Templates/working/content/p_classlibraryxpp/.template.config/XPPClassLibrary.png differ
diff --git a/src/Templates/working/content/p_classlibraryxpp/.template.config/template.json b/src/Templates/working/content/p_classlibraryxpp/.template.config/template.json
new file mode 100644
index 0000000000..1a1dc33d04
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryxpp/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Library",
+ "XPP"
+ ],
+ "Identity": "XSharp.ClassLibraryXPP",
+ "Name": "Class Library XBase\u002B\u002B Dialect",
+ "Description": "A project for creating a X# class library (.dll) for the Xbase\u002B\u002B Dialect",
+ "SourceName": "XSharp.ClassLibraryXPP",
+ "ShortName": "xsclasslibraryxpp",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "XPPClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.prg b/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.prg
new file mode 100644
index 0000000000..e1893693c5
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.prg
@@ -0,0 +1,48 @@
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+// X# allows to group class inside namespaces. Namespaces are optional.
+// You can also delete the BEGIN NAMESPACE .. END NAMESPACE block
+
+BEGIN NAMESPACE Company.Namespace1
+ CLASS Class1
+ EXPORTED: // Some Exported instance variables.
+ // You can also use HIDDEN: , PROTECTED: and INTERNAL:
+ // X# allows PUBLIC as alias for EXPORTED
+ // and PRIVATE as alias for HIDDEN
+
+ VAR var1, var2 AS STRING // X# allows to declare the type of the instance variable
+
+ CLASS VAR listOfObjects AS List // You can declare a class var and also add a type, including generic types!
+
+ CLASS VAR someObject AS OBJECT
+
+ METHOD init // Forward declare the constructor
+ CLASS METHOD initClass // Forward declare the class constructor
+
+ METHOD SomeMethod // Forward declaration of the method
+
+ INLINE METHOD AnotherMethod(cVal as STRING) AS STRING // Inline declaration of another method
+ RETURN "CallMe "+cVal // You may declare the parameter type and return type
+ ENDCLASS
+
+
+ CLASS METHOD Class1:initClass()
+ // This is the type constructor. it gets called only once
+ ::listOfObjects := List{} // You can use the "new" syntax with curly braces to create an objec
+ ::someObject := Object():new() // but also use Type():New() syntax.
+
+ METHOD Class1:init()
+ ::var1 := "First String"
+ ::var2 := "Second String"
+
+ RETURN
+ METHOD Class1:SomeMethod(nValue) // Implementation of the method declared inside the class
+ RETURN 42 + nValue
+
+
+END NAMESPACE // Company.Namespace1
+
diff --git a/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.xsproj b/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.xsproj
new file mode 100644
index 0000000000..c8c101f159
--- /dev/null
+++ b/src/Templates/working/content/p_classlibraryxpp/XSharp.ClassLibraryXPP.xsproj
@@ -0,0 +1,28 @@
+
+
+
+ Library
+ ClassLibrary
+ XPP
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_consoleapplication/.template.config/ConsoleApplication.png b/src/Templates/working/content/p_consoleapplication/.template.config/ConsoleApplication.png
new file mode 100644
index 0000000000..13c4bf9609
Binary files /dev/null and b/src/Templates/working/content/p_consoleapplication/.template.config/ConsoleApplication.png differ
diff --git a/src/Templates/working/content/p_consoleapplication/.template.config/template.json b/src/Templates/working/content/p_consoleapplication/.template.config/template.json
new file mode 100644
index 0000000000..21c6eaee30
--- /dev/null
+++ b/src/Templates/working/content/p_consoleapplication/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console"
+ ],
+ "Identity": "XSharp.ConsoleApplication",
+ "Name": "Console Application",
+ "Description": "A project for creating a X# command-line application in the core dialect.",
+ "SourceName": "XSharp.ConsoleApplication",
+ "ShortName": "xsconsoleapplication",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "ConsoleApplication.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_consoleapplication/Program.prg b/src/Templates/working/content/p_consoleapplication/Program.prg
new file mode 100644
index 0000000000..22dbd96aa4
--- /dev/null
+++ b/src/Templates/working/content/p_consoleapplication/Program.prg
@@ -0,0 +1,12 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+FUNCTION Start() AS VOID STRICT
+ Console.WriteLine("Hello World!")
+ Console.WriteLine("Press any key to continue...")
+ Console.ReadKey()
+
diff --git a/src/Templates/working/content/p_consoleapplication/XSharp.ConsoleApplication.xsproj b/src/Templates/working/content/p_consoleapplication/XSharp.ConsoleApplication.xsproj
new file mode 100644
index 0000000000..72089c34fb
--- /dev/null
+++ b/src/Templates/working/content/p_consoleapplication/XSharp.ConsoleApplication.xsproj
@@ -0,0 +1,7 @@
+
+
+
+ ConsoleApplication
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_harbourconsole/.template.config/HarbourConsole.png b/src/Templates/working/content/p_harbourconsole/.template.config/HarbourConsole.png
new file mode 100644
index 0000000000..15bd003000
Binary files /dev/null and b/src/Templates/working/content/p_harbourconsole/.template.config/HarbourConsole.png differ
diff --git a/src/Templates/working/content/p_harbourconsole/.template.config/template.json b/src/Templates/working/content/p_harbourconsole/.template.config/template.json
new file mode 100644
index 0000000000..0d3d76226b
--- /dev/null
+++ b/src/Templates/working/content/p_harbourconsole/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console",
+ "Harbour"
+ ],
+ "Identity": "XSharp.HarbourConsole",
+ "Name": "Harbour Console Application",
+ "Description": "A project for creating a X# command-line application in the Harbour Dialect.",
+ "SourceName": "XSharp.HarbourConsole",
+ "ShortName": "xsharbourconsole",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "HarbourConsole.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.prg b/src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.prg
new file mode 100644
index 0000000000..a79e330436
--- /dev/null
+++ b/src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.prg
@@ -0,0 +1,11 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+FUNCTION Start() AS VOID STRICT
+ ? "Hello World! Today is ",Today()
+ WAIT
+ RETURN
diff --git a/src/Templates/working/content/consoleHarbour/XSharp.ConsoleHarbour.xsproj b/src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.xsproj
similarity index 51%
rename from src/Templates/working/content/consoleHarbour/XSharp.ConsoleHarbour.xsproj
rename to src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.xsproj
index 0e259e89d9..91e5e93fcd 100644
--- a/src/Templates/working/content/consoleHarbour/XSharp.ConsoleHarbour.xsproj
+++ b/src/Templates/working/content/p_harbourconsole/XSharp.HarbourConsole.xsproj
@@ -1,18 +1,17 @@
-
-
+
+
Exe
- net8.0
- enable
- enable
- Harbour
+ ConsoleApplication
+ Harbour
True
True
False
+ net8.0
-
+
-
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_msclasslibrary/.template.config/MsTestClassLibrary.png b/src/Templates/working/content/p_msclasslibrary/.template.config/MsTestClassLibrary.png
new file mode 100644
index 0000000000..34834bf657
Binary files /dev/null and b/src/Templates/working/content/p_msclasslibrary/.template.config/MsTestClassLibrary.png differ
diff --git a/src/Templates/working/content/p_msclasslibrary/.template.config/template.json b/src/Templates/working/content/p_msclasslibrary/.template.config/template.json
new file mode 100644
index 0000000000..4a5db21809
--- /dev/null
+++ b/src/Templates/working/content/p_msclasslibrary/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Test"
+ ],
+ "Identity": "XSharp.Test.MsClassLibrary",
+ "Name": "Class Library with MsTest Support",
+ "Description": "A project for creating a X# class library (.dll) with MS Unit Testing",
+ "SourceName": "XSharp.Test.MsClassLibrary",
+ "ShortName": "xsmsclasslibrary",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "MsTestClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "MsUnitTestClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.prg b/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.prg
new file mode 100644
index 0000000000..d5a8152819
--- /dev/null
+++ b/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.prg
@@ -0,0 +1,24 @@
+// Note: Inside Visual Studio you should open the Test - Windows - Test Explorer Window
+// From there you can run the tests and see which tests succeeded and which tests failed
+//
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+using Microsoft.VisualStudio.TestTools.UnitTesting
+
+BEGIN NAMESPACE Company.Namespace1
+ [TestClass] ;
+ CLASS TestClass
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ [TestMethod];
+ METHOD TestMethod1 AS VOID STRICT
+ Assert.AreEqual(1,1)
+ RETURN
+ [TestMethod];
+ METHOD TestMethod2 AS VOID STRICT
+ Assert.AreEqual(True, False) // Note that this will fail of course
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.xsproj b/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.xsproj
new file mode 100644
index 0000000000..56c2f9a690
--- /dev/null
+++ b/src/Templates/working/content/p_msclasslibrary/XSharp.Test.MsClassLibrary.xsproj
@@ -0,0 +1,17 @@
+
+
+
+ Library
+ MsUnitTestClassLibrary
+ {AA6C8D78-22FF-423A-9C7C-5F2393824E04}
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+ $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
+ False
+ UnitTest
+ Core
+ True
+ True
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_netcore/.template.config/ConsoleApplication.png b/src/Templates/working/content/p_netcore/.template.config/ConsoleApplication.png
new file mode 100644
index 0000000000..13c4bf9609
Binary files /dev/null and b/src/Templates/working/content/p_netcore/.template.config/ConsoleApplication.png differ
diff --git a/src/Templates/working/content/p_netcore/.template.config/template.json b/src/Templates/working/content/p_netcore/.template.config/template.json
new file mode 100644
index 0000000000..1457f8685a
--- /dev/null
+++ b/src/Templates/working/content/p_netcore/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console"
+ ],
+ "Identity": "XSharp.ConsoleApplication.NetCore",
+ "Name": "Console Application (.Net Core)",
+ "Description": "A project for creating a X# command-line application in the core dialect.",
+ "SourceName": "XSharp.ConsoleApplication.NetCore",
+ "ShortName": "xsnetcore",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "ConsoleApplication.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.prg b/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.prg
new file mode 100644
index 0000000000..4677300334
--- /dev/null
+++ b/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.prg
@@ -0,0 +1,8 @@
+
+USING System
+
+FUNCTION Start() AS VOID STRICT
+ Console.WriteLine("Hello .Net Core and .Net 5!")
+ Console.WriteLine("Press any key to continue...")
+ Console.ReadKey()
+
diff --git a/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.xsproj b/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.xsproj
new file mode 100644
index 0000000000..72089c34fb
--- /dev/null
+++ b/src/Templates/working/content/p_netcore/XSharp.ConsoleApplication.NetCore.xsproj
@@ -0,0 +1,7 @@
+
+
+
+ ConsoleApplication
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_nunitclasslibrary/.template.config/NUnitTestClassLibrary.png b/src/Templates/working/content/p_nunitclasslibrary/.template.config/NUnitTestClassLibrary.png
new file mode 100644
index 0000000000..05bf2a66ad
Binary files /dev/null and b/src/Templates/working/content/p_nunitclasslibrary/.template.config/NUnitTestClassLibrary.png differ
diff --git a/src/Templates/working/content/p_nunitclasslibrary/.template.config/template.json b/src/Templates/working/content/p_nunitclasslibrary/.template.config/template.json
new file mode 100644
index 0000000000..ef1dae39a5
--- /dev/null
+++ b/src/Templates/working/content/p_nunitclasslibrary/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Test"
+ ],
+ "Identity": "XSharp.Test.NUnitClassLibrary",
+ "Name": "Class Library with NUnit Testing",
+ "Description": "A project for creating a X# class library (.dll) with NUnit Testing",
+ "SourceName": "XSharp.Test.NUnitClassLibrary",
+ "ShortName": "xsnunitclasslibrary",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "NUnitTestClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "NUnitTestClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.prg b/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.prg
new file mode 100644
index 0000000000..9ba179f3b6
--- /dev/null
+++ b/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.prg
@@ -0,0 +1,30 @@
+//
+// Note 1: If this does not compile then you need to restore the Nuget Packages for NUnit
+// You can do that by right clicking on the project item in the solution explorer
+// and choosing 'Manage Nuget packages'
+// You can also set a setting inside Visual Studio to make sure the Nuget Packages get restored
+// automatically. See: Tools - Nuget Package Manager - Package Manager Settings
+//
+// Note 2: Inside Visual Studio you should open the Test - Windows - Test Explorer Window
+// From there you can run the tests and see which tests succeeded and which tests failed
+//
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+USING NUnit.Framework
+BEGIN NAMESPACE Company.Namespace1
+ [TestFixture];
+ CLASS TestClass
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ [Test];
+ METHOD TestMethod1 AS VOID STRICT
+ Assert.AreEqual(1,1)
+ RETURN
+ [Test];
+ METHOD TestMethod2 AS VOID STRICT
+ Assert.AreEqual(True, False) // Note that this will fail of course
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.xsproj b/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.xsproj
new file mode 100644
index 0000000000..672c755ef1
--- /dev/null
+++ b/src/Templates/working/content/p_nunitclasslibrary/XSharp.Test.NUnitClassLibrary.xsproj
@@ -0,0 +1,12 @@
+
+
+
+
+ Library
+ NUnitTestClassLibrary
+ Core
+ True
+ True
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vfpconsole/.template.config/VFPConsole.png b/src/Templates/working/content/p_vfpconsole/.template.config/VFPConsole.png
new file mode 100644
index 0000000000..a15214ba71
Binary files /dev/null and b/src/Templates/working/content/p_vfpconsole/.template.config/VFPConsole.png differ
diff --git a/src/Templates/working/content/p_vfpconsole/.template.config/template.json b/src/Templates/working/content/p_vfpconsole/.template.config/template.json
new file mode 100644
index 0000000000..a86ba187f3
--- /dev/null
+++ b/src/Templates/working/content/p_vfpconsole/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console",
+ "Visual FoxPro"
+ ],
+ "Identity": "XSharp.VFPConsole",
+ "Name": "FoxPro Console Application",
+ "Description": "A project for creating a X# command-line application in the Visual FoxPro Dialect.",
+ "SourceName": "XSharp.VFPConsole",
+ "ShortName": "xsvfpconsole",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VFPConsole.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.prg b/src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.prg
new file mode 100644
index 0000000000..78d1cda920
--- /dev/null
+++ b/src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.prg
@@ -0,0 +1,11 @@
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+FUNCTION Start() AS VOID STRICT
+ ? "Hello World! Today is ",Date()
+ WAIT
+ RETURN
diff --git a/src/Templates/working/content/consoleFox/XSharp.ConsoleFox.xsproj b/src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.xsproj
similarity index 77%
rename from src/Templates/working/content/consoleFox/XSharp.ConsoleFox.xsproj
rename to src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.xsproj
index f3ab7641b8..db380bca9e 100644
--- a/src/Templates/working/content/consoleFox/XSharp.ConsoleFox.xsproj
+++ b/src/Templates/working/content/p_vfpconsole/XSharp.VFPConsole.xsproj
@@ -1,10 +1,8 @@
-
-
+
+
Exe
- net8.0
- enable
- enable
+ ConsoleApplication
FoxPro
true
true
@@ -29,10 +27,11 @@
true
True
False
-
+ net8.0
+
-
+
-
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_voconsole/.template.config/VOConsole.png b/src/Templates/working/content/p_voconsole/.template.config/VOConsole.png
new file mode 100644
index 0000000000..95f3ec87aa
Binary files /dev/null and b/src/Templates/working/content/p_voconsole/.template.config/VOConsole.png differ
diff --git a/src/Templates/working/content/p_voconsole/.template.config/template.json b/src/Templates/working/content/p_voconsole/.template.config/template.json
new file mode 100644
index 0000000000..d8090a2069
--- /dev/null
+++ b/src/Templates/working/content/p_voconsole/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console",
+ "VO"
+ ],
+ "Identity": "XSharp.VOConsole",
+ "Name": "VO Console Application",
+ "Description": "A project for creating a X# command-line application in the VO Dialect.",
+ "SourceName": "XSharp.VOConsole",
+ "ShortName": "xsvoconsole",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VOConsole.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_voconsole/XSharp.VOConsole.prg b/src/Templates/working/content/p_voconsole/XSharp.VOConsole.prg
new file mode 100644
index 0000000000..8103ba1b31
--- /dev/null
+++ b/src/Templates/working/content/p_voconsole/XSharp.VOConsole.prg
@@ -0,0 +1,12 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+FUNCTION Start() AS VOID STRICT
+ ? "Hello World! Today is ",Today()
+ WAIT
+ RETURN
diff --git a/src/Templates/working/content/consoleVO/XSharp.ConsoleVO.xsproj b/src/Templates/working/content/p_voconsole/XSharp.VOConsole.xsproj
similarity index 52%
rename from src/Templates/working/content/consoleVO/XSharp.ConsoleVO.xsproj
rename to src/Templates/working/content/p_voconsole/XSharp.VOConsole.xsproj
index 262157490c..8d2808a0c7 100644
--- a/src/Templates/working/content/consoleVO/XSharp.ConsoleVO.xsproj
+++ b/src/Templates/working/content/p_voconsole/XSharp.VOConsole.xsproj
@@ -1,18 +1,17 @@
-
-
+
+
Exe
- net8.0
- enable
- enable
+ ConsoleApplication
VO
True
True
False
-
+ net8.0
+
-
+
-
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vomdiapplication/.template.config/VOMDIApp.png b/src/Templates/working/content/p_vomdiapplication/.template.config/VOMDIApp.png
new file mode 100644
index 0000000000..418359b573
Binary files /dev/null and b/src/Templates/working/content/p_vomdiapplication/.template.config/VOMDIApp.png differ
diff --git a/src/Templates/working/content/p_vomdiapplication/.template.config/template.json b/src/Templates/working/content/p_vomdiapplication/.template.config/template.json
new file mode 100644
index 0000000000..3f175d6dcc
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Desktop",
+ "VO"
+ ],
+ "Identity": "XSharp.VOMDIApplication",
+ "Name": "VO MDI Application",
+ "Description": "A project for creating a VO MDI application in the VO Dialect.",
+ "SourceName": "XSharp.VOMDIApplication",
+ "ShortName": "xsvomdiapplication",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VOMDIApp.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VOMDIApp",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vomdiapplication/Help About.HELPABOUT.xsfrm b/src/Templates/working/content/p_vomdiapplication/Help About.HELPABOUT.xsfrm
new file mode 100644
index 0000000000..a7d0fffd9e
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Help About.HELPABOUT.xsfrm
@@ -0,0 +1,89 @@
+
+
+
+
+ HelpAbout
+ FORM:DIALOGWINDOW
+ About Standard Application
+ 0
+ 5
+ 5
+ 453
+ 146
+ 0
+ 0
+ No
+ No
+ 0
+ 3234332800
+ 0
+
+ ,"About Standard Application"
+ "HelpAbout"
+
+
+
+ AboutText
+ CONTROL:TEXTCONTROL:FIXEDTEXT
+ VO MDI Application
+ 1
+ 195
+ 10
+ 245
+ 93
+ -1
+ 0
+ No
+ No
+ 0
+ 1073741952
+ 131072
+
+ ,"VO MDI Application"
+ "AboutText"
+
+
+
+ PushButton1
+ CONTROL:TEXTCONTROL:BUTTON:PUSHBUTTON
+ OK
+ 2
+ 362
+ 112
+ 80
+ 24
+ -1
+ 0
+ No
+ No
+ 0
+ 1073807361
+ 0
+
+ ,"OK"
+ "PushButton1"
+
+
+
+ FixedBitmap1
+ CONTROL:FIXEDBITMAP
+ POWXSHARPBMP
+ 3
+ 6
+ 10
+ 180
+ 90
+ -1
+ 0
+ No
+ No
+ 0
+ 1073741838
+ 131072
+
+ ,"POWXSHARPBMP"
+ "FixedBitmap1"
+
+
+
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Help About.HelpAbout.rc b/src/Templates/working/content/p_vomdiapplication/Help About.HelpAbout.rc
new file mode 100644
index 0000000000..bcb0fac615
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Help About.HelpAbout.rc
@@ -0,0 +1,37 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.FormEditor 2.1.0.0
+// Timestamp : 27-1-2020 22:11:01
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define HELPABOUT_ABOUTTEXT 100
+#define HELPABOUT_PUSHBUTTON1 101
+#define HELPABOUT_FIXEDBITMAP1 102
+#define BS_DEFPUSHBUTTON 0x00000001
+#define DS_MODALFRAME 0x00000080
+#define SS_BITMAP 0x0000000E
+#define SS_NOPREFIX 0x00000080
+#define WS_CAPTION 0x00C00000
+#define WS_CHILD 0x40000000
+#define WS_EX_STATICEDGE 0x00020000
+#define WS_POPUP 0x80000000
+#define WS_SYSMENU 0x00080000
+#define WS_TABSTOP 0x00010000
+#define WS_VISIBLE 0x10000000
+
+HelpAbout DIALOGEX 3, 3, 301, 89
+STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME
+CAPTION "About Standard Application"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "VO MDI Application", HELPABOUT_ABOUTTEXT, "STATIC", WS_CHILD|SS_NOPREFIX, 130, 6, 163, 57, WS_EX_STATICEDGE
+ CONTROL "OK", HELPABOUT_PUSHBUTTON1, "BUTTON", WS_CHILD|WS_TABSTOP|BS_DEFPUSHBUTTON, 241, 69, 53, 15
+ CONTROL "POWXSHARPBMP", HELPABOUT_FIXEDBITMAP1, "STATIC", WS_CHILD|SS_BITMAP, 4, 6, 120, 55, WS_EX_STATICEDGE
+END
diff --git a/src/Templates/working/content/p_vomdiapplication/Help About.POWXSHARPBMP.rc b/src/Templates/working/content/p_vomdiapplication/Help About.POWXSHARPBMP.rc
new file mode 100644
index 0000000000..f871f39b66
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Help About.POWXSHARPBMP.rc
@@ -0,0 +1,2 @@
+ POWXSHARPBMP BITMAP "Resources\\HelpAbt.BMP"
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Help About.prg b/src/Templates/working/content/p_vomdiapplication/Help About.prg
new file mode 100644
index 0000000000..626be470a6
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Help About.prg
@@ -0,0 +1,89 @@
+#region DEFINES
+STATIC DEFINE HELPABOUT_ABOUTTEXT := 100
+STATIC DEFINE HELPABOUT_PUSHBUTTON1 := 101
+STATIC DEFINE HELPABOUT_FIXEDBITMAP1 := 102
+#endregion
+
+PARTIAL CLASS HelpAbout INHERIT DIALOGWINDOW
+ PROTECT oDCAboutText AS FIXEDTEXT
+ PROTECT oCCPushButton1 AS PUSHBUTTON
+ PROTECT oDCFixedBitmap1 AS FIXEDBITMAP
+
+ // {{%UC%}} User code starts here (DO NOT remove this line)
+
+CONSTRUCTOR(oParent,uExtra)
+
+ SELF:PreInit(oParent,uExtra)
+
+ SUPER(oParent , ResourceID{"HelpAbout" , _GetInst()} , TRUE)
+
+ SELF:oDCAboutText := FIXEDTEXT{SELF , ResourceID{ HELPABOUT_ABOUTTEXT , _GetInst() } }
+ SELF:oDCAboutText:HyperLabel := HyperLabel{#AboutText , "VO MDI Application" , NULL_STRING , NULL_STRING}
+
+ SELF:oCCPushButton1 := PUSHBUTTON{SELF , ResourceID{ HELPABOUT_PUSHBUTTON1 , _GetInst() } }
+ SELF:oCCPushButton1:HyperLabel := HyperLabel{#PushButton1 , "OK" , NULL_STRING , NULL_STRING}
+
+ SELF:oDCFixedBitmap1 := FIXEDBITMAP{SELF , ResourceID{ HELPABOUT_FIXEDBITMAP1 , _GetInst() } }
+ SELF:oDCFixedBitmap1:HyperLabel := HyperLabel{#FixedBitmap1 , "POWXSHARPBMP" , NULL_STRING , NULL_STRING}
+
+ SELF:Caption := "About Standard Application"
+ SELF:HyperLabel := HyperLabel{#HelpAbout , "About Standard Application" , NULL_STRING , NULL_STRING}
+
+ SELF:PostInit(oParent,uExtra)
+
+RETURN
+
+
+METHOD PostInit(oParent,uExtra)
+ LOCAL sVer AS STRING
+ LOCAL oSysLink AS SysLink
+ LOCAL oFT1 AS FixedText
+ LOCAL oHL1 AS HyperLink
+ LOCAL oFont1 AS Font
+ LOCAL s AS STRING
+
+ sVer := Version()
+ sVer := SubStr(sVer, RAt2(" ", sVer)+1)
+ oDCAboutText:CurrentText := _CHR(13)+" Company.Namespace1"+_CHR(13)+_CHR(13);
+ +" X# Version "+sVer+_CHR(13)+_CHR(13);
+ +" Copyright (c) XSharp BV 2015-2022"
+
+ var point := oCCPushButton1:Origin
+ point:x := self:oDCFixedBitmap1:Origin:x
+ var size := Dimension{300,20}
+
+
+ IF IsThemeEnabled()
+ s := "Visit X# on the web!"
+ oSysLink := SysLink{self, -1, point, size, s}
+ oSysLink:Show()
+ ELSE
+
+ s := "Visit X# on the web:"
+ oFT1 := FixedText{self, -1, point, dimension{200,20}, s}
+ oFT1:show()
+
+ oFont1 := Font{,8,"Microsoft Sans Serif"}
+ oFont1:Underline := TRUE
+
+ oHL1 := HyperLink{self,-1,point,size,"https://www.xsharp.eu"}
+ oHL1:font(oFont1)
+ oHL1:size := size
+ oHL1:textcolor := color{COLORBLUE}
+ oHL1:font():underline := TRUE
+ oHL1:show()
+
+ ENDIF
+
+
+ RETURN NIL
+
+
+METHOD PushButton1()
+
+ SELF:EndDialog()
+
+RETURN SELF
+
+END CLASS
diff --git a/src/Templates/working/content/p_vomdiapplication/HelpAbt.BMP b/src/Templates/working/content/p_vomdiapplication/HelpAbt.BMP
new file mode 100644
index 0000000000..63825a67f1
Binary files /dev/null and b/src/Templates/working/content/p_vomdiapplication/HelpAbt.BMP differ
diff --git a/src/Templates/working/content/p_vomdiapplication/Readme.txt b/src/Templates/working/content/p_vomdiapplication/Readme.txt
new file mode 100644
index 0000000000..49ccc50b9c
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Readme.txt
@@ -0,0 +1,9 @@
+===========================
+VO MDI Application Template
+===========================
+This VO MDI Application template is based on the original template that comes with Visual Objects.
+We have made some small changes that were needed because the VO SDK Libraries did not compile without changes in .Net:
+- The Start.Prg module now declares a new app class "XApp". The App:Start() method has been changed to XApp:Start()
+- The Application Icon and bitmap on the Help About screen have been updated
+- The SysLink control on the HelpAbout screen now goes to the X# website
+- We have included the templates for the VO Editor in the Properties subfolder in the project
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.rc b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.rc
new file mode 100644
index 0000000000..6a44af52ad
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.rc
@@ -0,0 +1,40 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 27-1-2020 22:06:09
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_EmptyShellMenu_File_ID 12500
+#define IDM_EmptyShellMenu_File_Open_ID 12501
+#define IDM_EmptyShellMenu_File_Print_Setup_ID 12503
+#define IDM_EmptyShellMenu_File_Exit_ID 12505
+#define IDM_EmptyShellMenu_Help_ID 12506
+#define IDM_EmptyShellMenu_Help_Index_ID 12507
+#define IDM_EmptyShellMenu_Help_Using_Help_ID 12508
+#define IDM_EmptyShellMenu_Help_About_ID 12510
+EmptyShellMenu MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Open...\tCtrl+O" , IDM_EmptyShellMenu_File_Open_ID
+ MENUITEM SEPARATOR
+ MENUITEM "P&rint Setup..." , IDM_EmptyShellMenu_File_Print_Setup_ID
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit\tAlt+F4" , IDM_EmptyShellMenu_File_Exit_ID
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Index\tF1" , IDM_EmptyShellMenu_Help_Index_ID
+ MENUITEM "&Using Help" , IDM_EmptyShellMenu_Help_Using_Help_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&About..." , IDM_EmptyShellMenu_Help_About_ID
+ END
+END
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.xsmnu b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.xsmnu
new file mode 100644
index 0000000000..30bd91dd5a
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu.xsmnu
@@ -0,0 +1,223 @@
+
+
+
+ EmptyShellMenu
+
+
+
+
+ Flat Toolbar
+ Icon
+ No
+ 12500
+
+
+
+ Help
+ &Help
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpIndex
+ &Index
+ Index of help
+ Help_Index
+ F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpUsingHelp
+ &Using Help
+ How to use help
+ Help_UsingHelp
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpAbout
+ &About...
+ About application
+
+
+ None
+ Yes
+ No
+ Help
+ Help
+ Help
+ 2
+ IDM_HELP_ABOUT
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu_Accelerator.rc b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu_Accelerator.rc
new file mode 100644
index 0000000000..b1f64b3148
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.EmptyShellMenu_Accelerator.rc
@@ -0,0 +1,27 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 27-1-2020 22:06:09
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_EmptyShellMenu_File_ID 12500
+#define IDM_EmptyShellMenu_File_Open_ID 12501
+#define IDM_EmptyShellMenu_File_Print_Setup_ID 12503
+#define IDM_EmptyShellMenu_File_Exit_ID 12505
+#define IDM_EmptyShellMenu_Help_ID 12506
+#define IDM_EmptyShellMenu_Help_Index_ID 12507
+#define IDM_EmptyShellMenu_Help_Using_Help_ID 12508
+#define IDM_EmptyShellMenu_Help_About_ID 12510
+EmptyShellMenu_Accelerator ACCELERATORS
+BEGIN
+ 79, IDM_EmptyShellMenu_File_Open_ID, CONTROL ,VIRTKEY
+ 115, IDM_EmptyShellMenu_File_Exit_ID, ALT ,VIRTKEY
+ 112, IDM_EmptyShellMenu_Help_Index_ID, VIRTKEY
+END
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.rc b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.rc
new file mode 100644
index 0000000000..4227c522f1
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.rc
@@ -0,0 +1,88 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 27-1-2020 22:06:13
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_StandardShellMenu_File_ID 18000
+#define IDM_StandardShellMenu_File_Open_ID 18001
+#define IDM_StandardShellMenu_File_Close_ID 18002
+#define IDM_StandardShellMenu_File_Print_ID 18004
+#define IDM_StandardShellMenu_File_Print_Setup_ID 18005
+#define IDM_StandardShellMenu_File_Exit_ID 18007
+#define IDM_StandardShellMenu_Edit_ID 18008
+#define IDM_StandardShellMenu_Edit_Cut_ID 18009
+#define IDM_StandardShellMenu_Edit_Copy_ID 18010
+#define IDM_StandardShellMenu_Edit_Paste_ID 18011
+#define IDM_StandardShellMenu_Edit_Insert_Record_ID 18013
+#define IDM_StandardShellMenu_Edit_Delete_Record_ID 18014
+#define IDM_StandardShellMenu_Edit_Go_To_Top_ID 18016
+#define IDM_StandardShellMenu_Edit_Previous_ID 18017
+#define IDM_StandardShellMenu_Edit_Next_ID 18018
+#define IDM_StandardShellMenu_Edit_Go_To_Bottom_ID 18019
+#define IDM_StandardShellMenu_View_ID 18020
+#define IDM_StandardShellMenu_View_Form_ID 18021
+#define IDM_StandardShellMenu_View_Table_ID 18022
+#define IDM_StandardShellMenu_Window_ID 18023
+#define IDM_StandardShellMenu_Window_Cascade_ID 18024
+#define IDM_StandardShellMenu_Window_Tile_ID 18025
+#define IDM_StandardShellMenu_Window_Close_All_ID 18026
+#define IDM_StandardShellMenu_Help_ID 18027
+#define IDM_StandardShellMenu_Help_Index_ID 18028
+#define IDM_StandardShellMenu_Help_Context_Help_ID 18029
+#define IDM_StandardShellMenu_Help_Using_Help_ID 18030
+#define IDM_StandardShellMenu_Help_About_ID 18032
+StandardShellMenu MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Open...\tCtrl+O" , IDM_StandardShellMenu_File_Open_ID
+ MENUITEM "&Close" , IDM_StandardShellMenu_File_Close_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&Print" , IDM_StandardShellMenu_File_Print_ID
+ MENUITEM "P&rint Setup..." , IDM_StandardShellMenu_File_Print_Setup_ID
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit\tAlt+F4" , IDM_StandardShellMenu_File_Exit_ID
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "Cu&t\tCtrl+X" , IDM_StandardShellMenu_Edit_Cut_ID
+ MENUITEM "&Copy\tCtrl+C" , IDM_StandardShellMenu_Edit_Copy_ID
+ MENUITEM "&Paste\tCtrl+V" , IDM_StandardShellMenu_Edit_Paste_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&Insert Record" , IDM_StandardShellMenu_Edit_Insert_Record_ID
+ MENUITEM "&Delete Record" , IDM_StandardShellMenu_Edit_Delete_Record_ID
+ MENUITEM SEPARATOR
+ MENUITEM "G&o To Top\tCtrl+Home" , IDM_StandardShellMenu_Edit_Go_To_Top_ID
+ MENUITEM "Pre&vious" , IDM_StandardShellMenu_Edit_Previous_ID
+ MENUITEM "&Next" , IDM_StandardShellMenu_Edit_Next_ID
+ MENUITEM "Go To &Bottom\tCtrl+End" , IDM_StandardShellMenu_Edit_Go_To_Bottom_ID
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "&Form\tShift+F2" , IDM_StandardShellMenu_View_Form_ID
+ MENUITEM "&Table\tF2" , IDM_StandardShellMenu_View_Table_ID
+ END
+ POPUP "&Window"
+ BEGIN
+ MENUITEM "&Cascade" , IDM_StandardShellMenu_Window_Cascade_ID
+ MENUITEM "&Tile" , IDM_StandardShellMenu_Window_Tile_ID
+ MENUITEM "Close A&ll" , IDM_StandardShellMenu_Window_Close_All_ID
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Index\tF1" , IDM_StandardShellMenu_Help_Index_ID
+ MENUITEM "&Context Help\tCtrl+F1" , IDM_StandardShellMenu_Help_Context_Help_ID
+ MENUITEM "&Using Help" , IDM_StandardShellMenu_Help_Using_Help_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&About..." , IDM_StandardShellMenu_Help_About_ID
+ END
+END
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.xsmnu b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.xsmnu
new file mode 100644
index 0000000000..4237e917d0
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu.xsmnu
@@ -0,0 +1,611 @@
+
+
+
+ StandardShellMenu
+
+
+
+
+ Flat Toolbar
+ Icon
+ No
+ 18000
+
+
+ File
+ &File
+
+
+ File
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileOpen
+ &Open...
+ Open a file
+ File_Open
+ Ctrl+O
+ Yes
+ No
+
+
+
+
+
+
+ -1
+ IDM_FILE_OPEN
+
+
+ FileClose
+ &Close
+ Close current child window
+ File_Close
+ None
+ Yes
+ No
+ Close
+ Close
+ Close File
+ 1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FilePrint
+ &Print
+ Print the active window
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FilePrinterSetup
+ P&rint Setup...
+ Setup printer options
+ File_Printer_Setup
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileExit
+ E&xit
+ End of application
+ File_Exit
+ Alt+F4
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ Edit
+ &Edit
+ Edit information
+ Edit
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Cut
+ Cu&t
+ Cut to clipboard
+ Cut
+ Ctrl+X
+ Yes
+ No
+ Cut
+ Cut
+ Cut
+ 3
+
+
+
+
+ Copy
+ &Copy
+ Copy to clipboard
+ Copy
+ Ctrl+C
+ Yes
+ No
+ Copy
+ Copy
+ Copy
+ 4
+
+
+
+
+ Paste
+ &Paste
+ Paste from clipboard
+ Paste
+ Ctrl+V
+ Yes
+ No
+ Paste
+ Paste
+ Paste
+ 5
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Append
+ &Insert Record
+ Insert a new record
+ Append
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Delete
+ &Delete Record
+ Delete this record
+ Delete
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ GoTop
+ G&o To Top
+ Go to first record
+ GoTop
+ Ctrl+Home
+ Yes
+ No
+ Start Record
+ Go Top
+ Go Top
+ 7
+
+
+
+
+ SkipPrevious
+ Pre&vious
+ Go to previous record
+ SkipPrevious
+ None
+ Yes
+ No
+ Previous Record
+ Previous Record
+ Previous Record
+ 8
+
+
+
+
+ SkipNext
+ &Next
+ Go to next record
+ SkipNext
+ None
+ Yes
+ No
+ Next Record
+ Next Record
+ Next Record
+ 9
+
+
+
+
+ GoBottom
+ Go To &Bottom
+ Go to last record
+ GoBottom
+ Ctrl+End
+ Yes
+ No
+ End Record
+ Go Bottom
+ Go Bottom
+ 10
+
+
+
+
+
+
+ View
+ &View
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ ViewForm
+ &Form
+ View a single record as a form
+ ViewForm
+ Shift+F2
+ Yes
+ No
+ View Form
+ Form View
+ Form View
+ 12
+
+
+
+
+ ViewTable
+ &Table
+ View several records in a table
+ ViewTable
+ F2
+ Yes
+ No
+ View Table
+ Browse View
+ Browse View
+ 13
+
+
+
+
+
+
+ Window
+ &Window
+ Arrange child windows
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ WindowCascade
+ &Cascade
+ Arrange child windows in a cascade
+ WindowCascade
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ WindowTile
+ &Tile
+ Arrange child windows tiled
+ WindowTile
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ CloseAllChildren
+ Close A&ll
+ Close all child windows
+ WindowCloseAll
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ Help
+ &Help
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpIndex
+ &Index
+ Index of help
+ Help_Index
+ F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpContext
+ &Context Help
+ Context sensitive help
+ Help_ContextHelp
+ Ctrl+F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpUsingHelp
+ &Using Help
+ How to use help
+ Help_UsingHelp
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpAbout
+ &About...
+ About application
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+ IDM_HELP_ABOUT
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu_Accelerator.rc b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu_Accelerator.rc
new file mode 100644
index 0000000000..5e83de8760
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.StandardShellMenu_Accelerator.rc
@@ -0,0 +1,55 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 27-1-2020 22:06:13
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_StandardShellMenu_File_ID 18000
+#define IDM_StandardShellMenu_File_Open_ID 18001
+#define IDM_StandardShellMenu_File_Close_ID 18002
+#define IDM_StandardShellMenu_File_Print_ID 18004
+#define IDM_StandardShellMenu_File_Print_Setup_ID 18005
+#define IDM_StandardShellMenu_File_Exit_ID 18007
+#define IDM_StandardShellMenu_Edit_ID 18008
+#define IDM_StandardShellMenu_Edit_Cut_ID 18009
+#define IDM_StandardShellMenu_Edit_Copy_ID 18010
+#define IDM_StandardShellMenu_Edit_Paste_ID 18011
+#define IDM_StandardShellMenu_Edit_Insert_Record_ID 18013
+#define IDM_StandardShellMenu_Edit_Delete_Record_ID 18014
+#define IDM_StandardShellMenu_Edit_Go_To_Top_ID 18016
+#define IDM_StandardShellMenu_Edit_Previous_ID 18017
+#define IDM_StandardShellMenu_Edit_Next_ID 18018
+#define IDM_StandardShellMenu_Edit_Go_To_Bottom_ID 18019
+#define IDM_StandardShellMenu_View_ID 18020
+#define IDM_StandardShellMenu_View_Form_ID 18021
+#define IDM_StandardShellMenu_View_Table_ID 18022
+#define IDM_StandardShellMenu_Window_ID 18023
+#define IDM_StandardShellMenu_Window_Cascade_ID 18024
+#define IDM_StandardShellMenu_Window_Tile_ID 18025
+#define IDM_StandardShellMenu_Window_Close_All_ID 18026
+#define IDM_StandardShellMenu_Help_ID 18027
+#define IDM_StandardShellMenu_Help_Index_ID 18028
+#define IDM_StandardShellMenu_Help_Context_Help_ID 18029
+#define IDM_StandardShellMenu_Help_Using_Help_ID 18030
+#define IDM_StandardShellMenu_Help_About_ID 18032
+StandardShellMenu_Accelerator ACCELERATORS
+BEGIN
+ 79, IDM_StandardShellMenu_File_Open_ID, CONTROL ,VIRTKEY
+ 115, IDM_StandardShellMenu_File_Exit_ID, ALT ,VIRTKEY
+ 88, IDM_StandardShellMenu_Edit_Cut_ID, CONTROL ,VIRTKEY
+ 67, IDM_StandardShellMenu_Edit_Copy_ID, CONTROL ,VIRTKEY
+ 86, IDM_StandardShellMenu_Edit_Paste_ID, CONTROL ,VIRTKEY
+ 36, IDM_StandardShellMenu_Edit_Go_To_Top_ID, CONTROL ,VIRTKEY
+ 35, IDM_StandardShellMenu_Edit_Go_To_Bottom_ID, CONTROL ,VIRTKEY
+ 113, IDM_StandardShellMenu_View_Form_ID, SHIFT ,VIRTKEY
+ 113, IDM_StandardShellMenu_View_Table_ID, VIRTKEY
+ 112, IDM_StandardShellMenu_Help_Index_ID, VIRTKEY
+ 112, IDM_StandardShellMenu_Help_Context_Help_ID, CONTROL ,VIRTKEY
+END
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.VS_VERSION_INFO.rc b/src/Templates/working/content/p_vomdiapplication/Standard Menus.VS_VERSION_INFO.rc
new file mode 100644
index 0000000000..34f6363ed4
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.VS_VERSION_INFO.rc
@@ -0,0 +1,31 @@
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION 1, 0, 0, 0
+PRODUCTVERSION 1, 0, 0, 0
+FILEFLAGSMASK 0x3fL
+FILEFLAGS 0x00L
+FILEOS VOS__WINDOWS32
+FILETYPE VFT_APP
+FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "This is a Company.Namespace1!\0"
+ VALUE "CompanyName", "XSharp BV\0"
+ VALUE "FileVersion", "1, 0, 0, 0\0"
+ VALUE "FileDescription", "X# Company.Namespace1\0"
+ VALUE "ProductVersion", "1.0.0.0\0"
+ VALUE "InternalName", "VO MDI App\0"
+ VALUE "ProductName", "X# Company.Namespace1\0"
+ VALUE "LegalCopyright", "Copyright \251 2015-2022\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Menus.prg b/src/Templates/working/content/p_vomdiapplication/Standard Menus.prg
new file mode 100644
index 0000000000..42258d8ea5
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Menus.prg
@@ -0,0 +1,257 @@
+#region DEFINES
+DEFINE IDM_StandardShellMenu_File_ID := 18000
+DEFINE IDM_StandardShellMenu_File_Open_ID := 18001
+DEFINE IDM_StandardShellMenu_File_Close_ID := 18002
+DEFINE IDM_StandardShellMenu_File_Print_ID := 18004
+DEFINE IDM_StandardShellMenu_File_Print_Setup_ID := 18005
+DEFINE IDM_StandardShellMenu_File_Exit_ID := 18007
+DEFINE IDM_StandardShellMenu_Edit_ID := 18008
+DEFINE IDM_StandardShellMenu_Edit_Cut_ID := 18009
+DEFINE IDM_StandardShellMenu_Edit_Copy_ID := 18010
+DEFINE IDM_StandardShellMenu_Edit_Paste_ID := 18011
+DEFINE IDM_StandardShellMenu_Edit_Insert_Record_ID := 18013
+DEFINE IDM_StandardShellMenu_Edit_Delete_Record_ID := 18014
+DEFINE IDM_StandardShellMenu_Edit_Go_To_Top_ID := 18016
+DEFINE IDM_StandardShellMenu_Edit_Previous_ID := 18017
+DEFINE IDM_StandardShellMenu_Edit_Next_ID := 18018
+DEFINE IDM_StandardShellMenu_Edit_Go_To_Bottom_ID := 18019
+DEFINE IDM_StandardShellMenu_View_ID := 18020
+DEFINE IDM_StandardShellMenu_View_Form_ID := 18021
+DEFINE IDM_StandardShellMenu_View_Table_ID := 18022
+DEFINE IDM_StandardShellMenu_Window_ID := 18023
+DEFINE IDM_StandardShellMenu_Window_Cascade_ID := 18024
+DEFINE IDM_StandardShellMenu_Window_Tile_ID := 18025
+DEFINE IDM_StandardShellMenu_Window_Close_All_ID := 18026
+DEFINE IDM_StandardShellMenu_Help_ID := 18027
+DEFINE IDM_StandardShellMenu_Help_Index_ID := 18028
+DEFINE IDM_StandardShellMenu_Help_Context_Help_ID := 18029
+DEFINE IDM_StandardShellMenu_Help_Using_Help_ID := 18030
+DEFINE IDM_StandardShellMenu_Help_About_ID := 18032
+DEFINE IDM_EmptyShellMenu_File_ID := 12500
+DEFINE IDM_EmptyShellMenu_File_Open_ID := 12501
+DEFINE IDM_EmptyShellMenu_File_Print_Setup_ID := 12503
+DEFINE IDM_EmptyShellMenu_File_Exit_ID := 12505
+DEFINE IDM_EmptyShellMenu_Help_ID := 12506
+DEFINE IDM_EmptyShellMenu_Help_Index_ID := 12507
+DEFINE IDM_EmptyShellMenu_Help_Using_Help_ID := 12508
+DEFINE IDM_EmptyShellMenu_Help_About_ID := 12510
+#endregion
+
+PARTIAL CLASS EmptyShellMenu INHERIT Menu
+
+CONSTRUCTOR( oOwner )
+
+ LOCAL oTB AS Toolbar
+
+ SELF:PreInit()
+
+ SUPER( ResourceID { "EmptyShellMenu" , _GetInst( ) } )
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_File_ID, ;
+ HyperLabel{ #File , "&File" , , "File" } , SELF:Handle() , 0)
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_File_Open_ID, ;
+ HyperLabel{ #FileOpen , "&Open... Ctrl+O" , "Open a file" , "File_Open" })
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_File_Print_Setup_ID, ;
+ HyperLabel{ #FilePrinterSetup , "P&rint Setup..." , "Setup printer options" , "File_Printer_Setup" })
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_File_Exit_ID, ;
+ HyperLabel{ #FileExit , "E&xit Alt+F4" , "End of application" , "File_Exit" })
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_Help_ID, ;
+ HyperLabel{ #Help , "&Help" , , } , SELF:Handle() , 1)
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_Help_Index_ID, ;
+ HyperLabel{ #HelpIndex , "&Index F1" , "Index of help" , "Help_Index" })
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_Help_Using_Help_ID, ;
+ HyperLabel{ #HelpUsingHelp , "&Using Help" , "How to use help" , "Help_UsingHelp" })
+
+ SELF:RegisterItem(IDM_EmptyShellMenu_Help_About_ID, ;
+ HyperLabel{ #HelpAbout , "&About..." , "About application" , })
+
+ oTB := Toolbar{}
+
+ oTB:ButtonStyle := TB_ICONONLY
+ oTB:Flat := TRUE
+ oTB:EnableBands(FALSE)
+
+ oTB:AppendItem(IDT_OPEN , IDM_EmptyShellMenu_File_Open_ID)
+ oTB:AddTipText(IDT_OPEN , IDM_EmptyShellMenu_File_Open_ID , "Open File")
+
+ oTB:AppendItem(IDT_HELP , IDM_EmptyShellMenu_Help_About_ID)
+ oTB:AddTipText(IDT_HELP , IDM_EmptyShellMenu_Help_About_ID , "Help")
+
+
+ SELF:ToolBar := oTB
+ SELF:Accelerator := EmptyShellMenu_Accelerator{ }
+
+ SELF:PostInit()
+
+ RETURN
+
+END CLASS
+PARTIAL CLASS EmptyShellMenu_Accelerator INHERIT Accelerator
+
+CONSTRUCTOR()
+ SUPER( ResourceID { "EmptyShellMenu_Accelerator" , _GetInst( ) } )
+RETURN
+
+
+END CLASS
+PARTIAL CLASS StandardShellMenu INHERIT Menu
+
+CONSTRUCTOR( oOwner )
+
+ LOCAL oTB AS Toolbar
+
+ SELF:PreInit()
+
+ SUPER( ResourceID { "StandardShellMenu" , _GetInst( ) } )
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_ID, ;
+ HyperLabel{ #File , "&File" , , "File" } , SELF:Handle() , 0)
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_Open_ID, ;
+ HyperLabel{ #FileOpen , "&Open... Ctrl+O" , "Open a file" , "File_Open" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_Close_ID, ;
+ HyperLabel{ #FileClose , "&Close" , "Close current child window" , "File_Close" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_Print_ID, ;
+ HyperLabel{ #FilePrint , "&Print" , "Print the active window" , })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_Print_Setup_ID, ;
+ HyperLabel{ #FilePrinterSetup , "P&rint Setup..." , "Setup printer options" , "File_Printer_Setup" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_File_Exit_ID, ;
+ HyperLabel{ #FileExit , "E&xit Alt+F4" , "End of application" , "File_Exit" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_ID, ;
+ HyperLabel{ #Edit , "&Edit" , "Edit information" , "Edit" } , SELF:Handle() , 1)
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Cut_ID, ;
+ HyperLabel{ #Cut , "Cu&t Ctrl+X" , "Cut to clipboard" , "Cut" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Copy_ID, ;
+ HyperLabel{ #Copy , "&Copy Ctrl+C" , "Copy to clipboard" , "Copy" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Paste_ID, ;
+ HyperLabel{ #Paste , "&Paste Ctrl+V" , "Paste from clipboard" , "Paste" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Insert_Record_ID, ;
+ HyperLabel{ #Append , "&Insert Record" , "Insert a new record" , "Append" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Delete_Record_ID, ;
+ HyperLabel{ #Delete , "&Delete Record" , "Delete this record" , "Delete" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Go_To_Top_ID, ;
+ HyperLabel{ #GoTop , "G&o To Top Ctrl+Home" , "Go to first record" , "GoTop" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Previous_ID, ;
+ HyperLabel{ #SkipPrevious , "Pre&vious" , "Go to previous record" , "SkipPrevious" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Next_ID, ;
+ HyperLabel{ #SkipNext , "&Next" , "Go to next record" , "SkipNext" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Edit_Go_To_Bottom_ID, ;
+ HyperLabel{ #GoBottom , "Go To &Bottom Ctrl+End" , "Go to last record" , "GoBottom" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_View_ID, ;
+ HyperLabel{ #View , "&View" , , } , SELF:Handle() , 2)
+
+ SELF:RegisterItem(IDM_StandardShellMenu_View_Form_ID, ;
+ HyperLabel{ #ViewForm , "&Form Shift+F2" , "View a single record as a form" , "ViewForm" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_View_Table_ID, ;
+ HyperLabel{ #ViewTable , "&Table F2" , "View several records in a table" , "ViewTable" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Window_ID, ;
+ HyperLabel{ #Window , "&Window" , "Arrange child windows" , } , SELF:Handle() , 3)
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Window_Cascade_ID, ;
+ HyperLabel{ #WindowCascade , "&Cascade" , "Arrange child windows in a cascade" , "WindowCascade" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Window_Tile_ID, ;
+ HyperLabel{ #WindowTile , "&Tile" , "Arrange child windows tiled" , "WindowTile" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Window_Close_All_ID, ;
+ HyperLabel{ #CloseAllChildren , "Close A&ll" , "Close all child windows" , "WindowCloseAll" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Help_ID, ;
+ HyperLabel{ #Help , "&Help" , , } , SELF:Handle() , 4)
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Help_Index_ID, ;
+ HyperLabel{ #HelpIndex , "&Index F1" , "Index of help" , "Help_Index" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Help_Context_Help_ID, ;
+ HyperLabel{ #HelpContext , "&Context Help Ctrl+F1" , "Context sensitive help" , "Help_ContextHelp" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Help_Using_Help_ID, ;
+ HyperLabel{ #HelpUsingHelp , "&Using Help" , "How to use help" , "Help_UsingHelp" })
+
+ SELF:RegisterItem(IDM_StandardShellMenu_Help_About_ID, ;
+ HyperLabel{ #HelpAbout , "&About..." , "About application" , })
+
+ SELF:SetAutoUpdate( 3 )
+
+ oTB := Toolbar{}
+
+ oTB:ButtonStyle := TB_ICONONLY
+ oTB:Flat := TRUE
+ oTB:EnableBands(FALSE)
+
+ oTB:AppendItem(IDT_CLOSE , IDM_StandardShellMenu_File_Close_ID)
+ oTB:AddTipText(IDT_CLOSE , IDM_StandardShellMenu_File_Close_ID , "Close File")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_CUT , IDM_StandardShellMenu_Edit_Cut_ID)
+ oTB:AddTipText(IDT_CUT , IDM_StandardShellMenu_Edit_Cut_ID , "Cut")
+
+ oTB:AppendItem(IDT_COPY , IDM_StandardShellMenu_Edit_Copy_ID)
+ oTB:AddTipText(IDT_COPY , IDM_StandardShellMenu_Edit_Copy_ID , "Copy")
+
+ oTB:AppendItem(IDT_PASTE , IDM_StandardShellMenu_Edit_Paste_ID)
+ oTB:AddTipText(IDT_PASTE , IDM_StandardShellMenu_Edit_Paste_ID , "Paste")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_STARTREC , IDM_StandardShellMenu_Edit_Go_To_Top_ID)
+ oTB:AddTipText(IDT_STARTREC , IDM_StandardShellMenu_Edit_Go_To_Top_ID , "Go Top")
+
+ oTB:AppendItem(IDT_PREVREC , IDM_StandardShellMenu_Edit_Previous_ID)
+ oTB:AddTipText(IDT_PREVREC , IDM_StandardShellMenu_Edit_Previous_ID , "Previous Record")
+
+ oTB:AppendItem(IDT_NEXTREC , IDM_StandardShellMenu_Edit_Next_ID)
+ oTB:AddTipText(IDT_NEXTREC , IDM_StandardShellMenu_Edit_Next_ID , "Next Record")
+
+ oTB:AppendItem(IDT_ENDREC , IDM_StandardShellMenu_Edit_Go_To_Bottom_ID)
+ oTB:AddTipText(IDT_ENDREC , IDM_StandardShellMenu_Edit_Go_To_Bottom_ID , "Go Bottom")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_VFORM , IDM_StandardShellMenu_View_Form_ID)
+ oTB:AddTipText(IDT_VFORM , IDM_StandardShellMenu_View_Form_ID , "Form View")
+
+ oTB:AppendItem(IDT_VGBROWSE , IDM_StandardShellMenu_View_Table_ID)
+ oTB:AddTipText(IDT_VGBROWSE , IDM_StandardShellMenu_View_Table_ID , "Browse View")
+
+
+ SELF:ToolBar := oTB
+ SELF:Accelerator := StandardShellMenu_Accelerator{ }
+
+ SELF:PostInit()
+
+ RETURN
+
+END CLASS
+PARTIAL CLASS StandardShellMenu_Accelerator INHERIT Accelerator
+
+CONSTRUCTOR()
+ SUPER( ResourceID { "StandardShellMenu_Accelerator" , _GetInst( ) } )
+RETURN
+
+
+END CLASS
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Shell.IDI_STANDARDICON.rc b/src/Templates/working/content/p_vomdiapplication/Standard Shell.IDI_STANDARDICON.rc
new file mode 100644
index 0000000000..aa3dfe446e
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Shell.IDI_STANDARDICON.rc
@@ -0,0 +1 @@
+ 101 ICON "Resources\\XSharp.ICO"
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Shell.Manifest.rc b/src/Templates/working/content/p_vomdiapplication/Standard Shell.Manifest.rc
new file mode 100644
index 0000000000..c95c0e84da
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Shell.Manifest.rc
@@ -0,0 +1,4 @@
+ 1 24 resources\cctl6.man
+
+
+
diff --git a/src/Templates/working/content/p_vomdiapplication/Standard Shell.prg b/src/Templates/working/content/p_vomdiapplication/Standard Shell.prg
new file mode 100644
index 0000000000..10bf07ad0a
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Standard Shell.prg
@@ -0,0 +1,169 @@
+#region DEFINES
+STATIC DEFINE HELPABOUT_PUSHBUTTON1 := 104
+DEFINE IDI_STANDARDICON := 101
+DEFINE IDS_ERROR := 65520
+DEFINE IDS_EXCHANGE_NOT_INSTALLED := 65521
+DEFINE IDS_SAVE := 65522
+STATIC DEFINE MAILDLG_PBCANCEL := 101
+STATIC DEFINE MAILDLG_PBSEND := 102
+STATIC DEFINE MAILDLG_RICHEDIT1 := 100
+#endregion
+
+CLASS StandardShellWindow INHERIT ShellWindow
+ PROTECT oPrinter AS PrintingDevice
+
+
+METHOD DoOpenFile(cFileName, lReadOnly)
+ LOCAL oTB AS TextBox
+ LOCAL oNewChild AS StdDataWindow
+
+ IF (Len(cFileName) > 3 ) .AND. (Upper(Right(cFileName, 4)) == ".DBF")
+ oNewChild := StdDataWindow{SELF, cFileName, lReadOnly}
+ oNewChild:ViewAs(#FormView)
+ oNewChild:Show()
+ ELSE
+ oTB := TextBox{SELF, "File Open Error", "Cannot open " + cFileName + " - Not a DBF file"}
+ oTB:Type := BUTTONOKAY
+ oTB:Show()
+ ENDIF
+
+RETURN SELF
+
+
+
+METHOD Drop(oDragEvent)
+LOCAL nNumFiles := oDragEvent:FileCount
+ LOCAL nFile AS INT
+
+ FOR nFile := 1 TO nNumFiles
+ IF File(oDragEvent:FileName(nFile))
+ SELF:DoOpenFile(oDragEvent:FileName(nFile))
+ ENDIF
+ NEXT
+ RETURN NIL
+
+METHOD FileExit()
+
+ SELF:EndWindow()
+
+RETURN SELF
+
+METHOD FileOpen()
+ LOCAL oOD AS OpenDialog
+
+ (oOD := OpenDialog{SELF, "*.dbf"}):Show()
+
+ IF !Empty(oOD:FileName)
+ SELF:DoOpenFile(oOD:FileName, oOD:ReadOnly)
+ ENDIF
+
+RETURN SELF
+
+METHOD FilePrinterSetup()
+
+ oPrinter:Setup()
+
+RETURN SELF
+
+CONSTRUCTOR( oOwnerApp )
+ local oSB as StatusBar
+
+ SUPER( oOwnerApp )
+
+ SetDeleted(true)
+
+ self:EnableDragDropClient()
+
+ oSB := self:EnableStatusBar()
+ oSB:DisplayTime()
+
+ self:Menu := EmptyShellMenu{self}
+
+ self:Icon := Icon{ResourceID{IDI_STANDARDICON, _GetInst()}}
+ self:IconSm := Icon{ResourceID{IDI_STANDARDICON, _GetInst()}}
+
+ SELF:Caption := "Company.Namespace1"
+
+ oPrinter := PrintingDevice{}
+
+ return self
+
+
+ACCESS Printer
+
+ return oPrinter
+
+
+METHOD WindowCascade()
+
+ SELF:Arrange(ARRANGECASCADE)
+
+RETURN SELF
+
+METHOD WindowIcon()
+
+ SELF:Arrange(ARRANGEASICONS)
+
+RETURN SELF
+
+METHOD WindowTile()
+
+ SELF:Arrange(ARRANGETILE)
+
+RETURN SELF
+
+END CLASS
+CLASS StdDataWindow INHERIT DataWindow
+
+
+METHOD FileClose()
+
+ SELF:Server:Close()
+
+ SELF:EndWindow()
+
+RETURN SELF
+
+METHOD FilePrint()
+
+ SELF:Print(SELF:Owner:Printer)
+
+RETURN SELF
+
+CONSTRUCTOR(oParentWindow, sFileName, lReadOnly, oServer)
+ LOCAL sCaption AS STRING
+
+ SUPER(oParentWindow)
+
+ SELF:Menu := StandardShellMenu{SELF}
+ SELF:ToolBar:PressItem(IDM_StandardShellMenu_View_Form_ID)
+ sCaption := "Browse Database: "
+
+ IF !IsNil(oServer)
+ SELF:Use(oServer)
+ SELF:Caption := sCaption + oServer:Name
+ ELSE
+ SELF:Use(CreateInstance(#DBServer, sFileName, , lReadOnly))
+ SELF:Caption := sCaption + sFileName
+ ENDIF
+
+RETURN SELF
+
+method ViewForm()
+ self:ToolBar:UnPressItem(IDM_StandardShellMenu_View_Table_ID)
+ self:ToolBar:PressItem(IDM_StandardShellMenu_View_Form_ID)
+
+ return super:ViewForm()
+
+
+
+
+method ViewTable()
+ self:ToolBar:UnPressItem(IDM_StandardShellMenu_View_Form_ID)
+ self:ToolBar:PressItem(IDM_StandardShellMenu_View_Table_ID)
+
+ return super:ViewTable()
+
+
+
+END CLASS
diff --git a/src/Templates/working/content/p_vomdiapplication/Start.prg b/src/Templates/working/content/p_vomdiapplication/Start.prg
new file mode 100644
index 0000000000..2ac7836889
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/Start.prg
@@ -0,0 +1,20 @@
+[STAThread];
+FUNCTION Start() AS INT
+ LOCAL oXApp AS XApp
+ TRY
+ oXApp := XApp{}
+ oXApp:Start()
+ CATCH oException AS Exception
+ ErrorDialog(oException)
+ END TRY
+RETURN 0
+
+CLASS XApp INHERIT App
+ METHOD Start()
+ LOCAL oMainWindow AS StandardShellWindow
+ oMainWindow := StandardShellWindow{SELF}
+ oMainWindow:Show(SHOWCENTERED)
+
+ SELF:Exec()
+ RETURN NIL
+END CLASS
diff --git a/src/Templates/working/content/p_vomdiapplication/XSharp.ICO b/src/Templates/working/content/p_vomdiapplication/XSharp.ICO
new file mode 100644
index 0000000000..dd1707e251
Binary files /dev/null and b/src/Templates/working/content/p_vomdiapplication/XSharp.ICO differ
diff --git a/src/Templates/working/content/p_vomdiapplication/XSharp.VOMDIApplication.xsproj b/src/Templates/working/content/p_vomdiapplication/XSharp.VOMDIApplication.xsproj
new file mode 100644
index 0000000000..37d5ae01d0
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/XSharp.VOMDIApplication.xsproj
@@ -0,0 +1,37 @@
+
+
+
+ WinExe
+ VOMDIApp
+ VO
+ true
+ VOMDIApp
+ True
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ false
+ false
+ true
+ false
+ true
+ true
+ False
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vomdiapplication/cavoded.tpl b/src/Templates/working/content/p_vomdiapplication/cavoded.tpl
new file mode 100644
index 0000000000..627763cb84
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/cavoded.tpl
@@ -0,0 +1,225 @@
+[CLASS]
+CLASS %classname% INHERIT %superclass%
+ INSTANCE cDBFPath := "%dbfpath%" AS STRING
+ INSTANCE cName := "%dbfname%" AS STRING
+ INSTANCE xDriver := %rdd% AS USUAL
+ INSTANCE lReadOnlyMode:= %ro% AS LOGIC
+ INSTANCE lSharedMode := %share% AS USUAL
+ INSTANCE nOrder := %order% AS INT
+ %declarations%
+
+[INIT]
+METHOD Init(cDBF, lShare, lRO, xRdd) CLASS %classname%
+ LOCAL oFS AS FILESPEC
+ LOCAL i AS DWORD
+ LOCAL nFields AS DWORD
+ LOCAL aFieldDesc AS ARRAY
+ LOCAL aIndex AS ARRAY
+ LOCAL nIndexCount AS DWORD
+ LOCAL oFSIndex AS FILESPEC
+ LOCAL nPos AS DWORD
+ LOCAL lTemp AS LOGIC
+ LOCAL oFSTemp AS FILESPEC
+
+
+ IF IsLogic(lShare)
+ SELF:lSharedMode := lShare
+ ELSE
+ IF !IsLogic(SELF:lSharedMode)
+ SELF:lSharedMode := !SetExclusive()
+ ENDIF
+ ENDIF
+
+ IF IsLogic(lRO)
+ SELF:lReadOnlyMode := lRO
+ ENDIF
+
+ IF IsString(xRdd) .OR. IsArray(xRdd)
+ SELF:xDriver := xRdd
+ ENDIF
+
+ SELF:PreInit()
+
+ IF IsString(cDBF)
+ // UH 01/18/2000
+ oFSTemp := FileSpec{SELF:cDBFPath + SELF:cName}
+ oFS := FileSpec{cDBF}
+
+ IF SLen(oFS:Drive) = 0
+ oFS:Drive := CurDrive()
+ ENDIF
+ IF SLen(oFS:Path) = 0
+ oFS:Path := "\" + CurDir()
+ ENDIF
+
+ IF SLen(oFS:FileName) = 0
+ oFS:Filename := SELF:cName
+ ENDIF
+
+ IF oFS:FullPath == oFSTemp:Fullpath
+ lTemp := .T.
+ ELSE
+ IF Left(cDBF, 2) =='\\' // Unc path, for example \\Server\Share\FileName.DBF
+ SELF:cDBFPath := oFS:Path
+ ELSE
+ SELF:cDBFPath := oFS:Drive + oFS:Path
+ ENDIF
+ SELF:cName := oFS:FileName + oFS:Extension
+ oFS := FileSpec{SELF:cDBFPath + SELF:cName}
+ ENDIF
+ ELSE
+ oFS := FileSpec{SELF:cName}
+ oFS:Path := SELF:cDBFPath
+ ENDIF
+
+
+ SUPER:Init(oFS, SELF:lSharedMode, SELF:lReadOnlyMode , SELF:xDriver )
+
+ oHyperLabel := HyperLabel{#%hlname%, "%hlcaption%", "%hldescription%", "%hlhelpcontext%"}
+
+ IF oHLStatus = NIL
+ nFields := ALen(aFieldDesc := SELF:FieldDesc)
+ FOR i:=1 UPTO nFields
+ nPos := SELF:FieldPos( aFieldDesc[i][DBC_NAME] )
+
+ SELF:SetDataField( nPos,;
+ DataField{aFieldDesc[i][DBC_SYMBOL],aFieldDesc[i][DBC_FIELDSPEC]} )
+
+ IF String2Symbol(aFieldDesc[i][DBC_NAME]) != aFieldDesc[i][DBC_SYMBOL]
+ SELF:FieldInfo(DBS_ALIAS, nPos, Symbol2String(aFieldDesc[i][DBC_SYMBOL]) )
+ ENDIF
+ NEXT
+
+ nIndexCount := ALen(aIndex:=SELF:IndexList)
+
+ FOR i:=1 UPTO nIndexCount
+ oFSIndex := FileSpec{ aIndex[i][DBC_INDEXNAME] }
+ oFSIndex:Path := SELF:cDBFPath
+
+ IF lTemp .AND. !Empty( aIndex[i][DBC_INDEXPATH] )
+ oFSIndex:Path := aIndex[i][DBC_INDEXPATH]
+ ENDIF
+
+ IF oFSIndex:Find()
+ lTemp := SELF:SetIndex( oFSIndex )
+ ENDIF
+ NEXT
+
+ // UH 01/18/2000
+ // SELF:nOrder > 0
+ IF lTemp .AND. SELF:nOrder > 0
+ SELF:SetOrder(SELF:nOrder)
+ ENDIF
+
+ SELF:GoTop()
+ ENDIF
+
+ SELF:PostInit()
+
+ RETURN SELF
+
+
+[FIELDDESC]
+ACCESS FieldDesc CLASS %classname%
+ //
+ // Describes all fields selected by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nFields AS DWORD
+
+ nFields := %fieldcount%
+
+ IF nFields > 0
+ aRet := ArrayCreate(nFields)
+
+ //
+ // The following code creates an array of field
+ // descriptors with these items for each
+ // selected field:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_SYMBOL
+ // DBC_NAME
+ // DBC_FIELDSPEC
+ //
+ %fielddesc%
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+
+ RETURN aRet
+
+
+[INDEXLIST]
+ACCESS IndexList CLASS %classname%
+ //
+ // Describes all index files created or selected
+ // by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nIndexCount AS DWORD
+
+ nIndexCount := %indexcount%
+
+ IF nIndexCount > 0
+ aRet := ArrayCreate(nIndexCount)
+
+ //
+ // The following code creates an array of index
+ // file descriptors with these items for each
+ // selected index file:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_INDEXNAME
+ // DBC_INDEXPATH
+ // DBC_ORDERS
+ //
+ // Array contains an array of
+ // order descriptors with these items for each
+ // order:
+ //
+ // { , , , , }
+ //
+ // Use following predefined constants to access
+ // aOrder subarrays:
+ //
+ // DBC_TAGNAME
+ // DBC_DUPLICATE
+ // DBC_ASCENDING
+ // DBC_KEYEXP
+ // DBC_FOREXP
+ //
+ %indexlist%
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+ RETURN aRet
+
+
+[PREINIT]
+METHOD PreInit() class %classname%
+ //Put your PreInit additions here
+ RETURN NIL
+
+[POSTINIT]
+METHOD PostInit() class %classname%
+ //Put your PostInit additions here
+ RETURN NIL
+
+[MACROS]
+FieldDesc=\r\n\t\taRet[%pos%] := { #%hlname%, \"%fldname%\", %classname%{}}
+Index=\r\n\t\taRet[%pos%] := { \"%indexname%\", \"%dbfpath%\",; \r\n \t\t\t\t\t{%orderlist% } }
+Order={ \"%tag%\", %duplicate%, %ascending%, [%keyexp%], [%forexp%] }
+Declaration=\r\n\tDECLARE ACCESS %hlname%\r\n\tDECLARE ASSIGN %hlname%
diff --git a/src/Templates/working/content/p_vomdiapplication/cavofed.tpl b/src/Templates/working/content/p_vomdiapplication/cavofed.tpl
new file mode 100644
index 0000000000..11665a502f
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/cavofed.tpl
@@ -0,0 +1,33 @@
+[CLASS]
+CLASS %classname% INHERIT %superclass%
+
+
+[INIT]
+METHOD Init() CLASS %classname%
+ LOCAL cPict AS STRING
+
+ SUPER:Init( HyperLabel{#%hlname%, "%hlcaption%", "%hldescription%", "%hlhelpcontext%" }, "%type%", %len%, %dec% )
+ cPict := "%picture"
+ IF SLen(cPict) > 0
+ SELF:Picture := cPict
+ ENDIF
+
+ RETURN SELF
+
+
+
+[DBSERVER]
+Method GetFieldInfo%hlname%() CLASS %servername%
+RETURN {#%hlname%, "%hlcaption%","%hldescription%","%hlhelpcontext%"}
+
+[DBSERVER]
+ACCESS %hlname% AS %usualtype% PASCAL CLASS %servername%
+
+ RETURN SELF:FieldGet(#%hlname%)
+
+
+[DBSERVER]
+ASSIGN %hlname%(uValue AS %usualtype%) AS %usualtype% PASCAL CLASS %servername%
+
+ RETURN SELF:FieldPut(#%hlname%, uValue)
+
diff --git a/src/Templates/working/content/p_vomdiapplication/cavowed.inf b/src/Templates/working/content/p_vomdiapplication/cavowed.inf
new file mode 100644
index 0000000000..a484dae8a8
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/cavowed.inf
@@ -0,0 +1,954 @@
+[FORM]
+Assign01=Name,HyperLabel(%Name%,%Caption%,,)
+Assign02=Caption,HyperLabel(,lstring,,)
+Assign03=Description,HyperLabel(,,string,)
+Assign04=Help Context,HyperLabel(,,,string)
+Assign05=Clipper Keys,ClipperKeys(BOOL)
+Assign06=Large Icon,Icon(CLASS:ICON)
+Assign07=Small Icon,IconSm(CLASS:ICON)
+Assign08=Accelerator Table,Accelerator(CLASS:Accelerator)
+Assign09=Background Color,Background(COLOR)
+Assign10=Menu,Menu(CLASS:Menu)
+Assign11=Context Menu,ContextMenu(CLASS:Menu)
+Assign12=Help File Name,HelpDisplay(string)
+Assign13=Prevent Auto Layout,PreventAutoLayout(BOOL)
+Assign14=Defer USE,DeferUse(BOOL)
+Assign15=Quit On Close,QuitOnClose(BOOL)
+Assign16=Automated,Automated(BOOL)
+Assign17=Allow Server Close,AllowServerClose(BOOL)
+
+Method01=Activate,Activate(CODE:Activate)
+Method02=ButtonClick,ButtonClick(CODE:ButtonClick)
+Method03=ButtonDoubleClick,ButtonDoubleClick(CODE:ButtonDoubleClick)
+Method04=Close,Close(CODE:Close)
+Method05=Deactivate,Deactivate(CODE:Deactivate)
+Method06=Draw,Draw(CODE:Draw)
+Method07=EditChange,EditChange(CODE:EditChange)
+Method08=EditFocusChange,EditFocusChange(CODE:EditFocusChange)
+Method09=EditScroll,EditScroll(CODE:EditScroll)
+Method10=Expose,Expose(CODE:Expose)
+Method11=FocusChange,FocusChange(CODE:FocusChange)
+Method12=HelpRequest,HelpRequest(CODE:HelpRequest)
+Method13=HorizontalScroll,HorizontalScroll(CODE:HorizontalScroll)
+Method14=Keydown,Keydown(CODE:Keydown)
+Method15=Keyup,Keyup(CODE:Keyup)
+Method16=ListBoxClick,ListBoxClick(CODE:ListBoxClick)
+Method17=ListBoxSelect,Show(CODE:ListBoxSelect)
+Method18=MenuCommand,MenuCommand(CODE:MenuCommand)
+Method19=MenuInit,MenuInit(CODE:MenuInit)
+Method20=MenuSelect,MenuSelect(CODE:MenuSelect)
+Method21=MouseButtonDoubleClick,MouseButtonDoubleClick(CODE:MouseButtonDoubleClick)
+Method22=MouseButtonDown,MouseButtonDown(CODE:MouseButtonDown)
+Method23=MouseButtonUp,MouseButtonUp(CODE:MouseButtonUp)
+Method24=MouseDrag,MouseDrag(CODE:MouseDrag)
+Method25=MouseMove,MouseMove(CODE:MouseMove)
+Method26=Move,Move(CODE:Move)
+Method27=QueryClose,QueryClose(CODE:QueryClose)
+Method28=Resize,Resize(CODE:Resize)
+Method29=VerticalScroll,VerticalScroll(CODE:VerticalScroll)
+Method30=View As,ViewAs(VIEWS)
+Method31=Data Server,Use(CLASS:DBSERVER:+SQLTable:+JDataServer)
+Method32=Font,Font(FONT)
+Method33=Notify,Notify(CODE:Notify)
+Method34=PreValidate,PreValidate(CODE:PreValidate)
+Method35=HorizontalSlide,HorizontalSlide(CODE:HorizontalSlide)
+Method36=VerticalSlide,VerticalSlide(CODE:VerticalSlide)
+Method37=HorizontalSpin,HorizontalSpin(CODE:HorizontalSpin)
+Method38=VerticalSpin,VerticalSpin(CODE:VerticalSpin)
+Method39=PreInit Actions,PreInit(CODE:PreInit)
+Method40=PostInit Actions,PostInit(CODE:PostInit)
+Method41=StatusBar,EnableStatusBar(BOOL)
+Method42=AnimationStart,AnimationStart(CODE:AnimationStart)
+Method43=AnimationStop,AnimationStop(CODE:AnimationStop)
+Method44=RichEditDropFiles,RichEditDropFiles(CODE:RichEditDropFiles)
+Method45=RichEditProtected,RichEditProtected(CODE:RichEditProtected)
+Method46=RichEditSelChange,RichEditSelChange(CODE:RichEditSelectionChange)
+Method47=RichEditUndoLost,RichEditUndoLost(CODE:RichEditUndoLost)
+Method48=ListViewItemDrag,ListViewItemDrag(CODE:ListViewItemDrag)
+Method49=ListViewItemEdit,ListViewItemEdit(CODE:ListViewItemEdit)
+Method50=ListViewColumnClick,ListViewColumnClick(CODE:ListViewColumnClick)
+Method51=ListViewItemDelete,ListItemDelete(CODE:ListViewItemDelete)
+Method52=ListViewKeyDown,ListKeyDown(CODE:ListViewKeyDown)
+Method53=TreeViewMouseDown,TreeViewMouseButtonDown(CODE:TreeViewMouseButtonDown)
+Method54=ListViewMouseDown,ListViewMouseButtonDown(CODE:ListViewMouseButtonDown)
+Method55=TreeViewMouseDoubleClick,TreeViewMouseDoubleClick(CODE:TreeViewMouseButtonDoubleClick)
+Method56=ListViewMouseDoubleClick,ListViewMouseDoubleClick(CODE:ListViewMouseButtonDoubleClick)
+Method57=TabSelect,TabSelect(CODE:TabSelect)
+Method58=TabSelChanging,TabSelChanging(CODE:TabSelectionChanging)
+Method59=TabKeyDown,TabKeyDown(CODE:TabKeyDown)
+Method60=TreeViewItemDrag,TreeViewItemDrag(CODE:TreeViewItemDrag)
+Method61=TreeViewItemEdit,TreeViewItemEdit(CODE:TreeViewItemEdit)
+Method62=TreeViewItemDelete,TreeViewItemDelete(CODE:TreeViewItemDelete)
+Method63=TreeViewItemExpanded,TreeViewItemExpanded(CODE:TreeViewItemExpanded)
+Method64=TreeViewItemExpanding,TreeViewItemExpanding(CODE:TreeViewItemExpanding)
+Method65=TreeViewKeyDown,TreeViewKeyDown(CODE:TreeViewKeyDown)
+Method66=TreeViewSelChanged,TreeViewSelChanged(CODE:TreeViewSelectionChanged)
+Method67=TreeViewSelChanging,TreeViewSelChanging(CODE:TreeViewSelectionChanging)
+Method68=Class Declaration,ClassDeclaration(CODE:ClassDeclaration)
+Method69=MonthCalSelChanged,MonthCalSelChanged(CODE:MonthCalSelectionChanged)
+Method70=DateTimeSelChanged,DateTimeSelChanged(CODE:DateTimeSelectionChanged)
+Method90=No Access/Assign,NoAcc(LOGIC)
+Method91=Pixel Positions,PixPos(LOGIC)
+Method92=Export Controls,ExpCtls(LOGIC)
+
+WindowStyle01=Tab Key,WS_CHILD:WS_CHILD|DS_CONTROL(TABKEY)
+
+[FORM:DATAWINDOW]
+ContTitle=Data Window
+text=DataWindow Caption
+InitMethod=DATAWINDOW(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataWindow)
+Name=MyDataWindow
+Size=420,320
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2065
+PropTabs=HyperLabel,DataWindow,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+Assign18=Owner Alignment,OwnerAlignment(OWNERALIGNMENT)
+
+[FORM:DATADIALOG]
+ContTitle=Data Dialog
+text=DataDialog Caption
+InitMethod=DATADIALOG(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataDialog)
+Name=MyDataDialog
+Size=400,240
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2490
+PropTabs=HyperLabel,DataDialog,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+
+[FORM:DATAWINDOW:OLEDATAWINDOW]
+ContTitle=OLE Data Window
+text=OLE DataWindow Caption
+InitMethod=OLEDATAWINDOW(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OleDataWindow)
+Name=MyOLEDataWindow
+Size=420,320
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2065
+PropTabs=HyperLabel,DataWindow,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+
+
+[FORM:SHELLWINDOW]
+Assign01=Mouse Pointer,Pointer(CLASS:POINTER)
+Assign02=Menu,Menu(CLASS:Menu)
+Assign03=Help File Name,HelpDisplay(string)
+ContTitle=Shell Window
+text=ShellWindow Caption
+InitMethod=SHELLWINDOW(oParent,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ShellWindow)
+Name=TheShellWindow
+Size=400,300
+Position=5,5
+Style=WS_OVERLAPPEDWINDOW
+HelpID=2060
+PropTabs=HyperLabel,ShellWindow,Mouse Events,Window Events,Control Events,Menu Events
+
+[FORM:DIALOGWINDOW]
+Method01=Font,Font(FONT)
+Method02=Modeless,Modeless(LOGIC)
+Assign01=Background Color,Background(COLOR)
+Assign02=Mouse Pointer,Pointer(CLASS:POINTER)
+Assign03=Help File Name,HelpDisplay(string)
+WindowStyle01=Disabled,WS_DISABLED(BOOL)
+WindowStyle03=Clip Siblings,WS_CLIPSIBLINGS(BOOL)
+WindowStyle04=Local Edit,DS_LOCALEDIT(BOOL)
+WindowStyle05=Absolute Align,DS_ABSALIGN(BOOL)
+WindowStyle06=Clip Children,WS_CLIPCHILDREN(BOOL)
+WindowStyle09=System Modal,DS_SYSMODAL(BOOL)
+WindowStyle10=No Idle Message,DS_NOIDLEMSG(BOOL)
+WindowStyle11=Resizable,WS_THICKFRAME:DS_MODALFRAME(BOOL)
+WindowStyle12=Caption Bar,WS_NULL:WS_CAPTION:WS_CAPTION|WS_SYSMENU:WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX:WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX:WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX(CAPTIONBAR)
+WindowStyle13=Fixed Font,DS_FIXEDSYS(BOOL)
+WindowStyle14=Position,WS_NULL:DS_CENTER:DS_CENTERMOUSE(DIALOGPOSITON)
+WindowStyle15=Type,WS_POPUP:WS_CHILD|DS_CONTROL(DIALOGTYPE)
+ContTitle=Dialog Window
+DialogTemplate=1
+text=Dialog Caption
+InitMethod=DialogWindow(oParent,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DialogWindow)
+Name=TheDialog
+Size=400,240
+Position=5,5
+Style=DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_3DLOOK
+ExStyle=WS_EX_DLGMODALFRAME
+HelpID=2070
+PropTabs=HyperLabel,DlgWindow,DlgWndStyles:Styles,Mouse Events,Window Events,Control Events,CommonControl Events,TreeView Events,ListView Events,Menu Events
+
+[CONTROL]
+Assign01=Name,HyperLabel(%Name%,%Caption%,,)
+Assign02=Caption,HyperLabel(,lstring,,)
+Assign03=Description,HyperLabel(,,string,)
+Assign04=Help Context,HyperLabel(,,,string)
+Assign05=Background Color,Background(COLOR)
+Assign06=Context Menu,ContextMenu(CLASS:Menu)
+Assign07=Tooltip,TooltipText(string)
+Assign08=Owner Alignment,OwnerAlignment(OWNERALIGNMENT)
+WindowStyle01=Disabled,WS_DISABLED(BOOL)
+WindowStyle02=Tab Stop,WS_TABSTOP(BOOL)
+WindowStyle03=Group,WS_GROUP(BOOL)
+WindowStyle04=Border,WS_BORDER(BOOL)
+WindowStyle05=Vertical Scrollbar,WS_VSCROLL(BOOL)
+WindowStyle06=Horizontal Scrollbar,WS_HSCROLL(BOOL)
+WindowStyle07=Clip Siblings,WS_CLIPSIBLINGS(BOOL)
+ExWindowStyle01=Modal Frame,WS_EX_DLGMODALFRAME(BOOL)
+ExWindowStyle02=Static Edge,WS_EX_STATICEDGE(BOOL)
+ExWindowStyle03=Client Edge,WS_EX_CLIENTEDGE(BOOL)
+ExWindowStyle04=Transparent,WS_EX_TRANSPARENT(BOOL)
+ExWindowStyle05=Accept Files,WS_EX_ACCEPTFILES(BOOL)
+ExWindowStyle06=No Parent Notify,WS_EX_NOPARENTNOTIFY(BOOL)
+ExWindowStyle07=Right-To-Left Reading,WS_EX_RTLREADING(BOOL)
+ExWindowStyle08=ExAlignment,WS_EX_LEFT:WS_EX_RIGHT(EXALIGNMENT)
+
+[CONTROL:CUSTOMCONTROL]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+ContTitle=Custom Control
+Name=CustomControl
+ClassName=static
+OptClassName=_VOCustomControl
+Size=240,140
+HelpID=2915
+Style=WS_CHILD|WS_BORDER
+PropTabs=HyperLabel,GenCustCtrl:General,CustomCtlStyles:Styles,ExStyles
+InitMethod=CustomControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:CustomControl)
+
+[CONTROL:MULTIMEDIACONTAINER]
+Assign01=File Name,FileName(STRING)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+ContTitle=MulitMedia Container
+Name=MultiMediaContainer
+ClassName=__PTSTBCN__
+OptClassName=_VOMMContainer
+Size=240,140
+;HelpID=2915
+Style=WS_CHILD|WS_BORDER
+PropTabs=HyperLabel,GenMMCont:General,MMContStyles:Styles,ExStyles
+InitMethod=MultiMediaContainer(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MultiMediaContainer)
+
+[CONTROL:OLEGEN]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=AllowResize,AllowResize(BOOL)
+Assign03=AutoSizeOnCreate,AutoSizeOnCreate(BOOL)
+Assign04=ReadOnly,ReadOnly(BOOL)
+Assign05=AllowDocView,AllowDocView(BOOL)
+
+[CONTROL:OLEGEN:OLEOBJECT]
+Assign01=AllowInPlace,AllowInPlace(BOOL)
+Assign02=ActivateOnDblClk,ActivateOnDblClk(BOOL)
+Assign03=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+ContTitle=OLE Object
+Name=OLEObject
+ClassName=__PTSTBCN__
+OptClassName=_VOOleContainer
+Size=240,140
+PropTabs=HyperLabel,GenOleObject:General,OLEObjStyles:Styles,ExStyles
+Style=WS_CHILD|WS_BORDER
+InitMethod=OLEObject(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OLEObject)
+
+[CONTROL:OLEGEN:OLECONTROL]
+ContTitle=OLE Control
+Name=OLEControl
+ClassName=__PTSTBCN__
+OptClassName=_VOOleContainer
+Size=240,140
+Style=WS_CHILD
+HelpID=2290
+PropTabs=HyperLabel,GenOleControl:General,OCXProperties:Properties,OCXEvents:Events,OLEObjStyles:Styles,ExStyles
+InitMethod=OLEControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OLEControl)
+
+[CONTROL:SUBDATAWINDOW]
+ContTitle=Sub-Data Window
+ClassName=__PSBDWN__
+Name=Sub_Form
+Size=240,140
+Style=WS_CHILD|WS_BORDER
+HelpID=2225
+PropTabs=GenSubData:General,SubDataStyles:Styles
+Method1=Relation String,RelationString(string)
+Method2=Order,Order(string)
+
+[CONTROL:FIXEDICON]
+Method01=Icon,SetIcon(CLASS:ICON)
+ContTitle=Fixed Icon
+ClassName=static
+Name=FixedIcon
+Size=32,32
+GenerateCode=1
+Style=WS_CHILD|SS_ICON|WS_BORDER
+HelpID=2205
+PropTabs=HyperLabel,GenFixedImage:General,FixedImageStyles:Styles,ExStyles
+InitMethod=FIXEDICON(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedIcon)
+WindowStyle08=Real Size Image,SS_REALSIZEIMAGE(BOOL)
+WindowStyle09=Center Image,SS_CENTERIMAGE(BOOL)
+WindowStyle10=Right adjust,SS_RIGHTJUST(BOOL)
+
+[CONTROL:FIXEDBITMAP]
+Method01=Bitmap,SetBitmap(CLASS:BITMAP)
+ContTitle=Fixed Bitmap
+ClassName=static
+Name=FixedBitmap
+Size=64,64
+GenerateCode=1
+Style=WS_CHILD|SS_BITMAP|WS_BORDER
+HelpID=2565
+PropTabs=HyperLabel,GenFixedImage:General,FixedImageStyles:Styles,ExStyles
+InitMethod=FIXEDBITMAP(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedBitmap)
+WindowStyle09=Center Image,SS_CENTERIMAGE(BOOL)
+WindowStyle10=Right adjust,SS_RIGHTJUST(BOOL)
+
+[CONTROL:SCROLLBAR]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Min Value,Range(numeric,)
+Assign04=Max Value,Range(,numeric)
+WindowStyle01=AutoSize,SBS_SIZEBOXTOPLEFTALIGN(BOOL)
+WindowStyle02=Size Grip,SBS_SIZEGRIP|SBS_SIZEBOXBOTTOMRIGHTALIGN(BOOL)
+
+[CONTROL:SCROLLBAR:HORIZONTALSCROLLBAR]
+ContTitle=Horizontal Scroll Bar
+ClassName=scrollbar
+Name=HorzScroll
+Size=140,20
+Style=WS_CHILD|SBS_HORZ
+HelpID=2215
+PropTabs=HyperLabel,GenScrollbar:General,ScrollBarStyles:Styles,ExStyles
+InitMethod=HorizontalScrollBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalScrollBar)
+
+[CONTROL:SCROLLBAR:VERTICALSCROLLBAR]
+ContTitle=Vertical Scroll Bar
+ClassName=scrollbar
+Name=VertScroll
+Size=20,140
+Style=WS_CHILD|SBS_VERT
+HelpID=2220
+PropTabs=HyperLabel,GenScrollbar:General,ScrollBarStyles:Styles,ExStyles
+InitMethod=VerticalScrollBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalScrollBar)
+
+[CONTROL:TEXTCONTROL]
+Method01=Font,Font(FONT)
+Method02=Input Method Editor,Ime(OLOGIC)
+Assign01=Text Color,TextColor(COLOR)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+
+[CONTROL:TEXTCONTROL:EDIT]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Text Limit,TextLimit(numeric)
+WindowStyle09=Password,ES_PASSWORD(BOOL)
+WindowStyle10=Retain Selection,ES_NOHIDESEL(BOOL)
+WindowStyle11=OEM Conversion,ES_OEMCONVERT(BOOL)
+WindowStyle12=Auto HScroll,ES_AUTOHSCROLL(BOOL)
+WindowStyle13=Read Only,ES_READONLY(BOOL)
+WindowStyle14=Conversion,WS_NULL:ES_UPPERCASE:ES_LOWERCASE(EDITCONVERT)
+WindowStyle15=Numbers Only,ES_NUMBER(BOOL)
+WindowStyle19=Alignment,ES_LEFT:ES_CENTER:ES_RIGHT(EDITALIGN)
+
+[CONTROL:TEXTCONTROL:EDIT:MULTILINEEDIT]
+WindowStyle17=Auto VScroll,ES_AUTOVSCROLL(BOOL)
+WindowStyle18=Return Key,ES_WANTRETURN(BOOL)
+ContTitle=Multi-Line Edit
+ClassName=edit
+Name=MultiLineEdit
+Size=80,60
+Style=WS_CHILD|ES_MULTILINE|WS_TABSTOP|WS_BORDER|ES_AUTOVSCROLL|ES_AUTOHSCROLL|ES_WANTRETURN
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2190
+PropTabs=HyperLabel,GenEdit:General,MultiLineStyles:Styles,ExStyles
+InitMethod=MultiLineEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MultiLineEdit)
+
+[CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT]
+Assign01=Block,Block(string)
+Assign02=Block Owner,BlockOwner(STRING)
+Assign03=OverWrite,OverWrite(OVERWRITE)
+Assign04=Picture,Picture(STRING)
+Assign05=Scroll Mode,ScrollMode(SCRMODE)
+Assign06=Focus Select,FocusSelect(FSELECT)
+Assign07=Auto Focus Change,AutoFocusChange(BOOL)
+ContTitle=Single-Line Edit
+ClassName=edit
+Name=SingleLineEdit
+Size=80,20
+Style=WS_CHILD|WS_TABSTOP|WS_BORDER|ES_AUTOHSCROLL
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2185
+PropTabs=HyperLabel,GenSingleEdit:General,SingleLineStyles:Styles,ExStyles
+InitMethod=SingleLineEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:SingleLineEdit)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Text Color,TextColor(COLOR)
+Method01=Fill Using,FillUsing( )
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:LISTBOX]
+WindowStyle22=Sort,LBS_SORT(BOOL)
+WindowStyle23=Notify Parent,LBS_NOTIFY(BOOL)
+WindowStyle24=Use Tab Stops,LBS_USETABSTOPS(BOOL)
+WindowStyle25=No Redraw,LBS_NOREDRAW(BOOL)
+WindowStyle26=Multi Column,LBS_MULTICOLUMN(BOOL)
+WindowStyle27=No Integral Height,LBS_NOINTEGRALHEIGHT(BOOL)
+WindowStyle28=Want Keyboard Input,LBS_WANTKEYBOARDINPUT(BOOL)
+WindowStyle29=Multiple Selection,LBS_MULTIPLESEL(BOOL)
+WindowStyle30=Extended Selection,LBS_EXTENDEDSEL(BOOL)
+WindowStyle31=Disable if no Scroll,LBS_DISABLENOSCROLL(BOOL)
+WindowStyle32=Owner Draw,WS_NULL:LBS_OWNERDRAWFIXED:LBS_OWNERDRAWVARIABLE(OWNERDRAW)
+ContTitle=List Box
+ClassName=listbox
+Name=ListBox
+Size=80,80
+Style=WS_TABSTOP|WS_CHILD|WS_VSCROLL|LBS_NOTIFY|WS_BORDER|LBS_SORT|LBS_NOINTEGRALHEIGHT|LBS_DISABLENOSCROLL
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2160
+PropTabs=HyperLabel,GenListbox:General,ListBoxStyles:Styles,ExStyles
+InitMethod=ListBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ListBox:-ComboBox)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:COMBOBOX]
+WindowStyle32=ComboBox Type,CBS_SIMPLE:CBS_DROPDOWN:CBS_DROPDOWNLIST(CBTYPE)
+WindowStyle33=Sort,CBS_SORT(BOOL)
+WindowStyle34=Auto HScroll,CBS_AUTOHSCROLL(BOOL)
+WindowStyle35=No Integral Height,CBS_NOINTEGRALHEIGHT(BOOL)
+WindowStyle36=OEM Convert,CBS_OEMCONVERT(BOOL)
+WindowStyle37=Disable if no Scroll,CBS_DISABLENOSCROLL(BOOL)
+WindowStyle38=OwnerDraw,WS_NULL:CBS_OWNERDRAWFIXED:CBS_OWNERDRAWVARIABLE(OWNERDRAW)
+ContTitle=Combo Box
+ClassName=combobox
+Name=ComboBox
+Size=80,120
+Style=WS_TABSTOP|WS_CHILD|CBS_DROPDOWN|WS_VSCROLL|CBS_SORT|CBS_DISABLENOSCROLL
+HelpID=2165
+PropTabs=HyperLabel,GenListbox:General,ComboBoxStyles:Styles,ExStyles
+InitMethod=combobox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ComboBox)
+
+
+[CONTROL:TEXTCONTROL:BUTTON]
+assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+assign02=Image,Image(CLASS:Icon:+Bitmap)
+WindowStyle06=Text Left,BS_LEFTTEXT(BOOL)
+WindowStyle07=Multiline,BS_MULTILINE(BOOL)
+WindowStyle08=Flat,BS_FLAT(BOOL)
+WindowStyle09=Horizontal Alignment,WS_NULL:BS_LEFT:BS_RIGHT:BS_CENTER(BUTTONHALIGN)
+WindowStyle10=Vertical Alignment,WS_NULL:BS_TOP:BS_BOTTOM:BS_VCENTER(BUTTONVALIGN)
+WindowStyle11=Image Type,WS_NULL:BS_ICON:BS_BITMAP:WS_NULL(BUTTONIMAGETYPE)
+WindowStyle12=Push Like,BS_PUSHLIKE(BOOL)
+
+[CONTROL:TEXTCONTROL:BUTTON:CHECKBOX]
+Assign01=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign02=Text Color,TextColor(COLOR)
+WindowStyle05=Selection,BS_CHECKBOX:BS_AUTOCHECKBOX:BS_3STATE:BS_AUTO3STATE(CBAUTOSTYLE)
+ContTitle=Check Box
+ClassName=button
+Name=CheckBox
+Text=CheckBox
+Size=120,18
+HelpID=2155
+Style=WS_TABSTOP|WS_CHILD|BS_AUTOCHECKBOX
+PropTabs=HyperLabel,GenCheckbox:General,CheckBoxStyles:Styles,ExStyles
+InitMethod=CheckBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:CheckBox)
+
+[CONTROL:TEXTCONTROL:BUTTON:PUSHBUTTON]
+WindowStyle04=Default Button,BS_DEFPUSHBUTTON(BOOL)
+Event01=Click Event,MyBtnName( )
+ContTitle=Push Button
+Type=CommandControl
+ClassName=button
+Name=PushButton
+text=Push
+Size=80,20
+Style=WS_CHILD|WS_TABSTOP
+PropTabs=HyperLabel,GenPushButton:General,PushButtonStyles:Styles,ExStyles
+HelpID=2170
+InitMethod=PushButton(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:PushButton)
+
+[CONTROL:TEXTCONTROL:BUTTON:RADIOBUTTON]
+Method01=Group Value,Value(numeric)
+Assign01=Text Color,TextColor(COLOR)
+WindowStyle07=AutoSelect,BS_AUTORADIOBUTTON:BS_RADIOBUTTON(BOOL)
+ContTitle=Radio Button
+Type=CommandControl
+ClassName=button
+Name=RadioButton
+text=RadioButton
+Size=120,18
+Style=WS_CHILD|BS_AUTORADIOBUTTON
+HelpID=2175
+PropTabs=HyperLabel,GenRadioButton:General,RadioButtonStyles:Styles,ExStyles
+InitMethod=RadioButton(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RadioButton)
+
+[CONTROL:TEXTCONTROL:FIXEDTEXT]
+Assign01=Text Color,TextColor(COLOR)
+WindowStyle20=No Prefix,SS_NOPREFIX(BOOL)
+WindowStyle21=Alignment,SS_LEFT:SS_CENTER:SS_RIGHT:SS_SIMPLE:SS_LEFTNOWORDWRAP(FIXEDALIGN)
+WindowStyle22=Center vertically,SS_CENTERIMAGE(BOOL)
+ContTitle=Fixed Text
+InitMethod=FixedText(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedText)
+ClassName=Static
+text=Fixed Text
+Name=FixedText
+Size=80,20
+Style=WS_CHILD
+HelpID=2210
+PropTabs=HyperLabel,GenFixedText:General,FixedTextStyles:Styles,ExStyles
+
+[CONTROL:TEXTCONTROL:GROUPBOX]
+assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Text Color,TextColor(COLOR)
+WindowStyle01=Flat,BS_FLAT(BOOL)
+ContTitle=Group Box
+ClassName=Button
+Text=GroupBox
+Name=GroupBox
+Size=100,80
+Style=WS_CHILD|BS_GROUPBOX|WS_GROUP
+HelpID=2200
+PropTabs=HyperLabel,GenGroupbox:General,GroupBoxStyles:Styles,ExStyles
+InitMethod=GroupBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:GroupBox:-RadioButtonGroup)
+
+[CONTROL:TEXTCONTROL:RADIOBUTTONGROUP]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Text Color,TextColor(COLOR)
+ContTitle=Radio Button Group
+ClassName=Button
+Text=RadioButtonGrp
+Name=RadioButtonGroup
+Size=100,80
+Style=WS_CHILD|BS_GROUPBOX|WS_GROUP
+PropTabs=HyperLabel,GenRadioButtonGroup:General,GroupBoxStyles:Styles,ExStyles
+HelpID=2180
+InitMethod=RadioButtonGroup(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RadioButtonGroup)
+
+[CONTROL:COMMONCONTROL]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Method01=Font,Font(FONT)
+
+[CONTROL:COMMONCONTROL:PROGRESSBAR]
+WindowStyle01=Smooth,PBS_SMOOTH(BOOL)
+WindowStyle02=Vertical,PBS_VERTICAL(BOOL)
+Assign01=Min Value,Range(numeric,)
+Assign02=Max Value,Range(,numeric)
+Assign03=Bar Color,BarColor(COLOR)
+Assign04=Background,BackgroundColor(COLOR)
+ContTitle=Progress Bar
+ClassName=msctls_progress32
+Name=ProgressBar
+Size=140,20
+Style=WS_CHILD
+HelpID=2260
+PropTabs=HyperLabel,GenProgBar:General,ProgressStyles:Styles,ExStylesNoStaticEdge:ExStyles
+InitMethod=ProgressBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ProgressBar)
+
+[CONTROL:SCROLLBAR:SLIDER]
+WindowStyle38=Auto Ticks,TBS_AUTOTICKS(BOOL)
+WindowStyle39=No Ticks,TBS_NOTICKS(BOOL)
+WindowStyle40=Enable Selection Range,TBS_ENABLESELRANGE(BOOL)
+WindowStyle41=Fixed Length,TBS_FIXEDLENGTH(BOOL)
+WindowStyle42=No Thumb,TBS_NOTHUMB(BOOL)
+WindowStyle43=Tooltips,TBS_TOOLTIPS(BOOL)
+
+
+[CONTROL:SCROLLBAR:SLIDER:HORIZONTALSLIDER]
+ContTitle=Horizontal Slider
+ClassName=msctls_trackbar32
+Name=HorizontalSlider
+Size=100,30
+Style=WS_CHILD|TBS_AUTOTICKS
+HelpID=2265
+PropTabs=HyperLabel,GenScrollbar:General,SliderStyles:Styles,ExStyles
+InitMethod=HorizontalSlider(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalSlider)
+
+[CONTROL:SCROLLBAR:SLIDER:VERTICALSLIDER]
+ContTitle=Vertical Slider
+ClassName=msctls_trackbar32
+Name=VerticalSlider
+Size=30,100
+Style=WS_CHILD|TBS_AUTOTICKS|TBS_VERT
+HelpID=2560
+PropTabs=HyperLabel,GenScrollbar:General,SliderStyles:Styles,ExStyles
+InitMethod=VerticalSlider(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalSlider)
+
+[CONTROL:SCROLLBAR:SPINNER]
+WindowStyle43=Wrap,UDS_WRAP(BOOL)
+WindowStyle44=Alignment,WS_NULL:UDS_ALIGNLEFT:UDS_ALIGNRIGHT(UPDOWNALIGN)
+WindowStyle45=Auto Buddy,UDS_AUTOBUDDY(BOOL)
+WindowStyle46=Arrow Keys,UDS_ARROWKEYS(BOOL)
+WindowStyle47=No Thousands,UDS_NOTHOUSANDS(BOOL)
+WindowStyle48=Set Buddy Int,UDS_SETBUDDYINT(BOOL)
+
+[CONTROL:SCROLLBAR:SPINNER:VERTICALSPINNER]
+ContTitle=Vertical Spinner
+ClassName=msctls_updown32
+Name=VerticalSpinner
+Size=20,30
+Style=WS_CHILD|UDS_AUTOBUDDY
+HelpID=2555
+PropTabs=HyperLabel,GenScrollbar:General,SpinnerStyles:Styles,ExStyles
+InitMethod=VerticalSpinner(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalSpinner)
+
+[CONTROL:SCROLLBAR:SPINNER:HORIZONTALSPINNER]
+ContTitle=Horizontal Spinner
+ClassName=msctls_updown32
+Name=HorizontalSpinner
+Size=30,20
+Style=WS_CHILD|UDS_AUTOBUDDY|UDS_HORZ
+HelpID=2555
+PropTabs=HyperLabel,GenScrollbar:General,SpinnerStyles:Styles,ExStyles
+InitMethod=HorizontalSpinner(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalSpinner)
+
+[CONTROL:COMMONCONTROL:TABCONTROL]
+Assign01=AutoSize,AutoSize(BOOL)
+WindowStyle01=Force Icon Left,TCS_FORCEICONLEFT(BOOL)
+WindowStyle02=Force Label Left,TCS_FORCELABELLEFT(BOOL)
+WindowStyle03=Buttons,TCS_BUTTONS(BOOL)
+WindowStyle04=Multiline,TCS_MULTILINE(BOOL)
+WindowStyle05=Focus On Button Down,TCS_FOCUSONBUTTONDOWN(BOOL)
+WindowStyle06=Has ToolTips,TCS_TOOLTIPS(BOOL)
+WindowStyle07=Focus Never,TCS_FOCUSNEVER(BOOL)
+WindowStyle08=Tab Position,WS_NULL:TCS_VERTICAL:TCS_BOTTOM:TCS_VERTICAL|TCS_RIGHT(TABPOSITION)
+WindowStyle09=Hot Track,TCS_HOTTRACK(BOOL)
+ContTitle=Tab Control
+ClassName=SysTabControl32
+Name=TabControl
+Size=180,100
+Style=WS_CHILD
+HelpID=2280
+PropTabs=HyperLabel,GenTabControl:General,TCStyles:Styles,ExStyles
+InitMethod=TabControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:TabControl)
+
+[CONTROL:COMMONCONTROL:TREEVIEW]
+WindowStyle55=Has Buttons,TVS_HASBUTTONS(BOOL)
+WindowStyle56=Has Lines,TVS_HASLINES(BOOL)
+WindowStyle57=Lines at Root,TVS_LINESATROOT(BOOL)
+WindowStyle58=Disable Drag&Drop,TVS_DISABLEDRAGDROP(BOOL)
+WindowStyle59=Show Selection Always,TVS_SHOWSELALWAYS(BOOL)
+WindowStyle60=Edit Labels,TVS_EDITLABELS(BOOL)
+ContTitle=Tree View
+ClassName=SysTreeView32
+Name=TreeView
+Size=150,100
+Style=WS_CHILD|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_EDITLABELS
+HelpID=2240
+PropTabs=HyperLabel,GenComControls:General,TVStyles:Styles,ExStyles
+InitMethod=TreeView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:TreeView)
+
+[CONTROL:COMMONCONTROL:LISTVIEW]
+WindowStyle60=List View Type,LVS_ICON:LVS_SMALLICON:LVS_REPORT:LVS_LIST(LVTYPE)
+WindowStyle61=Single Selection,LVS_SINGLESEL(BOOL)
+WindowStyle62=Show Selection Always,LVS_SHOWSELALWAYS(BOOL)
+WindowStyle63=Sort,WS_NULL:LVS_SORTASCENDING:LVS_SORTDESCENDING(LVSORT)
+WindowStyle64=No Label Wrap,LVS_NOLABELWRAP(BOOL)
+WindowStyle65=Auto Arrange,LVS_AUTOARRANGE(BOOL)
+WindowStyle66=Edit Labels,LVS_EDITLABELS(BOOL)
+WindowStyle67=No Scroll,LVS_NOSCROLL(BOOL)
+WindowStyle68=Align Left,LVS_ALIGNLEFT(BOOL)
+WindowStyle69=No Column Header,LVS_NOCOLUMNHEADER(BOOL)
+WindowStyle70=No Sort Header,LVS_NOSORTHEADER(BOOL)
+Assign01=Background,BackgroundColor(COLOR)
+Assign02=Grid Lines,GridLines(BOOL)
+Assign03=Header Drag&Drop,HeaderDragDrop(BOOL)
+Assign04=Full Row Select,FullRowSelect(BOOL)
+Assign05=Checkboxes,CheckBoxes(BOOL)
+Assign06=Track Selection,TrackSelection(BOOL)
+ContTitle=List View
+ClassName=SysListView32
+Name=ListView
+Size=150,120
+Style=WS_CHILD|WS_BORDER|LVS_REPORT|LVS_EDITLABELS
+HelpID=2235
+PropTabs=HyperLabel,GenListView:General,LVStyles:Styles,LVExStyles:ExStyles
+InitMethod=ListView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ListView)
+
+[CONTROL:COMMONCONTROL:LISTVIEW:DATALISTVIEW]
+Assign01=Server,Server(CLASS:DBSERVER:+SQLTable)
+ContTitle=Data List View
+ClassName=SysListView32
+Name=DataListView
+Size=150,120
+Style=WS_CHILD|WS_BORDER|LVS_REPORT|WS_HSCROLL|LVS_SINGLESEL|LVS_SHOWSELALWAYS|LVS_OWNERDATA
+HelpID=2920
+PropTabs=HyperLabel,GenListView:General,DLVStyles:Styles,LVExStyles:ExStyles
+InitMethod=DataListView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataListView)
+
+[CONTROL:TEXTCONTROL:EDIT:MULTILINEEDIT:RICHEDIT]
+WindowStyle74=Save Selection,ES_SAVESEL(BOOL)
+WindowStyle75=Sunken,ES_SUNKEN(BOOL)
+WindowStyle76=Disable No Scroll,ES_DISABLENOSCROLL(BOOL)
+WindowStyle77=Align to Parent,ES_SELECTIONBAR(BOOL)
+Assign01=Background,BackgroundColor(COLOR)
+ContTitle=Rich Edit Control
+ClassName=RICHEDIT20A
+Name=RichEdit
+Size=100,100
+Style=WS_CHILD|WS_BORDER|ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL
+HelpID=2245
+PropTabs=HyperLabel,GenRTFEdit:General,RichEditStyles:Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=RichEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RichEdit)
+
+[CONTROL:TEXTCONTROL:HOTKEYEDIT]
+ContTitle=HotKey Edit
+ClassName=msctls_hotkey32
+Name=HotKeyEdit
+Size=90,20
+Style=WS_CHILD
+HelpID=2255
+PropTabs=HyperLabel,GenComControls:General,Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=HotKeyEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HotKeyEdit)
+
+[CONTROL:COMMONCONTROL:ANIMATIONCONTROL]
+WindowStyle71=Center,ACS_CENTER(BOOL)
+WindowStyle72=Transparent Background,ACS_TRANSPARENT(BOOL)
+WindowStyle73=Auto Play,ACS_AUTOPLAY(BOOL)
+Method01=Resource,OpenResource(numeric)
+Assign01=AVI File,FileSpec(STRING)
+ContTitle=Animation Control
+ClassName=SysAnimate32
+Name=Animation
+Size=60,60
+Style=WS_CHILD|WS_BORDER
+HelpID=2250
+PropTabs=HyperLabel,GenAniControls:General,AnimStyles:Styles,ExStyles
+InitMethod=AnimationControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:AnimationControl)
+
+[CONTROL:TEXTCONTROL:DATETIMEPICKER]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Format,Format(STRING)
+WindowStyle01=Type,WS_NULL:DTS_LONGDATEFORMAT:DTS_TIMEFORMAT(DTPTYPE)
+WindowStyle02=App Can Parse,DTS_APPCANPARSE(BOOL)
+WindowStyle03=Right Align MC,DTS_RIGHTALIGN(BOOL)
+WindowStyle04=Show None,DTS_SHOWNONE(BOOL)
+WindowStyle05=Up-Down,DTS_UPDOWN(BOOL)
+ContTitle=Date Time Picker Control
+ClassName=SysDateTimePick32
+Name=DateTimePicker
+Size=85,22
+Style=WS_CHILD|DTS_TIMEFORMAT|WS_TABSTOP
+HelpID=2925
+PropTabs=HyperLabel,GenDTPick:General,DTPStyles:Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=DateTimePicker(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DateTimePicker)
+
+[CONTROL:TEXTCONTROL:MONTHCALENDAR]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+WindowStyle01=Day State,MCS_DAYSTATE(BOOL)
+WindowStyle02=Multi Select,MCS_MULTISELECT(BOOL)
+WindowStyle03=No Today,MCS_NOTODAY(BOOL)
+WindowStyle04=No Today Circle,MCS_NOTODAYCIRCLE(BOOL)
+WindowStyle05=Week Numbers,MCS_WEEKNUMBERS(BOOL)
+ContTitle=Month Calendar Control
+ClassName=SysMonthCal32
+Name=MonthCalendar
+Size=180,160
+Style=WS_CHILD|WS_TABSTOP
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2935
+PropTabs=HyperLabel,GenMonthCal:General,MCStyles:Styles,ExStyles
+InitMethod=MonthCalendar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MonthCalendar)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:COMBOBOX:COMBOBOXEX]
+ContTitle=ComboBoxEx
+ClassName=ComboBoxEx32
+Name=ComboBoxEx
+Size=80,120
+Style=WS_TABSTOP|WS_CHILD|CBS_DROPDOWN
+HelpID=2910
+PropTabs=HyperLabel,GenListbox:General,ComboBoxStyles:Styles,ExStyles
+InitMethod=comboboxex(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ComboBoxEx)
+
+[CONTROL:TEXTCONTROL:IPADDRESS]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+ContTitle=IP Address
+ClassName=SysIPAddress32
+Text=IPAddress
+Name=IPAddress
+Size=100,20
+Style=WS_CHILD|WS_TABSTOP
+HelpID=2930
+PropTabs=HyperLabel,GenIPAddress:General,Styles,ExStyles
+InitMethod=IPAddress(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:IPAddress)
+
+[AssignMap]
+BackgroundColor=Color
+BarColor=Color
+Background=Brush
+TextLimit=
+TextColor=Color
+Caption=
+AllowInPlace=
+ActivateOnDblClk=
+AllowResize=
+AutoSizeOnCreate=
+ReadOnly=
+ClipperKeys=
+AutoSize=
+OverWrite=
+Picture=
+PreventAutoLayout=
+TooltipText=
+UseHLforTooltip=
+AllowDocView=
+DeferUse=
+GridLines=
+HeaderDragDrop=
+FullRowSelect=
+CheckBoxes=
+TrackSelection=
+QuitOnClose=
+Automated=
+Format=
+AllowServerClose=
+ScrollMode=
+FocusSelect=
+AutoFocusChange=
+OwnerAlignment=
+FileName=
+
+[StdProperties]
+;**** Types
+FONT=FONTSYSTEM8,FONTMODERN8,FONTMODERN10,FONTMODERN12,FONTSWISS8,FONTSWISS10,FONTSWISS12,FONTSWISS14,FONTSWISS18,FONTSWISS24,FONTROMAN8,FONTROMAN10,FONTROMAN12,FONTROMAN14,FONTROMAN18,FONTROMAN24
+BRUSH=BRUSHWHITE,BRUSHBLACK,BRUSHDARK,BRUSHMEDIUM,BRUSHLIGHT,BRUSHHOLLOW,BRUSHCLEAR
+COLOR=COLORBLACK,COLORBLUE,COLORCYAN,COLORGREEN,COLORMAGENTA,COLORRED,COLORYELLOW,COLORWHITE
+LOGIC=Yes
+BOOL=True,False
+OLOGIC=#ON,#OFF
+VIEWS=#FormView,#BrowseView
+BUTTONIMAGESTYLE=No Image,Icon,Bitmap
+BUTTONHALIGN=Auto,Left,Right,Center
+BUTTONVALIGN=Auto,Top,Bottom,Center
+BUTTONIMAGETYPE=No Image,Icon,Bitmap
+CBAUTOSTYLE=No AutoSelect,AutoSelect,3 State,AutoSelect 3 State
+EDITCONVERT=No Conversion,Uppercase,Lowercase
+EDITALIGN=Left,Center,Right
+FIXEDALIGN=Left,Center,Right,Simple,Left No Wrap,
+UPDOWNALIGN=No Alignment,Left,Right
+OWNERDRAW=No Ownerdraw,Fixed,Variable
+CBTYPE=Simple,Drop Down,Drop Down List
+LVTYPE=Icons,Small Icons,Report,List
+LVSORT=No Sort,Ascending,Descending
+CAPTIONBAR=No Caption Bar,Caption Bar Only,System Menu,Minimize Box,Maximize Box,Both Boxes
+DIALOGPOS=Auto,Center,Center Mouse
+DIALOGTYPE=Popup Dialog,Tab Page
+TABKEY=Form Only,Include Parent
+OVERWRITE=OVERWRITE_NEVER,OVERWRITE_ONKEY,OVERWRITE_ALWAYS
+SCRMODE=SCRMODE_FULL,SCRMODE_PART,SCRMODE_NO
+FSELECT=FSEL_ALL,FSEL_TRIM,FSEL_HOME,FSEL_END,FSEL_TRIMEND
+DTPTYPE=Short Date,Long Date,Time
+TABPOSITION=Top,Left,Bottom,Right
+EXALIGNMENT=Left,Right
+OWNERALIGNMENT=OA_LEFT,OA_TOP,OA_RIGHT,OA_BOTTOM,OA_CENTER,OA_LEFT_AUTOSIZE,OA_TOP_AUTOSIZE,OA_RIGHT_AUTOSIZE,OA_BOTTOM_AUTOSIZE,OA_FULL_SIZE,OA_X,OA_X_Y,OA_X_PY, OA_X_PY_PHEIGHT,OA_X_HEIGHT,OA_X_PHEIGHT,OA_PX,OA_PX_Y,OA_PX_Y_PWIDTH,OA_PX_PY_PHEIGHT,OA_PX_PY_PWIDTH_PHEIGHT,OA_PX_PWIDTH,OA_PX_PWIDTH_HEIGHT,OA_PX_PWIDTH_PHEIGHT,OA_PX_HEIGHT,OA_PX_PHEIGHT,OA_Y,OA_Y_WIDTH,OA_Y_PWIDTH,OA_PY,OA_PY_WIDTH_PHEIGHT,OA_PY_PWIDTH_PHEIGHT,OA_PY_PHEIGHT,OA_WIDTH,OA_WIDTH_HEIGHT,OA_WIDTH_PHEIGHT,OA_PWIDTH,OA_PWIDTH_HEIGHT,OA_PWIDTH_PHEIGHT,OA_HEIGHT,OA_PHEIGHT
+
+;**** Association between Tabs and methods/assigns/styles
+HyperLabel=(Hyperlabel Info)Caption,Name,Description,Help Context,Use for Tooltip
+DataWindow=(DataWindow Properties)Inherit from Class,_DBInhFrom,_DCInhFrom,Class Declaration,No Access/Assign,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Accelerator Table,Background Color,Menu,Context Menu,Help File Name,View As,Clipper Keys,Tab Key,Data Server,Prevent Auto Layout,Allow Server Close,Defer USE,Quit On Close,Font,StatusBar,Notify,PreValidate,PreInit Actions,PostInit Actions,_Width,_Height,Owner Alignment
+DataDialog=(DataDialog Properties)Inherit from Class,_DBInhFrom,_DCInhFrom,Class Declaration,No Access/Assign,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Accelerator Table,Background Color,Context Menu,Help File Name,View As,Clipper Keys,Data Server,Prevent Auto Layout,Allow Server Close,Defer USE,Font,Notify,PreValidate,PreInit Actions,PostInit Actions,_Width,_Height
+ShellWindow=(ShellWindow Properties)Inherit from Class,Class Declaration,Large Icon,Small Icon,Mouse Pointer,Menu,Context Menu,Help File Name,PreInit Actions,PostInit Actions,_Width,_Height
+DlgWindow=(DialogWindow Properties)Inherit from Class,Class Declaration,Type,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Font,Modeless,Background Color,Mouse Pointer,Clipper Keys,Tab Key,Help File Name,PreInit Actions,PostInit Actions,_Width,_Height
+Mouse Events=(Window Mouse Events)MouseButtonDoubleClick,MouseButtonDown,MouseButtonUp,MouseDrag,MouseMove
+Window Events=(Windows Events)Activate,Close,Deactivate,Draw,Expose,FocusChange,HelpRequest,Move,QueryClose,Resize
+Menu Events=(Window Menu Events)MenuCommand,MenuInit,MenuSelect
+Control Events=(Window Control Events)ButtonClick,ButtonDoubleClick,EditChange,EditFocusChange,EditScroll,Keydown,Keyup,ListBoxClick,ListBoxSelect,HorizontalScroll,VerticalScroll,HorizontalSlide,VerticalSlide,HorizontalSpin,VerticalSpin
+CommonControl Events=(CommonControl Events)AnimationStart,AnimationStop,RichEditDropFiles,RichEditProtected,RichEditSelChange,RichEditUndoLost,TabSelect,TabSelChanging,TabKeyDown,MonthCalSelChanged,DateTimeSelChanged
+TreeView Events=(TreeView Events)TreeViewMouseDown,TreeViewMouseDoubleClick,TreeViewItemDrag,TreeViewItemEdit,TreeViewItemDelete,TreeViewItemExpanded,TreeViewItemExpanding,TreeViewKeyDown,TreeViewSelChanged,TreeViewSelChanging
+ListView Events=(ListView Events)ListViewItemDrag,ListViewItemEdit,ListViewColumnClick,ListViewItemDelete,ListViewKeyDown,ListViewMouseDown,ListViewMouseDoubleClick
+GenMultiSel=(General Multiple Selection Properties)Context Menu,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenCustCtrl=(General CustomControl Properties)Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenMMCont=(General MultiMedia Container Properties)Field Spec,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,File Name,_Width,_Height,_Left,_Top
+GenSubData=(General SubDataWindow Properties)Name,Relation String,Order,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenPushButton=(General PushButton Properties)Click Event,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenRadioButton=(General RadioButton Properties)Group Value,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenCheckbox=(General CheckBox Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenScrollbar=(General ScrollBar Properties)Field Spec,Min Value,Max Value,Background Color,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenEdit=(General Edit Properties)Field Spec,Text Limit,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenSingleEdit=(General SinglelineEdit Properties)Block,Block Owner,Field Spec,Text Limit,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Picture,Overwrite,Scroll Mode,Focus Select,Auto Focus Change,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenListbox=(General ListBox Properties)Fill Using,Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_GenCode,_Visible,Owner Alignment,_Width,_Height,_Left,_Top
+GenFixedText=(General FixedText Properties)Text Color,Background Color,Inherit from Class,Context Menu,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenFixedImage=(General FixedImage Properties)Background Color,Inherit from Class,Context Menu,Icon,Bitmap,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenGroupbox=(General GroupBox Properties)Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenRadioButtonGroup=(General RadioButtonGroup Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenComControls=(General CommonControl Properties)Background Color,Inherit from Class,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenAniControls=(General AnimationControl Properties)Background Color,Inherit from Class,Context Menu,Tooltip,Resource,AVI File,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenTabControl=(General TabControl Properties)Inherit from Class,Context Menu,Font,AutoSize,_Visible,_GenCode,_IsDataPage,_PageCaption,_PageName,Owner Alignment,_Width,_Height,_Left,_Top
+GenListView=(General CommonControl Properties)Background,Inherit from Class,Server,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenProgBar=(General ProgressBar Properties)Inherit From Class,Context Menu,Tooltip,Background,Bar Color,Min Value,Max Value,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenRTFEdit=(General Edit Properties)Field Spec,Text Limit,Text Color,Background,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenDTPick=(General Date Time Picker Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Format,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenMonthCal=(General Month Calendar Properties)Field Spec,Text Color,Background,Inherit from Class,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenOleObject=(General OLE Object Properties)Field Spec,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,AllowInPlace,ActivateOnDblClk,AllowResize,AutoSizeOnCreate,ReadOnly,AllowDocView,Owner Alignment,_Width,_Height,_Left,_Top
+GenOleControl=(General OLE Control Properties)Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,AllowInPlace,ActivateOnDblClk,AllowResize,AutoSizeOnCreate,ReadOnly,Owner Alignment,_Width,_Height,_Left,_Top
+GenIPAddress=(General IPAddress Properties)Field Spec,Inherit from Class,Context Menu,ToolTip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+OCXProperties=(OLE Control Properties)_OCXPropertyPages,_OCXPropertyList
+OCXEvents=(OLE Control Events)_OCXEventList
+Styles=(Window Styles)Disabled,Tab Stop,Group
+ExStyles=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Client Edge,Static Edge,Modal Frame
+ExStylesNoStaticEdge=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Client Edge,Modal Frame
+ExStylesNoClientEdge=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Static Edge,Modal Frame
+SubDataStyles=(Sub Data Window Styles)Tab Stop,Border
+OLEObjStyles=(OLE Object Window Styles)Disabled,Tab Stop,Group,Border
+CustomCtlStyles=(Custom Control Window Styles)Disabled,Tab Stop,Group,Border
+MMContStyles=(MulitMedia Container Window Styles)Disabled,Tab Stop,Group,Border
+FixedTextStyles=(FixedText Window Styles)Disabled,Tab Stop,Group,Border,No Prefix,Alignment,Center vertically
+FixedImageStyles=(FixedImage Window Styles)Disabled,Tab Stop,Group,Border,Real Size Image,Center Image,Right adjust
+PushButtonStyles=(PushButton Window Styles)Disabled,Tab Stop,Group,Default Button,Multiline,Flat,Horizontal Alignment,Vertical Alignment,Image Type
+CheckBoxStyles=(CheckBox Window Styles)Disabled,Tab Stop,Group,Text Left,Selection,Multiline,Flat,Horizontal Alignment,Vertical Alignment,Push Like,Image Type
+RadioButtonStyles=(RadioButton Window Styles)Disabled,Tab Stop,Group,Text Left,Flat,AutoSelect,Multiline,Horizontal Alignment,Vertical Alignment,Push Like,Image Type
+GroupBoxStyles=(GroupBox Window Styles)Disabled,Tab Stop,Group,Flat
+ProgressStyles=(ProgressBar Styles)Disabled,Tab Stop,Group,Smooth,Vertical
+SingleLineStyles=(SingleLine Edit Window Styles)Disabled,Tab Stop,Group,Border,Password,Retain Selection,OEM Conversion,Auto HScroll,Read Only,Conversion,Numbers Only,Alignment
+MultiLineStyles=(MultiLine Edit Window Styles)Disabled,Tab Stop,Group,Border,Password,Retain Selection,OEM Conversion,Vertical Scrollbar,Horizontal Scrollbar,Auto VScroll,Auto HScroll,Return Key,Read Only,Conversion,Alignment
+ListBoxStyles=(ListBox Window Styles)Disabled,Tab Stop,Group,Border,Sort,Notify Parent,Vertical Scrollbar,Horizontal Scrollbar,Use Tab Stops,No Redraw,Multi Column,No Integral Height,Want Keyboard Input,Multiple Selection,Extended Selection,Disable if no Scroll,Owner Draw
+ComboBoxStyles=(ComboBox Window Styles)Disabled,Tab Stop,Group,ComboBox Type,Sort,Vertical Scrollbar,Auto HScroll,No Integral Height,OEM Convert,Disable if no Scroll,OwnerDraw
+ScrollBarStyles=(ScrollBar Window Styles)Disabled,Tab Stop,Group,AutoSize,Size Grip
+SliderStyles=(Slider Window Styles)Disabled,Tab Stop,Group,Auto Ticks,No Ticks,Enable Selection Range,Fixed Length,No Thumb,Tooltips
+SpinnerStyles=(Spinner Window Styles)Disabled,Tab Stop,Group,Wrap,Alignment,Auto Buddy,Set Buddy Int,Arrow Keys,No Thousands
+TCStyles=(TabControl Window Styles)Disabled,Tab Stop,Group,Force Icon Left,Force Label Left,Buttons,Multiline,Focus On Button Down,Has ToolTips,Focus Never,Tab Position,Hot Track
+TVStyles=(TreeView Window Styles)Disabled,Tab Stop,Group,Border,Has Buttons,Has Lines,Lines at Root,Disable Drag&Drop,Show Selection Always,Edit Labels
+LVStyles=(ListView Window Styles)Disabled,Tab Stop,Group,Border,List View Type,Single Selection,Show Selection Always,Sort,No Label Wrap,Auto Arrange,Edit Labels,No Scroll,Align Left,No Column Header,No Sort Header
+DLVStyles=(ListView Window Styles)Disabled,Tab Stop,Group,Border,Label Wrap,Edit Labels,No Scroll,Align Left,No Column Header,No Sort Header
+AnimStyles=(AnimationControl Window Styles)Disabled,Tab Stop,Border,Group,Center,Transparent Background,Auto Play
+RichEditStyles=(RichEdit Control Window Styles)Disabled,Tab Stop,Group,Border,Retain Selection,Vertical Scrollbar,Horizontal Scrollbar,Auto VScroll,Auto HScroll,Return Key,Read Only,Alignment,Save Selection,Sunken,Disable No Scroll,Align to Parent
+DlgWndStyles=(DialogWindow Styles)Disabled,Caption Bar,Clip Siblings,Clip Children,Absolute Align,System Modal,No Idle Message,Resizable,Position
+MCStyles=(Month Calendar Styles)Disabled,Tab Stop,Group,Day State,Multi Select,No Today,No Today Circle,Week Numbers
+DTPStyles=(Date Time Picker Styles)Disabled,Tab Stop,Group,Type,Right Align MC,Show None,Up-Down
+LVExStyles=(Extended ListView Styles)Clip Siblings,Right-To-Left Reading,No Parent Notify,Accept Files,Transparent,Client Edge,Static Edge,Modal Frame,Grid Lines,Full Row Select,Header Drag&Drop,Checkboxes,Track Selection
+
+[SupplementalFiles]
+File00=
+File01=
+File02=
+File03=
+File04=
diff --git a/src/Templates/working/content/p_vomdiapplication/cavowed.tpl b/src/Templates/working/content/p_vomdiapplication/cavowed.tpl
new file mode 100644
index 0000000000..aa43daa7fd
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/cavowed.tpl
@@ -0,0 +1,464 @@
+;
+; syntax of templates:
+;
+; []
+;
+;
+; where is the name of the section. This name can be used
+; in CODE: syntax of description file
+;
+; consists of code. Use \t for a tab character. Other
+; substitution keywords are:
+;
+; %CONTROL:% for a control property
+; %FORM:% for a form property
+;
+; ie: %CONTROL:NAME% for control's name
+; %CONTROL:CLASSNAME% for control's class name
+;
+; %INITPARAMS% for the parameters of the INIT method
+;
+; Note: semicolon (';') in first column designates a comment line
+
+
+[ClassDeclaration]
+class %FORM:NAME% inherit %FORM:CLASSNAME%
+
+[Activate]
+method Activate(oEvent) class %FORM:NAME%
+\tsuper:Activate(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ButtonClick]
+method ButtonClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ButtonClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ButtonDoubleClick]
+method ButtonDoubleClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ButtonDoubleClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Close]
+method Close(oEvent) class %FORM:NAME%
+\tsuper:Close(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Deactivate]
+method Deactivate(oEvent) class %FORM:NAME%
+\tsuper:Deactivate(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Draw]
+method Draw(oDrawObject) class %FORM:NAME%
+\tsuper:Draw(oDrawObject)
+\t//Put your changes here
+return NIL
+
+[EditChange]
+method EditChange(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:EditChange(oControlEvent)
+\t//Put your changes here
+\treturn NIL\r\n
+
+[EditFocusChange]
+method EditFocusChange(oEditFocusChangeEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\tlocal lGotFocus as logic
+\toControl := IIf(oEditFocusChangeEvent == NULL_OBJECT, NULL_OBJECT, oEditFocusChangeEvent:Control)
+\tlGotFocus := IIf(oEditFocusChangeEvent == NULL_OBJECT, FALSE, oEditFocusChangeEvent:GotFocus)
+\tsuper:EditFocusChange(oEditFocusChangeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[EditScroll]
+method EditScroll(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:EditScroll(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Expose]
+method Expose(oExposeEvent) class %FORM:NAME%
+\tlocal oBoundingBox as BoundingBox
+\toBoundingBox := IIf(oExposeEvent == NULL_OBJECT, NULL_OBJECT, oExposeEvent:ExposedArea)
+\tsuper:Expose(oExposeEvent)
+\t//Put your changes here
+\treturn NIL\r\n
+
+[FocusChange]
+method FocusChange(oFocusChangeEvent) class %FORM:NAME%
+\tlocal lGotFocus as logic
+\tlGotFocus := IIf(oFocusChangeEvent == NULL_OBJECT, FALSE, oFocusChangeEvent:GotFocus)
+\tsuper:FocusChange(oFocusChangeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[PreInit]
+method PreInit(%INITPARAMS%) class %FORM:NAME%
+\t//Put your PreInit additions here
+\treturn NIL
+
+[PostInit]
+method PostInit(%INITPARAMS%) class %FORM:NAME%
+\t//Put your PostInit additions here
+\treturn NIL
+
+[PreInitCall]
+; this section is inserted at the end of the INIT method of the form
+; use %INITPARAMS% to insert the parameters of INIT
+self:PreInit(%INITPARAMS%)
+
+[PostInitCall]
+; this section is inserted at the end of the INIT method the form
+; use %INITPARAMS% to insert the parameters of INIT
+self:PostInit(%INITPARAMS%)
+
+[HelpRequest]
+method HelpRequest(oHelpRequestEvent) class %FORM:NAME%
+\tsuper:HelpRequest(oHelpRequestEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalScroll]
+method HorizontalScroll(oScrollEvent) class %FORM:NAME%
+\tsuper:HorizontalScroll(oScrollEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Keydown]
+method KeyDown(oKeyEvent) class %FORM:NAME%
+\tlocal nKeyCode as int
+\tnKeyCode := IIf(oKeyEvent = NULL_OBJECT, 0, IIf(IsNil(oKeyEvent:ASCIIChar), oKeyEvent:KeyCode, oKeyEvent:ASCIIChar))
+\tsuper:KeyDown(oKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Keyup]
+method KeyUp(oKeyEvent) class %FORM:NAME%
+\tlocal nKeyCode as int
+\tnKeyCode := IIf(oKeyEvent = NULL_OBJECT, 0, IIf(IsNil(oKeyEvent:ASCIIChar), oKeyEvent:KeyCode, oKeyEvent:ASCIIChar))
+\tsuper:KeyUp(oKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListBoxClick]
+method ListBoxClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ListBoxClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListBoxSelect]
+method ListBoxSelect(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ListBoxSelect(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuCommand]
+method MenuCommand(oMenuCommandEvent) class %FORM:NAME%
+\tsuper:MenuCommand(oMenuCommandEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuInit]
+method MenuInit(oMenuInitEvent) class %FORM:NAME%
+\tsuper:MenuInit(oMenuInitEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuSelect]
+method MenuSelect(oMenuSelectEvent) class %FORM:NAME%
+\tsuper:MenuSelect(oMenuSelectEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonDoubleClick]
+method MouseButtonDoubleClick(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonDoubleClick(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonDown]
+method MouseButtonDown(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonDown(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonUp]
+method MouseButtonUp(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonUp(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseDrag]
+method MouseDrag(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseDrag(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseMove]
+method MouseMove(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseMove(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Move]
+method Move(oMoveEvent) class %FORM:NAME%
+\tsuper:Move(oMoveEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Notify]
+method Notify(kNotifyName, uDescription) class %FORM:NAME%
+\tlocal uValue as usual
+\tuValue := super:Notify(kNotifyName, uDescription)
+\t//Put your changes here
+\treturn uValue
+
+[PreValidate]
+method PreValidate() class %FORM:NAME%
+\tsuper:PreValidate()
+\t//Put your changes here
+\treturn NIL
+
+[QueryClose]
+method QueryClose(oEvent) class %FORM:NAME%
+\tlocal lAllowClose as logic
+\tlAllowClose := super:QueryClose(oEvent)
+\t//Put your changes here
+\treturn lAllowClose
+
+[Resize]
+method Resize(oResizeEvent) class %FORM:NAME%
+\tsuper:Resize(oResizeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalScroll]
+method VerticalScroll(oScrollEvent) class %FORM:NAME%
+\tsuper:VerticalScroll(oScrollEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalSlide]
+method HorizontalSlide(oSlideEvent) class %FORM:NAME%
+\tsuper:HorizontalSlide(oSlideEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalSlide]
+method VerticalSlide(oSlideEvent) class %FORM:NAME%
+\tsuper:VerticalSlide(oSlideEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalSpin]
+method HorizontalSpin(oSpinEvent) class %FORM:NAME%
+\tsuper:HorizontalSpin(oSpinEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalSpin]
+method VerticalSpin(oSpinEvent) class %FORM:NAME%
+\tsuper:VerticalSpin(oSpinEvent)
+\t//Put your changes here
+\treturn NIL
+
+[AnimationStart]
+method AnimationStart(oControlNotifyEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlNotifyEvent == NULL_OBJECT, NULL_OBJECT, oControlNotifyEvent:Control)
+\tsuper:AnimationStart(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[AnimationStop]
+method AnimationStop(oControlNotifyEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlNotifyEvent == NULL_OBJECT, NULL_OBJECT, oControlNotifyEvent:Control)
+\tsuper:AnimationStop(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditDropFiles]
+method RichEditDropFiles(oRichEditDropEvent) class %FORM:NAME%
+\tsuper:RichEditDropFiles(oRichEditDropEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditProtected]
+method RichEditProtected(oRichEditProtectEvent) class %FORM:NAME%
+\tsuper:RichEditProtected(oRichEditProtectEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditSelectionChange]
+method RichEditSelectionChange(oRichEditSelectionEvent) class %FORM:NAME%
+\tsuper:RichEditSelectionChange(oRichEditSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditUndoLost]
+method RichEditUndoLost(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:RichEditUndoLost(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemDrag]
+method ListViewItemDrag(oListViewDragEvent) class %FORM:NAME%
+\tsuper:ListViewItemDrag(oListViewDragEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemEdit]
+method ListViewItemEdit(oListViewEditEvent) class %FORM:NAME%
+\tsuper:ListViewItemEdit(oListViewEditEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewColumnClick]
+method ListViewColumnClick(oListViewColumnClickEvent) class %FORM:NAME%
+\tsuper:ListViewColumnClick(oListViewColumnClickEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemDelete]
+method ListViewItemDelete(oListViewDeleteEvent) class %FORM:NAME%
+\tsuper:ListViewItemDelete(oListViewDeleteEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewKeyDown]
+method ListViewKeyDown(oListViewKeyEvent) class %FORM:NAME%
+\tsuper:ListViewKeyDown(oListViewKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewMouseButtonDown]
+method TreeViewMouseButtonDown(oTreeViewMouseEvent) class %FORM:NAME%
+\tsuper:TreeViewMouseButtonDown(oTreeViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewMouseButtonDown]
+method ListViewMouseButtonDown(oListViewMouseEvent) class %FORM:NAME%
+\tsuper:ListViewMouseButtonDown(oListViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewMouseButtonDoubleClick]
+method TreeViewMouseButtonDoubleClick(oTreeViewMouseEvent) class %FORM:NAME%
+\tsuper:TreeViewMouseButtonDoubleClick(oTreeViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewMouseButtonDoubleClick]
+method ListViewMouseButtonDoubleClick(oListViewMouseEvent) class %FORM:NAME%
+\tsuper:ListViewMouseButtonDoubleClick(oListViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabSelect]
+method TabSelect(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabSelect(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabSelectionChanging]
+method TabSelectionChanging(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabSelectionChanging(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabKeyDown]
+method TabKeyDown(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabKeyDown(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemDrag]
+method TreeViewItemDrag(oTreeViewDragEvent) class %FORM:NAME%
+\tsuper:TreeViewItemDrag(oTreeViewDragEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemEdit]
+method TreeViewItemEdit(oTreeViewEditEvent) class %FORM:NAME%
+\tsuper:TreeViewItemEdit(oTreeViewEditEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemDelete]
+method TreeViewItemDelete(oTreeViewDeleteEvent) class %FORM:NAME%
+\tsuper:TreeViewItemDelete(oTreeViewDeleteEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemExpanded]
+method TreeViewItemExpanded(oTreeViewExpandedEvent) class %FORM:NAME%
+\tsuper:TreeViewItemExpanded(oTreeViewExpandedEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemExpanding]
+method TreeViewItemExpanding(oTreeViewExpandingEvent) class %FORM:NAME%
+\tsuper:TreeViewItemExpanding(oTreeViewExpandingEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewKeyDown]
+method TreeViewKeyDown(oTreeViewKeyEvent) class %FORM:NAME%
+\tsuper:TreeViewKeyDown(oTreeViewKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewSelectionChanged]
+method TreeViewSelectionChanged(oTreeViewSelectionEvent) class %FORM:NAME%
+\tsuper:TreeViewSelectionChanged(oTreeViewSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewSelectionChanging]
+method TreeViewSelectionChanging(oTreeViewSelectionEvent) class %FORM:NAME%
+\tsuper:TreeViewSelectionChanging(oTreeViewSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MonthCalSelectionChanged]
+method MonthCalSelectionChanged(oMonthCalSelectionEvent) class %FORM:NAME%
+\tsuper:MonthCalSelectionChanged(oMonthCalSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[DateTimeSelectionChanged]
+method DateTimeSelectionChanged(oDateTimeSelectionEvent) class %FORM:NAME%
+\tsuper:DateTimeSelectionChanged(oDateTimeSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
diff --git a/src/Templates/working/content/p_vomdiapplication/cctl6.man b/src/Templates/working/content/p_vomdiapplication/cctl6.man
new file mode 100644
index 0000000000..184d3bffa9
--- /dev/null
+++ b/src/Templates/working/content/p_vomdiapplication/cctl6.man
@@ -0,0 +1,23 @@
+
+
+
+Visual Objects Application.
+
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/.template.config/VOSdiApp.png b/src/Templates/working/content/p_vosdiapplication/.template.config/VOSdiApp.png
new file mode 100644
index 0000000000..418359b573
Binary files /dev/null and b/src/Templates/working/content/p_vosdiapplication/.template.config/VOSdiApp.png differ
diff --git a/src/Templates/working/content/p_vosdiapplication/.template.config/template.json b/src/Templates/working/content/p_vosdiapplication/.template.config/template.json
new file mode 100644
index 0000000000..16014460e9
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Desktop",
+ "VO"
+ ],
+ "Identity": "XSharp.VOSDIApplication",
+ "Name": "VO SDI Application",
+ "Description": "A project for creating a VO SDI application in the VO Dialect.",
+ "SourceName": "XSharp.VOSDIApplication",
+ "ShortName": "xsvosdiapplication",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VOSdiApp.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VOSDIApp",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vosdiapplication/Help About.HELPABOUT.xsfrm b/src/Templates/working/content/p_vosdiapplication/Help About.HELPABOUT.xsfrm
new file mode 100644
index 0000000000..abda02eef2
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Help About.HELPABOUT.xsfrm
@@ -0,0 +1,89 @@
+
+
+
+
+ HelpAbout
+ FORM:DIALOGWINDOW
+ About Standard Application
+ 0
+ 5
+ 5
+ 453
+ 146
+ 0
+ 0
+ No
+ No
+ 0
+ 3234332800
+ 0
+
+ ,"About Standard Application"
+ "HelpAbout"
+
+
+
+ PushButton1
+ CONTROL:TEXTCONTROL:BUTTON:PUSHBUTTON
+ OK
+ 2
+ 362
+ 112
+ 80
+ 24
+ -1
+ 0
+ No
+ No
+ 0
+ 1073807361
+ 0
+
+ ,"OK"
+ "PushButton1"
+
+
+
+ AboutText
+ CONTROL:TEXTCONTROL:FIXEDTEXT
+ VO SDI Application
+ 1
+ 195
+ 10
+ 245
+ 93
+ -1
+ 0
+ No
+ No
+ 0
+ 1073741952
+ 131072
+
+ ,"VO SDI Application"
+ "AboutText"
+
+
+
+ FixedBitmap1
+ CONTROL:FIXEDBITMAP
+ POWXSHARPBMP
+ 3
+ 6
+ 10
+ 180
+ 90
+ -1
+ 0
+ No
+ No
+ 0
+ 1073741838
+ 131072
+
+ ,"POWXSHARPBMP"
+ "FixedBitmap1"
+
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/Help About.HelpAbout.rc b/src/Templates/working/content/p_vosdiapplication/Help About.HelpAbout.rc
new file mode 100644
index 0000000000..1546479224
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Help About.HelpAbout.rc
@@ -0,0 +1,37 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.FormEditor 2.1.0.0
+// Timestamp : 27/1/2020 18:11:09 ��
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define HELPABOUT_ABOUTTEXT 100
+#define HELPABOUT_PUSHBUTTON1 101
+#define HELPABOUT_FIXEDBITMAP1 102
+#define BS_DEFPUSHBUTTON 0x00000001
+#define DS_MODALFRAME 0x00000080
+#define SS_BITMAP 0x0000000E
+#define SS_NOPREFIX 0x00000080
+#define WS_CAPTION 0x00C00000
+#define WS_CHILD 0x40000000
+#define WS_EX_STATICEDGE 0x00020000
+#define WS_POPUP 0x80000000
+#define WS_SYSMENU 0x00080000
+#define WS_TABSTOP 0x00010000
+#define WS_VISIBLE 0x10000000
+
+HelpAbout DIALOGEX 3, 3, 301, 89
+STYLE WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_MODALFRAME
+CAPTION "About Standard Application"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "VO SDI Application", HELPABOUT_ABOUTTEXT, "STATIC", WS_CHILD|SS_NOPREFIX, 130, 6, 163, 57, WS_EX_STATICEDGE
+ CONTROL "OK", HELPABOUT_PUSHBUTTON1, "BUTTON", WS_CHILD|WS_TABSTOP|BS_DEFPUSHBUTTON, 241, 69, 53, 15
+ CONTROL "POWXSHARPBMP", HELPABOUT_FIXEDBITMAP1, "STATIC", WS_CHILD|SS_BITMAP, 4, 6, 120, 55, WS_EX_STATICEDGE
+END
diff --git a/src/Templates/working/content/p_vosdiapplication/Help About.POWXSHARPBMP.rc b/src/Templates/working/content/p_vosdiapplication/Help About.POWXSHARPBMP.rc
new file mode 100644
index 0000000000..f871f39b66
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Help About.POWXSHARPBMP.rc
@@ -0,0 +1,2 @@
+ POWXSHARPBMP BITMAP "Resources\\HelpAbt.BMP"
+
diff --git a/src/Templates/working/content/p_vosdiapplication/Help About.prg b/src/Templates/working/content/p_vosdiapplication/Help About.prg
new file mode 100644
index 0000000000..4bdaacae14
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Help About.prg
@@ -0,0 +1,89 @@
+#region DEFINES
+static define HELPABOUT_ABOUTTEXT := 100
+static define HELPABOUT_PUSHBUTTON1 := 101
+static define HELPABOUT_FIXEDBITMAP1 := 102
+#endregion
+
+partial class HelpAbout inherit DIALOGWINDOW
+ protect oDCAboutText as FIXEDTEXT
+ protect oCCPushButton1 as PUSHBUTTON
+ protect oDCFixedBitmap1 as FIXEDBITMAP
+
+ // {{%UC%}} User code starts here (DO NOT remove this line)
+
+constructor(oParent,uExtra)
+
+ self:PreInit(oParent,uExtra)
+
+ super(oParent , ResourceID{"HelpAbout" , _GetInst()} , true)
+
+ self:oDCAboutText := FIXEDTEXT{self , ResourceID{ HELPABOUT_ABOUTTEXT , _GetInst() } }
+ SELF:oDCAboutText:HyperLabel := HyperLabel{#AboutText , "VO SDI Application" , NULL_STRING , NULL_STRING}
+
+ self:oCCPushButton1 := PUSHBUTTON{self , ResourceID{ HELPABOUT_PUSHBUTTON1 , _GetInst() } }
+ self:oCCPushButton1:HyperLabel := HyperLabel{#PushButton1 , "OK" , null_string , null_string}
+
+ self:oDCFixedBitmap1 := FIXEDBITMAP{self , ResourceID{ HELPABOUT_FIXEDBITMAP1 , _GetInst() } }
+ self:oDCFixedBitmap1:HyperLabel := HyperLabel{#FixedBitmap1 , "POWXSHARPBMP" , null_string , null_string}
+
+ self:Caption := "About Standard Application"
+ self:HyperLabel := HyperLabel{#HelpAbout , "About Standard Application" , null_string , null_string}
+
+ self:PostInit(oParent,uExtra)
+
+return
+
+
+method PostInit(oParent,uExtra)
+ local sVer as string
+ local oSysLink as SysLink
+ local oFT1 as FixedText
+ local oHL1 as HyperLink
+ local oFont1 as Font
+ local s as string
+
+ sVer := Version()
+ sVer := SubStr(sVer, RAt2(" ", sVer)+1)
+ oDCAboutText:CurrentText := _CHR(13)+" Company.Namespace1"+_CHR(13)+_CHR(13);
+ +" X# Version "+sVer+_CHR(13)+_CHR(13);
+ +" Copyright (c) XSharp BV 2015-2022"
+
+ var point := oCCPushButton1:Origin
+ point:x := self:oDCFixedBitmap1:Origin:x
+ var size := Dimension{300,20}
+
+
+ if IsThemeEnabled()
+ s := "Visit X# on the web!"
+ oSysLink := SysLink{self, -1, point, size, s}
+ oSysLink:Show()
+ else
+
+ s := "Visit X# on the web:"
+ oFT1 := FixedText{self, -1, point, dimension{200,20}, s}
+ oFT1:show()
+
+ oFont1 := Font{,8,"Microsoft Sans Serif"}
+ oFont1:Underline := true
+
+ oHL1 := HyperLink{self,-1,point,size,"https://www.xsharp.eu"}
+ oHL1:font(oFont1)
+ oHL1:size := size
+ oHL1:textcolor := color{COLORBLUE}
+ oHL1:font():underline := true
+ oHL1:show()
+
+ endif
+
+
+ return nil
+
+
+method PushButton1()
+
+ self:EndDialog()
+
+return self
+
+end class
diff --git a/src/Templates/working/content/p_vosdiapplication/HelpAbt.BMP b/src/Templates/working/content/p_vosdiapplication/HelpAbt.BMP
new file mode 100644
index 0000000000..63825a67f1
Binary files /dev/null and b/src/Templates/working/content/p_vosdiapplication/HelpAbt.BMP differ
diff --git a/src/Templates/working/content/p_vosdiapplication/Readme.txt b/src/Templates/working/content/p_vosdiapplication/Readme.txt
new file mode 100644
index 0000000000..1c89fd26b0
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Readme.txt
@@ -0,0 +1,9 @@
+===========================
+VO SDI Application Template
+===========================
+This VO SDI Application template is based on the original template that comes with Visual Objects.
+We have made some small changes that were needed because the VO SDK Libraries did not compile without changes in .Net:
+- The Start.Prg module now declares a new app class "XApp". The App:Start() method has been changed to XApp:Start()
+- The Application Icon and bitmap on the Help About screen have been updated
+- The SysLink control on the HelpAbout screen now goes to the X# website
+- We have included the templates for the VO Editor in the Properties subfolder in the project
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.rc b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.rc
new file mode 100644
index 0000000000..73b5c61d08
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.rc
@@ -0,0 +1,40 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 28-1-2020 08:22:38
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_EmptySDIMenu_File_ID 18500
+#define IDM_EmptySDIMenu_File_Open_ID 18501
+#define IDM_EmptySDIMenu_File_Print_Setup_ID 18503
+#define IDM_EmptySDIMenu_File_Exit_ID 18505
+#define IDM_EmptySDIMenu_Help_ID 18506
+#define IDM_EmptySDIMenu_Help_Index_ID 18507
+#define IDM_EmptySDIMenu_Help_Using_Help_ID 18508
+#define IDM_EmptySDIMenu_Help_About_ID 18510
+EmptySDIMenu MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Open...\tCtrl+O" , IDM_EmptySDIMenu_File_Open_ID
+ MENUITEM SEPARATOR
+ MENUITEM "P&rint Setup..." , IDM_EmptySDIMenu_File_Print_Setup_ID
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit\tAlt+F4" , IDM_EmptySDIMenu_File_Exit_ID
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Index\tF1" , IDM_EmptySDIMenu_Help_Index_ID
+ MENUITEM "&Using Help" , IDM_EmptySDIMenu_Help_Using_Help_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&About..." , IDM_EmptySDIMenu_Help_About_ID
+ END
+END
+
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.xsmnu b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.xsmnu
new file mode 100644
index 0000000000..767f70428c
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu.xsmnu
@@ -0,0 +1,226 @@
+
+
+
+ EmptySDIMenu
+
+
+
+
+ Flat Toolbar
+ Icon
+ No
+ 18500
+
+
+ File
+ &File
+
+
+ File
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileOpen
+ &Open...
+ Open a file
+ File_Open
+ Ctrl+O
+ Yes
+ No
+ Open
+
+
+ Open File
+ 1
+ IDM_FILE_OPEN
+
+
+
+
+ ------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FilePrinterSetup
+ P&rint Setup...
+ Setup printer options
+ File_Printer_Setup
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileExit
+ E&xit
+ End of application
+ File_Exit
+ Alt+F4
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ Help
+ &Help
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpIndex
+ &Index
+ Index of help
+ Help_Index
+ F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpUsingHelp
+ &Using Help
+ How to use help
+ Help_UsingHelp
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpAbout
+ &About...
+ About application
+
+
+ None
+ Yes
+ No
+ Help
+
+
+ Help About
+ 2
+
+
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu_Accelerator.rc b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu_Accelerator.rc
new file mode 100644
index 0000000000..35f20c8812
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.EmptySDIMenu_Accelerator.rc
@@ -0,0 +1,27 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 28-1-2020 08:22:38
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_EmptySDIMenu_File_ID 18500
+#define IDM_EmptySDIMenu_File_Open_ID 18501
+#define IDM_EmptySDIMenu_File_Print_Setup_ID 18503
+#define IDM_EmptySDIMenu_File_Exit_ID 18505
+#define IDM_EmptySDIMenu_Help_ID 18506
+#define IDM_EmptySDIMenu_Help_Index_ID 18507
+#define IDM_EmptySDIMenu_Help_Using_Help_ID 18508
+#define IDM_EmptySDIMenu_Help_About_ID 18510
+EmptySDIMenu_Accelerator ACCELERATORS
+BEGIN
+ 79, IDM_EmptySDIMenu_File_Open_ID, CONTROL ,VIRTKEY
+ 115, IDM_EmptySDIMenu_File_Exit_ID, ALT ,VIRTKEY
+ 112, IDM_EmptySDIMenu_Help_Index_ID, VIRTKEY
+END
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.rc b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.rc
new file mode 100644
index 0000000000..dc70afa2d1
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.rc
@@ -0,0 +1,76 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 28-1-2020 08:22:41
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_StandardSDIMenu_File_ID 29000
+#define IDM_StandardSDIMenu_File_Open_ID 29001
+#define IDM_StandardSDIMenu_File_Print_ID 29003
+#define IDM_StandardSDIMenu_File_Print_Setup_ID 29004
+#define IDM_StandardSDIMenu_File_Exit_ID 29006
+#define IDM_StandardSDIMenu_Edit_ID 29007
+#define IDM_StandardSDIMenu_Edit_Cut_ID 29008
+#define IDM_StandardSDIMenu_Edit_Copy_ID 29009
+#define IDM_StandardSDIMenu_Edit_Paste_ID 29010
+#define IDM_StandardSDIMenu_Edit_Insert_Record_ID 29012
+#define IDM_StandardSDIMenu_Edit_Delete_Record_ID 29013
+#define IDM_StandardSDIMenu_Edit_Go_To_Top_ID 29015
+#define IDM_StandardSDIMenu_Edit_Previous_ID 29016
+#define IDM_StandardSDIMenu_Edit_Next_ID 29017
+#define IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID 29018
+#define IDM_StandardSDIMenu_View_ID 29019
+#define IDM_StandardSDIMenu_View_Form_ID 29020
+#define IDM_StandardSDIMenu_View_Table_ID 29021
+#define IDM_StandardSDIMenu_Help_ID 29022
+#define IDM_StandardSDIMenu_Help_Index_ID 29023
+#define IDM_StandardSDIMenu_Help_Context_Help_ID 29024
+#define IDM_StandardSDIMenu_Help_Using_Help_ID 29025
+#define IDM_StandardSDIMenu_Help_About_ID 29027
+StandardSDIMenu MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Open...\tCtrl+O" , IDM_StandardSDIMenu_File_Open_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&Print" , IDM_StandardSDIMenu_File_Print_ID
+ MENUITEM "P&rint Setup..." , IDM_StandardSDIMenu_File_Print_Setup_ID
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit\tAlt+F4" , IDM_StandardSDIMenu_File_Exit_ID
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "Cu&t\tCtrl+X" , IDM_StandardSDIMenu_Edit_Cut_ID
+ MENUITEM "&Copy\tCtrl+C" , IDM_StandardSDIMenu_Edit_Copy_ID
+ MENUITEM "&Paste\tCtrl+V" , IDM_StandardSDIMenu_Edit_Paste_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&Insert Record" , IDM_StandardSDIMenu_Edit_Insert_Record_ID
+ MENUITEM "&Delete Record" , IDM_StandardSDIMenu_Edit_Delete_Record_ID
+ MENUITEM SEPARATOR
+ MENUITEM "G&o To Top\tCtrl+Home" , IDM_StandardSDIMenu_Edit_Go_To_Top_ID
+ MENUITEM "Pre&vious" , IDM_StandardSDIMenu_Edit_Previous_ID
+ MENUITEM "&Next" , IDM_StandardSDIMenu_Edit_Next_ID
+ MENUITEM "Go To &Bottom\tCtrl+End" , IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "&Form\tShift+F2" , IDM_StandardSDIMenu_View_Form_ID
+ MENUITEM "&Table\tF2" , IDM_StandardSDIMenu_View_Table_ID
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Index\tF1" , IDM_StandardSDIMenu_Help_Index_ID
+ MENUITEM "&Context Help\tCtrl+F1" , IDM_StandardSDIMenu_Help_Context_Help_ID
+ MENUITEM "&Using Help" , IDM_StandardSDIMenu_Help_Using_Help_ID
+ MENUITEM SEPARATOR
+ MENUITEM "&About..." , IDM_StandardSDIMenu_Help_About_ID
+ END
+END
+
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.xsmnu b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.xsmnu
new file mode 100644
index 0000000000..aa9a3855fe
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu.xsmnu
@@ -0,0 +1,515 @@
+
+
+
+ StandardSDIMenu
+
+
+
+
+ Flat Toolbar
+ Icon
+ No
+ 29000
+
+
+ File
+ &File
+
+
+ File
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileOpen
+ &Open...
+ Open a file
+ File_Open
+ Ctrl+O
+ Yes
+ No
+ Open
+ Open
+ Open File
+ 1
+ IDM_FILE_OPEN
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FilePrint
+ &Print
+ Print the window
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FilePrinterSetup
+ P&rint Setup...
+ Setup printer options
+ File_Printer_Setup
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ FileExit
+ E&xit
+ End of application
+ File_Exit
+ Alt+F4
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ Edit
+ &Edit
+ Edit information
+ Edit
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Cut
+ Cu&t
+ Cut to clipboard
+ Cut
+ Ctrl+X
+ Yes
+ No
+ Cut
+ Cut
+ Cut
+ 3
+
+
+
+
+ Copy
+ &Copy
+ Copy to clipboard
+ Copy
+ Ctrl+C
+ Yes
+ No
+ Copy
+ Copy
+ Copy
+ 4
+
+
+
+
+ Paste
+ &Paste
+ Paste from clipboard
+ Paste
+ Ctrl+V
+ Yes
+ No
+ Paste
+ Paste
+ Paste
+ 5
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Append
+ &Insert Record
+ Insert a new record
+ Append
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ Delete
+ &Delete Record
+ Delete this record
+ Delete
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ GoTop
+ G&o To Top
+ Go to first record
+ GoTop
+ Ctrl+Home
+ Yes
+ No
+ Start Record
+ Go Top
+ Go Top
+ 7
+
+
+
+
+ SkipPrevious
+ Pre&vious
+ Go to previous record
+ SkipPrevious
+ None
+ Yes
+ No
+ Previous Record
+ Previous Record
+ Previous Record
+ 8
+
+
+
+
+ SkipNext
+ &Next
+ Go to next record
+ SkipNext
+ None
+ Yes
+ No
+ Next Record
+ Next Record
+ Next Record
+ 9
+
+
+
+
+ GoBottom
+ Go To &Bottom
+ Go to last record
+ GoBottom
+ Ctrl+End
+ Yes
+ No
+ End Record
+ Go Bottom
+ Go Bottom
+ 10
+
+
+
+
+
+
+ View
+ &View
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ ViewForm
+ &Form
+ View a single record as a form
+ ViewForm
+ Shift+F2
+ Yes
+ No
+ View Form
+ Form View
+ Form View
+ 12
+
+
+
+
+ ViewTable
+ &Table
+ View several records in a table
+ ViewTable
+ F2
+ Yes
+ No
+ View Table
+ Browse View
+ Browse View
+ 13
+
+
+
+
+
+
+ Help
+ &Help
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpIndex
+ &Index
+ Index of help
+ Help_Index
+ F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpContext
+ &Context Help
+ Context sensitive help
+ Help_ContextHelp
+ Ctrl+F1
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpUsingHelp
+ &Using Help
+ How to use help
+ Help_UsingHelp
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+
+
+ -------------------------
+
+
+
+
+ None
+ Yes
+ No
+
+
+
+
+
+
+ -1
+
+
+
+
+ HelpAbout
+ &About...
+ About application
+
+
+ None
+ Yes
+ No
+ Help
+ Help
+ Help
+ 15
+ IDM_HELP_ABOUT
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu_Accelerator.rc b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu_Accelerator.rc
new file mode 100644
index 0000000000..aa9c190f62
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.StandardSDIMenu_Accelerator.rc
@@ -0,0 +1,50 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime version: 4.0.30319.42000
+// Generator : XSharp.MenuEditor 2.1.0.0
+// Timestamp : 28-1-2020 08:22:41
+//
+// Changes to this file may cause incorrect behavior and may be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#define IDM_StandardSDIMenu_File_ID 29000
+#define IDM_StandardSDIMenu_File_Open_ID 29001
+#define IDM_StandardSDIMenu_File_Print_ID 29003
+#define IDM_StandardSDIMenu_File_Print_Setup_ID 29004
+#define IDM_StandardSDIMenu_File_Exit_ID 29006
+#define IDM_StandardSDIMenu_Edit_ID 29007
+#define IDM_StandardSDIMenu_Edit_Cut_ID 29008
+#define IDM_StandardSDIMenu_Edit_Copy_ID 29009
+#define IDM_StandardSDIMenu_Edit_Paste_ID 29010
+#define IDM_StandardSDIMenu_Edit_Insert_Record_ID 29012
+#define IDM_StandardSDIMenu_Edit_Delete_Record_ID 29013
+#define IDM_StandardSDIMenu_Edit_Go_To_Top_ID 29015
+#define IDM_StandardSDIMenu_Edit_Previous_ID 29016
+#define IDM_StandardSDIMenu_Edit_Next_ID 29017
+#define IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID 29018
+#define IDM_StandardSDIMenu_View_ID 29019
+#define IDM_StandardSDIMenu_View_Form_ID 29020
+#define IDM_StandardSDIMenu_View_Table_ID 29021
+#define IDM_StandardSDIMenu_Help_ID 29022
+#define IDM_StandardSDIMenu_Help_Index_ID 29023
+#define IDM_StandardSDIMenu_Help_Context_Help_ID 29024
+#define IDM_StandardSDIMenu_Help_Using_Help_ID 29025
+#define IDM_StandardSDIMenu_Help_About_ID 29027
+StandardSDIMenu_Accelerator ACCELERATORS
+BEGIN
+ 79, IDM_StandardSDIMenu_File_Open_ID, CONTROL ,VIRTKEY
+ 115, IDM_StandardSDIMenu_File_Exit_ID, ALT ,VIRTKEY
+ 88, IDM_StandardSDIMenu_Edit_Cut_ID, CONTROL ,VIRTKEY
+ 67, IDM_StandardSDIMenu_Edit_Copy_ID, CONTROL ,VIRTKEY
+ 86, IDM_StandardSDIMenu_Edit_Paste_ID, CONTROL ,VIRTKEY
+ 36, IDM_StandardSDIMenu_Edit_Go_To_Top_ID, CONTROL ,VIRTKEY
+ 35, IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID, CONTROL ,VIRTKEY
+ 113, IDM_StandardSDIMenu_View_Form_ID, SHIFT ,VIRTKEY
+ 113, IDM_StandardSDIMenu_View_Table_ID, VIRTKEY
+ 112, IDM_StandardSDIMenu_Help_Index_ID, VIRTKEY
+ 112, IDM_StandardSDIMenu_Help_Context_Help_ID, CONTROL ,VIRTKEY
+END
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.VS_VERSION_INFO.rc b/src/Templates/working/content/p_vosdiapplication/SDI Menus.VS_VERSION_INFO.rc
new file mode 100644
index 0000000000..34f6363ed4
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.VS_VERSION_INFO.rc
@@ -0,0 +1,31 @@
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION 1, 0, 0, 0
+PRODUCTVERSION 1, 0, 0, 0
+FILEFLAGSMASK 0x3fL
+FILEFLAGS 0x00L
+FILEOS VOS__WINDOWS32
+FILETYPE VFT_APP
+FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "This is a Company.Namespace1!\0"
+ VALUE "CompanyName", "XSharp BV\0"
+ VALUE "FileVersion", "1, 0, 0, 0\0"
+ VALUE "FileDescription", "X# Company.Namespace1\0"
+ VALUE "ProductVersion", "1.0.0.0\0"
+ VALUE "InternalName", "VO MDI App\0"
+ VALUE "ProductName", "X# Company.Namespace1\0"
+ VALUE "LegalCopyright", "Copyright \251 2015-2022\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/SDI Menus.prg b/src/Templates/working/content/p_vosdiapplication/SDI Menus.prg
new file mode 100644
index 0000000000..f884a28c27
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/SDI Menus.prg
@@ -0,0 +1,240 @@
+#region DEFINES
+DEFINE IDM_StandardSDIMenu_File_ID := 29000
+DEFINE IDM_StandardSDIMenu_File_Open_ID := 29001
+DEFINE IDM_StandardSDIMenu_File_Print_ID := 29003
+DEFINE IDM_StandardSDIMenu_File_Print_Setup_ID := 29004
+DEFINE IDM_StandardSDIMenu_File_Exit_ID := 29006
+DEFINE IDM_StandardSDIMenu_Edit_ID := 29007
+DEFINE IDM_StandardSDIMenu_Edit_Cut_ID := 29008
+DEFINE IDM_StandardSDIMenu_Edit_Copy_ID := 29009
+DEFINE IDM_StandardSDIMenu_Edit_Paste_ID := 29010
+DEFINE IDM_StandardSDIMenu_Edit_Insert_Record_ID := 29012
+DEFINE IDM_StandardSDIMenu_Edit_Delete_Record_ID := 29013
+DEFINE IDM_StandardSDIMenu_Edit_Go_To_Top_ID := 29015
+DEFINE IDM_StandardSDIMenu_Edit_Previous_ID := 29016
+DEFINE IDM_StandardSDIMenu_Edit_Next_ID := 29017
+DEFINE IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID := 29018
+DEFINE IDM_StandardSDIMenu_View_ID := 29019
+DEFINE IDM_StandardSDIMenu_View_Form_ID := 29020
+DEFINE IDM_StandardSDIMenu_View_Table_ID := 29021
+DEFINE IDM_StandardSDIMenu_Help_ID := 29022
+DEFINE IDM_StandardSDIMenu_Help_Index_ID := 29023
+DEFINE IDM_StandardSDIMenu_Help_Context_Help_ID := 29024
+DEFINE IDM_StandardSDIMenu_Help_Using_Help_ID := 29025
+DEFINE IDM_StandardSDIMenu_Help_About_ID := 29027
+DEFINE IDM_EmptySDIMenu_File_ID := 18500
+DEFINE IDM_EmptySDIMenu_File_Open_ID := 18501
+DEFINE IDM_EmptySDIMenu_File_Print_Setup_ID := 18503
+DEFINE IDM_EmptySDIMenu_File_Exit_ID := 18505
+DEFINE IDM_EmptySDIMenu_Help_ID := 18506
+DEFINE IDM_EmptySDIMenu_Help_Index_ID := 18507
+DEFINE IDM_EmptySDIMenu_Help_Using_Help_ID := 18508
+DEFINE IDM_EmptySDIMenu_Help_About_ID := 18510
+#endregion
+
+PARTIAL CLASS EmptySDIMenu INHERIT Menu
+
+CONSTRUCTOR( oOwner )
+
+ LOCAL oTB AS Toolbar
+
+ SELF:PreInit()
+
+ SUPER( ResourceID { "EmptySDIMenu" , _GetInst( ) } )
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_File_ID, ;
+ HyperLabel{ #File , "&File" , , "File" } , SELF:Handle() , 0)
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_File_Open_ID, ;
+ HyperLabel{ #FileOpen , "&Open... Ctrl+O" , "Open a file" , "File_Open" })
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_File_Print_Setup_ID, ;
+ HyperLabel{ #FilePrinterSetup , "P&rint Setup..." , "Setup printer options" , "File_Printer_Setup" })
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_File_Exit_ID, ;
+ HyperLabel{ #FileExit , "E&xit Alt+F4" , "End of application" , "File_Exit" })
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_Help_ID, ;
+ HyperLabel{ #Help , "&Help" , , } , SELF:Handle() , 1)
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_Help_Index_ID, ;
+ HyperLabel{ #HelpIndex , "&Index F1" , "Index of help" , "Help_Index" })
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_Help_Using_Help_ID, ;
+ HyperLabel{ #HelpUsingHelp , "&Using Help" , "How to use help" , "Help_UsingHelp" })
+
+ SELF:RegisterItem(IDM_EmptySDIMenu_Help_About_ID, ;
+ HyperLabel{ #HelpAbout , "&About..." , "About application" , })
+
+ oTB := Toolbar{}
+
+ oTB:ButtonStyle := TB_ICONONLY
+ oTB:Flat := TRUE
+ oTB:EnableBands(FALSE)
+
+ oTB:AppendItem(IDT_OPEN , IDM_EmptySDIMenu_File_Open_ID)
+ oTB:AddTipText(IDT_OPEN , IDM_EmptySDIMenu_File_Open_ID , "Open File")
+
+ oTB:AppendItem(IDT_HELP , IDM_EmptySDIMenu_Help_About_ID)
+ oTB:AddTipText(IDT_HELP , IDM_EmptySDIMenu_Help_About_ID , "Help About")
+
+
+ SELF:ToolBar := oTB
+ SELF:Accelerator := EmptySDIMenu_Accelerator{ }
+
+ SELF:PostInit()
+
+ RETURN
+
+END CLASS
+PARTIAL CLASS EmptySDIMenu_Accelerator INHERIT Accelerator
+
+CONSTRUCTOR()
+ SUPER( ResourceID { "EmptySDIMenu_Accelerator" , _GetInst( ) } )
+RETURN
+
+
+END CLASS
+PARTIAL CLASS StandardSDIMenu INHERIT Menu
+
+CONSTRUCTOR( oOwner )
+
+ LOCAL oTB AS Toolbar
+
+ SELF:PreInit()
+
+ SUPER( ResourceID { "StandardSDIMenu" , _GetInst( ) } )
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_File_ID, ;
+ HyperLabel{ #File , "&File" , , "File" } , SELF:Handle() , 0)
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_File_Open_ID, ;
+ HyperLabel{ #FileOpen , "&Open... Ctrl+O" , "Open a file" , "File_Open" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_File_Print_ID, ;
+ HyperLabel{ #FilePrint , "&Print" , "Print the window" , })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_File_Print_Setup_ID, ;
+ HyperLabel{ #FilePrinterSetup , "P&rint Setup..." , "Setup printer options" , "File_Printer_Setup" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_File_Exit_ID, ;
+ HyperLabel{ #FileExit , "E&xit Alt+F4" , "End of application" , "File_Exit" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_ID, ;
+ HyperLabel{ #Edit , "&Edit" , "Edit information" , "Edit" } , SELF:Handle() , 1)
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Cut_ID, ;
+ HyperLabel{ #Cut , "Cu&t Ctrl+X" , "Cut to clipboard" , "Cut" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Copy_ID, ;
+ HyperLabel{ #Copy , "&Copy Ctrl+C" , "Copy to clipboard" , "Copy" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Paste_ID, ;
+ HyperLabel{ #Paste , "&Paste Ctrl+V" , "Paste from clipboard" , "Paste" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Insert_Record_ID, ;
+ HyperLabel{ #Append , "&Insert Record" , "Insert a new record" , "Append" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Delete_Record_ID, ;
+ HyperLabel{ #Delete , "&Delete Record" , "Delete this record" , "Delete" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Go_To_Top_ID, ;
+ HyperLabel{ #GoTop , "G&o To Top Ctrl+Home" , "Go to first record" , "GoTop" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Previous_ID, ;
+ HyperLabel{ #SkipPrevious , "Pre&vious" , "Go to previous record" , "SkipPrevious" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Next_ID, ;
+ HyperLabel{ #SkipNext , "&Next" , "Go to next record" , "SkipNext" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID, ;
+ HyperLabel{ #GoBottom , "Go To &Bottom Ctrl+End" , "Go to last record" , "GoBottom" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_View_ID, ;
+ HyperLabel{ #View , "&View" , , } , SELF:Handle() , 2)
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_View_Form_ID, ;
+ HyperLabel{ #ViewForm , "&Form Shift+F2" , "View a single record as a form" , "ViewForm" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_View_Table_ID, ;
+ HyperLabel{ #ViewTable , "&Table F2" , "View several records in a table" , "ViewTable" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Help_ID, ;
+ HyperLabel{ #Help , "&Help" , , } , SELF:Handle() , 3)
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Help_Index_ID, ;
+ HyperLabel{ #HelpIndex , "&Index F1" , "Index of help" , "Help_Index" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Help_Context_Help_ID, ;
+ HyperLabel{ #HelpContext , "&Context Help Ctrl+F1" , "Context sensitive help" , "Help_ContextHelp" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Help_Using_Help_ID, ;
+ HyperLabel{ #HelpUsingHelp , "&Using Help" , "How to use help" , "Help_UsingHelp" })
+
+ SELF:RegisterItem(IDM_StandardSDIMenu_Help_About_ID, ;
+ HyperLabel{ #HelpAbout , "&About..." , "About application" , })
+
+ oTB := Toolbar{}
+
+ oTB:ButtonStyle := TB_ICONONLY
+ oTB:Flat := TRUE
+ oTB:EnableBands(FALSE)
+
+ oTB:AppendItem(IDT_OPEN , IDM_StandardSDIMenu_File_Open_ID)
+ oTB:AddTipText(IDT_OPEN , IDM_StandardSDIMenu_File_Open_ID , "Open File")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_CUT , IDM_StandardSDIMenu_Edit_Cut_ID)
+ oTB:AddTipText(IDT_CUT , IDM_StandardSDIMenu_Edit_Cut_ID , "Cut")
+
+ oTB:AppendItem(IDT_COPY , IDM_StandardSDIMenu_Edit_Copy_ID)
+ oTB:AddTipText(IDT_COPY , IDM_StandardSDIMenu_Edit_Copy_ID , "Copy")
+
+ oTB:AppendItem(IDT_PASTE , IDM_StandardSDIMenu_Edit_Paste_ID)
+ oTB:AddTipText(IDT_PASTE , IDM_StandardSDIMenu_Edit_Paste_ID , "Paste")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_STARTREC , IDM_StandardSDIMenu_Edit_Go_To_Top_ID)
+ oTB:AddTipText(IDT_STARTREC , IDM_StandardSDIMenu_Edit_Go_To_Top_ID , "Go Top")
+
+ oTB:AppendItem(IDT_PREVREC , IDM_StandardSDIMenu_Edit_Previous_ID)
+ oTB:AddTipText(IDT_PREVREC , IDM_StandardSDIMenu_Edit_Previous_ID , "Previous Record")
+
+ oTB:AppendItem(IDT_NEXTREC , IDM_StandardSDIMenu_Edit_Next_ID)
+ oTB:AddTipText(IDT_NEXTREC , IDM_StandardSDIMenu_Edit_Next_ID , "Next Record")
+
+ oTB:AppendItem(IDT_ENDREC , IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID)
+ oTB:AddTipText(IDT_ENDREC , IDM_StandardSDIMenu_Edit_Go_To_Bottom_ID , "Go Bottom")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_VFORM , IDM_StandardSDIMenu_View_Form_ID)
+ oTB:AddTipText(IDT_VFORM , IDM_StandardSDIMenu_View_Form_ID , "Form View")
+
+ oTB:AppendItem(IDT_VGBROWSE , IDM_StandardSDIMenu_View_Table_ID)
+ oTB:AddTipText(IDT_VGBROWSE , IDM_StandardSDIMenu_View_Table_ID , "Browse View")
+
+ oTB:AppendItem(IDT_SEPARATOR)
+
+ oTB:AppendItem(IDT_HELP , IDM_StandardSDIMenu_Help_About_ID)
+ oTB:AddTipText(IDT_HELP , IDM_StandardSDIMenu_Help_About_ID , "Help")
+
+
+ SELF:ToolBar := oTB
+ SELF:Accelerator := StandardSDIMenu_Accelerator{ }
+
+ SELF:PostInit()
+
+ RETURN
+
+END CLASS
+PARTIAL CLASS StandardSDIMenu_Accelerator INHERIT Accelerator
+
+CONSTRUCTOR()
+ SUPER( ResourceID { "StandardSDIMenu_Accelerator" , _GetInst( ) } )
+RETURN
+
+
+END CLASS
diff --git a/src/Templates/working/content/p_vosdiapplication/Standard SDI.IDI_STANDARDICON.rc b/src/Templates/working/content/p_vosdiapplication/Standard SDI.IDI_STANDARDICON.rc
new file mode 100644
index 0000000000..aa3dfe446e
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Standard SDI.IDI_STANDARDICON.rc
@@ -0,0 +1 @@
+ 101 ICON "Resources\\XSharp.ICO"
diff --git a/src/Templates/working/content/p_vosdiapplication/Standard SDI.Manifest.rc b/src/Templates/working/content/p_vosdiapplication/Standard SDI.Manifest.rc
new file mode 100644
index 0000000000..c95c0e84da
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Standard SDI.Manifest.rc
@@ -0,0 +1,4 @@
+ 1 24 resources\cctl6.man
+
+
+
diff --git a/src/Templates/working/content/p_vosdiapplication/Standard SDI.prg b/src/Templates/working/content/p_vosdiapplication/Standard SDI.prg
new file mode 100644
index 0000000000..e9912c77b6
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Standard SDI.prg
@@ -0,0 +1,118 @@
+#region DEFINES
+define IDI_STANDARDICON := 101
+define IDI_VOICON := 102
+#endregion
+
+class StandardSDIWindow inherit DataWindow
+ protect oPrinter as PrintingDevice
+ protect oStdMenu as Menu
+
+
+METHOD DoOpenFile(cFileName, lReadOnly)
+ LOCAL oTB AS TextBox
+
+ IF (Len(cFileName) > 3) .AND. (Upper(Right(cFileName, 4)) == ".DBF")
+ IF (SELF:Menu != oStdMenu)
+ SELF:Menu := oStdMenu
+ SELF:ToolBar:PressItem(IDM_StandardSDIMenu_View_Form_ID, #MenuItemID)
+ ENDIF
+
+ SELF:Use(DBServer{cFileName, , lReadOnly})
+ SELF:Caption := "Browse Database: " + cFileName
+ ELSE
+ oTB := TextBox{SELF, "File Open Error", "Cannot open " + cFileName + " - Not a DBF file"}
+ oTB:Type := BUTTONOKAY
+ oTB:Beep:=TRUE
+ oTB:Show()
+ ENDIF
+RETURN SELF
+
+METHOD Drop(oDragEvent)
+ IF File(oDragEvent:FileName(1))
+ SELF:DoOpenFile(oDragEvent:FileName(1))
+ ENDIF
+RETURN SELF
+
+METHOD FileClose()
+ SELF:Use()
+RETURN SELF
+
+METHOD FileExit()
+ SELF:EndWindow()
+RETURN SELF
+
+METHOD FileOpen()
+ LOCAL oOD AS OpenDialog
+ LOCAL oTB AS TextBox
+ LOCAL retval AS SHORT
+
+ IF(oAttachedServer == NULL_OBJECT)
+ (oOD := OpenDialog{SELF, "*.dbf"}):Show()
+
+ IF !Empty(oOD:FileName)
+ SELF:DoOpenFile(oOD:FileName, oOD:ReadOnly)
+ ENDIF
+ ELSE
+ oTB := TextBox{SELF, "Warning", "A DBF file is already open!" + _CHR(10)+ "Do you want close it?"}
+ oTB:Type := BUTTONOKAYCANCEL
+ retval := oTB:Show()
+ IF retval == BOXREPLYCANCEL
+ RETURN SELF
+ ENDIF
+ IF retVal==BOXREPLYOKAY
+ (oOD := OpenDialog{SELF, "*.dbf"}):Show()
+ IF !Empty(oOD:FileName)
+ SELF:DoOpenFile(oOD:FileName, oOD:ReadOnly)
+ ENDIF
+ ENDIF
+ ENDIF
+RETURN SELF
+
+METHOD FilePrint()
+ SELF:Print(oPrinter)
+RETURN SELF
+
+METHOD FilePrinterSetup()
+
+ oPrinter:Setup()
+
+RETURN SELF
+
+CONSTRUCTOR(oOwnerApp)
+
+ SetDeleted(TRUE)
+
+ SUPER(oOwnerApp)
+
+ SELF:EnableDragDropClient()
+
+ SELF:Icon := Icon{ResourceID{IDI_STANDARDICON, _GetInst()}}
+ SELF:Menu := EmptySDIMenu{SELF}
+ oStdMenu := StandardSDIMenu{SELF}
+ SELF:Caption := "VO SDI Application"
+ SELF:EnableStatusBar(TRUE)
+ SELF:StatusBar:DisplayTime(TRUE)
+ SELF:QuitOnClose := TRUE
+
+ SELF:Size := Dimension{850,650}
+
+ oPrinter := PrintingDevice{}
+
+ RETURN SELF
+
+
+method ViewForm()
+ self:ToolBar:UnPressItem(IDM_StandardSDIMenu_View_Table_ID)
+ self:ToolBar:PressItem(IDM_StandardSDIMenu_View_Form_ID)
+
+ return super:ViewForm()
+
+method ViewTable()
+ self:ToolBar:UnPressItem(IDM_StandardSDIMenu_View_Form_ID)
+ self:ToolBar:PressItem(IDM_StandardSDIMenu_View_Table_ID)
+
+ return super:ViewTable()
+
+
+
+END CLASS
diff --git a/src/Templates/working/content/p_vosdiapplication/Start.prg b/src/Templates/working/content/p_vosdiapplication/Start.prg
new file mode 100644
index 0000000000..340a15d66c
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/Start.prg
@@ -0,0 +1,24 @@
+[STAThread];
+FUNCTION Start() AS INT
+ LOCAL oXApp AS XApp
+ TRY
+ oXApp := XApp{}
+ oXApp:Start()
+ CATCH oException AS Exception
+ ErrorDialog(oException)
+ END TRY
+RETURN 0
+
+CLASS XApp INHERIT App
+METHOD Start()
+ LOCAL oMainWindow AS StandardSDIWindow
+
+ oMainWindow := StandardSDIWindow{SELF}
+ oMainWindow:Show(SHOWCENTERED)
+
+ SELF:Exec()
+
+RETURN SELF
+
+
+END CLASS
diff --git a/src/Templates/working/content/p_vosdiapplication/XSharp.VOSDIApplication.xsproj b/src/Templates/working/content/p_vosdiapplication/XSharp.VOSDIApplication.xsproj
new file mode 100644
index 0000000000..f1a31b807a
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/XSharp.VOSDIApplication.xsproj
@@ -0,0 +1,37 @@
+
+
+
+ WinExe
+ VOSDIApp
+ VO
+ true
+ VOSDIApp
+ True
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ false
+ false
+ true
+ false
+ true
+ true
+ False
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vosdiapplication/XSharp.ico b/src/Templates/working/content/p_vosdiapplication/XSharp.ico
new file mode 100644
index 0000000000..dd1707e251
Binary files /dev/null and b/src/Templates/working/content/p_vosdiapplication/XSharp.ico differ
diff --git a/src/Templates/working/content/p_vosdiapplication/cavoded.tpl b/src/Templates/working/content/p_vosdiapplication/cavoded.tpl
new file mode 100644
index 0000000000..627763cb84
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/cavoded.tpl
@@ -0,0 +1,225 @@
+[CLASS]
+CLASS %classname% INHERIT %superclass%
+ INSTANCE cDBFPath := "%dbfpath%" AS STRING
+ INSTANCE cName := "%dbfname%" AS STRING
+ INSTANCE xDriver := %rdd% AS USUAL
+ INSTANCE lReadOnlyMode:= %ro% AS LOGIC
+ INSTANCE lSharedMode := %share% AS USUAL
+ INSTANCE nOrder := %order% AS INT
+ %declarations%
+
+[INIT]
+METHOD Init(cDBF, lShare, lRO, xRdd) CLASS %classname%
+ LOCAL oFS AS FILESPEC
+ LOCAL i AS DWORD
+ LOCAL nFields AS DWORD
+ LOCAL aFieldDesc AS ARRAY
+ LOCAL aIndex AS ARRAY
+ LOCAL nIndexCount AS DWORD
+ LOCAL oFSIndex AS FILESPEC
+ LOCAL nPos AS DWORD
+ LOCAL lTemp AS LOGIC
+ LOCAL oFSTemp AS FILESPEC
+
+
+ IF IsLogic(lShare)
+ SELF:lSharedMode := lShare
+ ELSE
+ IF !IsLogic(SELF:lSharedMode)
+ SELF:lSharedMode := !SetExclusive()
+ ENDIF
+ ENDIF
+
+ IF IsLogic(lRO)
+ SELF:lReadOnlyMode := lRO
+ ENDIF
+
+ IF IsString(xRdd) .OR. IsArray(xRdd)
+ SELF:xDriver := xRdd
+ ENDIF
+
+ SELF:PreInit()
+
+ IF IsString(cDBF)
+ // UH 01/18/2000
+ oFSTemp := FileSpec{SELF:cDBFPath + SELF:cName}
+ oFS := FileSpec{cDBF}
+
+ IF SLen(oFS:Drive) = 0
+ oFS:Drive := CurDrive()
+ ENDIF
+ IF SLen(oFS:Path) = 0
+ oFS:Path := "\" + CurDir()
+ ENDIF
+
+ IF SLen(oFS:FileName) = 0
+ oFS:Filename := SELF:cName
+ ENDIF
+
+ IF oFS:FullPath == oFSTemp:Fullpath
+ lTemp := .T.
+ ELSE
+ IF Left(cDBF, 2) =='\\' // Unc path, for example \\Server\Share\FileName.DBF
+ SELF:cDBFPath := oFS:Path
+ ELSE
+ SELF:cDBFPath := oFS:Drive + oFS:Path
+ ENDIF
+ SELF:cName := oFS:FileName + oFS:Extension
+ oFS := FileSpec{SELF:cDBFPath + SELF:cName}
+ ENDIF
+ ELSE
+ oFS := FileSpec{SELF:cName}
+ oFS:Path := SELF:cDBFPath
+ ENDIF
+
+
+ SUPER:Init(oFS, SELF:lSharedMode, SELF:lReadOnlyMode , SELF:xDriver )
+
+ oHyperLabel := HyperLabel{#%hlname%, "%hlcaption%", "%hldescription%", "%hlhelpcontext%"}
+
+ IF oHLStatus = NIL
+ nFields := ALen(aFieldDesc := SELF:FieldDesc)
+ FOR i:=1 UPTO nFields
+ nPos := SELF:FieldPos( aFieldDesc[i][DBC_NAME] )
+
+ SELF:SetDataField( nPos,;
+ DataField{aFieldDesc[i][DBC_SYMBOL],aFieldDesc[i][DBC_FIELDSPEC]} )
+
+ IF String2Symbol(aFieldDesc[i][DBC_NAME]) != aFieldDesc[i][DBC_SYMBOL]
+ SELF:FieldInfo(DBS_ALIAS, nPos, Symbol2String(aFieldDesc[i][DBC_SYMBOL]) )
+ ENDIF
+ NEXT
+
+ nIndexCount := ALen(aIndex:=SELF:IndexList)
+
+ FOR i:=1 UPTO nIndexCount
+ oFSIndex := FileSpec{ aIndex[i][DBC_INDEXNAME] }
+ oFSIndex:Path := SELF:cDBFPath
+
+ IF lTemp .AND. !Empty( aIndex[i][DBC_INDEXPATH] )
+ oFSIndex:Path := aIndex[i][DBC_INDEXPATH]
+ ENDIF
+
+ IF oFSIndex:Find()
+ lTemp := SELF:SetIndex( oFSIndex )
+ ENDIF
+ NEXT
+
+ // UH 01/18/2000
+ // SELF:nOrder > 0
+ IF lTemp .AND. SELF:nOrder > 0
+ SELF:SetOrder(SELF:nOrder)
+ ENDIF
+
+ SELF:GoTop()
+ ENDIF
+
+ SELF:PostInit()
+
+ RETURN SELF
+
+
+[FIELDDESC]
+ACCESS FieldDesc CLASS %classname%
+ //
+ // Describes all fields selected by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nFields AS DWORD
+
+ nFields := %fieldcount%
+
+ IF nFields > 0
+ aRet := ArrayCreate(nFields)
+
+ //
+ // The following code creates an array of field
+ // descriptors with these items for each
+ // selected field:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_SYMBOL
+ // DBC_NAME
+ // DBC_FIELDSPEC
+ //
+ %fielddesc%
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+
+ RETURN aRet
+
+
+[INDEXLIST]
+ACCESS IndexList CLASS %classname%
+ //
+ // Describes all index files created or selected
+ // by DBServer-Editor
+ //
+ LOCAL aRet AS ARRAY
+ LOCAL nIndexCount AS DWORD
+
+ nIndexCount := %indexcount%
+
+ IF nIndexCount > 0
+ aRet := ArrayCreate(nIndexCount)
+
+ //
+ // The following code creates an array of index
+ // file descriptors with these items for each
+ // selected index file:
+ //
+ // { , , }
+ //
+ // Use following predefined constants to access
+ // each subarray:
+ //
+ // DBC_INDEXNAME
+ // DBC_INDEXPATH
+ // DBC_ORDERS
+ //
+ // Array contains an array of
+ // order descriptors with these items for each
+ // order:
+ //
+ // { , , , , }
+ //
+ // Use following predefined constants to access
+ // aOrder subarrays:
+ //
+ // DBC_TAGNAME
+ // DBC_DUPLICATE
+ // DBC_ASCENDING
+ // DBC_KEYEXP
+ // DBC_FOREXP
+ //
+ %indexlist%
+
+ ELSE
+ aRet := {}
+ ENDIF
+
+ RETURN aRet
+
+
+[PREINIT]
+METHOD PreInit() class %classname%
+ //Put your PreInit additions here
+ RETURN NIL
+
+[POSTINIT]
+METHOD PostInit() class %classname%
+ //Put your PostInit additions here
+ RETURN NIL
+
+[MACROS]
+FieldDesc=\r\n\t\taRet[%pos%] := { #%hlname%, \"%fldname%\", %classname%{}}
+Index=\r\n\t\taRet[%pos%] := { \"%indexname%\", \"%dbfpath%\",; \r\n \t\t\t\t\t{%orderlist% } }
+Order={ \"%tag%\", %duplicate%, %ascending%, [%keyexp%], [%forexp%] }
+Declaration=\r\n\tDECLARE ACCESS %hlname%\r\n\tDECLARE ASSIGN %hlname%
diff --git a/src/Templates/working/content/p_vosdiapplication/cavofed.tpl b/src/Templates/working/content/p_vosdiapplication/cavofed.tpl
new file mode 100644
index 0000000000..11665a502f
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/cavofed.tpl
@@ -0,0 +1,33 @@
+[CLASS]
+CLASS %classname% INHERIT %superclass%
+
+
+[INIT]
+METHOD Init() CLASS %classname%
+ LOCAL cPict AS STRING
+
+ SUPER:Init( HyperLabel{#%hlname%, "%hlcaption%", "%hldescription%", "%hlhelpcontext%" }, "%type%", %len%, %dec% )
+ cPict := "%picture"
+ IF SLen(cPict) > 0
+ SELF:Picture := cPict
+ ENDIF
+
+ RETURN SELF
+
+
+
+[DBSERVER]
+Method GetFieldInfo%hlname%() CLASS %servername%
+RETURN {#%hlname%, "%hlcaption%","%hldescription%","%hlhelpcontext%"}
+
+[DBSERVER]
+ACCESS %hlname% AS %usualtype% PASCAL CLASS %servername%
+
+ RETURN SELF:FieldGet(#%hlname%)
+
+
+[DBSERVER]
+ASSIGN %hlname%(uValue AS %usualtype%) AS %usualtype% PASCAL CLASS %servername%
+
+ RETURN SELF:FieldPut(#%hlname%, uValue)
+
diff --git a/src/Templates/working/content/p_vosdiapplication/cavowed.inf b/src/Templates/working/content/p_vosdiapplication/cavowed.inf
new file mode 100644
index 0000000000..07d5788d18
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/cavowed.inf
@@ -0,0 +1,955 @@
+[FORM]
+Assign01=Name,HyperLabel(%Name%,%Caption%,,)
+Assign02=Caption,HyperLabel(,lstring,,)
+Assign03=Description,HyperLabel(,,string,)
+Assign04=Help Context,HyperLabel(,,,string)
+Assign05=Clipper Keys,ClipperKeys(BOOL)
+Assign06=Large Icon,Icon(CLASS:ICON)
+Assign07=Small Icon,IconSm(CLASS:ICON)
+Assign08=Accelerator Table,Accelerator(CLASS:Accelerator)
+Assign09=Background Color,Background(COLOR)
+Assign10=Menu,Menu(CLASS:Menu)
+Assign11=Context Menu,ContextMenu(CLASS:Menu)
+Assign12=Help File Name,HelpDisplay(string)
+Assign13=Prevent Auto Layout,PreventAutoLayout(BOOL)
+Assign14=Defer USE,DeferUse(BOOL)
+Assign15=Quit On Close,QuitOnClose(BOOL)
+Assign16=Automated,Automated(BOOL)
+Assign17=Allow Server Close,AllowServerClose(BOOL)
+
+Method01=Activate,Activate(CODE:Activate)
+Method02=ButtonClick,ButtonClick(CODE:ButtonClick)
+Method03=ButtonDoubleClick,ButtonDoubleClick(CODE:ButtonDoubleClick)
+Method04=Close,Close(CODE:Close)
+Method05=Deactivate,Deactivate(CODE:Deactivate)
+Method06=Draw,Draw(CODE:Draw)
+Method07=EditChange,EditChange(CODE:EditChange)
+Method08=EditFocusChange,EditFocusChange(CODE:EditFocusChange)
+Method09=EditScroll,EditScroll(CODE:EditScroll)
+Method10=Expose,Expose(CODE:Expose)
+Method11=FocusChange,FocusChange(CODE:FocusChange)
+Method12=HelpRequest,HelpRequest(CODE:HelpRequest)
+Method13=HorizontalScroll,HorizontalScroll(CODE:HorizontalScroll)
+Method14=Keydown,Keydown(CODE:Keydown)
+Method15=Keyup,Keyup(CODE:Keyup)
+Method16=ListBoxClick,ListBoxClick(CODE:ListBoxClick)
+Method17=ListBoxSelect,Show(CODE:ListBoxSelect)
+Method18=MenuCommand,MenuCommand(CODE:MenuCommand)
+Method19=MenuInit,MenuInit(CODE:MenuInit)
+Method20=MenuSelect,MenuSelect(CODE:MenuSelect)
+Method21=MouseButtonDoubleClick,MouseButtonDoubleClick(CODE:MouseButtonDoubleClick)
+Method22=MouseButtonDown,MouseButtonDown(CODE:MouseButtonDown)
+Method23=MouseButtonUp,MouseButtonUp(CODE:MouseButtonUp)
+Method24=MouseDrag,MouseDrag(CODE:MouseDrag)
+Method25=MouseMove,MouseMove(CODE:MouseMove)
+Method26=Move,Move(CODE:Move)
+Method27=QueryClose,QueryClose(CODE:QueryClose)
+Method28=Resize,Resize(CODE:Resize)
+Method29=VerticalScroll,VerticalScroll(CODE:VerticalScroll)
+Method30=View As,ViewAs(VIEWS)
+Method31=Data Server,Use(CLASS:DBSERVER:+SQLTable:+JDataServer)
+Method32=Font,Font(FONT)
+Method33=Notify,Notify(CODE:Notify)
+Method34=PreValidate,PreValidate(CODE:PreValidate)
+Method35=HorizontalSlide,HorizontalSlide(CODE:HorizontalSlide)
+Method36=VerticalSlide,VerticalSlide(CODE:VerticalSlide)
+Method37=HorizontalSpin,HorizontalSpin(CODE:HorizontalSpin)
+Method38=VerticalSpin,VerticalSpin(CODE:VerticalSpin)
+Method39=PreInit Actions,PreInit(CODE:PreInit)
+Method40=PostInit Actions,PostInit(CODE:PostInit)
+Method41=StatusBar,EnableStatusBar(BOOL)
+Method42=AnimationStart,AnimationStart(CODE:AnimationStart)
+Method43=AnimationStop,AnimationStop(CODE:AnimationStop)
+Method44=RichEditDropFiles,RichEditDropFiles(CODE:RichEditDropFiles)
+Method45=RichEditProtected,RichEditProtected(CODE:RichEditProtected)
+Method46=RichEditSelChange,RichEditSelChange(CODE:RichEditSelectionChange)
+Method47=RichEditUndoLost,RichEditUndoLost(CODE:RichEditUndoLost)
+Method48=ListViewItemDrag,ListViewItemDrag(CODE:ListViewItemDrag)
+Method49=ListViewItemEdit,ListViewItemEdit(CODE:ListViewItemEdit)
+Method50=ListViewColumnClick,ListViewColumnClick(CODE:ListViewColumnClick)
+Method51=ListViewItemDelete,ListItemDelete(CODE:ListViewItemDelete)
+Method52=ListViewKeyDown,ListKeyDown(CODE:ListViewKeyDown)
+Method53=TreeViewMouseDown,TreeViewMouseButtonDown(CODE:TreeViewMouseButtonDown)
+Method54=ListViewMouseDown,ListViewMouseButtonDown(CODE:ListViewMouseButtonDown)
+Method55=TreeViewMouseDoubleClick,TreeViewMouseDoubleClick(CODE:TreeViewMouseButtonDoubleClick)
+Method56=ListViewMouseDoubleClick,ListViewMouseDoubleClick(CODE:ListViewMouseButtonDoubleClick)
+Method57=TabSelect,TabSelect(CODE:TabSelect)
+Method58=TabSelChanging,TabSelChanging(CODE:TabSelectionChanging)
+Method59=TabKeyDown,TabKeyDown(CODE:TabKeyDown)
+Method60=TreeViewItemDrag,TreeViewItemDrag(CODE:TreeViewItemDrag)
+Method61=TreeViewItemEdit,TreeViewItemEdit(CODE:TreeViewItemEdit)
+Method62=TreeViewItemDelete,TreeViewItemDelete(CODE:TreeViewItemDelete)
+Method63=TreeViewItemExpanded,TreeViewItemExpanded(CODE:TreeViewItemExpanded)
+Method64=TreeViewItemExpanding,TreeViewItemExpanding(CODE:TreeViewItemExpanding)
+Method65=TreeViewKeyDown,TreeViewKeyDown(CODE:TreeViewKeyDown)
+Method66=TreeViewSelChanged,TreeViewSelChanged(CODE:TreeViewSelectionChanged)
+Method67=TreeViewSelChanging,TreeViewSelChanging(CODE:TreeViewSelectionChanging)
+Method68=Class Declaration,ClassDeclaration(CODE:ClassDeclaration)
+Method69=MonthCalSelChanged,MonthCalSelChanged(CODE:MonthCalSelectionChanged)
+Method70=DateTimeSelChanged,DateTimeSelChanged(CODE:DateTimeSelectionChanged)
+Method90=No Access/Assign,NoAcc(LOGIC)
+Method91=Pixel Positions,PixPos(LOGIC)
+Method92=Export Controls,ExpCtls(LOGIC)
+
+WindowStyle01=Tab Key,WS_CHILD:WS_CHILD|DS_CONTROL(TABKEY)
+
+[FORM:DATAWINDOW]
+ContTitle=Data Window
+text=DataWindow Caption
+InitMethod=DATAWINDOW(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataWindow)
+Name=MyDataWindow
+Size=420,320
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2065
+PropTabs=HyperLabel,DataWindow,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+Assign18=Owner Alignment,OwnerAlignment(OWNERALIGNMENT)
+
+[FORM:DATADIALOG]
+ContTitle=Data Dialog
+text=DataDialog Caption
+InitMethod=DATADIALOG(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataDialog)
+Name=MyDataDialog
+Size=400,240
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2490
+PropTabs=HyperLabel,DataDialog,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+
+[FORM:DATAWINDOW:OLEDATAWINDOW]
+ContTitle=OLE Data Window
+text=OLE DataWindow Caption
+InitMethod=OLEDATAWINDOW(oWindow,iCtlID,oServer,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OleDataWindow)
+Name=MyOLEDataWindow
+Size=420,320
+DialogTemplate=1
+Position=5,5
+Style=WS_CHILD
+HelpID=2065
+PropTabs=HyperLabel,DataWindow,Mouse Events,Window Events,Control Events,Menu Events,CommonControl Events,TreeView Events,ListView Events
+
+
+[FORM:SHELLWINDOW]
+Assign01=Mouse Pointer,Pointer(CLASS:POINTER)
+Assign02=Menu,Menu(CLASS:Menu)
+Assign03=Help File Name,HelpDisplay(string)
+ContTitle=Shell Window
+text=ShellWindow Caption
+InitMethod=SHELLWINDOW(oParent,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ShellWindow)
+Name=TheShellWindow
+Size=400,300
+Position=5,5
+Style=WS_OVERLAPPEDWINDOW
+HelpID=2060
+PropTabs=HyperLabel,ShellWindow,Mouse Events,Window Events,Control Events,Menu Events
+
+[FORM:DIALOGWINDOW]
+Method01=Font,Font(FONT)
+Method02=Modeless,Modeless(LOGIC)
+Assign01=Background Color,Background(COLOR)
+Assign02=Mouse Pointer,Pointer(CLASS:POINTER)
+Assign03=Help File Name,HelpDisplay(string)
+WindowStyle01=Disabled,WS_DISABLED(BOOL)
+WindowStyle03=Clip Siblings,WS_CLIPSIBLINGS(BOOL)
+WindowStyle04=Local Edit,DS_LOCALEDIT(BOOL)
+WindowStyle05=Absolute Align,DS_ABSALIGN(BOOL)
+WindowStyle06=Clip Children,WS_CLIPCHILDREN(BOOL)
+WindowStyle09=System Modal,DS_SYSMODAL(BOOL)
+WindowStyle10=No Idle Message,DS_NOIDLEMSG(BOOL)
+WindowStyle11=Resizable,WS_THICKFRAME:DS_MODALFRAME(BOOL)
+WindowStyle12=Caption Bar,WS_NULL:WS_CAPTION:WS_CAPTION|WS_SYSMENU:WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX:WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX:WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX(CAPTIONBAR)
+WindowStyle13=Fixed Font,DS_FIXEDSYS(BOOL)
+WindowStyle14=Position,WS_NULL:DS_CENTER:DS_CENTERMOUSE(DIALOGPOSITON)
+WindowStyle15=Type,WS_POPUP:WS_CHILD|DS_CONTROL(DIALOGTYPE)
+ContTitle=Dialog Window
+DialogTemplate=1
+text=Dialog Caption
+InitMethod=DialogWindow(oParent,uExtra)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DialogWindow)
+Name=TheDialog
+Size=400,240
+Position=5,5
+Style=DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU|DS_3DLOOK
+ExStyle=WS_EX_DLGMODALFRAME
+HelpID=2070
+PropTabs=HyperLabel,DlgWindow,DlgWndStyles:Styles,Mouse Events,Window Events,Control Events,CommonControl Events,TreeView Events,ListView Events,Menu Events
+
+[CONTROL]
+Assign01=Name,HyperLabel(%Name%,%Caption%,,)
+Assign02=Caption,HyperLabel(,lstring,,)
+Assign03=Description,HyperLabel(,,string,)
+Assign04=Help Context,HyperLabel(,,,string)
+Assign05=Background Color,Background(COLOR)
+Assign06=Context Menu,ContextMenu(CLASS:Menu)
+Assign07=Tooltip,TooltipText(string)
+Assign08=Owner Alignment,OwnerAlignment(OWNERALIGNMENT)
+WindowStyle01=Disabled,WS_DISABLED(BOOL)
+WindowStyle02=Tab Stop,WS_TABSTOP(BOOL)
+WindowStyle03=Group,WS_GROUP(BOOL)
+WindowStyle04=Border,WS_BORDER(BOOL)
+WindowStyle05=Vertical Scrollbar,WS_VSCROLL(BOOL)
+WindowStyle06=Horizontal Scrollbar,WS_HSCROLL(BOOL)
+WindowStyle07=Clip Siblings,WS_CLIPSIBLINGS(BOOL)
+ExWindowStyle01=Modal Frame,WS_EX_DLGMODALFRAME(BOOL)
+ExWindowStyle02=Static Edge,WS_EX_STATICEDGE(BOOL)
+ExWindowStyle03=Client Edge,WS_EX_CLIENTEDGE(BOOL)
+ExWindowStyle04=Transparent,WS_EX_TRANSPARENT(BOOL)
+ExWindowStyle05=Accept Files,WS_EX_ACCEPTFILES(BOOL)
+ExWindowStyle06=No Parent Notify,WS_EX_NOPARENTNOTIFY(BOOL)
+ExWindowStyle07=Right-To-Left Reading,WS_EX_RTLREADING(BOOL)
+ExWindowStyle08=ExAlignment,WS_EX_LEFT:WS_EX_RIGHT(EXALIGNMENT)
+
+[CONTROL:CUSTOMCONTROL]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+ContTitle=Custom Control
+Name=CustomControl
+ClassName=static
+OptClassName=_VOCustomControl
+Size=240,140
+HelpID=2915
+Style=WS_CHILD|WS_BORDER
+PropTabs=HyperLabel,GenCustCtrl:General,CustomCtlStyles:Styles,ExStyles
+InitMethod=CustomControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:CustomControl)
+
+[CONTROL:MULTIMEDIACONTAINER]
+Assign01=File Name,FileName(STRING)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+ContTitle=MulitMedia Container
+Name=MultiMediaContainer
+ClassName=__PTSTBCN__
+OptClassName=_VOMMContainer
+Size=240,140
+;HelpID=2915
+Style=WS_CHILD|WS_BORDER
+PropTabs=HyperLabel,GenMMCont:General,MMContStyles:Styles,ExStyles
+InitMethod=MultiMediaContainer(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MultiMediaContainer)
+
+[CONTROL:OLEGEN]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=AllowResize,AllowResize(BOOL)
+Assign03=AutoSizeOnCreate,AutoSizeOnCreate(BOOL)
+Assign04=ReadOnly,ReadOnly(BOOL)
+Assign05=AllowDocView,AllowDocView(BOOL)
+
+[CONTROL:OLEGEN:OLEOBJECT]
+Assign01=AllowInPlace,AllowInPlace(BOOL)
+Assign02=ActivateOnDblClk,ActivateOnDblClk(BOOL)
+Assign03=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+ContTitle=OLE Object
+Name=OLEObject
+ClassName=__PTSTBCN__
+OptClassName=_VOOleContainer
+Size=240,140
+PropTabs=HyperLabel,GenOleObject:General,OLEObjStyles:Styles,ExStyles
+Style=WS_CHILD|WS_BORDER
+InitMethod=OLEObject(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OLEObject)
+
+[CONTROL:OLEGEN:OLECONTROL]
+ContTitle=OLE Control
+Name=OLEControl
+ClassName=__PTSTBCN__
+OptClassName=_VOOleContainer
+Size=240,140
+Style=WS_CHILD
+HelpID=2290
+PropTabs=HyperLabel,GenOleControl:General,OCXProperties:Properties,OCXEvents:Events,OLEObjStyles:Styles,ExStyles
+InitMethod=OLEControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:OLEControl)
+
+[CONTROL:SUBDATAWINDOW]
+ContTitle=Sub-Data Window
+ClassName=__PSBDWN__
+Name=Sub_Form
+Size=240,140
+Style=WS_CHILD|WS_BORDER
+HelpID=2225
+PropTabs=GenSubData:General,SubDataStyles:Styles
+Method1=Relation String,RelationString(string)
+Method2=Order,Order(string)
+
+[CONTROL:FIXEDICON]
+Method01=Icon,SetIcon(CLASS:ICON)
+ContTitle=Fixed Icon
+ClassName=static
+Name=FixedIcon
+Size=32,32
+GenerateCode=1
+Style=WS_CHILD|SS_ICON|WS_BORDER
+HelpID=2205
+PropTabs=HyperLabel,GenFixedImage:General,FixedImageStyles:Styles,ExStyles
+InitMethod=FIXEDICON(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedIcon)
+WindowStyle08=Real Size Image,SS_REALSIZEIMAGE(BOOL)
+WindowStyle09=Center Image,SS_CENTERIMAGE(BOOL)
+WindowStyle10=Right adjust,SS_RIGHTJUST(BOOL)
+
+[CONTROL:FIXEDBITMAP]
+Method01=Bitmap,SetBitmap(CLASS:BITMAP)
+ContTitle=Fixed Bitmap
+ClassName=static
+Name=FixedBitmap
+Size=64,64
+GenerateCode=1
+Style=WS_CHILD|SS_BITMAP|WS_BORDER
+HelpID=2565
+PropTabs=HyperLabel,GenFixedImage:General,FixedImageStyles:Styles,ExStyles
+InitMethod=FIXEDBITMAP(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedBitmap)
+WindowStyle09=Center Image,SS_CENTERIMAGE(BOOL)
+WindowStyle10=Right adjust,SS_RIGHTJUST(BOOL)
+
+[CONTROL:SCROLLBAR]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Min Value,Range(numeric,)
+Assign04=Max Value,Range(,numeric)
+WindowStyle01=AutoSize,SBS_SIZEBOXTOPLEFTALIGN(BOOL)
+WindowStyle02=Size Grip,SBS_SIZEGRIP|SBS_SIZEBOXBOTTOMRIGHTALIGN(BOOL)
+
+[CONTROL:SCROLLBAR:HORIZONTALSCROLLBAR]
+ContTitle=Horizontal Scroll Bar
+ClassName=scrollbar
+Name=HorzScroll
+Size=140,20
+Style=WS_CHILD|SBS_HORZ
+HelpID=2215
+PropTabs=HyperLabel,GenScrollbar:General,ScrollBarStyles:Styles,ExStyles
+InitMethod=HorizontalScrollBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalScrollBar)
+
+[CONTROL:SCROLLBAR:VERTICALSCROLLBAR]
+ContTitle=Vertical Scroll Bar
+ClassName=scrollbar
+Name=VertScroll
+Size=20,140
+Style=WS_CHILD|SBS_VERT
+HelpID=2220
+PropTabs=HyperLabel,GenScrollbar:General,ScrollBarStyles:Styles,ExStyles
+InitMethod=VerticalScrollBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalScrollBar)
+
+[CONTROL:TEXTCONTROL]
+Method01=Font,Font(FONT)
+Method02=Input Method Editor,Ime(OLOGIC)
+Assign01=Text Color,TextColor(COLOR)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+
+[CONTROL:TEXTCONTROL:EDIT]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Text Limit,TextLimit(numeric)
+WindowStyle09=Password,ES_PASSWORD(BOOL)
+WindowStyle10=Retain Selection,ES_NOHIDESEL(BOOL)
+WindowStyle11=OEM Conversion,ES_OEMCONVERT(BOOL)
+WindowStyle12=Auto HScroll,ES_AUTOHSCROLL(BOOL)
+WindowStyle13=Read Only,ES_READONLY(BOOL)
+WindowStyle14=Conversion,WS_NULL:ES_UPPERCASE:ES_LOWERCASE(EDITCONVERT)
+WindowStyle15=Numbers Only,ES_NUMBER(BOOL)
+WindowStyle19=Alignment,ES_LEFT:ES_CENTER:ES_RIGHT(EDITALIGN)
+
+[CONTROL:TEXTCONTROL:EDIT:MULTILINEEDIT]
+WindowStyle17=Auto VScroll,ES_AUTOVSCROLL(BOOL)
+WindowStyle18=Return Key,ES_WANTRETURN(BOOL)
+ContTitle=Multi-Line Edit
+ClassName=edit
+Name=MultiLineEdit
+Size=80,60
+Style=WS_CHILD|ES_MULTILINE|WS_TABSTOP|WS_BORDER|ES_AUTOVSCROLL|ES_AUTOHSCROLL|ES_WANTRETURN
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2190
+PropTabs=HyperLabel,GenEdit:General,MultiLineStyles:Styles,ExStyles
+InitMethod=MultiLineEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MultiLineEdit)
+
+[CONTROL:TEXTCONTROL:EDIT:SINGLELINEEDIT]
+Assign01=Block,Block(string)
+Assign02=Block Owner,BlockOwner(STRING)
+Assign03=OverWrite,OverWrite(OVERWRITE)
+Assign04=Picture,Picture(STRING)
+Assign05=Scroll Mode,ScrollMode(SCRMODE)
+Assign06=Focus Select,FocusSelect(FSELECT)
+Assign07=Auto Focus Change,AutoFocusChange(BOOL)
+ContTitle=Single-Line Edit
+ClassName=edit
+Name=SingleLineEdit
+Size=80,20
+Style=WS_CHILD|WS_TABSTOP|WS_BORDER|ES_AUTOHSCROLL
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2185
+PropTabs=HyperLabel,GenSingleEdit:General,SingleLineStyles:Styles,ExStyles
+InitMethod=SingleLineEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:SingleLineEdit)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Text Color,TextColor(COLOR)
+Method01=Fill Using,FillUsing( )
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:LISTBOX]
+WindowStyle22=Sort,LBS_SORT(BOOL)
+WindowStyle23=Notify Parent,LBS_NOTIFY(BOOL)
+WindowStyle24=Use Tab Stops,LBS_USETABSTOPS(BOOL)
+WindowStyle25=No Redraw,LBS_NOREDRAW(BOOL)
+WindowStyle26=Multi Column,LBS_MULTICOLUMN(BOOL)
+WindowStyle27=No Integral Height,LBS_NOINTEGRALHEIGHT(BOOL)
+WindowStyle28=Want Keyboard Input,LBS_WANTKEYBOARDINPUT(BOOL)
+WindowStyle29=Multiple Selection,LBS_MULTIPLESEL(BOOL)
+WindowStyle30=Extended Selection,LBS_EXTENDEDSEL(BOOL)
+WindowStyle31=Disable if no Scroll,LBS_DISABLENOSCROLL(BOOL)
+WindowStyle32=Owner Draw,WS_NULL:LBS_OWNERDRAWFIXED:LBS_OWNERDRAWVARIABLE(OWNERDRAW)
+ContTitle=List Box
+ClassName=listbox
+Name=ListBox
+Size=80,80
+Style=WS_TABSTOP|WS_CHILD|WS_VSCROLL|LBS_NOTIFY|WS_BORDER|LBS_SORT|LBS_NOINTEGRALHEIGHT|LBS_DISABLENOSCROLL
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2160
+PropTabs=HyperLabel,GenListbox:General,ListBoxStyles:Styles,ExStyles
+InitMethod=ListBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ListBox:-ComboBox)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:COMBOBOX]
+WindowStyle32=ComboBox Type,CBS_SIMPLE:CBS_DROPDOWN:CBS_DROPDOWNLIST(CBTYPE)
+WindowStyle33=Sort,CBS_SORT(BOOL)
+WindowStyle34=Auto HScroll,CBS_AUTOHSCROLL(BOOL)
+WindowStyle35=No Integral Height,CBS_NOINTEGRALHEIGHT(BOOL)
+WindowStyle36=OEM Convert,CBS_OEMCONVERT(BOOL)
+WindowStyle37=Disable if no Scroll,CBS_DISABLENOSCROLL(BOOL)
+WindowStyle38=OwnerDraw,WS_NULL:CBS_OWNERDRAWFIXED:CBS_OWNERDRAWVARIABLE(OWNERDRAW)
+ContTitle=Combo Box
+ClassName=combobox
+Name=ComboBox
+Size=80,120
+Style=WS_TABSTOP|WS_CHILD|CBS_DROPDOWN|WS_VSCROLL|CBS_SORT|CBS_DISABLENOSCROLL
+HelpID=2165
+PropTabs=HyperLabel,GenListbox:General,ComboBoxStyles:Styles,ExStyles
+InitMethod=combobox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ComboBox)
+
+
+[CONTROL:TEXTCONTROL:BUTTON]
+assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+assign02=Image,Image(CLASS:Icon:+Bitmap)
+WindowStyle06=Text Left,BS_LEFTTEXT(BOOL)
+WindowStyle07=Multiline,BS_MULTILINE(BOOL)
+WindowStyle08=Flat,BS_FLAT(BOOL)
+WindowStyle09=Horizontal Alignment,WS_NULL:BS_LEFT:BS_RIGHT:BS_CENTER(BUTTONHALIGN)
+WindowStyle10=Vertical Alignment,WS_NULL:BS_TOP:BS_BOTTOM:BS_VCENTER(BUTTONVALIGN)
+WindowStyle11=Image Type,WS_NULL:BS_ICON:BS_BITMAP:WS_NULL(BUTTONIMAGETYPE)
+WindowStyle12=Push Like,BS_PUSHLIKE(BOOL)
+
+[CONTROL:TEXTCONTROL:BUTTON:CHECKBOX]
+Assign01=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign02=Text Color,TextColor(COLOR)
+WindowStyle05=Selection,BS_CHECKBOX:BS_AUTOCHECKBOX:BS_3STATE:BS_AUTO3STATE(CBAUTOSTYLE)
+ContTitle=Check Box
+ClassName=button
+Name=CheckBox
+Text=CheckBox
+Size=120,18
+HelpID=2155
+Style=WS_TABSTOP|WS_CHILD|BS_AUTOCHECKBOX
+PropTabs=HyperLabel,GenCheckbox:General,CheckBoxStyles:Styles,ExStyles
+InitMethod=CheckBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:CheckBox)
+
+[CONTROL:TEXTCONTROL:BUTTON:PUSHBUTTON]
+WindowStyle04=Default Button,BS_DEFPUSHBUTTON(BOOL)
+Event01=Click Event,MyBtnName( )
+ContTitle=Push Button
+Type=CommandControl
+ClassName=button
+Name=PushButton
+text=Push
+Size=80,20
+Style=WS_CHILD|WS_TABSTOP
+PropTabs=HyperLabel,GenPushButton:General,PushButtonStyles:Styles,ExStyles
+HelpID=2170
+InitMethod=PushButton(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:PushButton)
+
+[CONTROL:TEXTCONTROL:BUTTON:RADIOBUTTON]
+Method01=Group Value,Value(numeric)
+Assign01=Text Color,TextColor(COLOR)
+WindowStyle07=AutoSelect,BS_AUTORADIOBUTTON:BS_RADIOBUTTON(BOOL)
+ContTitle=Radio Button
+Type=CommandControl
+ClassName=button
+Name=RadioButton
+text=RadioButton
+Size=120,18
+Style=WS_CHILD|BS_AUTORADIOBUTTON
+HelpID=2175
+PropTabs=HyperLabel,GenRadioButton:General,RadioButtonStyles:Styles,ExStyles
+InitMethod=RadioButton(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RadioButton)
+
+[CONTROL:TEXTCONTROL:FIXEDTEXT]
+Assign01=Text Color,TextColor(COLOR)
+WindowStyle20=No Prefix,SS_NOPREFIX(BOOL)
+WindowStyle21=Alignment,SS_LEFT:SS_CENTER:SS_RIGHT:SS_SIMPLE:SS_LEFTNOWORDWRAP(FIXEDALIGN)
+WindowStyle22=Center vertically,SS_CENTERIMAGE(BOOL)
+ContTitle=Fixed Text
+InitMethod=FixedText(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:FixedText)
+ClassName=Static
+text=Fixed Text
+Name=FixedText
+Size=80,20
+Style=WS_CHILD
+HelpID=2210
+PropTabs=HyperLabel,GenFixedText:General,FixedTextStyles:Styles,ExStyles
+
+[CONTROL:TEXTCONTROL:GROUPBOX]
+assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Text Color,TextColor(COLOR)
+WindowStyle01=Flat,BS_FLAT(BOOL)
+ContTitle=Group Box
+ClassName=Button
+Text=GroupBox
+Name=GroupBox
+Size=100,80
+Style=WS_CHILD|BS_GROUPBOX|WS_GROUP
+HelpID=2200
+PropTabs=HyperLabel,GenGroupbox:General,GroupBoxStyles:Styles,ExStyles
+InitMethod=GroupBox(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:GroupBox:-RadioButtonGroup)
+
+[CONTROL:TEXTCONTROL:RADIOBUTTONGROUP]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Field Spec,FieldSpec(CLASS:FIELDSPEC)
+Assign03=Text Color,TextColor(COLOR)
+ContTitle=Radio Button Group
+ClassName=Button
+Text=RadioButtonGrp
+Name=RadioButtonGroup
+Size=100,80
+Style=WS_CHILD|BS_GROUPBOX|WS_GROUP
+PropTabs=HyperLabel,GenRadioButtonGroup:General,GroupBoxStyles:Styles,ExStyles
+HelpID=2180
+InitMethod=RadioButtonGroup(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RadioButtonGroup)
+
+[CONTROL:COMMONCONTROL]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Method01=Font,Font(FONT)
+
+[CONTROL:COMMONCONTROL:PROGRESSBAR]
+WindowStyle01=Smooth,PBS_SMOOTH(BOOL)
+WindowStyle02=Vertical,PBS_VERTICAL(BOOL)
+Assign01=Min Value,Range(numeric,)
+Assign02=Max Value,Range(,numeric)
+Assign03=Bar Color,BarColor(COLOR)
+Assign04=Background,BackgroundColor(COLOR)
+ContTitle=Progress Bar
+ClassName=msctls_progress32
+Name=ProgressBar
+Size=140,20
+Style=WS_CHILD
+HelpID=2260
+PropTabs=HyperLabel,GenProgBar:General,ProgressStyles:Styles,ExStylesNoStaticEdge:ExStyles
+InitMethod=ProgressBar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ProgressBar)
+
+[CONTROL:SCROLLBAR:SLIDER]
+WindowStyle38=Auto Ticks,TBS_AUTOTICKS(BOOL)
+WindowStyle39=No Ticks,TBS_NOTICKS(BOOL)
+WindowStyle40=Enable Selection Range,TBS_ENABLESELRANGE(BOOL)
+WindowStyle41=Fixed Length,TBS_FIXEDLENGTH(BOOL)
+WindowStyle42=No Thumb,TBS_NOTHUMB(BOOL)
+WindowStyle43=Tooltips,TBS_TOOLTIPS(BOOL)
+
+
+[CONTROL:SCROLLBAR:SLIDER:HORIZONTALSLIDER]
+ContTitle=Horizontal Slider
+ClassName=msctls_trackbar32
+Name=HorizontalSlider
+Size=100,30
+Style=WS_CHILD|TBS_AUTOTICKS
+HelpID=2265
+PropTabs=HyperLabel,GenScrollbar:General,SliderStyles:Styles,ExStyles
+InitMethod=HorizontalSlider(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalSlider)
+
+[CONTROL:SCROLLBAR:SLIDER:VERTICALSLIDER]
+ContTitle=Vertical Slider
+ClassName=msctls_trackbar32
+Name=VerticalSlider
+Size=30,100
+Style=WS_CHILD|TBS_AUTOTICKS|TBS_VERT
+HelpID=2560
+PropTabs=HyperLabel,GenScrollbar:General,SliderStyles:Styles,ExStyles
+InitMethod=VerticalSlider(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalSlider)
+
+[CONTROL:SCROLLBAR:SPINNER]
+WindowStyle43=Wrap,UDS_WRAP(BOOL)
+WindowStyle44=Alignment,WS_NULL:UDS_ALIGNLEFT:UDS_ALIGNRIGHT(UPDOWNALIGN)
+WindowStyle45=Auto Buddy,UDS_AUTOBUDDY(BOOL)
+WindowStyle46=Arrow Keys,UDS_ARROWKEYS(BOOL)
+WindowStyle47=No Thousands,UDS_NOTHOUSANDS(BOOL)
+WindowStyle48=Set Buddy Int,UDS_SETBUDDYINT(BOOL)
+
+[CONTROL:SCROLLBAR:SPINNER:VERTICALSPINNER]
+ContTitle=Vertical Spinner
+ClassName=msctls_updown32
+Name=VerticalSpinner
+Size=20,30
+Style=WS_CHILD|UDS_AUTOBUDDY
+HelpID=2555
+PropTabs=HyperLabel,GenScrollbar:General,SpinnerStyles:Styles,ExStyles
+InitMethod=VerticalSpinner(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:VerticalSpinner)
+
+[CONTROL:SCROLLBAR:SPINNER:HORIZONTALSPINNER]
+ContTitle=Horizontal Spinner
+ClassName=msctls_updown32
+Name=HorizontalSpinner
+Size=30,20
+Style=WS_CHILD|UDS_AUTOBUDDY|UDS_HORZ
+HelpID=2555
+PropTabs=HyperLabel,GenScrollbar:General,SpinnerStyles:Styles,ExStyles
+InitMethod=HorizontalSpinner(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HorizontalSpinner)
+
+[CONTROL:COMMONCONTROL:TABCONTROL]
+Assign01=AutoSize,AutoSize(BOOL)
+WindowStyle01=Force Icon Left,TCS_FORCEICONLEFT(BOOL)
+WindowStyle02=Force Label Left,TCS_FORCELABELLEFT(BOOL)
+WindowStyle03=Buttons,TCS_BUTTONS(BOOL)
+WindowStyle04=Multiline,TCS_MULTILINE(BOOL)
+WindowStyle05=Focus On Button Down,TCS_FOCUSONBUTTONDOWN(BOOL)
+WindowStyle06=Has ToolTips,TCS_TOOLTIPS(BOOL)
+WindowStyle07=Focus Never,TCS_FOCUSNEVER(BOOL)
+WindowStyle08=Tab Position,WS_NULL:TCS_VERTICAL:TCS_BOTTOM:TCS_VERTICAL|TCS_RIGHT(TABPOSITION)
+WindowStyle09=Hot Track,TCS_HOTTRACK(BOOL)
+ContTitle=Tab Control
+ClassName=SysTabControl32
+Name=TabControl
+Size=180,100
+Style=WS_CHILD
+HelpID=2280
+PropTabs=HyperLabel,GenTabControl:General,TCStyles:Styles,ExStyles
+InitMethod=TabControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:TabControl)
+
+[CONTROL:COMMONCONTROL:TREEVIEW]
+WindowStyle55=Has Buttons,TVS_HASBUTTONS(BOOL)
+WindowStyle56=Has Lines,TVS_HASLINES(BOOL)
+WindowStyle57=Lines at Root,TVS_LINESATROOT(BOOL)
+WindowStyle58=Disable Drag&Drop,TVS_DISABLEDRAGDROP(BOOL)
+WindowStyle59=Show Selection Always,TVS_SHOWSELALWAYS(BOOL)
+WindowStyle60=Edit Labels,TVS_EDITLABELS(BOOL)
+ContTitle=Tree View
+ClassName=SysTreeView32
+Name=TreeView
+Size=150,100
+Style=WS_CHILD|WS_BORDER|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT|TVS_EDITLABELS
+HelpID=2240
+PropTabs=HyperLabel,GenComControls:General,TVStyles:Styles,ExStyles
+InitMethod=TreeView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:TreeView)
+
+[CONTROL:COMMONCONTROL:LISTVIEW]
+WindowStyle60=List View Type,LVS_ICON:LVS_SMALLICON:LVS_REPORT:LVS_LIST(LVTYPE)
+WindowStyle61=Single Selection,LVS_SINGLESEL(BOOL)
+WindowStyle62=Show Selection Always,LVS_SHOWSELALWAYS(BOOL)
+WindowStyle63=Sort,WS_NULL:LVS_SORTASCENDING:LVS_SORTDESCENDING(LVSORT)
+WindowStyle64=No Label Wrap,LVS_NOLABELWRAP(BOOL)
+WindowStyle65=Auto Arrange,LVS_AUTOARRANGE(BOOL)
+WindowStyle66=Edit Labels,LVS_EDITLABELS(BOOL)
+WindowStyle67=No Scroll,LVS_NOSCROLL(BOOL)
+WindowStyle68=Align Left,LVS_ALIGNLEFT(BOOL)
+WindowStyle69=No Column Header,LVS_NOCOLUMNHEADER(BOOL)
+WindowStyle70=No Sort Header,LVS_NOSORTHEADER(BOOL)
+Assign01=Background,BackgroundColor(COLOR)
+Assign02=Grid Lines,GridLines(BOOL)
+Assign03=Header Drag&Drop,HeaderDragDrop(BOOL)
+Assign04=Full Row Select,FullRowSelect(BOOL)
+Assign05=Checkboxes,CheckBoxes(BOOL)
+Assign06=Track Selection,TrackSelection(BOOL)
+ContTitle=List View
+ClassName=SysListView32
+Name=ListView
+Size=150,120
+Style=WS_CHILD|WS_BORDER|LVS_REPORT|LVS_EDITLABELS
+HelpID=2235
+PropTabs=HyperLabel,GenListView:General,LVStyles:Styles,LVExStyles:ExStyles
+InitMethod=ListView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ListView)
+
+[CONTROL:COMMONCONTROL:LISTVIEW:DATALISTVIEW]
+Assign01=Server,Server(CLASS:DBSERVER:+SQLTable)
+ContTitle=Data List View
+ClassName=SysListView32
+Name=DataListView
+Size=150,120
+Style=WS_CHILD|WS_BORDER|LVS_REPORT|WS_HSCROLL|LVS_SINGLESEL|LVS_SHOWSELALWAYS|LVS_OWNERDATA
+HelpID=2920
+PropTabs=HyperLabel,GenListView:General,DLVStyles:Styles,LVExStyles:ExStyles
+InitMethod=DataListView(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DataListView)
+
+[CONTROL:TEXTCONTROL:EDIT:MULTILINEEDIT:RICHEDIT]
+WindowStyle74=Save Selection,ES_SAVESEL(BOOL)
+WindowStyle75=Sunken,ES_SUNKEN(BOOL)
+WindowStyle76=Disable No Scroll,ES_DISABLENOSCROLL(BOOL)
+WindowStyle77=Align to Parent,ES_SELECTIONBAR(BOOL)
+Assign01=Background,BackgroundColor(COLOR)
+ContTitle=Rich Edit Control
+ClassName=RICHEDIT20A
+Name=RichEdit
+Size=100,100
+Style=WS_CHILD|WS_BORDER|ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL
+HelpID=2245
+PropTabs=HyperLabel,GenRTFEdit:General,RichEditStyles:Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=RichEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:RichEdit)
+
+[CONTROL:TEXTCONTROL:HOTKEYEDIT]
+ContTitle=HotKey Edit
+ClassName=msctls_hotkey32
+Name=HotKeyEdit
+Size=90,20
+Style=WS_CHILD
+HelpID=2255
+PropTabs=HyperLabel,GenComControls:General,Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=HotKeyEdit(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:HotKeyEdit)
+
+[CONTROL:COMMONCONTROL:ANIMATIONCONTROL]
+WindowStyle71=Center,ACS_CENTER(BOOL)
+WindowStyle72=Transparent Background,ACS_TRANSPARENT(BOOL)
+WindowStyle73=Auto Play,ACS_AUTOPLAY(BOOL)
+Method01=Resource,OpenResource(numeric)
+Assign01=AVI File,FileSpec(STRING)
+ContTitle=Animation Control
+ClassName=SysAnimate32
+Name=Animation
+Size=60,60
+Style=WS_CHILD|WS_BORDER
+HelpID=2250
+PropTabs=HyperLabel,GenAniControls:General,AnimStyles:Styles,ExStyles
+InitMethod=AnimationControl(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:AnimationControl)
+
+[CONTROL:TEXTCONTROL:DATETIMEPICKER]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+Assign02=Format,Format(STRING)
+WindowStyle01=Type,WS_NULL:DTS_LONGDATEFORMAT:DTS_TIMEFORMAT(DTPTYPE)
+WindowStyle02=App Can Parse,DTS_APPCANPARSE(BOOL)
+WindowStyle03=Right Align MC,DTS_RIGHTALIGN(BOOL)
+WindowStyle04=Show None,DTS_SHOWNONE(BOOL)
+WindowStyle05=Up-Down,DTS_UPDOWN(BOOL)
+ContTitle=Date Time Picker Control
+ClassName=SysDateTimePick32
+Name=DateTimePicker
+Size=85,22
+Style=WS_CHILD|DTS_TIMEFORMAT|WS_TABSTOP
+HelpID=2925
+PropTabs=HyperLabel,GenDTPick:General,DTPStyles:Styles,ExStylesNoClientEdge:ExStyles
+InitMethod=DateTimePicker(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:DateTimePicker)
+
+[CONTROL:TEXTCONTROL:MONTHCALENDAR]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+WindowStyle01=Day State,MCS_DAYSTATE(BOOL)
+WindowStyle02=Multi Select,MCS_MULTISELECT(BOOL)
+WindowStyle03=No Today,MCS_NOTODAY(BOOL)
+WindowStyle04=No Today Circle,MCS_NOTODAYCIRCLE(BOOL)
+WindowStyle05=Week Numbers,MCS_WEEKNUMBERS(BOOL)
+ContTitle=Month Calendar Control
+ClassName=SysMonthCal32
+Name=MonthCalendar
+Size=180,160
+Style=WS_CHILD|WS_TABSTOP
+ExStyle=WS_EX_CLIENTEDGE
+HelpID=2935
+PropTabs=HyperLabel,GenMonthCal:General,MCStyles:Styles,ExStyles
+InitMethod=MonthCalendar(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:MonthCalendar)
+
+[CONTROL:TEXTCONTROL:BASELISTBOX:COMBOBOX:COMBOBOXEX]
+ContTitle=ComboBoxEx
+ClassName=ComboBoxEx32
+Name=ComboBoxEx
+Size=80,120
+Style=WS_TABSTOP|WS_CHILD|CBS_DROPDOWN
+HelpID=2910
+PropTabs=HyperLabel,GenListbox:General,ComboBoxStyles:Styles,ExStyles
+InitMethod=comboboxex(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:ComboBoxEx)
+
+[CONTROL:TEXTCONTROL:IPADDRESS]
+Assign01=Use for Tooltip,UseHLforToolTip(BOOL)
+ContTitle=IP Address
+ClassName=SysIPAddress32
+Text=IPAddress
+Name=IPAddress
+Size=100,20
+Style=WS_CHILD|WS_TABSTOP
+HelpID=2930
+PropTabs=HyperLabel,GenIPAddress:General,Styles,ExStyles
+InitMethod=IPAddress(PARENT,ID,POSITION,SIZE)
+InheritClassName=Inherit from Class,InheritClassName(CLASS:IPAddress)
+
+[AssignMap]
+BackgroundColor=Color
+BarColor=Color
+Background=Brush
+TextLimit=
+TextColor=Color
+Caption=
+AllowInPlace=
+ActivateOnDblClk=
+AllowResize=
+AutoSizeOnCreate=
+ReadOnly=
+ClipperKeys=
+AutoSize=
+OverWrite=
+Picture=
+PreventAutoLayout=
+TooltipText=
+UseHLforTooltip=
+AllowDocView=
+DeferUse=
+GridLines=
+HeaderDragDrop=
+FullRowSelect=
+CheckBoxes=
+TrackSelection=
+QuitOnClose=
+Automated=
+Format=
+AllowServerClose=
+ScrollMode=
+FocusSelect=
+AutoFocusChange=
+OwnerAlignment=
+FileName=
+
+[StdProperties]
+;**** Types
+FONT=FONTSYSTEM8,FONTMODERN8,FONTMODERN10,FONTMODERN12,FONTSWISS8,FONTSWISS10,FONTSWISS12,FONTSWISS14,FONTSWISS18,FONTSWISS24,FONTROMAN8,FONTROMAN10,FONTROMAN12,FONTROMAN14,FONTROMAN18,FONTROMAN24
+BRUSH=BRUSHWHITE,BRUSHBLACK,BRUSHDARK,BRUSHMEDIUM,BRUSHLIGHT,BRUSHHOLLOW,BRUSHCLEAR
+COLOR=COLORBLACK,COLORBLUE,COLORCYAN,COLORGREEN,COLORMAGENTA,COLORRED,COLORYELLOW,COLORWHITE
+LOGIC=Yes
+BOOL=True,False
+OLOGIC=#ON,#OFF
+VIEWS=#FormView,#BrowseView
+BUTTONIMAGESTYLE=No Image,Icon,Bitmap
+BUTTONHALIGN=Auto,Left,Right,Center
+BUTTONVALIGN=Auto,Top,Bottom,Center
+BUTTONIMAGETYPE=No Image,Icon,Bitmap
+CBAUTOSTYLE=No AutoSelect,AutoSelect,3 State,AutoSelect 3 State
+EDITCONVERT=No Conversion,Uppercase,Lowercase
+EDITALIGN=Left,Center,Right
+FIXEDALIGN=Left,Center,Right,Simple,Left No Wrap,
+UPDOWNALIGN=No Alignment,Left,Right
+OWNERDRAW=No Ownerdraw,Fixed,Variable
+CBTYPE=Simple,Drop Down,Drop Down List
+LVTYPE=Icons,Small Icons,Report,List
+LVSORT=No Sort,Ascending,Descending
+CAPTIONBAR=No Caption Bar,Caption Bar Only,System Menu,Minimize Box,Maximize Box,Both Boxes
+DIALOGPOS=Auto,Center,Center Mouse
+DIALOGTYPE=Popup Dialog,Tab Page
+TABKEY=Form Only,Include Parent
+OVERWRITE=OVERWRITE_NEVER,OVERWRITE_ONKEY,OVERWRITE_ALWAYS
+SCRMODE=SCRMODE_FULL,SCRMODE_PART,SCRMODE_NO
+FSELECT=FSEL_ALL,FSEL_TRIM,FSEL_HOME,FSEL_END,FSEL_TRIMEND
+DTPTYPE=Short Date,Long Date,Time
+TABPOSITION=Top,Left,Bottom,Right
+EXALIGNMENT=Left,Right
+OWNERALIGNMENT=OA_LEFT,OA_TOP,OA_RIGHT,OA_BOTTOM,OA_CENTER,OA_LEFT_AUTOSIZE,OA_TOP_AUTOSIZE,OA_RIGHT_AUTOSIZE,OA_BOTTOM_AUTOSIZE,OA_FULL_SIZE,OA_X,OA_X_Y,OA_X_PY, OA_X_PY_PHEIGHT,OA_X_HEIGHT,OA_X_PHEIGHT,OA_PX,OA_PX_Y,OA_PX_Y_PWIDTH,OA_PX_PY_PHEIGHT,OA_PX_PY_PWIDTH_PHEIGHT,OA_PX_PWIDTH,OA_PX_PWIDTH_HEIGHT,OA_PX_PWIDTH_PHEIGHT,OA_PX_HEIGHT,OA_PX_PHEIGHT,OA_Y,OA_Y_WIDTH,OA_Y_PWIDTH,OA_PY,OA_PY_WIDTH_PHEIGHT,OA_PY_PWIDTH_PHEIGHT,OA_PY_PHEIGHT,OA_WIDTH,OA_WIDTH_HEIGHT,OA_WIDTH_PHEIGHT,OA_PWIDTH,OA_PWIDTH_HEIGHT,OA_PWIDTH_PHEIGHT,OA_HEIGHT,OA_PHEIGHT
+
+;**** Association between Tabs and methods/assigns/styles
+HyperLabel=(Hyperlabel Info)Caption,Name,Description,Help Context,Use for Tooltip
+DataWindow=(DataWindow Properties)Inherit from Class,_DBInhFrom,_DCInhFrom,Class Declaration,No Access/Assign,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Accelerator Table,Background Color,Menu,Context Menu,Help File Name,View As,Clipper Keys,Tab Key,Data Server,Prevent Auto Layout,Allow Server Close,Defer USE,Quit On Close,Font,StatusBar,Notify,PreValidate,PreInit Actions,PostInit Actions,_Width,_Height,Owner Alignment
+DataDialog=(DataDialog Properties)Inherit from Class,_DBInhFrom,_DCInhFrom,Class Declaration,No Access/Assign,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Accelerator Table,Background Color,Context Menu,Help File Name,View As,Clipper Keys,Data Server,Prevent Auto Layout,Allow Server Close,Defer USE,Font,Notify,PreValidate,PreInit Actions,PostInit Actions,_Width,_Height
+ShellWindow=(ShellWindow Properties)Inherit from Class,Class Declaration,Large Icon,Small Icon,Mouse Pointer,Menu,Context Menu,Help File Name,PreInit Actions,PostInit Actions,_Width,_Height
+DlgWindow=(DialogWindow Properties)Inherit from Class,Class Declaration,Type,Export Controls,Pixel Positions,Automated,Large Icon,Small Icon,Font,Modeless,Background Color,Mouse Pointer,Clipper Keys,Tab Key,Help File Name,PreInit Actions,PostInit Actions,_Width,_Height
+Mouse Events=(Window Mouse Events)MouseButtonDoubleClick,MouseButtonDown,MouseButtonUp,MouseDrag,MouseMove
+Window Events=(Windows Events)Activate,Close,Deactivate,Draw,Expose,FocusChange,HelpRequest,Move,QueryClose,Resize
+Menu Events=(Window Menu Events)MenuCommand,MenuInit,MenuSelect
+Control Events=(Window Control Events)ButtonClick,ButtonDoubleClick,EditChange,EditFocusChange,EditScroll,Keydown,Keyup,ListBoxClick,ListBoxSelect,HorizontalScroll,VerticalScroll,HorizontalSlide,VerticalSlide,HorizontalSpin,VerticalSpin
+CommonControl Events=(CommonControl Events)AnimationStart,AnimationStop,RichEditDropFiles,RichEditProtected,RichEditSelChange,RichEditUndoLost,TabSelect,TabSelChanging,TabKeyDown,MonthCalSelChanged,DateTimeSelChanged
+TreeView Events=(TreeView Events)TreeViewMouseDown,TreeViewMouseDoubleClick,TreeViewItemDrag,TreeViewItemEdit,TreeViewItemDelete,TreeViewItemExpanded,TreeViewItemExpanding,TreeViewKeyDown,TreeViewSelChanged,TreeViewSelChanging
+ListView Events=(ListView Events)ListViewItemDrag,ListViewItemEdit,ListViewColumnClick,ListViewItemDelete,ListViewKeyDown,ListViewMouseDown,ListViewMouseDoubleClick
+GenMultiSel=(General Multiple Selection Properties)Context Menu,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenCustCtrl=(General CustomControl Properties)Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenMMCont=(General MultiMedia Container Properties)Field Spec,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,File Name,_Width,_Height,_Left,_Top
+GenSubData=(General SubDataWindow Properties)Name,Relation String,Order,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenPushButton=(General PushButton Properties)Click Event,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenRadioButton=(General RadioButton Properties)Group Value,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenCheckbox=(General CheckBox Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Image,Owner Alignment,_Width,_Height,_Left,_Top
+GenScrollbar=(General ScrollBar Properties)Field Spec,Min Value,Max Value,Background Color,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenEdit=(General Edit Properties)Field Spec,Text Limit,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenSingleEdit=(General SinglelineEdit Properties)Block,Block Owner,Field Spec,Text Limit,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Picture,Overwrite,Scroll Mode,Focus Select,Auto Focus Change,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenListbox=(General ListBox Properties)Fill Using,Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_GenCode,_Visible,Owner Alignment,_Width,_Height,_Left,_Top
+GenFixedText=(General FixedText Properties)Text Color,Background Color,Inherit from Class,Context Menu,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenFixedImage=(General FixedImage Properties)Background Color,Inherit from Class,Context Menu,Icon,Bitmap,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenGroupbox=(General GroupBox Properties)Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenRadioButtonGroup=(General RadioButtonGroup Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenComControls=(General CommonControl Properties)Background Color,Inherit from Class,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenAniControls=(General AnimationControl Properties)Background Color,Inherit from Class,Context Menu,Tooltip,Resource,AVI File,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenTabControl=(General TabControl Properties)Inherit from Class,Context Menu,Font,AutoSize,_Visible,_GenCode,_IsDataPage,_PageCaption,_PageName,Owner Alignment,_Width,_Height,_Left,_Top
+GenListView=(General CommonControl Properties)Background,Inherit from Class,Server,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenProgBar=(General ProgressBar Properties)Inherit From Class,Context Menu,Tooltip,Background,Bar Color,Min Value,Max Value,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenRTFEdit=(General Edit Properties)Field Spec,Text Limit,Text Color,Background,Inherit from Class,Context Menu,Tooltip,Font,Input Method Editor,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenDTPick=(General Date Time Picker Properties)Field Spec,Text Color,Background Color,Inherit from Class,Context Menu,Tooltip,Font,Format,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenMonthCal=(General Month Calendar Properties)Field Spec,Text Color,Background,Inherit from Class,Context Menu,Tooltip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+GenOleObject=(General OLE Object Properties)Field Spec,Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,AllowInPlace,ActivateOnDblClk,AllowResize,AutoSizeOnCreate,ReadOnly,AllowDocView,Owner Alignment,_Width,_Height,_Left,_Top
+GenOleControl=(General OLE Control Properties)Inherit from Class,Context Menu,Tooltip,_Visible,_GenCode,AllowInPlace,ActivateOnDblClk,AllowResize,AutoSizeOnCreate,ReadOnly,Owner Alignment,_Width,_Height,_Left,_Top
+GenIPAddress=(General IPAddress Properties)Field Spec,Inherit from Class,Context Menu,ToolTip,Font,_Visible,_GenCode,Owner Alignment,_Width,_Height,_Left,_Top
+OCXProperties=(OLE Control Properties)_OCXPropertyPages,_OCXPropertyList
+OCXEvents=(OLE Control Events)_OCXEventList
+Styles=(Window Styles)Disabled,Tab Stop,Group
+ExStyles=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Client Edge,Static Edge,Modal Frame
+ExStylesNoStaticEdge=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Client Edge,Modal Frame
+ExStylesNoClientEdge=(Extended Window Styles)Clip Siblings,Right-To-Left Reading,ExAlignment,No Parent Notify,Accept Files,Transparent,Static Edge,Modal Frame
+SubDataStyles=(Sub Data Window Styles)Tab Stop,Border
+OLEObjStyles=(OLE Object Window Styles)Disabled,Tab Stop,Group,Border
+CustomCtlStyles=(Custom Control Window Styles)Disabled,Tab Stop,Group,Border
+MMContStyles=(MulitMedia Container Window Styles)Disabled,Tab Stop,Group,Border
+FixedTextStyles=(FixedText Window Styles)Disabled,Tab Stop,Group,Border,No Prefix,Alignment,Center vertically
+FixedImageStyles=(FixedImage Window Styles)Disabled,Tab Stop,Group,Border,Real Size Image,Center Image,Right adjust
+PushButtonStyles=(PushButton Window Styles)Disabled,Tab Stop,Group,Default Button,Multiline,Flat,Horizontal Alignment,Vertical Alignment,Image Type
+CheckBoxStyles=(CheckBox Window Styles)Disabled,Tab Stop,Group,Text Left,Selection,Multiline,Flat,Horizontal Alignment,Vertical Alignment,Push Like,Image Type
+RadioButtonStyles=(RadioButton Window Styles)Disabled,Tab Stop,Group,Text Left,Flat,AutoSelect,Multiline,Horizontal Alignment,Vertical Alignment,Push Like,Image Type
+GroupBoxStyles=(GroupBox Window Styles)Disabled,Tab Stop,Group,Flat
+ProgressStyles=(ProgressBar Styles)Disabled,Tab Stop,Group,Smooth,Vertical
+SingleLineStyles=(SingleLine Edit Window Styles)Disabled,Tab Stop,Group,Border,Password,Retain Selection,OEM Conversion,Auto HScroll,Read Only,Conversion,Numbers Only,Alignment
+MultiLineStyles=(MultiLine Edit Window Styles)Disabled,Tab Stop,Group,Border,Password,Retain Selection,OEM Conversion,Vertical Scrollbar,Horizontal Scrollbar,Auto VScroll,Auto HScroll,Return Key,Read Only,Conversion,Alignment
+ListBoxStyles=(ListBox Window Styles)Disabled,Tab Stop,Group,Border,Sort,Notify Parent,Vertical Scrollbar,Horizontal Scrollbar,Use Tab Stops,No Redraw,Multi Column,No Integral Height,Want Keyboard Input,Multiple Selection,Extended Selection,Disable if no Scroll,Owner Draw
+ComboBoxStyles=(ComboBox Window Styles)Disabled,Tab Stop,Group,ComboBox Type,Sort,Vertical Scrollbar,Auto HScroll,No Integral Height,OEM Convert,Disable if no Scroll,OwnerDraw
+ScrollBarStyles=(ScrollBar Window Styles)Disabled,Tab Stop,Group,AutoSize,Size Grip
+SliderStyles=(Slider Window Styles)Disabled,Tab Stop,Group,Auto Ticks,No Ticks,Enable Selection Range,Fixed Length,No Thumb,Tooltips
+SpinnerStyles=(Spinner Window Styles)Disabled,Tab Stop,Group,Wrap,Alignment,Auto Buddy,Set Buddy Int,Arrow Keys,No Thousands
+TCStyles=(TabControl Window Styles)Disabled,Tab Stop,Group,Force Icon Left,Force Label Left,Buttons,Multiline,Focus On Button Down,Has ToolTips,Focus Never,Tab Position,Hot Track
+TVStyles=(TreeView Window Styles)Disabled,Tab Stop,Group,Border,Has Buttons,Has Lines,Lines at Root,Disable Drag&Drop,Show Selection Always,Edit Labels
+LVStyles=(ListView Window Styles)Disabled,Tab Stop,Group,Border,List View Type,Single Selection,Show Selection Always,Sort,No Label Wrap,Auto Arrange,Edit Labels,No Scroll,Align Left,No Column Header,No Sort Header
+DLVStyles=(ListView Window Styles)Disabled,Tab Stop,Group,Border,Label Wrap,Edit Labels,No Scroll,Align Left,No Column Header,No Sort Header
+AnimStyles=(AnimationControl Window Styles)Disabled,Tab Stop,Border,Group,Center,Transparent Background,Auto Play
+RichEditStyles=(RichEdit Control Window Styles)Disabled,Tab Stop,Group,Border,Retain Selection,Vertical Scrollbar,Horizontal Scrollbar,Auto VScroll,Auto HScroll,Return Key,Read Only,Alignment,Save Selection,Sunken,Disable No Scroll,Align to Parent
+DlgWndStyles=(DialogWindow Styles)Disabled,Caption Bar,Clip Siblings,Clip Children,Absolute Align,System Modal,No Idle Message,Resizable,Position
+MCStyles=(Month Calendar Styles)Disabled,Tab Stop,Group,Day State,Multi Select,No Today,No Today Circle,Week Numbers
+DTPStyles=(Date Time Picker Styles)Disabled,Tab Stop,Group,Type,Right Align MC,Show None,Up-Down
+LVExStyles=(Extended ListView Styles)Clip Siblings,Right-To-Left Reading,No Parent Notify,Accept Files,Transparent,Client Edge,Static Edge,Modal Frame,Grid Lines,Full Row Select,Header Drag&Drop,Checkboxes,Track Selection
+
+[SupplementalFiles]
+File00=
+File01=
+File02=
+File03=
+File04=
+
diff --git a/src/Templates/working/content/p_vosdiapplication/cavowed.tpl b/src/Templates/working/content/p_vosdiapplication/cavowed.tpl
new file mode 100644
index 0000000000..aa43daa7fd
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/cavowed.tpl
@@ -0,0 +1,464 @@
+;
+; syntax of templates:
+;
+; []
+;
+;
+; where is the name of the section. This name can be used
+; in CODE: syntax of description file
+;
+; consists of code. Use \t for a tab character. Other
+; substitution keywords are:
+;
+; %CONTROL:% for a control property
+; %FORM:% for a form property
+;
+; ie: %CONTROL:NAME% for control's name
+; %CONTROL:CLASSNAME% for control's class name
+;
+; %INITPARAMS% for the parameters of the INIT method
+;
+; Note: semicolon (';') in first column designates a comment line
+
+
+[ClassDeclaration]
+class %FORM:NAME% inherit %FORM:CLASSNAME%
+
+[Activate]
+method Activate(oEvent) class %FORM:NAME%
+\tsuper:Activate(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ButtonClick]
+method ButtonClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ButtonClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ButtonDoubleClick]
+method ButtonDoubleClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ButtonDoubleClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Close]
+method Close(oEvent) class %FORM:NAME%
+\tsuper:Close(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Deactivate]
+method Deactivate(oEvent) class %FORM:NAME%
+\tsuper:Deactivate(oEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Draw]
+method Draw(oDrawObject) class %FORM:NAME%
+\tsuper:Draw(oDrawObject)
+\t//Put your changes here
+return NIL
+
+[EditChange]
+method EditChange(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:EditChange(oControlEvent)
+\t//Put your changes here
+\treturn NIL\r\n
+
+[EditFocusChange]
+method EditFocusChange(oEditFocusChangeEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\tlocal lGotFocus as logic
+\toControl := IIf(oEditFocusChangeEvent == NULL_OBJECT, NULL_OBJECT, oEditFocusChangeEvent:Control)
+\tlGotFocus := IIf(oEditFocusChangeEvent == NULL_OBJECT, FALSE, oEditFocusChangeEvent:GotFocus)
+\tsuper:EditFocusChange(oEditFocusChangeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[EditScroll]
+method EditScroll(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:EditScroll(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Expose]
+method Expose(oExposeEvent) class %FORM:NAME%
+\tlocal oBoundingBox as BoundingBox
+\toBoundingBox := IIf(oExposeEvent == NULL_OBJECT, NULL_OBJECT, oExposeEvent:ExposedArea)
+\tsuper:Expose(oExposeEvent)
+\t//Put your changes here
+\treturn NIL\r\n
+
+[FocusChange]
+method FocusChange(oFocusChangeEvent) class %FORM:NAME%
+\tlocal lGotFocus as logic
+\tlGotFocus := IIf(oFocusChangeEvent == NULL_OBJECT, FALSE, oFocusChangeEvent:GotFocus)
+\tsuper:FocusChange(oFocusChangeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[PreInit]
+method PreInit(%INITPARAMS%) class %FORM:NAME%
+\t//Put your PreInit additions here
+\treturn NIL
+
+[PostInit]
+method PostInit(%INITPARAMS%) class %FORM:NAME%
+\t//Put your PostInit additions here
+\treturn NIL
+
+[PreInitCall]
+; this section is inserted at the end of the INIT method of the form
+; use %INITPARAMS% to insert the parameters of INIT
+self:PreInit(%INITPARAMS%)
+
+[PostInitCall]
+; this section is inserted at the end of the INIT method the form
+; use %INITPARAMS% to insert the parameters of INIT
+self:PostInit(%INITPARAMS%)
+
+[HelpRequest]
+method HelpRequest(oHelpRequestEvent) class %FORM:NAME%
+\tsuper:HelpRequest(oHelpRequestEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalScroll]
+method HorizontalScroll(oScrollEvent) class %FORM:NAME%
+\tsuper:HorizontalScroll(oScrollEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Keydown]
+method KeyDown(oKeyEvent) class %FORM:NAME%
+\tlocal nKeyCode as int
+\tnKeyCode := IIf(oKeyEvent = NULL_OBJECT, 0, IIf(IsNil(oKeyEvent:ASCIIChar), oKeyEvent:KeyCode, oKeyEvent:ASCIIChar))
+\tsuper:KeyDown(oKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Keyup]
+method KeyUp(oKeyEvent) class %FORM:NAME%
+\tlocal nKeyCode as int
+\tnKeyCode := IIf(oKeyEvent = NULL_OBJECT, 0, IIf(IsNil(oKeyEvent:ASCIIChar), oKeyEvent:KeyCode, oKeyEvent:ASCIIChar))
+\tsuper:KeyUp(oKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListBoxClick]
+method ListBoxClick(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ListBoxClick(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListBoxSelect]
+method ListBoxSelect(oControlEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlEvent == NULL_OBJECT, NULL_OBJECT, oControlEvent:Control)
+\tsuper:ListBoxSelect(oControlEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuCommand]
+method MenuCommand(oMenuCommandEvent) class %FORM:NAME%
+\tsuper:MenuCommand(oMenuCommandEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuInit]
+method MenuInit(oMenuInitEvent) class %FORM:NAME%
+\tsuper:MenuInit(oMenuInitEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MenuSelect]
+method MenuSelect(oMenuSelectEvent) class %FORM:NAME%
+\tsuper:MenuSelect(oMenuSelectEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonDoubleClick]
+method MouseButtonDoubleClick(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonDoubleClick(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonDown]
+method MouseButtonDown(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonDown(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseButtonUp]
+method MouseButtonUp(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseButtonUp(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseDrag]
+method MouseDrag(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseDrag(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MouseMove]
+method MouseMove(oMouseEvent) class %FORM:NAME%
+\tlocal nButtonID as int
+\tnButtonID := IIf(oMouseEvent == NULL_OBJECT, 0, oMouseEvent:ButtonID)
+\tsuper:MouseMove(oMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Move]
+method Move(oMoveEvent) class %FORM:NAME%
+\tsuper:Move(oMoveEvent)
+\t//Put your changes here
+\treturn NIL
+
+[Notify]
+method Notify(kNotifyName, uDescription) class %FORM:NAME%
+\tlocal uValue as usual
+\tuValue := super:Notify(kNotifyName, uDescription)
+\t//Put your changes here
+\treturn uValue
+
+[PreValidate]
+method PreValidate() class %FORM:NAME%
+\tsuper:PreValidate()
+\t//Put your changes here
+\treturn NIL
+
+[QueryClose]
+method QueryClose(oEvent) class %FORM:NAME%
+\tlocal lAllowClose as logic
+\tlAllowClose := super:QueryClose(oEvent)
+\t//Put your changes here
+\treturn lAllowClose
+
+[Resize]
+method Resize(oResizeEvent) class %FORM:NAME%
+\tsuper:Resize(oResizeEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalScroll]
+method VerticalScroll(oScrollEvent) class %FORM:NAME%
+\tsuper:VerticalScroll(oScrollEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalSlide]
+method HorizontalSlide(oSlideEvent) class %FORM:NAME%
+\tsuper:HorizontalSlide(oSlideEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalSlide]
+method VerticalSlide(oSlideEvent) class %FORM:NAME%
+\tsuper:VerticalSlide(oSlideEvent)
+\t//Put your changes here
+\treturn NIL
+
+[HorizontalSpin]
+method HorizontalSpin(oSpinEvent) class %FORM:NAME%
+\tsuper:HorizontalSpin(oSpinEvent)
+\t//Put your changes here
+\treturn NIL
+
+[VerticalSpin]
+method VerticalSpin(oSpinEvent) class %FORM:NAME%
+\tsuper:VerticalSpin(oSpinEvent)
+\t//Put your changes here
+\treturn NIL
+
+[AnimationStart]
+method AnimationStart(oControlNotifyEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlNotifyEvent == NULL_OBJECT, NULL_OBJECT, oControlNotifyEvent:Control)
+\tsuper:AnimationStart(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[AnimationStop]
+method AnimationStop(oControlNotifyEvent) class %FORM:NAME%
+\tlocal oControl as Control
+\toControl := IIf(oControlNotifyEvent == NULL_OBJECT, NULL_OBJECT, oControlNotifyEvent:Control)
+\tsuper:AnimationStop(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditDropFiles]
+method RichEditDropFiles(oRichEditDropEvent) class %FORM:NAME%
+\tsuper:RichEditDropFiles(oRichEditDropEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditProtected]
+method RichEditProtected(oRichEditProtectEvent) class %FORM:NAME%
+\tsuper:RichEditProtected(oRichEditProtectEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditSelectionChange]
+method RichEditSelectionChange(oRichEditSelectionEvent) class %FORM:NAME%
+\tsuper:RichEditSelectionChange(oRichEditSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[RichEditUndoLost]
+method RichEditUndoLost(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:RichEditUndoLost(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemDrag]
+method ListViewItemDrag(oListViewDragEvent) class %FORM:NAME%
+\tsuper:ListViewItemDrag(oListViewDragEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemEdit]
+method ListViewItemEdit(oListViewEditEvent) class %FORM:NAME%
+\tsuper:ListViewItemEdit(oListViewEditEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewColumnClick]
+method ListViewColumnClick(oListViewColumnClickEvent) class %FORM:NAME%
+\tsuper:ListViewColumnClick(oListViewColumnClickEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewItemDelete]
+method ListViewItemDelete(oListViewDeleteEvent) class %FORM:NAME%
+\tsuper:ListViewItemDelete(oListViewDeleteEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewKeyDown]
+method ListViewKeyDown(oListViewKeyEvent) class %FORM:NAME%
+\tsuper:ListViewKeyDown(oListViewKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewMouseButtonDown]
+method TreeViewMouseButtonDown(oTreeViewMouseEvent) class %FORM:NAME%
+\tsuper:TreeViewMouseButtonDown(oTreeViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewMouseButtonDown]
+method ListViewMouseButtonDown(oListViewMouseEvent) class %FORM:NAME%
+\tsuper:ListViewMouseButtonDown(oListViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewMouseButtonDoubleClick]
+method TreeViewMouseButtonDoubleClick(oTreeViewMouseEvent) class %FORM:NAME%
+\tsuper:TreeViewMouseButtonDoubleClick(oTreeViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[ListViewMouseButtonDoubleClick]
+method ListViewMouseButtonDoubleClick(oListViewMouseEvent) class %FORM:NAME%
+\tsuper:ListViewMouseButtonDoubleClick(oListViewMouseEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabSelect]
+method TabSelect(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabSelect(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabSelectionChanging]
+method TabSelectionChanging(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabSelectionChanging(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TabKeyDown]
+method TabKeyDown(oControlNotifyEvent) class %FORM:NAME%
+\tsuper:TabKeyDown(oControlNotifyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemDrag]
+method TreeViewItemDrag(oTreeViewDragEvent) class %FORM:NAME%
+\tsuper:TreeViewItemDrag(oTreeViewDragEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemEdit]
+method TreeViewItemEdit(oTreeViewEditEvent) class %FORM:NAME%
+\tsuper:TreeViewItemEdit(oTreeViewEditEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemDelete]
+method TreeViewItemDelete(oTreeViewDeleteEvent) class %FORM:NAME%
+\tsuper:TreeViewItemDelete(oTreeViewDeleteEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemExpanded]
+method TreeViewItemExpanded(oTreeViewExpandedEvent) class %FORM:NAME%
+\tsuper:TreeViewItemExpanded(oTreeViewExpandedEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewItemExpanding]
+method TreeViewItemExpanding(oTreeViewExpandingEvent) class %FORM:NAME%
+\tsuper:TreeViewItemExpanding(oTreeViewExpandingEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewKeyDown]
+method TreeViewKeyDown(oTreeViewKeyEvent) class %FORM:NAME%
+\tsuper:TreeViewKeyDown(oTreeViewKeyEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewSelectionChanged]
+method TreeViewSelectionChanged(oTreeViewSelectionEvent) class %FORM:NAME%
+\tsuper:TreeViewSelectionChanged(oTreeViewSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[TreeViewSelectionChanging]
+method TreeViewSelectionChanging(oTreeViewSelectionEvent) class %FORM:NAME%
+\tsuper:TreeViewSelectionChanging(oTreeViewSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[MonthCalSelectionChanged]
+method MonthCalSelectionChanged(oMonthCalSelectionEvent) class %FORM:NAME%
+\tsuper:MonthCalSelectionChanged(oMonthCalSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
+[DateTimeSelectionChanged]
+method DateTimeSelectionChanged(oDateTimeSelectionEvent) class %FORM:NAME%
+\tsuper:DateTimeSelectionChanged(oDateTimeSelectionEvent)
+\t//Put your changes here
+\treturn NIL
+
diff --git a/src/Templates/working/content/p_vosdiapplication/cctl6.man b/src/Templates/working/content/p_vosdiapplication/cctl6.man
new file mode 100644
index 0000000000..184d3bffa9
--- /dev/null
+++ b/src/Templates/working/content/p_vosdiapplication/cctl6.man
@@ -0,0 +1,23 @@
+
+
+
+Visual Objects Application.
+
+
+
+
+
+
+
diff --git a/src/Templates/working/content/p_vulcanconsole/.template.config/VulcanConsole.png b/src/Templates/working/content/p_vulcanconsole/.template.config/VulcanConsole.png
new file mode 100644
index 0000000000..5f5358675b
Binary files /dev/null and b/src/Templates/working/content/p_vulcanconsole/.template.config/VulcanConsole.png differ
diff --git a/src/Templates/working/content/p_vulcanconsole/.template.config/template.json b/src/Templates/working/content/p_vulcanconsole/.template.config/template.json
new file mode 100644
index 0000000000..aa869e35b2
--- /dev/null
+++ b/src/Templates/working/content/p_vulcanconsole/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console",
+ "Vulcan"
+ ],
+ "Identity": "XSharp.VulcanConsole",
+ "Name": "Vulcan Application",
+ "Description": "A project for creating a X# command-line application in the Vulcan dialect with Vulcan Runtime Assemblies (BYOR = Bring Your Own Runtime).",
+ "SourceName": "XSharp.VulcanConsole",
+ "ShortName": "xsvulcanconsole",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "VulcanConsole.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "VulcanApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_vulcanconsole/Readme.txt b/src/Templates/working/content/p_vulcanconsole/Readme.txt
new file mode 100644
index 0000000000..8a629cc06b
--- /dev/null
+++ b/src/Templates/working/content/p_vulcanconsole/Readme.txt
@@ -0,0 +1,5 @@
+This "Bring Your Own Runtime" (BYOR) example shows how you can use vulcan Datatypes
+and functions in X#.
+The example does NOT come with the Vulcan Runtime DLLs. You need to have these installed
+on your machine and you may need to update the references in the example and point them
+to the Vulcan Runtime DLLs on your machine.
diff --git a/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.prg b/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.prg
new file mode 100644
index 0000000000..6a38877329
--- /dev/null
+++ b/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.prg
@@ -0,0 +1,18 @@
+
+// Please read the comments in Readme.txt !
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+FUNCTION Start() AS VOID STRICT
+ LOCAL cbMacro as CODEBLOCK
+ LOCAL cMacro as STRING
+ cMacro := "{||DTOC(Today())}"
+ cbMacro := &(cMacro)
+ Console.WriteLine("Hello World today is " + (STRING) Eval(cbMacro))
+
+ Console.WriteLine("Press any key to continue...")
+ Console.ReadKey()
+ RETURN
diff --git a/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.xsproj b/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.xsproj
new file mode 100644
index 0000000000..5dcf7efda7
--- /dev/null
+++ b/src/Templates/working/content/p_vulcanconsole/XSharp.VulcanConsole.xsproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ VulcanApplication
+ Vulcan
+ true
+ true
+ True
+ False
+ net8.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/webmap/.template.config/template.json b/src/Templates/working/content/p_webmap/.template.config/template.json
similarity index 100%
rename from src/Templates/working/content/webmap/.template.config/template.json
rename to src/Templates/working/content/p_webmap/.template.config/template.json
diff --git a/src/Templates/working/content/webmap/DataId.prg b/src/Templates/working/content/p_webmap/DataId.prg
similarity index 100%
rename from src/Templates/working/content/webmap/DataId.prg
rename to src/Templates/working/content/p_webmap/DataId.prg
diff --git a/src/Templates/working/content/webmap/DataUser.prg b/src/Templates/working/content/p_webmap/DataUser.prg
similarity index 100%
rename from src/Templates/working/content/webmap/DataUser.prg
rename to src/Templates/working/content/p_webmap/DataUser.prg
diff --git a/src/Templates/working/content/webmap/Program.prg b/src/Templates/working/content/p_webmap/Program.prg
similarity index 100%
rename from src/Templates/working/content/webmap/Program.prg
rename to src/Templates/working/content/p_webmap/Program.prg
diff --git a/src/Templates/working/content/webmap/Properties/launchSettings.json b/src/Templates/working/content/p_webmap/Properties/launchSettings.json
similarity index 100%
rename from src/Templates/working/content/webmap/Properties/launchSettings.json
rename to src/Templates/working/content/p_webmap/Properties/launchSettings.json
diff --git a/src/Templates/working/content/webmap/RESTful.prg b/src/Templates/working/content/p_webmap/RESTful.prg
similarity index 100%
rename from src/Templates/working/content/webmap/RESTful.prg
rename to src/Templates/working/content/p_webmap/RESTful.prg
diff --git a/src/Templates/working/content/webmap/Readme.md b/src/Templates/working/content/p_webmap/Readme.md
similarity index 100%
rename from src/Templates/working/content/webmap/Readme.md
rename to src/Templates/working/content/p_webmap/Readme.md
diff --git a/src/Templates/working/content/webmap/RouteId.prg b/src/Templates/working/content/p_webmap/RouteId.prg
similarity index 100%
rename from src/Templates/working/content/webmap/RouteId.prg
rename to src/Templates/working/content/p_webmap/RouteId.prg
diff --git a/src/Templates/working/content/webmap/RouteUsers.prg b/src/Templates/working/content/p_webmap/RouteUsers.prg
similarity index 100%
rename from src/Templates/working/content/webmap/RouteUsers.prg
rename to src/Templates/working/content/p_webmap/RouteUsers.prg
diff --git a/src/Templates/working/content/webmap/XSharp.WebMap.xsproj b/src/Templates/working/content/p_webmap/XSharp.WebMap.xsproj
similarity index 100%
rename from src/Templates/working/content/webmap/XSharp.WebMap.xsproj
rename to src/Templates/working/content/p_webmap/XSharp.WebMap.xsproj
diff --git a/src/Templates/working/content/webmap/testRest/Readme.md b/src/Templates/working/content/p_webmap/testRest/Readme.md
similarity index 100%
rename from src/Templates/working/content/webmap/testRest/Readme.md
rename to src/Templates/working/content/p_webmap/testRest/Readme.md
diff --git a/src/Templates/working/content/webmap/testRest/getUsers.http b/src/Templates/working/content/p_webmap/testRest/getUsers.http
similarity index 100%
rename from src/Templates/working/content/webmap/testRest/getUsers.http
rename to src/Templates/working/content/p_webmap/testRest/getUsers.http
diff --git a/src/Templates/working/content/webmap/testRest/postId.http b/src/Templates/working/content/p_webmap/testRest/postId.http
similarity index 100%
rename from src/Templates/working/content/webmap/testRest/postId.http
rename to src/Templates/working/content/p_webmap/testRest/postId.http
diff --git a/src/Templates/working/content/webmap/testRest/updateUser.http b/src/Templates/working/content/p_webmap/testRest/updateUser.http
similarity index 100%
rename from src/Templates/working/content/webmap/testRest/updateUser.http
rename to src/Templates/working/content/p_webmap/testRest/updateUser.http
diff --git a/src/Templates/working/content/webroute/.template.config/template.json b/src/Templates/working/content/p_webroute/.template.config/template.json
similarity index 100%
rename from src/Templates/working/content/webroute/.template.config/template.json
rename to src/Templates/working/content/p_webroute/.template.config/template.json
diff --git a/src/Templates/working/content/webroute/Customer.prg b/src/Templates/working/content/p_webroute/Customer.prg
similarity index 100%
rename from src/Templates/working/content/webroute/Customer.prg
rename to src/Templates/working/content/p_webroute/Customer.prg
diff --git a/src/Templates/working/content/webroute/CustomersController.prg b/src/Templates/working/content/p_webroute/CustomersController.prg
similarity index 100%
rename from src/Templates/working/content/webroute/CustomersController.prg
rename to src/Templates/working/content/p_webroute/CustomersController.prg
diff --git a/src/Templates/working/content/webroute/LowerCasePolicy.prg b/src/Templates/working/content/p_webroute/LowerCasePolicy.prg
similarity index 100%
rename from src/Templates/working/content/webroute/LowerCasePolicy.prg
rename to src/Templates/working/content/p_webroute/LowerCasePolicy.prg
diff --git a/src/Templates/working/content/webroute/Program.prg b/src/Templates/working/content/p_webroute/Program.prg
similarity index 100%
rename from src/Templates/working/content/webroute/Program.prg
rename to src/Templates/working/content/p_webroute/Program.prg
diff --git a/src/Templates/working/content/webroute/Properties/launchSettings.json b/src/Templates/working/content/p_webroute/Properties/launchSettings.json
similarity index 100%
rename from src/Templates/working/content/webroute/Properties/launchSettings.json
rename to src/Templates/working/content/p_webroute/Properties/launchSettings.json
diff --git a/src/Templates/working/content/webroute/RESTful.prg b/src/Templates/working/content/p_webroute/RESTful.prg
similarity index 100%
rename from src/Templates/working/content/webroute/RESTful.prg
rename to src/Templates/working/content/p_webroute/RESTful.prg
diff --git a/src/Templates/working/content/webroute/Reame.md b/src/Templates/working/content/p_webroute/Reame.md
similarity index 100%
rename from src/Templates/working/content/webroute/Reame.md
rename to src/Templates/working/content/p_webroute/Reame.md
diff --git a/src/Templates/working/content/webroute/XSharp.WebRoute.xsproj b/src/Templates/working/content/p_webroute/XSharp.WebRoute.xsproj
similarity index 71%
rename from src/Templates/working/content/webroute/XSharp.WebRoute.xsproj
rename to src/Templates/working/content/p_webroute/XSharp.WebRoute.xsproj
index b0a63e8a3d..a2e0737710 100644
--- a/src/Templates/working/content/webroute/XSharp.WebRoute.xsproj
+++ b/src/Templates/working/content/p_webroute/XSharp.WebRoute.xsproj
@@ -1,3 +1,4 @@
+
@@ -7,7 +8,7 @@
-
+
diff --git a/src/Templates/working/content/webroute/testRest/Readme.md b/src/Templates/working/content/p_webroute/testRest/Readme.md
similarity index 100%
rename from src/Templates/working/content/webroute/testRest/Readme.md
rename to src/Templates/working/content/p_webroute/testRest/Readme.md
diff --git a/src/Templates/working/content/webroute/testRest/getCustomers.http b/src/Templates/working/content/p_webroute/testRest/getCustomers.http
similarity index 100%
rename from src/Templates/working/content/webroute/testRest/getCustomers.http
rename to src/Templates/working/content/p_webroute/testRest/getCustomers.http
diff --git a/src/Templates/working/content/webroute/testRest/postCustomer.http b/src/Templates/working/content/p_webroute/testRest/postCustomer.http
similarity index 100%
rename from src/Templates/working/content/webroute/testRest/postCustomer.http
rename to src/Templates/working/content/p_webroute/testRest/postCustomer.http
diff --git a/src/Templates/working/content/webroute/testRest/postCustomers.http b/src/Templates/working/content/p_webroute/testRest/postCustomers.http
similarity index 100%
rename from src/Templates/working/content/webroute/testRest/postCustomers.http
rename to src/Templates/working/content/p_webroute/testRest/postCustomers.http
diff --git a/src/Templates/working/content/p_windowsformsapplication/.template.config/WinFormApp.png b/src/Templates/working/content/p_windowsformsapplication/.template.config/WinFormApp.png
new file mode 100644
index 0000000000..00dd13162f
Binary files /dev/null and b/src/Templates/working/content/p_windowsformsapplication/.template.config/WinFormApp.png differ
diff --git a/src/Templates/working/content/p_windowsformsapplication/.template.config/template.json b/src/Templates/working/content/p_windowsformsapplication/.template.config/template.json
new file mode 100644
index 0000000000..ef8a14370b
--- /dev/null
+++ b/src/Templates/working/content/p_windowsformsapplication/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Desktop"
+ ],
+ "Identity": "XSharp.WindowsFormsApplication",
+ "Name": "Windows Forms Application",
+ "Description": "A project for creating an application with a Windows Forms user interface.",
+ "SourceName": "XSharp.WindowsFormsApplication",
+ "ShortName": "xswindowsformsapplication",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "WinFormApp.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "WindowsFormsApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/winform/Form1.designer.prg b/src/Templates/working/content/p_windowsformsapplication/Form1.designer.prg
similarity index 96%
rename from src/Templates/working/content/winform/Form1.designer.prg
rename to src/Templates/working/content/p_windowsformsapplication/Form1.designer.prg
index 6ecda4d3ca..d8cbddfc38 100644
--- a/src/Templates/working/content/winform/Form1.designer.prg
+++ b/src/Templates/working/content/p_windowsformsapplication/Form1.designer.prg
@@ -1,4 +1,4 @@
-begin namespace XSharp.WinFormsCore
+begin namespace Company.Namespace1
partial class Form1
diff --git a/src/Templates/working/content/winform/Form1.prg b/src/Templates/working/content/p_windowsformsapplication/Form1.prg
similarity index 75%
rename from src/Templates/working/content/winform/Form1.prg
rename to src/Templates/working/content/p_windowsformsapplication/Form1.prg
index 825b50ea43..17ef05120c 100644
--- a/src/Templates/working/content/winform/Form1.prg
+++ b/src/Templates/working/content/p_windowsformsapplication/Form1.prg
@@ -1,19 +1,20 @@
-USING System
+USING System
USING System.Collections.Generic
USING System.ComponentModel
USING System.Data
USING System.Drawing
USING System.Linq
+
USING System.Text
using System.Threading.Tasks
USING System.Windows.Forms
-BEGIN NAMESPACE XSharp.WinFormsCore
+BEGIN NAMESPACE Company.Namespace1
PUBLIC PARTIAL CLASS Form1 INHERIT System.Windows.Forms.Form
- PUBLIC CONSTRUCTOR() STRICT//$safeitemrootname$
+ PUBLIC CONSTRUCTOR() STRICT//XSharp.WindowsFormsApplication
SELF:InitializeComponent()
RETURN
END CONSTRUCTOR
diff --git a/src/Templates/working/content/winform/Program.prg b/src/Templates/working/content/p_windowsformsapplication/Program.prg
similarity index 75%
rename from src/Templates/working/content/winform/Program.prg
rename to src/Templates/working/content/p_windowsformsapplication/Program.prg
index ae8b63aaed..7e760d02e2 100644
--- a/src/Templates/working/content/winform/Program.prg
+++ b/src/Templates/working/content/p_windowsformsapplication/Program.prg
@@ -1,8 +1,10 @@
-USING System
+USING System
USING System.Collections.Generic
+USING System.Linq
+USING System.Text
USING System.Windows.Forms
-USING XSharp.WinFormsCore
+USING Company.Namespace1
[STAThread] ;
FUNCTION Start() AS VOID
diff --git a/src/Templates/working/content/p_windowsformsapplication/Resources.resx b/src/Templates/working/content/p_windowsformsapplication/Resources.resx
new file mode 100644
index 0000000000..2e088a35d1
--- /dev/null
+++ b/src/Templates/working/content/p_windowsformsapplication/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_windowsformsapplication/Settings.settings b/src/Templates/working/content/p_windowsformsapplication/Settings.settings
new file mode 100644
index 0000000000..033d7a5e9e
--- /dev/null
+++ b/src/Templates/working/content/p_windowsformsapplication/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_windowsformsapplication/XSharp.WindowsFormsApplication.xsproj b/src/Templates/working/content/p_windowsformsapplication/XSharp.WindowsFormsApplication.xsproj
new file mode 100644
index 0000000000..31e4323f4e
--- /dev/null
+++ b/src/Templates/working/content/p_windowsformsapplication/XSharp.WindowsFormsApplication.xsproj
@@ -0,0 +1,11 @@
+
+
+
+ WindowsFormsApplication
+ WinExe
+ Core
+ True
+ True
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_wpfapplication/.template.config/WPFApplication.png b/src/Templates/working/content/p_wpfapplication/.template.config/WPFApplication.png
new file mode 100644
index 0000000000..fa6b651131
Binary files /dev/null and b/src/Templates/working/content/p_wpfapplication/.template.config/WPFApplication.png differ
diff --git a/src/Templates/working/content/p_wpfapplication/.template.config/template.json b/src/Templates/working/content/p_wpfapplication/.template.config/template.json
new file mode 100644
index 0000000000..f25fe2c306
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Desktop"
+ ],
+ "Identity": "XSharp.WPFApplication",
+ "Name": "WPF Application",
+ "Description": "Windows Presentation Foundation client application.",
+ "SourceName": "XSharp.WPFApplication",
+ "ShortName": "xswpfapplication",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "WPFApplication.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "WpfApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_wpfapplication/App.xaml b/src/Templates/working/content/p_wpfapplication/App.xaml
new file mode 100644
index 0000000000..4f88d0fe5e
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/p_wpfapplication/App.xaml.prg b/src/Templates/working/content/p_wpfapplication/App.xaml.prg
new file mode 100644
index 0000000000..5a0e86ea7f
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/App.xaml.prg
@@ -0,0 +1,19 @@
+USING System
+USING System.Collections.Generic
+USING System.Configuration
+USING System.Data
+USING System.Linq
+USING System.Threading.Tasks
+USING System.Windows
+
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ PARTIAL CLASS App INHERIT Application
+
+ END CLASS
+
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_wpfapplication/MainWindow.xaml b/src/Templates/working/content/p_wpfapplication/MainWindow.xaml
new file mode 100644
index 0000000000..c3139a4ed3
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/MainWindow.xaml
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/src/Templates/working/content/p_wpfapplication/MainWindow.xaml.prg b/src/Templates/working/content/p_wpfapplication/MainWindow.xaml.prg
new file mode 100644
index 0000000000..c76e3c230f
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/MainWindow.xaml.prg
@@ -0,0 +1,29 @@
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+USING System.Threading.Tasks
+USING System.Windows
+USING System.Windows.Controls
+USING System.Windows.Data
+USING System.Windows.Documents
+USING System.Windows.Input
+USING System.Windows.Media
+USING System.Windows.Media.Imaging
+USING System.Windows.Navigation
+USING System.Windows.Shapes
+
+BEGIN NAMESPACE Company.Namespace1
+
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ PUBLIC PARTIAL CLASS MainWindow INHERIT Window
+
+ PUBLIC CONSTRUCTOR() STRICT
+ SELF:InitializeComponent()
+ RETURN
+ END CONSTRUCTOR
+
+ END CLASS
+END NAMESPACE // Company.Namespace1
diff --git a/src/Templates/working/content/p_wpfapplication/Resources.resx b/src/Templates/working/content/p_wpfapplication/Resources.resx
new file mode 100644
index 0000000000..2e088a35d1
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_wpfapplication/Settings.settings b/src/Templates/working/content/p_wpfapplication/Settings.settings
new file mode 100644
index 0000000000..033d7a5e9e
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_wpfapplication/XSharp.WPFApplication.xsproj b/src/Templates/working/content/p_wpfapplication/XSharp.WPFApplication.xsproj
new file mode 100644
index 0000000000..0c96a357ac
--- /dev/null
+++ b/src/Templates/working/content/p_wpfapplication/XSharp.WPFApplication.xsproj
@@ -0,0 +1,14 @@
+
+
+
+ Debug
+ AnyCPU
+ {5ADB76EC-7017-476A-A8E0-25D4202FFCF0};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{AA6C8D78-22FF-423A-9C7C-5F2393824E04}
+ WinExe
+ WpfApplication
+ Core
+ True
+ True
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_xppconsole/.template.config/XPPConsole.png b/src/Templates/working/content/p_xppconsole/.template.config/XPPConsole.png
new file mode 100644
index 0000000000..f7a104be8a
Binary files /dev/null and b/src/Templates/working/content/p_xppconsole/.template.config/XPPConsole.png differ
diff --git a/src/Templates/working/content/p_xppconsole/.template.config/template.json b/src/Templates/working/content/p_xppconsole/.template.config/template.json
new file mode 100644
index 0000000000..597991b5ae
--- /dev/null
+++ b/src/Templates/working/content/p_xppconsole/.template.config/template.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Console",
+ "XPP"
+ ],
+ "Identity": "XSharp.XPPConsole",
+ "Name": "Xbase\u002B\u002B Console Application",
+ "Description": "A project for creating a X# command-line application in the Xbase\u002B\u002B Dialect.",
+ "SourceName": "XSharp.XPPConsole",
+ "ShortName": "xsxppconsole",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "XPPConsole.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "ConsoleApplication",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.prg b/src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.prg
new file mode 100644
index 0000000000..b5535d9b34
--- /dev/null
+++ b/src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.prg
@@ -0,0 +1,12 @@
+
+
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+
+
+Procedure Main
+ ? "Hello World! Today is ",Date()
+ WAIT
+ RETURN
diff --git a/src/Templates/working/content/consoleXPP/XSharp.ConsoleXPP.xsproj b/src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.xsproj
similarity index 74%
rename from src/Templates/working/content/consoleXPP/XSharp.ConsoleXPP.xsproj
rename to src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.xsproj
index da478eb372..45fdb5c4ea 100644
--- a/src/Templates/working/content/consoleXPP/XSharp.ConsoleXPP.xsproj
+++ b/src/Templates/working/content/p_xppconsole/XSharp.XPPConsole.xsproj
@@ -1,10 +1,8 @@
-
-
+
+
Exe
- net8.0
- enable
- enable
+ ConsoleApplication
XPP
true
true
@@ -25,10 +23,11 @@
true
true
False
-
+ net8.0
+
-
+
-
+
\ No newline at end of file
diff --git a/src/Templates/working/content/p_xunitclasslibrary/.template.config/XUnitTestClassLibrary.png b/src/Templates/working/content/p_xunitclasslibrary/.template.config/XUnitTestClassLibrary.png
new file mode 100644
index 0000000000..9616f874ea
Binary files /dev/null and b/src/Templates/working/content/p_xunitclasslibrary/.template.config/XUnitTestClassLibrary.png differ
diff --git a/src/Templates/working/content/p_xunitclasslibrary/.template.config/template.json b/src/Templates/working/content/p_xunitclasslibrary/.template.config/template.json
new file mode 100644
index 0000000000..40ca67a1ec
--- /dev/null
+++ b/src/Templates/working/content/p_xunitclasslibrary/.template.config/template.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "Author": "XSharp B.V.",
+ "Classifications": [
+ "Windows",
+ "Test"
+ ],
+ "Identity": "XSharp.Test.XUnitClassLibrary",
+ "Name": "Class Library with XUnit Testing",
+ "Description": "A project for creating a X# class library (.dll) with XUnit Testing",
+ "SourceName": "XSharp.Test.XUnitClassLibrary",
+ "ShortName": "xsxunitclasslibrary",
+ "Tags": {
+ "language": "X#",
+ "type": "project",
+ "icon": "XUnitTestClassLibrary.png",
+ "is-icon-path": "true"
+ },
+ "PreferNameDirectory": true,
+ "DefaultName": "XUnitTestClassLibrary",
+ "Symbols": {
+ "TargetNetFramework": {
+ "Type": "parameter",
+ "Description": "Target .NET version",
+ "Datatype": "choice",
+ "Choices": [
+ {
+ "Choice": "net8.0",
+ "Description": "Target .NET 8"
+ },
+ {
+ "Choice": "net9.0",
+ "Description": "Target .NET 9"
+ },
+ {
+ "Choice": "net10.0",
+ "Description": "Target .NET 10"
+ }
+ ],
+ "Replaces": "net8.0",
+ "DefaultValue": "net8.0"
+ },
+ "DefaultNamespace": {
+ "Type": "parameter",
+ "Datatype": "string",
+ "Replaces": "Company.Namespace1",
+ "DefaultValue": "Company.Namespace1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.prg b/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.prg
new file mode 100644
index 0000000000..6991e8a6cb
--- /dev/null
+++ b/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.prg
@@ -0,0 +1,29 @@
+//
+// Note 1: If this does not compile then you need to restore the Nuget Packages for XUnit
+// You can do that by right clicking on the project item in the solution explorer
+// and choosing 'Manage Nuget packages'
+// You can also set a setting inside Visual Studio to make sure the Nuget Packages get restored
+// automatically. See: Tools - Nuget Package Manager - Package Manager Settings
+//
+// Note 2: Inside Visual Studio you should open the Test - Windows - Test Explorer Window
+// From there you can run the tests and see which tests succeeded and which tests failed
+//
+USING System
+USING System.Collections.Generic
+USING System.Linq
+USING System.Text
+using Xunit
+BEGIN NAMESPACE Company.Namespace1
+ CLASS TestClass
+ CONSTRUCTOR() STRICT
+ RETURN
+
+ [Fact];
+ METHOD TestMethod1 AS VOID STRICT
+ Assert.Equal(1,1)
+ RETURN
+ [Fact];
+ METHOD TestMethod2 AS VOID STRICT
+ Assert.Equal(True, False) // Note that this will fail of course
+ END CLASS
+END NAMESPACE
diff --git a/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.xsproj b/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.xsproj
new file mode 100644
index 0000000000..5155f066c9
--- /dev/null
+++ b/src/Templates/working/content/p_xunitclasslibrary/XSharp.Test.XUnitClassLibrary.xsproj
@@ -0,0 +1,11 @@
+
+
+
+ Library
+ XUnitTestClassLibrary
+ Core
+ True
+ True
+ net8.0
+
+
\ No newline at end of file
diff --git a/src/Templates/working/content/webmap/.vscode/launch.json b/src/Templates/working/content/webmap/.vscode/launch.json
deleted file mode 100644
index 26ef66dce7..0000000000
--- a/src/Templates/working/content/webmap/.vscode/launch.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-"version": "0.2.0",
- "configurations": [
- {
- "name": "X# Launch",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build",
- "program": "${workspaceFolder}/bin/net8.0/${workspaceFolderBasename}.dll",
- "console": "integratedTerminal",
- "stopAtEntry": false
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/webmap/.vscode/tasks.json b/src/Templates/working/content/webmap/.vscode/tasks.json
deleted file mode 100644
index 7e91fa7ebf..0000000000
--- a/src/Templates/working/content/webmap/.vscode/tasks.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-"version": "2.0.0",
- "tasks": [
- {
- "label": "build",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/${workspaceFolderBasename}.xsproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile",
- "group": {
- "kind": "build",
- "isDefault": true // Optionnal but useful to execute "build" with Ctrl+Shift+B
- },
- "presentation": {
- "reveal": "always", // Always show Terminal for the task
- "panel": "new" // Always open in a new panel
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/webmap/appsettings.Development.json b/src/Templates/working/content/webmap/appsettings.Development.json
deleted file mode 100644
index 0c208ae918..0000000000
--- a/src/Templates/working/content/webmap/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
diff --git a/src/Templates/working/content/webmap/appsettings.json b/src/Templates/working/content/webmap/appsettings.json
deleted file mode 100644
index 10f68b8c8b..0000000000
--- a/src/Templates/working/content/webmap/appsettings.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- },
- "AllowedHosts": "*"
-}
diff --git a/src/Templates/working/content/webroute/.vscode/launch.json b/src/Templates/working/content/webroute/.vscode/launch.json
deleted file mode 100644
index 26ef66dce7..0000000000
--- a/src/Templates/working/content/webroute/.vscode/launch.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-"version": "0.2.0",
- "configurations": [
- {
- "name": "X# Launch",
- "type": "coreclr",
- "request": "launch",
- "preLaunchTask": "build",
- "program": "${workspaceFolder}/bin/net8.0/${workspaceFolderBasename}.dll",
- "console": "integratedTerminal",
- "stopAtEntry": false
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/webroute/.vscode/tasks.json b/src/Templates/working/content/webroute/.vscode/tasks.json
deleted file mode 100644
index 7e91fa7ebf..0000000000
--- a/src/Templates/working/content/webroute/.vscode/tasks.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-"version": "2.0.0",
- "tasks": [
- {
- "label": "build",
- "command": "dotnet",
- "type": "process",
- "args": [
- "build",
- "${workspaceFolder}/${workspaceFolderBasename}.xsproj",
- "/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
- ],
- "problemMatcher": "$msCompile",
- "group": {
- "kind": "build",
- "isDefault": true // Optionnal but useful to execute "build" with Ctrl+Shift+B
- },
- "presentation": {
- "reveal": "always", // Always show Terminal for the task
- "panel": "new" // Always open in a new panel
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/webroute/Helpers.prg b/src/Templates/working/content/webroute/Helpers.prg
deleted file mode 100644
index 13c1f8b515..0000000000
--- a/src/Templates/working/content/webroute/Helpers.prg
+++ /dev/null
@@ -1,63 +0,0 @@
-using XSharp.RDD
-using XSharp.RDD.Support
-
-
-FUNCTION RecordToCustomer( oDBF AS DBF ) AS Customer
- LOCAL oCustomer AS Customer
- // Convert the DBF record to a Customer object
- oCustomer := Customer{}
- FOR VAR i := 1 TO oDBF:FieldCount
- VAR name := oDBF:FieldName(i):ToLower()
- SWITCH name
- CASE "custnum"
- oCustomer:CustNum := Convert.ToInt32( oDBF:GetValue(i) )
- CASE "firstname"
- oCustomer:FirstName := oDBF:GetValue(i):ToString()
- CASE "lastname"
- oCustomer:LastName := oDBF:GetValue(i):ToString()
- CASE "address"
- oCustomer:Address := oDBF:GetValue(i):ToString()
- CASE "city"
- oCustomer:City := oDBF:GetValue(i):ToString()
- CASE "state"
- oCustomer:State := oDBF:GetValue(i):ToString()
- CASE "zip"
- oCustomer:Zip := oDBF:GetValue(i):ToString()
- CASE "fax"
- oCustomer:Fax := oDBF:GetValue(i):ToString()
- CASE "phone"
- oCustomer:Phone := oDBF:GetValue(i):ToString()
- END SWITCH
- NEXT
- oCustomer:Recno := oDbf:Recno
- oCustomer:Deleted := oDbf:Deleted
- //
- RETURN oCustomer
-
-
-PROCEDURE CustomerToRecord( oCustomer AS Customer, oDBF AS DBF )
- FOR VAR i := 1 TO oDBF:FieldCount
- VAR name := oDBF:FieldName(i):ToLower()
- SWITCH name
- CASE "custnum"
- oDBF:PutValue( i, oCustomer:CustNum )
- CASE "firstname"
- oDBF:PutValue( i, oCustomer:FirstName )
- CASE "lastname"
- oDBF:PutValue( i, oCustomer:LastName )
- CASE "address"
- oDBF:PutValue( i, oCustomer:Address )
- CASE "city"
- oDBF:PutValue( i, oCustomer:City )
- CASE "state"
- oDBF:PutValue( i, oCustomer:State )
- CASE "zip"
- oDBF:PutValue( i, oCustomer:Zip )
- CASE "fax"
- oDBF:PutValue( i, oCustomer:Fax )
- CASE "phone"
- oDBF:PutValue( i, oCustomer:Phone )
- END SWITCH
- NEXT
- //
- RETURN
\ No newline at end of file
diff --git a/src/Templates/working/content/webroute/appsettings.Development.json b/src/Templates/working/content/webroute/appsettings.Development.json
deleted file mode 100644
index 0c208ae918..0000000000
--- a/src/Templates/working/content/webroute/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
diff --git a/src/Templates/working/content/webroute/appsettings.json b/src/Templates/working/content/webroute/appsettings.json
deleted file mode 100644
index 10f68b8c8b..0000000000
--- a/src/Templates/working/content/webroute/appsettings.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- },
- "AllowedHosts": "*"
-}
diff --git a/src/Templates/working/content/webroute/customer.dbf b/src/Templates/working/content/webroute/customer.dbf
deleted file mode 100644
index b4a72935c7..0000000000
Binary files a/src/Templates/working/content/webroute/customer.dbf and /dev/null differ
diff --git a/src/Templates/working/content/winform/.template.config/template.json b/src/Templates/working/content/winform/.template.config/template.json
deleted file mode 100644
index a27b123fd7..0000000000
--- a/src/Templates/working/content/winform/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "WinForms", "X#" ],
- "identity": "XSharpBV.WinFormsCoreTemplate.XSharp",
- "name": "WinForms Application - Core Dialect",
- "description": "A project for creating a WinForms application with the X# Core dialect.",
- "sourceName":"XSharp.WinFormsCore",
- "shortName": "xswinforms",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WinFormsApp1"
-}
diff --git a/src/Templates/working/content/winform/XSharp.WinFormsCore.xsproj b/src/Templates/working/content/winform/XSharp.WinFormsCore.xsproj
deleted file mode 100644
index 3eec618c15..0000000000
--- a/src/Templates/working/content/winform/XSharp.WinFormsCore.xsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- WinExe
- net8.0
- XSharp.WinFormsCore
- XSharp.WinFormsCore
-
- enable
- true
- Core
- enable
- True
- True
-
-
diff --git a/src/Templates/working/content/winformcctrli/.template.config/template.json b/src/Templates/working/content/winformcctrli/.template.config/template.json
deleted file mode 100644
index dda6b9a689..0000000000
--- a/src/Templates/working/content/winformcctrli/.template.config/template.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "WinForms", "X#", "Item" ],
- "identity": "XSharpBV.WinFormsCCtrlTemplate.XSharp",
- "name": "WinForms Custom Control - Core Dialect",
- "description": "An item to add a WinForms CustomControl with the X# Core dialect.",
- "sourceName":"XSharp.WinFormsCCtrlI",
- "shortName": "xswinformscctrli",
- "tags": {
- "language": "X#",
- "type": "item"
- },
- "symbols": {
- "ClassName":{
- "type": "parameter",
- "description": "The name of the code file and class.",
- "datatype": "text",
- "replaces": "CustomControl1",
- "fileRename": "CustomControl1",
- "defaultValue": "CustomControl1"
- }
- }
-}
diff --git a/src/Templates/working/content/winformcctrli/CustomControl1.designer.prg b/src/Templates/working/content/winformcctrli/CustomControl1.designer.prg
deleted file mode 100644
index a408053823..0000000000
--- a/src/Templates/working/content/winformcctrli/CustomControl1.designer.prg
+++ /dev/null
@@ -1,35 +0,0 @@
-begin namespace XSharp.WinFormsCCtrlI
-
- partial class CustomControl1
-
- ///
- /// Required designer variable.
- ///
- private components := NULL as System.ComponentModel.IContainer
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override method Dispose(disposing as logic) as void STRICT
-
- if (disposing .AND. (components != null))
- components:Dispose()
- endif
- Super:Dispose(disposing)
- return
- end method
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private method InitializeComponent() as void STRICT
- self:components := System.ComponentModel.Container{}
- return
- end method
- #endregion
- end class
-
-END NAMESPACE
diff --git a/src/Templates/working/content/winformcctrli/CustomControl1.prg b/src/Templates/working/content/winformcctrli/CustomControl1.prg
deleted file mode 100644
index 9dc13e03c2..0000000000
--- a/src/Templates/working/content/winformcctrli/CustomControl1.prg
+++ /dev/null
@@ -1,27 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.ComponentModel
-USING System.Data
-USING System.Drawing
-USING System.Linq
-USING System.Text
-using System.Threading.Tasks
-USING System.Windows.Forms
-
-BEGIN NAMESPACE XSharp.WinFormsCCtrlI
-
- PUBLIC PARTIAL CLASS CustomControl1 INHERIT System.Windows.Forms.UserControl
-
- PUBLIC CONSTRUCTOR() STRICT
- SELF:InitializeComponent()
- RETURN
- END CONSTRUCTOR
-
-
- PROTECTED OVERRIDE METHOD OnPaint(pe AS System.Windows.Forms.PaintEventArgs) AS VOID STRICT
- SUPER:OnPaint(pe)
- RETURN
- END METHOD
-
- END CLASS
-END NAMESPACE
diff --git a/src/Templates/working/content/winformctrli/.template.config/template.json b/src/Templates/working/content/winformctrli/.template.config/template.json
deleted file mode 100644
index 25b4a5cf33..0000000000
--- a/src/Templates/working/content/winformctrli/.template.config/template.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "WinForms", "X#", "Item" ],
- "identity": "XSharpBV.WinFormsCtrlTemplate.XSharp",
- "name": "WinForms Control - Core Dialect",
- "description": "An item to add a WinForms UserControl with the X# Core dialect.",
- "sourceName":"XSharp.WinFormsCtrlI",
- "shortName": "xswinformsctrli",
- "tags": {
- "language": "X#",
- "type": "item"
- },
- "symbols": {
- "name":{
- "type": "parameter",
- "description": "The name of the code file and class.",
- "datatype": "text",
- "replaces": "UserControl1",
- "fileRename": "UserControl1",
- "defaultValue": "UserControl1"
- }
- }
-}
diff --git a/src/Templates/working/content/winformctrli/UserControl1.prg b/src/Templates/working/content/winformctrli/UserControl1.prg
deleted file mode 100644
index 2007446dcb..0000000000
--- a/src/Templates/working/content/winformctrli/UserControl1.prg
+++ /dev/null
@@ -1,21 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.ComponentModel
-USING System.Data
-USING System.Drawing
-USING System.Linq
-USING System.Text
-using System.Threading.Tasks
-USING System.Windows.Forms
-
-BEGIN NAMESPACE XSharp.WinFormsCtrlI
-
- PUBLIC PARTIAL CLASS UserControl1 INHERIT System.Windows.Forms.Control
-
- PUBLIC CONSTRUCTOR() STRICT
- SELF:InitializeComponent()
- RETURN
- END CONSTRUCTOR
-
- END CLASS
-END NAMESPACE
diff --git a/src/Templates/working/content/winformlib/.template.config/template.json b/src/Templates/working/content/winformlib/.template.config/template.json
deleted file mode 100644
index 27c5e4eacf..0000000000
--- a/src/Templates/working/content/winformlib/.template.config/template.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [ "Common", "WinForms", "X#" ],
- "identity": "XSharpBV.WinFormsLibCoreTemplate.XSharp",
- "name": "WinForms Library - Core Dialect",
- "description": "A project for creating a WinForms library with the X# Core dialect.",
- "sourceName":"XSharp.WinFormsLib",
- "shortName": "xswinformslib",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WinFormsLibrary1"
-}
diff --git a/src/Templates/working/content/winformlib/Class1.prg b/src/Templates/working/content/winformlib/Class1.prg
deleted file mode 100644
index 7c4abae143..0000000000
--- a/src/Templates/working/content/winformlib/Class1.prg
+++ /dev/null
@@ -1,21 +0,0 @@
-USING System
-USING System.Collections.Generic
-USING System.ComponentModel
-USING System.Data
-USING System.Drawing
-USING System.Linq
-USING System.Text
-using System.Threading.Tasks
-
-USING System.Windows.Forms
-
-BEGIN NAMESPACE XSharp.WinFormsLib
-
- PUBLIC PARTIAL CLASS Class1
-
- PUBLIC CONSTRUCTOR()
- RETURN
- END CONSTRUCTOR
-
- END CLASS
-END NAMESPACE
diff --git a/src/Templates/working/content/winformlib/XSharp.WinFormsLib.xsproj b/src/Templates/working/content/winformlib/XSharp.WinFormsLib.xsproj
deleted file mode 100644
index 2bd9261ddb..0000000000
--- a/src/Templates/working/content/winformlib/XSharp.WinFormsLib.xsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- Library
- net8.0
- XSharp.WinFormsLib
- XSharp.WinFormsLib
-
- enable
- true
- Core
- enable
- True
- True
-
-
diff --git a/src/Templates/working/content/wpfapp/.template.config/template.json b/src/Templates/working/content/wpfapp/.template.config/template.json
deleted file mode 100644
index 3928b32841..0000000000
--- a/src/Templates/working/content/wpfapp/.template.config/template.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [
- "Common",
- "WPF",
- "X#"
- ],
- "identity": "XSharpBV.WPFCoreTemplate.XSharp",
- "name": "WPF Application - Core Dialect",
- "description": "A project for creating a WPF application with the X# Core dialect.",
- "sourceName": "XSharp.WpfCore",
- "shortName": "xswpf",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WpfApp1"
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfapp/App.xaml b/src/Templates/working/content/wpfapp/App.xaml
deleted file mode 100644
index ab09cf0a9f..0000000000
--- a/src/Templates/working/content/wpfapp/App.xaml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
diff --git a/src/Templates/working/content/wpfapp/App.xaml.prg b/src/Templates/working/content/wpfapp/App.xaml.prg
deleted file mode 100644
index e7833c3c4d..0000000000
--- a/src/Templates/working/content/wpfapp/App.xaml.prg
+++ /dev/null
@@ -1,13 +0,0 @@
-using System.Configuration
-using System.Data
-using System.Windows
-
-BEGIN NAMESPACE XSharp.WpfCore
- ///
- /// Interaction logic for App.xaml
- ///
- PUBLIC PARTIAL CLASS App INHERIT Application
-
- END CLASS
-
-END NAMESPACE
diff --git a/src/Templates/working/content/wpfapp/AssemblyInfo.prg b/src/Templates/working/content/wpfapp/AssemblyInfo.prg
deleted file mode 100644
index 3686ba37fb..0000000000
--- a/src/Templates/working/content/wpfapp/AssemblyInfo.prg
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Windows
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
diff --git a/src/Templates/working/content/wpfapp/MainWindow.xaml b/src/Templates/working/content/wpfapp/MainWindow.xaml
deleted file mode 100644
index 707bd395c0..0000000000
--- a/src/Templates/working/content/wpfapp/MainWindow.xaml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
diff --git a/src/Templates/working/content/wpfapp/XSharp.WpfCore.xsproj b/src/Templates/working/content/wpfapp/XSharp.WpfCore.xsproj
deleted file mode 100644
index a866217237..0000000000
--- a/src/Templates/working/content/wpfapp/XSharp.WpfCore.xsproj
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- WinExe
- net8.0-windows
- XSharp.WpfCore
- XSharp.WpfCore
-
- enable
- true
- Core
- enable
- True
- True
-
-
-
diff --git a/src/Templates/working/content/wpfcctrllib/.template.config/template.json b/src/Templates/working/content/wpfcctrllib/.template.config/template.json
deleted file mode 100644
index c65afe7a32..0000000000
--- a/src/Templates/working/content/wpfcctrllib/.template.config/template.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [
- "Common",
- "WPF",
- "X#"
- ],
- "identity": "XSharpBV.WPFCCtrlLibTemplate.XSharp",
- "name": "WPF CustomControl Library - Core Dialect",
- "description": "A project for creating a WPF CustomControl Library with the X# Core dialect.",
- "sourceName": "XSharp.WpfCCtrlLib",
- "shortName": "xswpfcctrllib",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WpfCustomControlLibrary1"
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfcctrllib/CustomControl1.prg b/src/Templates/working/content/wpfcctrllib/CustomControl1.prg
deleted file mode 100644
index d49240e37b..0000000000
--- a/src/Templates/working/content/wpfcctrllib/CustomControl1.prg
+++ /dev/null
@@ -1,51 +0,0 @@
-using System.Text
-using System.Windows
-using System.Windows.Controls
-using System.Windows.Data
-using System.Windows.Documents
-using System.Windows.Input
-using System.Windows.Media
-using System.Windows.Media.Imaging
-using System.Windows.Navigation
-using System.Windows.Shapes
-
-BEGIN NAMESPACE XSharp.WpfCCtrlLib
-
-
- ///
- /// Follow steps 1a or 1b and then 2 to use this custom control in a XAML file.
- ///
- /// Step 1a) Using this custom control in a XAML file that exists in the current project.
- /// Add this XmlNamespace attribute to the root element of the markup file where it is
- /// to be used:
- ///
- /// xmlns:MyNamespace="clr-namespace:WpfCustomControlLibrary1"
- ///
- ///
- /// Step 1b) Using this custom control in a XAML file that exists in a different project.
- /// Add this XmlNamespace attribute to the root element of the markup file where it is
- /// to be used:
- ///
- /// xmlns:MyNamespace="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1"
- ///
- /// You will also need to add a project reference from the project where the XAML file lives
- /// to this project and Rebuild to avoid compilation errors:
- ///
- /// Right click on the target project in the Solution Explorer and
- /// "Add Reference"->"Projects"->[Select this project]
- ///
- ///
- /// Step 2)
- /// Go ahead and use your control in the XAML file.
- ///
- ///
- ///
- ///
- PUBLIC CLASS CustomControl1 INHERIT Control
-
- STATIC CONSTRUCTOR()
- DefaultStyleKeyProperty.OverrideMetadata(TYPEOF(CustomControl1), FrameworkPropertyMetadata{TYPEOF(CustomControl1)})
- END CONSTRUCTOR
- END NAMESPACE
-
-END NAMESPACE
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfcctrllib/XSharp.WpfCCtrlLib.xsproj b/src/Templates/working/content/wpfcctrllib/XSharp.WpfCCtrlLib.xsproj
deleted file mode 100644
index b537974c4c..0000000000
--- a/src/Templates/working/content/wpfcctrllib/XSharp.WpfCCtrlLib.xsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Library
- net8.0-windows
-
- enable
- true
- Core
- enable
- True
- True
-
-
-
diff --git a/src/Templates/working/content/wpfctrl/.template.config/template.json b/src/Templates/working/content/wpfctrl/.template.config/template.json
deleted file mode 100644
index 5c5baac6fd..0000000000
--- a/src/Templates/working/content/wpfctrl/.template.config/template.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [
- "Common",
- "WPF",
- "X#"
- ],
- "identity": "XSharpBV.WPFCtrlTemplate.XSharp",
- "name": "WPF UserControl Library - Core Dialect",
- "description": "A project for creating a WPF UserControl Library with the X# Core dialect.",
- "sourceName": "XSharp.WpfCtrl",
- "shortName": "xswpfctrl",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WpfControlLibrary1"
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfctrl/AssemblyInfo.prg b/src/Templates/working/content/wpfctrl/AssemblyInfo.prg
deleted file mode 100644
index 3686ba37fb..0000000000
--- a/src/Templates/working/content/wpfctrl/AssemblyInfo.prg
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Windows
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
diff --git a/src/Templates/working/content/wpfctrl/UserControl1.xaml.prg b/src/Templates/working/content/wpfctrl/UserControl1.xaml.prg
deleted file mode 100644
index 3dbf8343a5..0000000000
--- a/src/Templates/working/content/wpfctrl/UserControl1.xaml.prg
+++ /dev/null
@@ -1,26 +0,0 @@
-using System.Text
-using System.Windows
-using System.Windows.Controls
-using System.Windows.Data
-using System.Windows.Documents
-using System.Windows.Input
-using System.Windows.Media
-using System.Windows.Media.Imaging
-using System.Windows.Navigation
-using System.Windows.Shapes
-
-BEGIN NAMESPACE XSharp.WpfCtrl
-
- ///
- /// Interaction logic for UserControl1.xaml
- ///
- PUBLIC PARTIAL CLASS UserControl1 INHERIT UserControl
-
- PUBLIC CONSTRUCTOR()
-
- InitializeComponent()
- END CONSTRUCTOR
-
- END CLASS
-
-END NAMESPACE
\ No newline at end of file
diff --git a/src/Templates/working/content/wpfctrl/XSharp.WpfCtrl.xsproj b/src/Templates/working/content/wpfctrl/XSharp.WpfCtrl.xsproj
deleted file mode 100644
index fb7b7a8332..0000000000
--- a/src/Templates/working/content/wpfctrl/XSharp.WpfCtrl.xsproj
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
- Library
- net8.0-windows
- XSharp.WpfCtrl
- XSharp.WpfCtrl
-
- enable
- true
- Core
- enable
- True
- True
-
-
-
diff --git a/src/Templates/working/content/wpflib/.template.config/template.json b/src/Templates/working/content/wpflib/.template.config/template.json
deleted file mode 100644
index 9eddae3d87..0000000000
--- a/src/Templates/working/content/wpflib/.template.config/template.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "XSharp B.V.",
- "classifications": [
- "Common",
- "WPF",
- "X#"
- ],
- "identity": "XSharpBV.WPFLibTemplate.XSharp",
- "name": "WPF Library - Core Dialect",
- "description": "A project for creating a WPF Library with the X# Core dialect.",
- "sourceName": "XSharp.WpfLib",
- "shortName": "xswpflib",
- "tags": {
- "language": "X#",
- "type": "project"
- },
- "preferNameDirectory": true,
- "defaultName": "WpfLibrary1"
-}
\ No newline at end of file
diff --git a/src/Templates/working/content/wpflib/Class1.prg b/src/Templates/working/content/wpflib/Class1.prg
deleted file mode 100644
index d8a54a3e0f..0000000000
--- a/src/Templates/working/content/wpflib/Class1.prg
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Text
-using System.Windows
-using System.Windows.Controls
-using System.Windows.Data
-using System.Windows.Documents
-using System.Windows.Input
-using System.Windows.Media
-using System.Windows.Media.Imaging
-using System.Windows.Navigation
-using System.Windows.Shapes
-
-BEGIN NAMESPACE XSharp.WpfLib
-
- PUBLIC CLASS Class1
-
- PUBLIC CONSTRUCTOR()
-
- END CONSTRUCTOR
-
- END CLASS
-
-END NAMESPACE
\ No newline at end of file
diff --git a/src/Templates/working/content/wpflib/XSharp.WpfLib.xsproj b/src/Templates/working/content/wpflib/XSharp.WpfLib.xsproj
deleted file mode 100644
index b537974c4c..0000000000
--- a/src/Templates/working/content/wpflib/XSharp.WpfLib.xsproj
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Library
- net8.0-windows
-
- enable
- true
- Core
- enable
- True
- True
-
-
-