MyGeneration SharpDevelop Project Template
Template for MyGeneration that generates a project file for SharpDevelop, to be placed in the same directory as the generated dOOdads business entities. Also MyGeneration.dOOdads.dll has to be placed in the bin\Release subfolder - i.e. My Documents\SharpDevelop Projects\My Project\bin\Release
Interface Code:
Dim cmbDatabases
Dim lstTables
Sub setup()
If Not input.Contains("lstTables") Or Not input.Contains("txtPath") Then
ui.Title = "Generate SharpDevelop Project"
ui.Width = 330
ui.Height = 400
' Grab default output path
Dim sOutputPath
sOutputPath = ""
If input.Contains("defaultOutputPath") Then
sOutputPath = input.Item("defaultOutputPath")
End If
ui.AddLabel "lblPath", "Output file path: ", "Select the output path."
ui.AddTextBox "txtPath", sOutputPath, "Select the Output Path."
ui.AddFilePicker "btnPath", "Select Path", "Select the Output Path.", "txtPath", true
' List Databases in a ComboBox
ui.AddLabel "lblDatabases", "Select a database:", "Select a database in the dropdown below."
Set cmbDatabases = ui.AddComboBox("cmbDatabase", "Select a database.")
' List Tables in a listbox
ui.AddLabel "lblTables", "Select tables:", "Select tables from the listbox below."
Set lstTables = ui.AddListBox ("lstTables", "Select tables:")
lstTables.Height = 150
' Attach the onchange event to the cmbDatabases control.
setupDatabaseDropdown cmbDatabases
cmbDatabases.AttachEvent "onchange", "cmbDatabases_onchange"
ui.ShowGUI = true
Else
ui.ShowGUI = false
End if
End Sub
Sub setupDatabaseDropdown(cmbDatabases)
cmbDatabases.BindData MyMeta.Databases
If Not MyMeta.DefaultDatabase Is Nothing Then
cmbDatabases.SelectedValue = MyMeta.DefaultDatabase.Name
bindTables cmbDatabases.SelectedValue
End If
End Sub
Sub bindTables(sDatabase)
Set db = MyMeta.Databases.Item(sDatabase)
lstTables.BindData(db.Tables)
End Sub
' Event Handler
Sub cmbDatabases_onchange(control)
Set cmbDatabases = ui.item("cmbDatabase")
bindTables cmbDatabases.SelectedText
End Sub
Template Code:
<%
'------------------------------------------------------------------------------
' SharpDevelop.vbgen
' Last Updated: 13 May 2004
' Author: Sam Collett
' Creates SharpDevelop project file. Save to same directory as generated business entities
' Place MyGeneration.dOOdads.dll to bin\Release sub folder
'
'------------------------------------------------------------------------------
Dim objTable
Dim objColumn
Dim intLp
Dim bInFirst
Dim tableNames
Dim tableName
Dim buffer
Dim databaseName
databaseName = input.Item("cmbDatabase")
Set database = MyMeta.Databases.Item(databaseName)
Set tableNames = input.Item("lstTables")
%>
<Project name="<%=database.Alias%>" standardNamespace="<%=TrimSpaces(database.Alias)%>" description="" newfilesearch="OnLoadAutoInsert" enableviewstate="True" version="1.1" projecttype="VBNET">
<Contents><%
' Loop through tables in db
For intLp = 0 To tableNames.Count - 1
tableName = tableNames(intLp)
Set objTable = database.Tables.Item(tableName)
If objTable.Name = tableName Then
%>
<File name=".\<%=objTable.Alias%>.vb" subtype="Code" buildaction="Compile" dependson="" data="" /><%
End If
Next
%>
<File name=".\AssemblyInfo.vb" subtype="Code" buildaction="Compile" dependson="" data="" />
</Contents>
<References>
<Reference type="Assembly" refto=".\bin\Release\MyGeneration.dOOdads.dll" localcopy="True" />
</References>
<DeploymentInformation target="" script="" strategy="File" />
<Configuration runwithwarnings="True" name="Release">
<CodeGeneration includedebuginformation="False" optimize="True" generateoverflowchecks="False" rootnamespace="" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" imports="" />
<VBDOC outputfile="" enablevbdoc="False" filestoparse="" commentprefix="" />
<Execution consolepause="True" commandlineparameters="" />
<Output directory=".\bin\Release" assembly="<%=database.Alias%>" executeScript="" executeBeforeBuild="" executeAfterBuild="" />
</Configuration>
<Configurations active="Debug">
<Configuration runwithwarnings="False" name="Debug">
<CodeGeneration includedebuginformation="True" optimize="True" generateoverflowchecks="True" rootnamespace="" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" imports="" />
<VBDOC outputfile="" enablevbdoc="False" filestoparse="" commentprefix="" />
<Execution consolepause="True" commandlineparameters="" />
<Output directory=".\bin\Debug" assembly="<%=database.Alias%>" executeScript="" executeBeforeBuild="" executeAfterBuild="" />
</Configuration>
<Configuration runwithwarnings="True" name="Release">
<CodeGeneration includedebuginformation="False" optimize="True" generateoverflowchecks="False" rootnamespace="" mainclass="" target="Library" definesymbols="" generatexmldocumentation="False" win32Icon="" imports="" />
<VBDOC outputfile="" enablevbdoc="False" filestoparse="" commentprefix="" />
<Execution consolepause="True" commandlineparameters="" />
<Output directory=".\bin\Release" assembly="<%=database.Alias%>" executeScript="" executeBeforeBuild="" executeAfterBuild="" />
</Configuration>
</Configurations>
</Project>
<%
' save project file
SaveOutput database.Alias, "prjx"
' assembly file %>
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("<%=database.Alias%>")>
<Assembly: AssemblyDescription("VB.NET Class Library")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("")>
<Assembly: AssemblyCopyright("")>
<Assembly: AssemblyTrademark("")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
<Assembly: AssemblyVersion("1.0.*")>
<%
SaveOutput "AssemblyInfo", "vb"
' this function saves the output to disk
Function SaveOutput(filename, ext)
' Save the output file for this Table
Dim filepath
filepath = input.item("txtPath")
' length of file path
Dim length
' position of last Dim pos
' get length from input
length = Len(filepath)
' get position of last pos = InStrRev(filepath, "\")
' if last \ is not at the end of the file path, it needs adding
If Not pos = length Then
' append \ to path
filepath = filepath & "\"
End If
' filename is generated from table alias, removing invalid filename characters
filename = filepath & filename & "." & ext
' save output to file
output.save filename, false
buffer = buffer & output.text
output.clear
End Function
output.write buffer
%>
<%
Function TrimSpaces(str)
Dim tname
Dim name
Dim char
Dim l
name = ""
tname = str
l = Len(tname)
For j = 1 To l
char = Mid(tname, j, 1)
If Not char = " " Then
name = name & char
End If
Next
TrimSpaces = name
End Function
%>
Comments