<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>M E R Goulding Software Development</title>
	<atom:link href="http://goulding.ws/feed/" rel="self" type="application/rss+xml" />
	<link>http://goulding.ws</link>
	<description>Bespoke application development for vertical markets</description>
	<lastBuildDate>Tue, 20 Dec 2011 04:12:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>ShakeNScan &amp; LiveCode iOS Barcode reader external</title>
		<link>http://goulding.ws/2011/12/20/shakenscan-livecode-ios-barcode-reader-external/</link>
		<comments>http://goulding.ws/2011/12/20/shakenscan-livecode-ios-barcode-reader-external/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 04:06:06 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[LiveCode Externals]]></category>
		<category><![CDATA[LiveCode Mobile]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=292</guid>
		<description><![CDATA[Today I announced a demo for my barcode reader external called ShakeNScan is available in the app store.]]></description>
			<content:encoded><![CDATA[<p>Today I announced a demo for my barcode reader external called ShakeNScan is available in the app store. Sorry about the app, I built it in about an hour as it&#8217;s sole purpose is to demo the modal barcode reader, ensure the external was not a blocker for app store release (which obviously I now know it&#8217;s not) and to gauge interest in it. I&#8217;m keen to hear if you have a need for it. </p>
<p>The external can read EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39 and QR Code. The app will browse to a url in a QR code but it will display the results of all the other codes. It uses one function mergGetBarcode() which presents a modal barcode reader using the back camera. An embedded barcode reader control is in the works but there&#8217;s still some issues with that I&#8217;m working through.</p>
<p><a href="http://itunes.apple.com/us/app/shakenscan/id490000309">http://itunes.apple.com/us/app/shakenscan/id490000309</a></p>
<p>It will be available via revSelect as soon as I can arrange it.
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2011/12/20/shakenscan-livecode-ios-barcode-reader-external/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2011/12/20/shakenscan-livecode-ios-barcode-reader-external/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LiveCode Growl Plugin</title>
		<link>http://goulding.ws/2010/10/29/livecode-growl-plugin/</link>
		<comments>http://goulding.ws/2010/10/29/livecode-growl-plugin/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 05:23:06 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=286</guid>
		<description><![CDATA[I spent an hour this afternoon having a play with the AppleScript commands for Growl and came up with a this little plugin toy for LiveCode. It notifies you when LiveCode is saving a standalone and when the standalone is saved. If anyone can think of anything else they might like notifications of I&#8217;m happy [...]]]></description>
			<content:encoded><![CDATA[<p>I spent an hour this afternoon having a play with the AppleScript commands for Growl and came up with a this little plugin toy for LiveCode. It notifies you when LiveCode is saving a standalone and when the standalone is saved. If anyone can think of anything else they might like notifications of I&#8217;m happy to add some more but this is really just a demo of the growl library which is a substack of the plugin.<table cellpadding="3" width="100%" border="0">   <tr>     <td width="35" style="vertical-align: middle;">       <img src="http://goulding.ws/wp-content/uploads/2010/09/download.png" alt="{icon}">     </td>     <td>       <b>Download:</b> <a href="http://goulding.ws/download/revGrowl.livecode.zip">Growl for LiveCode 1.0</a> <small>(3.02 kB)</small>       <br /> <b>Description:</b> Growl plugin and library for LiveCode</td>  </tr> </table>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/10/29/livecode-growl-plugin/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/10/29/livecode-growl-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Command prompt blocking policies and the shell function</title>
		<link>http://goulding.ws/2010/10/15/command-prompt-blocking-policies-and-the-shell-function/</link>
		<comments>http://goulding.ws/2010/10/15/command-prompt-blocking-policies-and-the-shell-function/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 06:43:54 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[handy scripts]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=283</guid>
		<description><![CDATA[This week I had a report of an application locking up while executing the shell function. Actually it was executing shell(&#8220;ipconfig /all&#8221;) in my modification of Ken Ray&#8217;s GetMACAddress function to return the machine&#8217;s LAN ip. System administrators tend to like to turn things off so normal human beings can&#8217;t make a mess of their [...]]]></description>
			<content:encoded><![CDATA[<p>This week I had a report of an application locking up while executing the shell function. Actually it was executing shell(&#8220;ipconfig /all&#8221;) in my modification of Ken Ray&#8217;s GetMACAddress function to return the machine&#8217;s <a href="http://goulding.ws/2010/08/27/finding-out-the-lan-ip/">LAN ip</a>. </p>
<p>System administrators tend to like to turn things off so normal human beings can&#8217;t make a mess of their nice machines. One thing they can do is set a Windows registry entry to disable cmd.exe for the user. So by checking HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\DisableCMD&#8221;=dword:1 we can find out if cmd.exe is disabled for the current user. What this does is when cmd.exe is run it opens the console but all you get is a blocked by admin message and no command prompt. If Bill would just change this so it stopped cmd.exe from launching at all then we wouldn&#8217;t have such a problem. LiveCode is therefore able to run cmd.exe and just sits there waiting for it to terminate but it never does.</p>
<p>So I wrote a safer shell function to check for this situation and also possible execution errors from hash rules and renaming of cmd.exe etc. If the registry setting is there it will attempt to execute the command directly using process commands rather than via shell.</p>
<pre class="source-code">
<span class="storage storage_type storage_type_handler storage_type_handler_rev">function</span><span> safeShell pCommand</span>
<span>   </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- assume the shellCommand has been set appropriately</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">hideConsoleWindows</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">true</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">itemDel</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;\&quot;</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">-</span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">shellCommand</span><span> </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;cmd.exe&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">AND</span><span> \ </span>
<span>          </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">charToNum</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="entity entity_name entity_name_handler entity_name_handler_rev">queryRegistry</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\DisableCMD&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">))</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> </span><span class="constant constant_numeric constant_numeric_rev">1</span><span> then</span>
<span>      </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- don't use cmd.exe because shell() won't return</span>
<span>      </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- don't revert to command.com because there seems to be a problem in the engine</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">return</span><span> executeProcess</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pCommand</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">else</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">try</span>
<span>         </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- still check for empty if your are expecting a result</span>
<span>         </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- because there's no execution error on os x</span>
<span>         </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">return</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">shell</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pCommand</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">catch</span><span> e</span>
<span>         </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- execution error on windows shellCommand doesn't exist</span>
<span>         </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- hopefully this catches hash rule blocks</span>
<span>         </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">return</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;Error executing command&quot;</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">try</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> safeShell</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">function</span><span> executeProcess pProcess</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>pElevate</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">local</span><span> tReturn</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> pElevate then</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">open</span><span> </span><span class="keyword keyword_control keyword_control_rev">elevated</span><span> </span><span class="keyword keyword_control keyword_control_rev">process</span><span> pProcess </span><span class="keyword keyword_control keyword_control_rev">for</span><span> </span><span class="support support_command support_command_rev">text</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">read</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">else</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">open</span><span> </span><span class="keyword keyword_control keyword_control_rev">process</span><span> pProcess </span><span class="keyword keyword_control keyword_control_rev">for</span><span> </span><span class="support support_command support_command_rev">text</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">read</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">repeat</span><span> </span><span class="keyword keyword_control keyword_control_rev">forever</span>
<span>      </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev"># Loop until there are no more lines to read.</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">read</span><span> </span><span class="keyword keyword_control keyword_control_rev">from</span><span> </span><span class="keyword keyword_control keyword_control_rev">process</span><span> pProcess </span><span class="keyword keyword_control keyword_control_rev">for</span><span> </span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">line</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">result</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">or</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">result</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;timed out&quot;</span><span> then</span>
<span>         </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- something to add</span>
<span>         </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> it </span><span class="keyword keyword_control keyword_control_rev">after</span><span> tReturn</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">else</span>
<span>         </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">close</span><span> </span><span class="keyword keyword_control keyword_control_rev">process</span><span> pProcess</span>
<span>         </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">return</span><span> tReturn</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">repeat</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> executeProcess</span>
</pre>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/10/15/command-prompt-blocking-policies-and-the-shell-function/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/10/15/command-prompt-blocking-policies-and-the-shell-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LiveCode DataGrid Drag &amp; Drop Reordering</title>
		<link>http://goulding.ws/2010/10/01/livecode-datagrid-drag-drop-reordering/</link>
		<comments>http://goulding.ws/2010/10/01/livecode-datagrid-drag-drop-reordering/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 03:31:06 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[handy scripts]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=271</guid>
		<description><![CDATA[I have a project where using a data grid form really simplifies things, however, it&#8217;s critical that the user can re-order the list in arbitrary way. To do this I needed to add drag and drop to the data grid. First I wrote rolled my own: There two main limitations with this code are that [...]]]></description>
			<content:encoded><![CDATA[<p>I have a project where using a data grid form really simplifies things, however, it&#8217;s critical that the user can re-order the list in arbitrary way. To do this I needed to add drag and drop to the data grid. </p>
<p>First  I wrote rolled my own:</p>
<p>There two main limitations with this code are that it will only work for a data grid form (not table) and only if the cache controls property is true.</p>
<pre class="source-code">
<span class="entity entity_name entity_name_handler entity_name_handler_rev">local</span><span> sDragImage</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>sControlIndexMap</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>sOriginalIndexes</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> dragStart</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">local</span><span> tControl</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tItem</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragData</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;private&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgDragIndex&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&amp;&amp;</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgHilitedIndex </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgDataControlOfIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgHilitedIndex </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tControl</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">lock</span><span> </span><span class="support support_command support_command_rev">screen</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">import</span><span> </span><span class="keyword keyword_control keyword_control_rev">snapshot</span><span> </span><span class="keyword keyword_control keyword_control_rev">from</span><span> tControl</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">long</span><span> </span><span class="support support_command support_command_rev">id</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="keyword keyword_control keyword_control_rev">last</span><span> </span><span class="keyword keyword_control keyword_control_rev">image</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sDragImage</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">visible</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> sDragImage </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">false</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragImage</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">short</span><span> </span><span class="support support_command support_command_rev">id</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> sDragImage</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgIndexes </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sOriginalIndexes</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">delete</span><span> </span><span class="keyword keyword_control keyword_control_rev">variable</span><span> sControlIndexMap</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">repeat</span><span> </span><span class="keyword keyword_control keyword_control_rev">for</span><span> </span><span class="keyword keyword_control keyword_control_rev">each</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> tItem </span><span class="keyword keyword_control keyword_control_rev">in</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgIndexes </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> tItem </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sControlIndexMap</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgDataControlOfIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span>tItem</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">repeat</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">allowableDragActions</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;move&quot;</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">pass</span><span> dragStart</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> dragStart</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> dragMove pX</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>pY</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">local</span><span> tDragIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tNewIndexes</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tOverIndex</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">word</span><span> </span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragData</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;private&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgDragIndex&quot;</span><span> then</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">unlock</span><span> </span><span class="support support_command support_command_rev">screen</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">lock</span><span> </span><span class="support support_command support_command_rev">cursor</span><span> </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- refresh bug workaround on setting the dgIndexes the dragAction seems to get set to none</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="keyword keyword_control keyword_control_rev">word</span><span> </span><span class="constant constant_numeric constant_numeric_rev">2</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragData</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;private&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tDragIndex</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragAction</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;move&quot;</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">if</span><span> pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&gt;</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">bottom</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">-</span><span class="constant constant_numeric constant_numeric_rev">20</span><span> then</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="constant constant_numeric constant_numeric_rev">2</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVisibleLines </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&lt;</span><span>  </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgNumberOfLines </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">or</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">scroll</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="keyword keyword_control keyword_control_rev">not</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgFormattedHeight </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> then </span>
<span>            </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVscroll </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">min</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVscroll </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">+</span><span> </span><span class="constant constant_numeric constant_numeric_rev">20</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgFormattedHeight </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">else</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span><span>  pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&lt;</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">+</span><span class="constant constant_numeric constant_numeric_rev">20</span><span> then</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVisibleLines </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&gt;</span><span>  </span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">or</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">scroll</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="keyword keyword_control keyword_control_rev">not</span><span> </span><span class="constant constant_numeric constant_numeric_rev">0</span><span> then </span>
<span>            </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVscroll </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">max</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgVscroll </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">-</span><span> </span><span class="constant constant_numeric constant_numeric_rev">20</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span class="constant constant_numeric constant_numeric_rev">0</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">repeat</span><span> </span><span class="keyword keyword_control keyword_control_rev">with</span><span> X</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span class="constant constant_numeric constant_numeric_rev">1</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">number</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">groups</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">visible</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">and</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">short</span><span> </span><span class="support support_command support_command_rev">name</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">owner</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> then</span>
<span>            </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&gt;=</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">and</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&lt;</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">+(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">bottom</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">-</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">div</span><span> </span><span class="constant constant_numeric constant_numeric_rev">2</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">))</span><span> then</span>
<span>               </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- place above index</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sControlIndexMap</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">long</span><span> </span><span class="support support_command support_command_rev">id</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tOverIndex</span>
<span>               </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">--put &quot;over&quot;&amp;&amp;tOverIndex</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">if</span><span> tDragIndex </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> tOverIndex then </span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sOriginalIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tNewIndexes</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">else</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sOriginalIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tNewIndexes</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">delete</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">itemOffset</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>tDragIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tNewIndexes</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> tNewIndexes</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> tDragIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&amp;</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;,&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">before</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">itemOffset</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>tOverIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tNewIndexes</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> tNewIndexes</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgIndexes </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> tNewIndexes</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> tNewIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sOriginalIndexes</span>
<span>            </span><span class="keyword keyword_control keyword_control_rev">else</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&lt;=</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">bottom</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">and</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pY </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&gt;</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">+(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">bottom</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">-</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">top</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">div</span><span> </span><span class="constant constant_numeric constant_numeric_rev">2</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">))</span><span> then</span>
<span>               </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- place below index</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sControlIndexMap</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">long</span><span> </span><span class="support support_command support_command_rev">id</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> X </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">group</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;dgList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tOverIndex</span>
<span>               </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">--put &quot;over&quot;&amp;&amp;tOverIndex</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">if</span><span> tDragIndex </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">=</span><span> tOverIndex then </span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sOriginalIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tNewIndexes</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">else</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> sOriginalIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tNewIndexes</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">delete</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">itemOffset</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>tDragIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tNewIndexes</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> tNewIndexes</span>
<span>                  </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;,&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&amp;</span><span>tDragIndex </span><span class="keyword keyword_control keyword_control_rev">after</span><span> </span><span class="keyword keyword_control keyword_control_rev">item</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">itemOffset</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>tOverIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span>tNewIndexes</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> tNewIndexes</span>
<span>               </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgIndexes </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> tNewIndexes</span>
<span>               </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> tNewIndexes </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sOriginalIndexes</span>
<span>            </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>         </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>      </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">repeat</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">pass</span><span> dragMove</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> dragMove</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> dragEnd</span>
<span>   </span><span class="comment comment_line comment_line_number-sign comment_line_number-sign_rev">-- clean up</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> sDragImage </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">&lt;&gt;</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;&quot;</span><span> then</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">delete</span><span> sDragImage</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> sDragImage</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">pass</span><span> dragEnd</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> dragEnd</span>
</pre>
<p><p>
Then I had a poke around the data grid behavior script and found undocumented support for drag and drop. So here&#8217;s the new script that does not have the limitations of the above and is obviously far less verbose:</p>
<pre class="source-code">
<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> dragStart</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">local</span><span> tIndex</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgHeader </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">target</span><span> </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="keyword keyword_control keyword_control_rev">empty</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> then</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">put</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgIndex </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgDataControl </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">target</span><span> </span><span class="keyword keyword_control keyword_control_rev">into</span><span> tIndex</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgDragImageIndex </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> tIndex</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragData</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;private&quot;</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">empty</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> dgTrackDragReorder</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">[</span><span>tIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">]</span><span> </span><span class="keyword keyword_control keyword_control_rev">of</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="keyword keyword_control keyword_control_rev">true</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> dragStart</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> DragReorderDrop pOriginatingIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span> pStartLine</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span> pDroppedOnLine</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">if</span><span> </span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">(</span><span>pStartLine </span><span class="keyword keyword_control keyword_control_rev">is</span><span> </span><span class="keyword keyword_control keyword_control_rev">not</span><span> pDroppedOnLine</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">)</span><span> then</span>
<span>      SetLineOfIndex pOriginatingIndex</span><span class="keyword keyword_operator keyword_operator_symbolic keyword_operator_symbolic_rev">,</span><span> pDroppedOnLine</span>
<span>      </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">send</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;RefreshList&quot;</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">me</span><span> </span><span class="keyword keyword_control keyword_control_rev">in</span><span> </span><span class="constant constant_numeric constant_numeric_rev">0</span><span> </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">secs</span>
<span>   </span><span class="keyword keyword_control keyword_control_rev">end</span><span> </span><span class="keyword keyword_control keyword_control_rev">if</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> DragReorderDrop</span>

<span class="storage storage_type storage_type_handler storage_type_handler_rev">on</span><span> dragMove</span>
<span>   </span><span class="entity entity_name entity_name_handler entity_name_handler_rev">set</span><span> </span><span class="keyword keyword_control keyword_control_rev">the</span><span> </span><span class="support support_command support_command_rev">dragaction</span><span> </span><span class="keyword keyword_control keyword_control_rev">to</span><span> </span><span class="string string_quoted string_quoted_double string_quoted_double_transcript">&quot;move&quot;</span>
<span class="keyword keyword_control keyword_control_rev">end</span><span> dragMove</span>
</pre>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/10/01/livecode-datagrid-drag-drop-reordering/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/10/01/livecode-datagrid-drag-drop-reordering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>revIgniter Open Graph Protocol Library</title>
		<link>http://goulding.ws/2010/09/27/revigniter-open-graph-protocol-library/</link>
		<comments>http://goulding.ws/2010/09/27/revigniter-open-graph-protocol-library/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 00:25:42 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Server]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=265</guid>
		<description><![CDATA[For the past few weeks I&#8217;ve been playing with the revIgniter Web Application Framework whenever I get a chance. It&#8217;s a very impressive piece of work written by Ralf Bitter as a LiveCode Server implementation of the PHP CodeIgniter framework. One of the first things I was keen top implement is a Facebook API library. [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few weeks I&#8217;ve been playing with the <a href="http://revigniter.com/">revIgniter Web Application Framework</a> whenever I get a chance. It&#8217;s a very impressive piece of work written by Ralf Bitter as a LiveCode Server implementation of the PHP CodeIgniter framework.</p>
<p>One of the first things I was keen top implement is a Facebook API library. The starting point is the Open Graph Protocol that defines page metadata to give pages context. The Open Graph Protocol is what allows Facebook to show a nice title, image and description etc when you paste in a link.</p>
<p>If you are interested in the library or want to contribute to it and the facebook library coming next then check out the repo at github:<br />
<a href="http://github.com/montegoulding/revIgniter-open-graph">http://github.com/montegoulding/revIgniter-open-graph</a>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/09/27/revigniter-open-graph-protocol-library/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/09/27/revigniter-open-graph-protocol-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>revObjective 1.2 released!</title>
		<link>http://goulding.ws/2010/09/08/revobjective-1-2-released/</link>
		<comments>http://goulding.ws/2010/09/08/revobjective-1-2-released/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 23:04:57 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[IDE Mods]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=252</guid>
		<description><![CDATA[This new version of revObjective separates out the startup code from the main plugin along with a couple of minor user interface changes. A screencast showing the basics of working with revObjective is included below.]]></description>
			<content:encoded><![CDATA[<p>This new version of revObjective separates out the startup code from the main plugin along with a couple of minor user interface changes.</p>
<table cellpadding="3" width="100%" border="0">   <tr>     <td width="35" style="vertical-align: middle;">       <img src="http://goulding.ws/wp-content/uploads/2010/09/download.png" alt="{icon}">     </td>     <td>       <b>Download:</b> <a href="http://goulding.ws/download/revObjective-1.2.zip">revObjective 1.2</a> <small>(56.13 kB)</small>       <br /> <b>Description:</b> A behavior scripts and custom object manager.
To install just unzip the file and copy the contents into your user plugins directory.</td>  </tr> </table>
</p>
<p>A screencast showing the basics of working with revObjective is included below.<br />
<iframe width=502 height=413 frameborder="0" scrolling="no" src="http://www.screencast-o-matic.com/embed?sc=c6QiXmjMZ&#038;w=500&#038;v=3"></iframe></p>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/09/08/revobjective-1-2-released/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/09/08/revobjective-1-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>revObjective 1.1 released!</title>
		<link>http://goulding.ws/2010/09/07/revobjective/</link>
		<comments>http://goulding.ws/2010/09/07/revobjective/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 00:47:51 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[IDE Mods]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=220</guid>
		<description><![CDATA[A new behavior script and custom control manager plugin for Revolution. ]]></description>
			<content:encoded><![CDATA[<p>A new behavior script and custom control manager plugin for Revolution. </p>
<p>Features include:</p>
<ul>
<li>Adds an object placing menu button to the tools palette for both revObjective and standard Revolution object libraries.</li>
<li>Add, Delete, Clone, Place, Edit Script, Edit Controls, Name, Describe, Author, Version your custom controls.</li>
<li>Drag and drop objects onto your stacks from the object list.</li>
<li>Drag and drop revObjective files to and from the object list to share.</li>
<li>Searches stacks during standalone building and finds revObjective behaviors and copies over the behavior scripts in a way that is not file path dependant.</li>
<li>Packaged with revObjective are MacOS X Search Field, Integer Field, Decimal Number Field and Placeholder Text Field</li>
</ul>
<p><a href="http://goulding.ws/2010/09/07/revobjective/screen-shot-2010-09-07-at-12-10-44-pm/" rel="attachment wp-att-238"><img src="http://goulding.ws/wp-content/uploads/2010/09/Screen-shot-2010-09-07-at-12.10.44-PM-300x300.png" alt="" title="revObjective 1.1" width="300" height="300" class="aligncenter size-medium wp-image-238" /></a></p>
<table cellpadding="3" width="100%" border="0">   <tr>     <td width="35" style="vertical-align: middle;">       <img src="http://goulding.ws/wp-content/uploads/2010/09/download.png" alt="{icon}">     </td>     <td>       <b>Download:</b> <a href="http://goulding.ws/download/revObjective-1.2.zip">revObjective 1.2</a> <small>(56.13 kB)</small>       <br /> <b>Description:</b> A behavior scripts and custom object manager.
To install just unzip the file and copy the contents into your user plugins directory.</td>  </tr> </table>
</p>
<p>This plugin is donationware. If you decide it fits into your workflow then please consider donating to encourage further development.
<div id='misiek_paypal_button'>
<form method="post" action="https://www.paypal.com/cgi-bin/webscr" class='form'>
<input type="hidden" value="monte@sweattechnologies.com" name="business"/>
<input type="hidden" value="USD" name="currency_code"/>
<input type="hidden" value="2" name="no_shipping"/>
<input type="hidden" value="1" name="no_note"/>
<input type="hidden" value="IC_Sample" name="bn"/>
<input type="hidden" value="_xclick" name="cmd"/>
<input type="hidden" value="http://goulding.ws" name="return"/>
<input id="notify_url" type="hidden" value="http://goulding.ws/wp-content/plugins/misiek-paypal/misiek_paypal_ipn.php" name="notify_url"/>
<input type="hidden" value="Donate" name="item_name"/>
<div class='submit_btn' >
<input type="image" name="submit" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif"/>
</div>
</form>
</div>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/09/07/revobjective/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/09/07/revobjective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a disabled version of an image</title>
		<link>http://goulding.ws/2010/09/04/create-a-disabled-version-of-an-image/</link>
		<comments>http://goulding.ws/2010/09/04/create-a-disabled-version-of-an-image/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 23:48:11 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[handy scripts]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=217</guid>
		<description><![CDATA[After a correction on my greyscale formula in my last post from Mark on facebook I reviewed the results of my code and decided the disabled look wasn&#8217;t quite right. What I wanted was a a washed out looking version. This code and plugin modifies the alphaData of the image to 33% of the original [...]]]></description>
			<content:encoded><![CDATA[<p>After a correction on my greyscale formula in my last post from Mark on facebook I reviewed the results of my code and decided the disabled look wasn&#8217;t quite right. What I wanted was a a washed out looking version. This code and plugin modifies the alphaData of the image to 33% of the original and greys the imageData 15% more. You can modify the constants in the button code if you want different ratios. Here&#8217;s the code:</p>
<pre><code>
constant kTranslucencyRatio = 0.33
constant kGreyRatio = 0.15

on fadeImage pImageID
   local tAlphaData,tOffset,tWidth,tHeight,tAlpha
   lock screen
   put the width of pImageID into tWidth
   put the height of pImageID onto tHeight
   put the alphaData of pImageID into tAlphaData
   repeat with tOffset = 0 to tWidth *tHeight
      put charToNum(char tOffset of tAlphaData) into tAlpha
      -- handle cases of very low alpha for edge smoothing
      if round(tAlpha*kTranslucencyRatio) > 0 then
         put NumToChar(round(tAlpha*kTranslucencyRatio)) into char tOffset of tAlphaData
      end if
   end repeat
   set the alphaData of pImageID to tAlphaData
end fadeImage

on greyImage pImageID
   local tImageData, tRed, tGreen, tBlue, tGrey, tOffset,tWidth,tHeight
   lock screen
   put the width of pImageID into tWidth
   put the height of pImageID onto tHeight
   put the imageData of pImageID into tImageData
   repeat with tOffset = 0 to tWidth *tHeight * 4 step 4
      put charToNum(char tOffset + 2 of tImageData) into tRed
      put charToNum(char tOffset + 3 of tImageData) into tGreen
      put charToNum(char tOffset + 4 of tImageData) into tBlue
      put (30*tRed+59*tGreen+11*tBlue)/100 into tGrey
      put round(tGrey*kGreyRatio+tRed*(1-kGreyRatio)) into tRed
      put round(tGrey*kGreyRatio+tGreen*(1-kGreyRatio)) into tGreen
      put round(tGrey*kGreyRatio+tBlue*(1-kGreyRatio)) into tBlue
      put NumToChar(tRed) into char tOffset + 2 of tImageData
      put NumToChar(tGreen) into char tOffset + 3 of tImageData
      put NumToChar(tBlue) into char tOffset + 4 of tImageData
   end repeat
   set the imageData of pImageID to tImageData
end greyImage
</code></pre>
<p><table cellpadding="3" width="100%" border="0">
  <tr>
    <td width="35" style="vertical-align: middle;">
      <img src="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png" alt="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png">
    </td>
    <td>
      <b>download:</b> <a href="http://goulding.ws/?file_id=10">disableImage</a> <small>(1.38KB)</small>       <b>added:</b> 04/09/2010 <br />
<b>description:</b> This little plugin creates a disabled version of any selected images. Default settings are changing the translucency of the image to 33% of the original and greying it out 15% of the original.</td>
 </tr>
</table>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/09/04/create-a-disabled-version-of-an-image/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/09/04/create-a-disabled-version-of-an-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greyscale an image</title>
		<link>http://goulding.ws/2010/09/04/greyscale-an-image/</link>
		<comments>http://goulding.ws/2010/09/04/greyscale-an-image/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 12:04:10 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[handy scripts]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=199</guid>
		<description><![CDATA[Now that I&#8217;ve got all my icons into the image library (see my recursive image library creation post) I wanted to limit the number of times I need to go back to an image editor to mess with the original files to create variations. One of the most common variations for button icons is the [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;ve got all my icons into the image library (see my <a href="http://goulding.ws/2010/08/31/recursive-imag…-in-revolution/">recursive image library creation</a> post) I wanted to limit the number of times I need to go back to an image editor to mess with the original files to create variations. One of the most common variations for button icons is the greyed out disabled icon so I wrote a little rev plugin to greyscale the selected images. </p>
<p><a href="http://goulding.ws/2010/09/04/greyscale-an-image/screen-shot-2010-09-04-at-9-50-32-pm/" rel="attachment wp-att-203"><img src="http://goulding.ws/wp-content/uploads/2010/09/Screen-shot-2010-09-04-at-9.50.32-PM.png" alt="" title="Screen shot 2010-09-04 at 9.50.32 PM" width="183" height="62" class="aligncenter size-full wp-image-203" /></a></p>
<p>The plugin uses the following command:</p>
<pre><code>
on greyscale pImageID
   local tImageData, tRed, tGreen, tBlue, tGrey, tOffset,tWidth,tHeight
   lock screen
   put the width of pImageID into tWidth
   put the height of pImageID onto tHeight
   put the imageData of pImageID into tImageData
   repeat with tOffset = 0 to tWidth *tHeight * 4 step 4
      put charToNum(char tOffset + 2 of tImageData) into tRed
      put charToNum(char tOffset + 3 of tImageData) into tGreen
      put charToNum(char tOffset + 4 of tImageData) into tBlue
      --correction for better greyscale from Mark
      --put (tRed+tGreen+tBlue) div 3 into tGrey
      put (tRed*30+tGreen*59+tBlue*11) / 100 into tGrey
      put NumToChar(tGrey) into char tOffset + 2 of tImageData
      put NumToChar(tGrey) into char tOffset + 3 of tImageData
      put NumToChar(tGrey) into char tOffset + 4 of tImageData
   end repeat
   set the imageData of pImageID to tImageData
end greyscale
</code></pre>
<p><table cellpadding="3" width="100%" border="0">
  <tr>
    <td width="35" style="vertical-align: middle;">
      <img src="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png" alt="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png">
    </td>
    <td>
      <b>download:</b> <a href="http://goulding.ws/?file_id=9">greyscaleIt</a> <small>(1.19KB)</small>       <b>added:</b> 04/09/2010 <br />
<b>description:</b> This is a quick little plugin I wrote for converting selected images to greyscale. Handy for creating disabled icons from active ones.</td>
 </tr>
</table>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/09/04/greyscale-an-image/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/09/04/greyscale-an-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>revTools mod to add an object library menu</title>
		<link>http://goulding.ws/2010/08/31/revtools-mod-to-add-an-object-library-menu/</link>
		<comments>http://goulding.ws/2010/08/31/revtools-mod-to-add-an-object-library-menu/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:55:06 +0000</pubDate>
		<dc:creator>Monte Goulding</dc:creator>
				<category><![CDATA[IDE Mods]]></category>
		<category><![CDATA[LiveCode]]></category>
		<category><![CDATA[LiveCode Desktop]]></category>

		<guid isPermaLink="false">http://goulding.ws/?p=190</guid>
		<description><![CDATA[After having a play with the Image Library in Revolution I remembered seeing a cool concept in a screencast from Shao Sean where a button was added in a handy empty spot on the tools palette to pull up a menu for inserting custom objects into stacks. Here I have applied the idea to the [...]]]></description>
			<content:encoded><![CDATA[<p>After having a play with the Image Library in Revolution I remembered seeing a cool concept in a screencast from Shao Sean where a button was added in a handy empty spot on the tools palette to pull up a menu for inserting custom objects into stacks. Here I have applied the idea to the Object Library in Revolution.</p>
<p>Shao Sean&#8217;s original concept is seen <a href="http://www.screentoaster.com/watch/stUElQR0JLRFtXQV1UX19cVlVX/ssftpcontrol">here</a></p>
<div id="attachment_191" class="wp-caption aligncenter" style="width: 295px"><a href="http://goulding.ws/2010/08/31/revtools-mod-to-add-an-object-library-menu/revtools/" rel="attachment wp-att-191"><img src="http://goulding.ws/wp-content/uploads/2010/08/revTools-285x300.jpg" alt="" title="revTools" width="285" height="300" class="size-medium wp-image-191" /></a><p class="wp-caption-text">The object library menu button in action</p></div>
<p><table cellpadding="3" width="100%" border="0">
  <tr>
    <td width="35" style="vertical-align: middle;">
      <img src="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png" alt="http://goulding.ws/wp-content/plugins/downloads-manager/img/icons/download.png">
    </td>
    <td>
      <b>download:</b> <a href="http://goulding.ws/?file_id=8">revTools with Object Library Button</a> <small>(50.69KB)</small>       <b>added:</b> 31/08/2010 <br />
<b>description:</b> A mod to the revTools stack for copying custom objects into new stacks inspired by Shao Sean.</td>
 </tr>
</table>
<div>
<div style="float:right;"><!-- Wordbooker created FB tags --> <fb:share-button class="meta" type="button" href="http://goulding.ws/2010/08/31/revtools-mod-to-add-an-object-library-menu/" > </fb:share-button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://goulding.ws/2010/08/31/revtools-mod-to-add-an-object-library-menu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

