<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>CodeKeep CodeSmith Feed</title>
    <description>The latest and greatest CodeSmith code snippets publicly available</description>
    <link>http://www.codekeep.net/feeds.aspx</link>
    <lastBuildDate>Tue, 10 Mar 2009 17:37:48 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>RSS.NET: http://www.rssdotnet.com/</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CodeKeepCodeSmith" /><feedburner:info uri="codekeepcodesmith" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Adding Mono</title>
      <description>Description: This is not a snippet of code but a method in which you can add Mono to the VS enviroment. Mono and GTK# must both be installed on the system.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/cd8aa3c4-49e2-489b-b9b0-499efa9c6190.aspx'&gt;http://www.codekeep.net/snippets/cd8aa3c4-49e2-489b-b9b0-499efa9c6190.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;There is no real secret to using Mono and Gtk# with Visual Studio. You don't need the Mono compiler and you don't need to set any configuration settings.

Look under your Mono install directory, probably something like C:\Program Files\Mono-1.9.1\ and look in the Global Assembly Cache, which in my install is located at

C:\Program Files\Mono-1.9.1\lib\mono\gac

Look for these assemblies at least:

atk-sharp
gdk-sharp
glib-sharp
gtk-sharp

If you like you can also add glade-sharp, pango-sharp, mono.addins, mono.cairo, and any others you might need.

*Copy and paste those into your project /bin directory
*In Visual Studio right-click your project and select Add Reference, then browse to your bin directory and include those libraries
*Then build and run your project using Visual Studio. It should run just fine.

When you distribute your app just include those .dll's in the same folder as your executable and everything should work. In Linux you will need to add the .config files (like gtk-sharp.dll.config) to the bin as well. You should be able to find those in the mono install directory under your /usr directory (I think, I'm not using Linux at the moment so I'm not positive)

At any rate, that should do it. Very easy. Just Copy/Reference/Build.

Note: I am quite certain this is not the proper way to handle this and I should reference my global cache and set the vs project settings to use the mono compiler and blah blah blah, but seeing as how there are no clear instructions on how to easily do this, I have come up with this way, which I find simple and working (well). Shipping these libraries also assures my program is using the right one, without having to worry about which version of Mono is actually installed. &lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCodeSmith/~4/pL9Fo90vMa0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCodeSmith/~3/pL9Fo90vMa0/cd8aa3c4-49e2-489b-b9b0-499efa9c6190.aspx</link>
      <pubDate>Tue, 10 Mar 2009 17:37:48 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/cd8aa3c4-49e2-489b-b9b0-499efa9c6190.aspx</feedburner:origLink></item>
    <item>
      <title>Form Generator</title>
      <description>Description: This generates a form from a table&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/a684a468-8971-4f89-b3d5-59dad6bfa9f9.aspx'&gt;http://www.codekeep.net/snippets/a684a468-8971-4f89-b3d5-59dad6bfa9f9.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;&amp;lt;%@ CodeTemplate Language=&amp;quot;C#&amp;quot; TargetLanguage=&amp;quot;C#&amp;quot; Description=&amp;quot;Generates a form based on a table.&amp;quot; %&amp;gt;
&amp;lt;%@ Property Name=&amp;quot;SourceTable&amp;quot; Type=&amp;quot;SchemaExplorer.TableSchema&amp;quot; Category=&amp;quot;Context&amp;quot; Description=&amp;quot;Table that the object is based on.&amp;quot; %&amp;gt;

&amp;lt;%@ Assembly Name=&amp;quot;SchemaExplorer&amp;quot; %&amp;gt;
&amp;lt;%@ Assembly Name=&amp;quot;System.Data&amp;quot; %&amp;gt;
&amp;lt;%@ Import Namespace=&amp;quot;SchemaExplorer&amp;quot; %&amp;gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.Data&amp;quot; %&amp;gt;
&amp;lt;% 

ColumnSchema thisColumn;
string colName=&amp;quot;&amp;quot;;
string colType=&amp;quot;&amp;quot;;
bool IsNullable=false;
%&amp;gt;
	
&amp;lt;div id=&amp;quot;divAdd&amp;quot; class=&amp;quot;inputForm&amp;quot;&amp;gt;
&amp;lt;%
	for (int i = 0; i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count; i++) { 
		thisColumn=SourceTable.NonPrimaryKeyColumns[i];
		colName=GetPropertyName(SourceTable.NonPrimaryKeyColumns[i]).Replace(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;);
		colType=GetCSharpVariableType(thisColumn);
		IsNullable=thisColumn.AllowDBNull;
		%&amp;gt;
		&amp;lt;div class=&amp;quot;formRow&amp;quot;&amp;gt;
		&amp;lt;asp:label AssociatedControlID=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;%=colName%&amp;gt;&amp;lt;/asp:label&amp;gt;
		&amp;lt;br /&amp;gt;
		&amp;lt;%
		if(colType==&amp;quot;DateTime&amp;quot;){
		%&amp;gt;
			&amp;lt;SubSonic:CalendarControl id=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
			&amp;lt;/SubSonic:CalendarControl&amp;gt;
	
		&amp;lt;%}else if(colType==&amp;quot;string&amp;quot;){%&amp;gt;
	
		&amp;lt;asp:textbox id=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot;
				&amp;lt;%if(UseMultiLine(thisColumn)){%&amp;gt;
				TextMode=&amp;quot;MultiLine&amp;quot; Height=&amp;quot;100px&amp;quot; Width=&amp;quot;400px&amp;quot;
				&amp;lt;%}%&amp;gt;
				&amp;gt;&amp;lt;/asp:textbox&amp;gt;
				&amp;lt;%if(!IsNullable){%&amp;gt;
				&amp;lt;span class=&amp;quot;required&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;
				&amp;lt;asp:RequiredFieldValidator id=&amp;quot;valTxt&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot; Display=&amp;quot;Dynamic&amp;quot; 
				ControlToValidate=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot;
					ErrorMessage=&amp;quot;Required&amp;quot;&amp;gt;&amp;lt;/asp:RequiredFieldValidator&amp;gt;
				&amp;lt;%}%&amp;gt;
	
		&amp;lt;%}else if(IsNumberField(thisColumn) &amp;amp;&amp;amp; colName.ToLower().IndexOf(&amp;quot;id&amp;quot;)&amp;gt;0){%&amp;gt;
		
			&amp;lt;SubSonic:DropDown id=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot; TableName=&amp;quot;&amp;lt;%= colName.Replace(&amp;quot;Id&amp;quot;,&amp;quot;&amp;quot;)%&amp;gt;&amp;quot;&amp;gt;
			&amp;lt;/SubSonic:DropDown&amp;gt;
	
		&amp;lt;%}else if(IsNumberField(thisColumn)){%&amp;gt;
				&amp;lt;asp:textbox id=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot;
				&amp;gt;&amp;lt;/asp:textbox&amp;gt;
			&amp;lt;%if(!IsNullable){%&amp;gt;
			&amp;lt;span class=&amp;quot;required&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;
			&amp;lt;asp:RequiredFieldValidator id=&amp;quot;valTxt&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot; Display=&amp;quot;Dynamic&amp;quot; 
			ControlToValidate=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot;
				ErrorMessage=&amp;quot;Required&amp;quot;&amp;gt;&amp;lt;/asp:RequiredFieldValidator&amp;gt;
			&amp;lt;%}%&amp;gt;
			&amp;lt;asp:RangeValidator id=&amp;quot;valNum&amp;lt;%=colName%&amp;gt;&amp;quot; runat=&amp;quot;server&amp;quot; Display=&amp;quot;Dynamic&amp;quot; ControlToValidate=&amp;quot;_&amp;lt;%=colName%&amp;gt;&amp;quot;
			ErrorMessage=&amp;quot;Invalid Number&amp;quot; MaximumValue=&amp;quot;99999999&amp;quot; MinimumValue=&amp;quot;0&amp;quot; Type=&amp;quot;Integer&amp;quot;&amp;gt;&amp;lt;/asp:RangeValidator&amp;gt;
		&amp;lt;%}else if(colType==&amp;quot;bool&amp;quot;){%&amp;gt;
			&amp;lt;asp:CheckBox id=_&amp;lt;%=colName%&amp;gt; runat=server /&amp;gt;
			
		&amp;lt;%}%&amp;gt;
		&amp;lt;/div&amp;gt;
	&amp;lt;% } %&amp;gt;

	&amp;lt;div&amp;gt;
		&amp;lt;asp:Button ID=&amp;quot;btnAdd&amp;quot; Runat=&amp;quot;server&amp;quot; Text=&amp;quot;Add&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;
	&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

		
	

		
		
		
		
		
		
		
&amp;lt;script runat=&amp;quot;template&amp;quot;&amp;gt;
public bool UseMultiLine(ColumnSchema column){
	bool bOut=false;
	if(column.Size&amp;gt;200)
		bOut=true;
	return bOut;

}
public bool IsNumberField(ColumnSchema column){
	bool bOut=false;
	string vType=GetCSharpVariableType(column);
	if(vType==&amp;quot;decimal&amp;quot; || vType==&amp;quot;double&amp;quot; || vType==&amp;quot;short&amp;quot; || vType==&amp;quot;int&amp;quot; || vType==&amp;quot;long&amp;quot; || vType==&amp;quot;float&amp;quot; || vType==&amp;quot;ushort&amp;quot; || vType==&amp;quot;uint&amp;quot; || vType==&amp;quot;ulong&amp;quot;){
		bOut=true;
	}
	return bOut;
}
public string GetProperName(string sIn)
{
	string propertyName =sIn;
	string leftOne=propertyName.Substring(0,1).ToUpper();
	propertyName=propertyName.Substring(1,propertyName.Length-1);
	propertyName=leftOne+propertyName;
		
	return propertyName;
}

public string GetPropertyName(ColumnSchema column)
{
	string propertyName = column.Name;
	string leftOne=propertyName.Substring(0,1).ToUpper();
	propertyName=propertyName.Substring(1,propertyName.Length-1);
	propertyName=leftOne+propertyName;
	
	propertyName=propertyName.Replace(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;);
	
	return propertyName;
}
		
public string GetCSharpVariableType(ColumnSchema column)
{
	if (column.Name.EndsWith(&amp;quot;TypeCode&amp;quot;)) return column.Name;
	
	switch (column.DataType)
	{
		case DbType.AnsiString: return &amp;quot;string&amp;quot;;
		case DbType.AnsiStringFixedLength: return &amp;quot;string&amp;quot;;
		case DbType.Binary: return &amp;quot;byte[]&amp;quot;;
		case DbType.Boolean: return &amp;quot;bool&amp;quot;;
		case DbType.Byte: return &amp;quot;byte&amp;quot;;
		case DbType.Currency: return &amp;quot;decimal&amp;quot;;
		case DbType.Date: return &amp;quot;DateTime&amp;quot;;
		case DbType.DateTime: return &amp;quot;DateTime&amp;quot;;
		case DbType.Decimal: return &amp;quot;decimal&amp;quot;;
		case DbType.Double: return &amp;quot;double&amp;quot;;
		case DbType.Guid: return &amp;quot;Guid&amp;quot;;
		case DbType.Int16: return &amp;quot;short&amp;quot;;
		case DbType.Int32: return &amp;quot;int&amp;quot;;
		case DbType.Int64: return &amp;quot;long&amp;quot;;
		case DbType.Object: return &amp;quot;object&amp;quot;;
		case DbType.SByte: return &amp;quot;sbyte&amp;quot;;
		case DbType.Single: return &amp;quot;float&amp;quot;;
		case DbType.String: return &amp;quot;string&amp;quot;;
		case DbType.StringFixedLength: return &amp;quot;string&amp;quot;;
		case DbType.Time: return &amp;quot;TimeSpan&amp;quot;;
		case DbType.UInt16: return &amp;quot;ushort&amp;quot;;
		case DbType.UInt32: return &amp;quot;uint&amp;quot;;
		case DbType.UInt64: return &amp;quot;ulong&amp;quot;;
		case DbType.VarNumeric: return &amp;quot;decimal&amp;quot;;
		default:
		{
			return &amp;quot;__UNKNOWN__&amp;quot; + column.NativeType;
		}
	}
}


public string GetSqlDbType(ColumnSchema column)
{
	switch (column.NativeType)
	{
		case &amp;quot;bigint&amp;quot;: return &amp;quot;BigInt&amp;quot;;
		case &amp;quot;binary&amp;quot;: return &amp;quot;Binary&amp;quot;;
		case &amp;quot;bit&amp;quot;: return &amp;quot;Bit&amp;quot;;
		case &amp;quot;char&amp;quot;: return &amp;quot;Char&amp;quot;;
		case &amp;quot;datetime&amp;quot;: return &amp;quot;DateTime&amp;quot;;
		case &amp;quot;decimal&amp;quot;: return &amp;quot;Decimal&amp;quot;;
		case &amp;quot;float&amp;quot;: return &amp;quot;Float&amp;quot;;
		case &amp;quot;image&amp;quot;: return &amp;quot;Image&amp;quot;;
		case &amp;quot;int&amp;quot;: return &amp;quot;Int&amp;quot;;
		case &amp;quot;money&amp;quot;: return &amp;quot;Money&amp;quot;;
		case &amp;quot;nchar&amp;quot;: return &amp;quot;NChar&amp;quot;;
		case &amp;quot;ntext&amp;quot;: return &amp;quot;NText&amp;quot;;
		case &amp;quot;numeric&amp;quot;: return &amp;quot;Decimal&amp;quot;;
		case &amp;quot;nvarchar&amp;quot;: return &amp;quot;NVarChar&amp;quot;;
		case &amp;quot;real&amp;quot;: return &amp;quot;Real&amp;quot;;
		case &amp;quot;smalldatetime&amp;quot;: return &amp;quot;SmallDateTime&amp;quot;;
		case &amp;quot;smallint&amp;quot;: return &amp;quot;SmallInt&amp;quot;;
		case &amp;quot;smallmoney&amp;quot;: return &amp;quot;SmallMoney&amp;quot;;
		case &amp;quot;sql_variant&amp;quot;: return &amp;quot;Variant&amp;quot;;
		case &amp;quot;sysname&amp;quot;: return &amp;quot;NChar&amp;quot;;
		case &amp;quot;text&amp;quot;: return &amp;quot;Text&amp;quot;;
		case &amp;quot;timestamp&amp;quot;: return &amp;quot;Timestamp&amp;quot;;
		case &amp;quot;tinyint&amp;quot;: return &amp;quot;TinyInt&amp;quot;;
		case &amp;quot;uniqueidentifier&amp;quot;: return &amp;quot;UniqueIdentifier&amp;quot;;
		case &amp;quot;varbinary&amp;quot;: return &amp;quot;VarBinary&amp;quot;;
		case &amp;quot;varchar&amp;quot;: return &amp;quot;VarChar&amp;quot;;
		default: return &amp;quot;__UNKNOWN__&amp;quot; + column.NativeType;
	}
}

public string GetPrimaryKeyType(TableSchema table)
{
	if (table.PrimaryKey != null)
	{
		if (table.PrimaryKey.MemberColumns.Count == 1)
		{
			return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);
		}
		else
		{
			throw new ApplicationException(&amp;quot;This template will not work on primary keys with more than one member column.&amp;quot;);
		}
	}
	else
	{
		throw new ApplicationException(&amp;quot;This template will only work on tables with a primary key.&amp;quot;);
	}
}

&amp;lt;/script&amp;gt;

&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCodeSmith/~4/O0Buv6Nqkzo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCodeSmith/~3/O0Buv6Nqkzo/a684a468-8971-4f89-b3d5-59dad6bfa9f9.aspx</link>
      <pubDate>Mon, 26 Nov 2007 00:25:20 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/a684a468-8971-4f89-b3d5-59dad6bfa9f9.aspx</feedburner:origLink></item>
  </channel>
</rss>

