<?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>IDE &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/ide/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Thu, 02 Apr 2026 18:08:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Custom Control Rendering with DrawControlInLayoutEditor</title>
		<link>https://blog.xojo.com/2026/03/31/custom-control-rendering-with-drawcontrolinlayouteditor/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 15:22:00 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[2026r1]]></category>
		<category><![CDATA[DrawControlInLayoutEditor]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=16045</guid>

					<description><![CDATA[One of the notable additions in Xojo 2026 Release 1 is that the&#160;DrawControlInLayoutEditor&#160;event is now available for Desktop and iOS/Android projects, giving you more possibilities&#8230;]]></description>
										<content:encoded><![CDATA[
<p>One of the notable additions in Xojo 2026 Release 1 is that the&nbsp;<code>DrawControlInLayoutEditor</code>&nbsp;event is now available for Desktop and iOS/Android projects, giving you more possibilities over how your controls appear in the layout editor.</p>



<p>With this feature you can provide custom drawing for a control at design time, making it easier to visualize your UI without running the project.</p>



<p>If this sounds familiar, it&#8217;s because it brings Desktop and iOS/Android projects closer to what&#8217;s already possible in Web projects with&nbsp;<code>WebSDKUIControl</code>, where custom layout rendering has been available for some time.</p>



<h4 class="wp-block-heading">Why this matters</h4>



<p>Previously your custom Canvas controls would appear as generic placeholders, making it difficult to understand how they would look at runtime. Now you can:</p>



<ul class="wp-block-list">
<li>Render a preview of your control directly in the layout editor</li>



<li>Display dynamic or state-based visuals</li>



<li>Make custom controls much easier to work with at design time</li>
</ul>



<h4 class="wp-block-heading">How it works</h4>



<p>For Desktop projects, you can subclass&nbsp;<code>DesktopUIControl</code>&nbsp;and implement the&nbsp;<code>DrawControlInLayoutEditor</code>&nbsp;event. Your drawing code is executed by the IDE as it renders the control in the layout. For iOS and Android projects, this event is available on&nbsp;<code>MobileUIControl</code>.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You can also use this event directly with&nbsp;<code>DesktopCanvas</code>&nbsp;and&nbsp;<code>MobileCanvas</code>&nbsp;controls, so you can start drawing in&nbsp;<code>DrawControlInLayoutEditor</code>&nbsp;without needing to subclass anything.</p>



<p>This event gives you the flexibility to draw whatever you need—shapes, text, or even simplified representations of runtime content. For example, a custom media player control could display a play button and timeline, or a chart control could render a sample graph.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="661" src="https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-1024x661.png" alt="" class="wp-image-16049" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-1024x661.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-300x194.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-768x496.png 768w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-1536x991.png 1536w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-24-at-3.03.15-PM-2048x1322.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">A note about XojoScript limitations</h4>



<p>One important detail to keep in mind is that&nbsp;<code>DrawControlInLayoutEditor</code>&nbsp;runs using XojoScript. This allows the IDE to safely execute your drawing code at design time, but it also means not everything you&#8217;d typically expect to use in Xojo is available, especially when it comes to the graphics APIs.</p>



<p>In practice, most common drawing operations—such as shapes, lines, and text—work as expected. However, in some cases these graphics calls use a slightly different API, as is the case with <code>LinearGradientBrush</code>.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Also, because this runs as XojoScript, you cannot call other methods from within your <code>DrawControlInLayoutEditor</code>code. To access your control&#8217;s properties, you&#8217;ll need to use the built-in  <code>ColorProperty</code>, <code>BooleanProperty</code>, <code>IntegerProperty</code>, <code>DoubleProperty</code>, and <code>StringProperty</code> methods.</p>



<h4 class="wp-block-heading">Support for more Graphics</h4>



<p>In 2026r1, we&#8217;ve expanded the graphics capabilities available to&nbsp;<code>DrawControlInLayoutEditor</code>, building on what was previously supported for&nbsp;<code>WebSDKUIControl</code>. New additions include support for:</p>



<ul class="wp-block-list">
<li>LinearGradientBrush, PictureBrush, and ShadowBrush</li>



<li>LineDash, LineDashOffset, LineCap, LineJoin, and MiterLimit</li>



<li>Outline</li>



<li>Scale, Rotate, and Translate</li>



<li>SaveState, RestoreState</li>



<li>Color constants (Red, Green, Blue, Yellow etc.)</li>
</ul>



<p>Since XojoScript does not support the&nbsp;<code>Pair</code>&nbsp;type, the&nbsp;<code>LinearGradientBrush</code>&nbsp;API was adapted slightly:</p>



<pre class="wp-block-code"><code>Class LinearGradientBrush

  Sub Constructor()

  Sub AddStop(stop As Double, c As Color)

  Property StartPoint As Point
  Property EndPoint As Point

End Class</code></pre>



<p>The main difference is how the brush is constructed and how stops are added, without needing&nbsp;<code>Pair</code>. With this new API, you can turn a basic graph into something much more visually appealing.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="661" src="https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-1024x661.png" alt="" class="wp-image-16075" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-1024x661.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-300x194.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-768x496.png 768w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-1536x991.png 1536w, https://blog.xojo.com/wp-content/uploads/2026/03/Screenshot-2026-03-25-at-3.00.07-PM-2048x1322.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">Turning off this feature</h4>



<p>While many may prefer custom rendering for custom controls, it can become a bottleneck when a large number of controls are rendering content. If you prefer a less resource-intensive experience, you can disable this behavior in Settings → Layout by enabling the Static Rendering option.</p>



<h4 class="wp-block-heading">Finally</h4>



<p>With&nbsp;<code>DrawControlInLayoutEditor</code>&nbsp;now available for Desktop and Mobile projects, you can take advantage of the same benefits Web projects have enjoyed for years. Be sure to check out the new DrawControlInLayoutEditor example project, adapted from the WebSDK → CustomButton example. We hope you enjoy designing and previewing your custom controls with this new event—and yes, it also works in Libraries!</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sandboxing, Hardened Runtime and Notarization arrives to the Xojo IDE</title>
		<link>https://blog.xojo.com/2024/12/10/sandboxing-hardened-runtime-and-notarization-arrives-to-the-xojo-ide/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 10 Dec 2024 16:37:15 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[2024r4]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Hardened Runtime]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Mac App Store]]></category>
		<category><![CDATA[Notarization]]></category>
		<category><![CDATA[Sandboxing]]></category>
		<category><![CDATA[Xcode]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13966</guid>

					<description><![CDATA[Starting with Xojo 2024r4 it is possible to apply Sandboxing, Hardened Runtime and Notarization on macOS apps built from the Xojo IDE on macOS and&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Starting with Xojo 2024r4 it is possible to apply Sandboxing, Hardened Runtime and Notarization on macOS apps built from the Xojo IDE on macOS and Windows.</p>



<span id="more-13966"></span>



<p>These new options are available in the Inspector Panel when selecting the Sign step available under Build Settings &gt; macOS.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" width="604" height="626" src="https://blog.xojo.com/wp-content/uploads/2024/10/Sign-SandboxingOptions.png" alt="" class="wp-image-13967" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/Sign-SandboxingOptions.png 604w, https://blog.xojo.com/wp-content/uploads/2024/10/Sign-SandboxingOptions-289x300.png 289w" sizes="(max-width: 604px) 100vw, 604px" /></figure>
</div>


<h2 class="wp-block-heading">Requirements</h2>



<p>In order to apply Sandboxing, Hardened Runtime and go through the Notarization process for your macOS app, you will need to make sure that the following is installed on your Mac:</p>



<ul class="wp-block-list">
<li>macOS 11.3 or later.</li>



<li>Xcode 13 or later &#8211; Run it at least one time and make sure that all its required components and SDKs are installed.</li>



<li>Apple Developer ID &#8211; This needs to be a paid Apple Developer membership. Also, make sure you have your Developer certificates installed in the Mac.</li>



<li>A working Internet connection.</li>
</ul>



<h2 class="wp-block-heading">Sandboxing</h2>



<p>With the Sandboxing switch enabled, you can access the associated editor in order to enable the appropriate entitlements for the purposes of the app.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1012" height="1252" src="https://blog.xojo.com/wp-content/uploads/2024/10/Sandboxing-Editor.png" alt="" class="wp-image-13968" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/Sandboxing-Editor.png 1012w, https://blog.xojo.com/wp-content/uploads/2024/10/Sandboxing-Editor-242x300.png 242w, https://blog.xojo.com/wp-content/uploads/2024/10/Sandboxing-Editor-828x1024.png 828w, https://blog.xojo.com/wp-content/uploads/2024/10/Sandboxing-Editor-768x950.png 768w" sizes="auto, (max-width: 1012px) 100vw, 1012px" /></figure>
</div>


<p>The Sandboxing settings will be applied even when the app is run from the IDE (debug mode). That means that Sandboxing can be applied both using an Ad-Hoc Certificate or the user Developer ID Application Certificate.</p>



<h2 class="wp-block-heading">Hardened Runtime</h2>



<p>When the Hardened Runtime switch is enabled, you will be able to access the associated editor in order to set the appropriate hardening entitlements for the purposes of the app.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1140" height="1400" src="https://blog.xojo.com/wp-content/uploads/2024/10/HardenedRuntime-Editor.png" alt="" class="wp-image-13969" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/HardenedRuntime-Editor.png 1140w, https://blog.xojo.com/wp-content/uploads/2024/10/HardenedRuntime-Editor-244x300.png 244w, https://blog.xojo.com/wp-content/uploads/2024/10/HardenedRuntime-Editor-834x1024.png 834w, https://blog.xojo.com/wp-content/uploads/2024/10/HardenedRuntime-Editor-768x943.png 768w" sizes="auto, (max-width: 1140px) 100vw, 1140px" /></figure>
</div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Note:</strong> The Hardened Runtime will not be applied when the project is run from the IDE.</p>
</blockquote>



<p>When building the app, if Hardened Runtime is enabled and no Developer ID Application value is entered in the Developer ID field (that is, signed as ad-hoc), then the following dialog will be shown and the build process will stop.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="744" height="688" src="https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID.png" alt="" class="wp-image-13970" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID.png 744w, https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID-300x277.png 300w" sizes="auto, (max-width: 744px) 100vw, 744px" /></figure>
</div>


<h2 class="wp-block-heading">Notarization</h2>



<p>When the Notarization switch is enabled, it will automatically enable the Hardened Runtime Switch if it is not already enabled (because the Notarization process requires Hardened Runtime!).</p>



<p>With the Notarization switch enabled, you will be able to access the Setup dialog in order to setup the app-specific password required by this process to properly work. Creating this password only needs to be done one time, because it will be saved to the computer keychain and even synced via iCloud to others Macs from the same user (that is, iCloud account).</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1524" height="792" src="https://blog.xojo.com/wp-content/uploads/2024/10/App-PasswordSetup.png" alt="" class="wp-image-13971" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/App-PasswordSetup.png 1524w, https://blog.xojo.com/wp-content/uploads/2024/10/App-PasswordSetup-300x156.png 300w, https://blog.xojo.com/wp-content/uploads/2024/10/App-PasswordSetup-1024x532.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/10/App-PasswordSetup-768x399.png 768w" sizes="auto, (max-width: 1524px) 100vw, 1524px" /></figure>
</div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Note:</strong> As with the Hardened Runtime feature, the Notarization process will not take place if the project is run from the IDE.</p>
</blockquote>



<p>When building the app, if Notarization is enabled and no Apple Development value is entered in the Developer ID field, then the following dialog will be shown and the build process will stop.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="744" height="688" src="https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID-1.png" alt="" class="wp-image-13972" srcset="https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID-1.png 744w, https://blog.xojo.com/wp-content/uploads/2024/10/MissingDeveloperID-1-300x277.png 300w" sizes="auto, (max-width: 744px) 100vw, 744px" /></figure>
</div>


<p>The Notarization process does require an active network connection to the Internet because it needs to talk with the Apple Service responsible of checking the app bundle contents. This means that the required time to complete the process will vary depending of your Internet connection speed and the load or availability of the Apple Notarization service itself.</p>



<h2 class="wp-block-heading">Custom User Entitlements</h2>



<p>Besides the entitlements you may have selected in the Sandboxing and Hardened Runtime editors, you may need to add other ones not available in these editors. This is something you can do through the User Entitlements field (.Plist file format). Such custom entitlements will be merged with the ones selected in the editors. If the custom entitlements entries collide with the ones selected in the editors, then the ones from the editors will be applied, discarding the duplicated ones found in the provided file.</p>



<h2 class="wp-block-heading">Building macOS apps… from Windows</h2>



<p>When the macOS app is built from Windows, and Sandboxing, Hardened Runtime or Notarization is applied (and optionally custom entitlements), then the final compressed archive will include all the required supporting files including the shell script required to run from a macOS computer to complete the signing process using the provided Apple Developer certificate (except the option to create an App-specific password for the Notarization step, because that can&#8217;t be done from Windows).</p>



<h2 class="wp-block-heading">Summary</h2>



<p>As you can see, Xojo 2024r4 streamlines the ability to apply Sandboxing, Hardened Runtime and Notarization to your macOS apps, and even run them as sandboxed from the IDE, so you can get better feedback during the debugging process to everything related with the access to files, network user, camera access, etc. That is, the same behaviour your users will have once they run the app downloaded from the Mac App Store or from your website.</p>



<p>See detailed steps in the <a href="https://documentation.xojo.com/topics/application_deployment/desktop/macos.html">Xojo Documentation</a>. If you need to know about what Sandboxing, Hardened Runtime or Notarization means, please take a look to the &#8220;<a href="https://blog.xojo.com/2024/08/22/macos-apps-from-sandboxing-to-notarization-the-basics/">macOS Apps: From Sandboxing to Notarization, The Basics</a>&#8221; blog post.</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p><strong>More in this series on distributing Mac apps:</strong></p>



<ul class="wp-block-list">
<li><a href="https://blog.xojo.com/2024/12/10/sandboxing-hardened-runtime-and-notarization-arrives-to-the-xojo-ide/" target="_blank" rel="noreferrer noopener">Sandboxing, Hardened Runtime and Notarization arrives to the Xojo IDE</a></li>



<li><a href="https://blog.xojo.com/2024/08/22/macos-apps-from-sandboxing-to-notarization-the-basics/" target="_blank" rel="noreferrer noopener">macOS Apps: From Sandboxing to Notarization, The Basics</a></li>



<li><a href="https://blog.xojo.com/2025/01/14/uploading-macos-builds-to-app-store-connect/" target="_blank" rel="noreferrer noopener">Uploading macOS Builds to App Store Connect</a></li>



<li><a href="https://blog.xojo.com/2025/01/30/provisioning-profiles-for-macos-apps/">Provisioning Profiles for macOS Apps</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>5 Xojo IDE Tips to Improve Productivity in Large Projects</title>
		<link>https://blog.xojo.com/2024/09/04/five-xojo-ide-tips-to-improve-productivity-in-large-projects/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Wed, 04 Sep 2024 16:25:49 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Code Editor]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Navigator]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13460</guid>

					<description><![CDATA[When you&#8217;re working on small to medium-sized projects, Xojo&#8217;s default IDE window view is probably all you need: all the elements of the project are&#8230;]]></description>
										<content:encoded><![CDATA[
<p>When you&#8217;re working on small to medium-sized projects, Xojo&#8217;s default IDE window view is probably all you need: all the elements of the project are in plain view and you can easily switch between them. However, things inevitably get more complex when dealing with larger projects. You may need to locate and edit several related items, larger projects likely include multiple methods, events, properties and modules, all of which may be be in their own folders created to organize their functionality or components.</p>



<p>In this article we will highlight several functions provided by the Xojo IDE that allow you to speed up and improve productivity in your large projects.</p>



<span id="more-13460"></span>



<h2 class="wp-block-heading">Filter the Navigator</h2>



<p>The Navigator <a href="https://documentation.xojo.com/getting_started/using_the_ide/navigator.html#getting-started-using-the-ide-navigator-filter" target="_blank" rel="noreferrer noopener">filter</a> field allows you to limit the number of visible items in a section to those matching the typed text. This can filter a list to include only the objects used, such as controls, or even items that match the names of events, methods, properties, constants, etc. -practically any of the items added to the project except the code itself.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1035" height="794" src="https://blog.xojo.com/wp-content/uploads/2024/08/Filter.png" alt="" class="wp-image-13461" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/Filter.png 1035w, https://blog.xojo.com/wp-content/uploads/2024/08/Filter-300x230.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/Filter-1024x786.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/08/Filter-768x589.png 768w" sizes="auto, (max-width: 1035px) 100vw, 1035px" /></figure>
</div>


<p>If you need to keep all elements of your project visible while browsing through matching results, it is preferable to use the standard search which you can access using Command + F (on macOS) or Control + F (Windows and Linux).</p>



<h2 class="wp-block-heading">Going Directly to a Project Item</h2>



<p>However, there are many times when you know the exact name of the item you want to select/display; whether it&#8217;s the name of a method, event, or even a control itself. In these cases, it is much quicker to use the Project > Go to Location option (Command + Shift + L on macOS; Control + Shift + L on Windows and Linux).</p>



<p>When you select this command, a dialog box will appear where you can type the path of the item you want to select. So, for example, if you want to go to the method &#8220;myMethod&#8221; found in the window &#8220;MyWindow&#8221; you would type: &#8220;MyWindow.myMethod&#8221;. The text field in that dialog offers auto-completion which means that, in most cases, you will only have to start typing the name of the main item and use the Tab key to access the menu displaying all the matches to select any sub-item you wish to select.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="868" height="474" src="https://blog.xojo.com/wp-content/uploads/2024/08/GoToLocation.png" alt="" class="wp-image-13462" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/GoToLocation.png 868w, https://blog.xojo.com/wp-content/uploads/2024/08/GoToLocation-300x164.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/GoToLocation-768x419.png 768w" sizes="auto, (max-width: 868px) 100vw, 868px" /></figure>
</div>


<p>Additionally, and unlike the filter field, the hierarchy of the project elements will remain visible in the Navigator as they are.</p>



<h2 class="wp-block-heading">Powerful Searches</h2>



<p>This is undoubtedly the most powerful option that you can access using the keyboard shortcut Command + F (on macOS) or Ctrl + F (Windows, Linux), or by clicking on the magnifying glass icon in the bottom bar of the IDE.</p>



<p>Once you access the Find panel and start typing in the search field, the list below will start to populate with all the matches (by default); but you will probably find it more useful in larger projects to have the list refresh after you press the Return key. To do this, go to the Preferences window and, in the General section, change the &#8220;Find/Filter results appear&#8221; option to &#8220;After pressing Enter/Return&#8221;.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1624" height="1040" src="https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference.png" alt="" class="wp-image-13463" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference.png 1624w, https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference-300x192.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference-1024x656.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference-768x492.png 768w, https://blog.xojo.com/wp-content/uploads/2024/08/FindFilterPreference-1536x984.png 1536w" sizes="auto, (max-width: 1624px) 100vw, 1624px" /></figure>
</div>


<p>While by default the Find window displays matches found throughout the entire project, there are times when you may want to narrow it down to either the selected item, including any subclasses that may be based on that item, or simply the item in question; you can do this by using the following buttons:</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="188" height="74" src="https://blog.xojo.com/wp-content/uploads/2024/08/SearchOptions.png" alt="" class="wp-image-13464"/></figure>
</div>


<p>Another added advantage of the search area is that it keeps a history of previously performed searches, thus speeding up the process when you need to revisit a new group of elements. In addition, you can change from simple (textual) searches to the more powerful use of regular expressions (RegEx) when looking for elements in your project.</p>



<p>Of course, this same panel also allows you to replace the searched text with other text on all the matches shown… but be careful before confirming. Make sure that they truly apply to the elements you want and not to others just because they start with the same word entered in the search field!</p>



<h2 class="wp-block-heading">Bookmarks: Sitting There for You</h2>



<p>In many cases, you will use the above systems to edit the code in a given method or event; especially if these are areas of code that you visit frequently. If that is the case, then you will find <a href="https://documentation.xojo.com/getting_started/using_the_ide/code_editor.html#getting-started-using-the-ide-code-editor-breakpoints-and-bookmarks">Bookmarks</a> a really useful feature.</p>



<p>You can add or remove Bookmarks in the code editor by accessing the contextual menu from the currently selected line of code. You can also add as many Bookmarks as you need to a single code block, which is especially useful for large blocks of code on a given method, for example.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1544" height="1048" src="https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark.png" alt="" class="wp-image-13465" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark.png 1544w, https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark-300x204.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark-1024x695.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark-768x521.png 768w, https://blog.xojo.com/wp-content/uploads/2024/08/AddBookmark-1536x1043.png 1536w" sizes="auto, (max-width: 1544px) 100vw, 1544px" /></figure>
</div>


<p>Once you have all your Bookmarks defined, you will simply need to select the menu option Bookmarks > Show All to have them displayed in the search area where you can select them.</p>



<p><strong>Tip:</strong> Use the Preferences &gt; General &gt; Menu &gt; Edit Menu Shortcuts option to assign a keyboard shortcut to the Bookmarks &gt; Show All command. This will make it quicker to update the bookmarks listed in the Search area when they are not listed.</p>



<h2 class="wp-block-heading">Tabs and Workspaces</h2>



<p>Sometimes it is preferable to have several items in view when working on a large project, so that you can switch between them quickly; or to have the Layout Editor and the Code Editor for the same object. This is where Tabs and <a href="https://documentation.xojo.com/getting_started/using_the_ide/introduction.html#getting-started-using-the-ide-introduction-workspace" data-type="link" data-id="https://documentation.xojo.com/getting_started/using_the_ide/introduction.html#getting-started-using-the-ide-introduction-workspace" target="_blank" rel="noreferrer noopener">Workspaces</a> are extremely useful.</p>



<p>By default, the Xojo IDE window has a single tab that displays all the elements added to the project, but you can open as many tabs as you need, and these tabs will be preserved when you close and reopen the same project, just as Workspaces will.</p>



<p>So, if you need to focus on a particular module or class, you can double-click on the item in the Navigator to open it in a new tab. Want more clarity, especially if your tabs bar is overcrowded? In that case, you can drag the tab in question outside the window boundaries to open it as a new IDE window (a new Workspace). Of course, you can also use keyboard shortcuts to move between open tabs in a single IDE window.</p>



<p>As you can see, Workspaces are new IDE windows for a single project. In fact, you can have as many as you need using the New &gt; Workspace menu option. However, this option is only recommended if your setup has a high-resolution screen or multiple screens connected to your computer.</p>



<h2 class="wp-block-heading">Conclusions</h2>



<p>As we have seen, using filtering, searches, bookmarks, tabs and even the &#8220;Go To Location&#8221; command, among other options mentioned, will greatly speed up navigation when you are working on large projects.</p>



<p>What other IDE techniques do you use? Share them with us on the Xojo <a href="https://forum.xojo.com/">Forum</a> or on social media.</p>



<p>Happy programming with Xojo!</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Finding the Right Example Project</title>
		<link>https://blog.xojo.com/2023/12/12/finding-the-right-example-project/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 12 Dec 2023 14:30:00 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[2023r4]]></category>
		<category><![CDATA[Example Projects]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12299</guid>

					<description><![CDATA[One of the best resources for Xojo users is the more than 140 example projects available within the Xojo IDE. Find them in Xojo by choosing File > New Project and then clicking on Examples in the New Project window. Starting with Xojo 2023 Release 4, it will be even easier to find that specific example you need with new descriptions and filtering options.]]></description>
										<content:encoded><![CDATA[
<p>One of the best resources for Xojo users is the more than 140 example projects available within the Xojo IDE. Find them in Xojo by choosing File &gt; New Project and then clicking on Examples in the New Project window. Starting with Xojo 2023 Release 4, it will be even easier to find that specific example you need with new descriptions and filtering options.</p>



<p>To start, when an example is selected in the New Project window you&#8217;ll find a description of that example. Plus we&#8217;ve included what kind of project it is (Console, Desktop, Mobile, Web), what platform it is intended for (Android, iOS, Linux, macOS, Raspberry Pi, Windows) and the path (location) for the example in the Examples hierarchy.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="717" src="https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter-1024x717.png" alt="Xojo New Project Window displaying Example and new Description and search abilities." class="wp-image-12300" style="width:914px;height:auto" srcset="https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter-1024x717.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter-300x210.png 300w, https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter-768x538.png 768w, https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter-1536x1076.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/12/ExampleProjectsFilter.png 1762w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Xojo New Project window</figcaption></figure>
</div>


<p>When typing in the search field the list of examples will be filtered not only by those matching the example project name, but also the description. So, for example, when the word &#8220;Canvas&#8221; is typed in the search field, the list will display projects that have the word &#8220;Canvas&#8221; in the file names and also in the description.</p>



<p>But in order to narrow down the matching results even more, it is now possible to filter examples using different criteria like Kind (Console, Desktop, Mobile, Web) or Platform (Android, iOS, Linux, macOS, Raspberry Pi, Windows). If you are interested in all the example projects showing how to use the Canvas specifically for the Desktop platform, we only need to use that filter and… voilà!</p>



<figure class="wp-block-video"><video height="506" style="aspect-ratio: 766 / 506;" width="766" controls src="https://blog.xojo.com/wp-content/uploads/2023/12/ExamplesIDE.mp4"></video></figure>



<p>We hope that our users will appreciate this minor but substantial improvement when it come time to dig into the increasing number of available example projects in Xojo. Visit the <a href="https://documentation.xojo.com/getting_started/example_projects/index.html">Xojo Documentation</a> to learn more.</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2023/12/ExamplesIDE.mp4" length="653685" type="video/mp4" />

			</item>
		<item>
		<title>Small and Simple Changes to Speed Up the Xojo IDE</title>
		<link>https://blog.xojo.com/2023/12/12/small-and-simple-changes-to-speed-up-the-xojo-ide/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 12 Dec 2023 14:30:00 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[2023r4]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Navigator]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12266</guid>

					<description><![CDATA[At times, we encounter minor yet impactful changes stemming from seemingly uncomplicated issues. In specific instances, addressing these modest complexities may necessitate minimal adjustments, yet yield substantial outcomes.]]></description>
										<content:encoded><![CDATA[
<p>At times, we encounter minor yet impactful changes stemming from seemingly uncomplicated issues. In specific instances, addressing these modest complexities may necessitate minimal adjustments, yet yield substantial outcomes.</p>



<h3 class="wp-block-heading">Optimizing the Navigator</h3>



<p>In Xojo 2023r4 we tackled a performance issue impacting the navigator&#8217;s speed, particularly during scrolling. Upon closer examination, we identified that the substantial consumption of resources and time was attributed to the rendering of these basic and compact navigator icons.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="122" height="259" src="https://blog.xojo.com/wp-content/uploads/2023/12/SmallIcons.png" alt="" class="wp-image-12267"/></figure>



<p>What was initially intended as a straightforward drawing of an icon, ended up becoming a needlessly intricate element that significantly impeded overall speed.</p>



<h3 class="wp-block-heading">The Before and After</h3>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="426" height="240" src="https://blog.xojo.com/wp-content/uploads/2023/12/Xojo2023r3_Scrolling.gif" alt="" class="wp-image-12279 size-full"/></figure><div class="wp-block-media-text__content">
<p>In 2023r3, a noticeable lag occurs during scrolling, with the thumbtrack failing to keep pace with the mouse movement.</p>
</div></div>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="426" height="240" src="https://blog.xojo.com/wp-content/uploads/2023/12/Xojo2023r4_Scrolling-1.gif" alt="" class="wp-image-12281 size-full"/></figure><div class="wp-block-media-text__content">
<p>In 2023r4, scrolling has been significantly improved and the thumbtrack now maintains synchronization with the mouse movement, resulting in a smoother experience.</p>
</div></div>



<h3 class="wp-block-heading">What other benefits does this change offer?</h3>



<p>Having pinpointed the root cause of this issue, we proceeded to implement updates across various instances where the needless drawing persisted. We identified a similar occurrence when rendering command bar icons affecting every keystroke in the code editor and movement in the layout editor. Refactoring this aspect is expected to enhance performance in these specific areas of the IDE.  We trust that you will find the IDE more enjoyable following these small and simple changes.</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo IDE: WebListBox Preview</title>
		<link>https://blog.xojo.com/2022/12/13/xojo-ide-weblistbox-preview/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 13 Dec 2022 14:34:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[WebListBox]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11045</guid>

					<description><![CDATA[Xojo 2022r4 includes a much improved WebListBox preview in the Layout Editor. Now you can get a closer look at the control when you project is run in a web browser.]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2022r4 includes a much improved <a href="https://documentation.xojo.com/api/user_interface/web/weblistbox.html#weblistbox">WebListBox</a> preview in the Layout Editor. Now you can get a closer, truer look at your control when your project is run in a web browser.</p>



<span id="more-11045"></span>



<p>Prior to Xojo 2022r4 the preview for WebListBox instances was a mere gray box with a small icon inside. This isn&#8217;t very helpful for visualizing how your design will look when the control is filled with data.</p>



<p>Now, you will get a preview that more closely resembles to the one provided by the ListBox in Desktop projects. That means the WebListBox preview will display the columns adjusted to the provided columns width and also the initial values (if any). Additionally, WebListBox will react to the change of width in the Layout Editor.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1024" height="827" src="https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxBefore-1024x827.png" alt="" class="wp-image-11046" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxBefore-1024x827.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxBefore-300x242.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxBefore-768x620.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxBefore.png 1340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<figure class="wp-block-image is-style-default"><img loading="lazy" decoding="async" width="1024" height="683" src="https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview-1024x683.png" alt="" class="wp-image-11047" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview-1024x683.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview-300x200.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview-768x513.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview-1536x1025.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/12/WebListBoxPreview.png 1960w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>This improvement gives you a much better idea on how your WebListBox will look when the app is run in a browser. </p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Build Settings: New macOS Minimum Version and Windows Supported Versions</title>
		<link>https://blog.xojo.com/2022/12/13/build-settings-new-macos-minimum-version-and-windows-supported-versions/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 13 Dec 2022 14:30:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11040</guid>

					<description><![CDATA[Starting with Xojo 2022r4 we've helped you clarify the minimum operating system needed for your compiled desktop apps to run on. You will be able to set the macOS minimum version required to run your compiled apps. Plus updated "Runs On" build settings for Windows 10/11 and Windows 7/8. compatibility. Continue reading to learn how!]]></description>
										<content:encoded><![CDATA[
<p>Starting with Xojo 2022r4 we&#8217;ve helped you clarify the minimum operating system needed for your compiled desktop apps to run on. You will be able to set the macOS minimum version required to run your compiled apps. Plus updated &#8220;Runs On&#8221; build settings for Windows 10/11 and Windows 7/8 compatibility. Continue reading to learn how!</p>



<span id="more-11040"></span>



<h2 class="wp-block-heading">macOS Minimum Version</h2>



<p>This new build setting is available in the Build Settings panel for desktop projects when the macOS entry is selected in the Navigator panel. It defaults to macOS 10.14.0 if nothing is entered; that is the minimum macOS version supported by Xojo as stated in the <a href="https://documentation.xojo.com/resources/system_requirements_for_current_release.html">Minimum Requirements</a> section of the Xojo documentation for deployed apps.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1024" height="422" src="https://blog.xojo.com/wp-content/uploads/2022/12/macOSMinimum-1024x422.png" alt="" class="wp-image-11041" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/macOSMinimum-1024x422.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/macOSMinimum-300x124.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/macOSMinimum-768x317.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/macOSMinimum.png 1208w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>But you  can certainly set a lower value in that field. Though you do so at your own risk since it will be below the minimum macOS version supported by Xojo. We know that many solutions out there will run without problems if you set a lower macOS version, but in more complex projects, or depending on the controls or framework functionality your app may be using, it may not work as you hope! Thus, make sure to test your macOS apps thoroughly when setting the minimum macOS version lower than the current supported one.</p>



<p>What happens if you set the macOS minimum version to a value higher than the one used by the computer you are using for developing and debugging your solutions from the IDE? Let&#8217;s say you are running Xojo under macOS 12.6.2 but you intend to build the final app for macOS 13.x. In that case, you&#8217;re safe! When debugging the app from the IDE the value entered in the macOS Minimum version Build Setting will have no effect, so you will continue debugging your code without problems.</p>



<p>It is only when you <strong>build</strong> the final app, using for example macOS 13.0 as the macOS Minimum Version in the Build Settings, and try to run it from a lower macOS version when you (or your users) will see a dialog similar to this one:</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="300" height="292" src="https://blog.xojo.com/wp-content/uploads/2022/12/Screenshot-2022-12-12-at-12.02.19-300x292.png" alt="" class="wp-image-11042" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/Screenshot-2022-12-12-at-12.02.19-300x292.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/Screenshot-2022-12-12-at-12.02.19.png 744w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<h2 class="wp-block-heading">Build Settings for Windows</h2>



<p>This updated build setting is available in the Build Settings panel for desktop projects when the Windows entry is selected in the Navigator panel. Now, the ability to set the app&#8217;s compatibility with Windows 10 and Windows 11 is set out very clearly. Additionally, compatibility with Windows 7 and Windows 8 is still possible but clearly marked as not officially Xojo supported versions.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="604" height="686" src="https://blog.xojo.com/wp-content/uploads/2022/12/WindowBuildSettings.png" alt="" class="wp-image-11043" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/WindowBuildSettings.png 604w, https://blog.xojo.com/wp-content/uploads/2022/12/WindowBuildSettings-264x300.png 264w" sizes="auto, (max-width: 604px) 100vw, 604px" /></figure>
</div>


<p>So, as you can see, now it is possible to set more clearly the minimum OS versions both for your macOS and Windows apps using Xojo!</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Enumeration Enhancements</title>
		<link>https://blog.xojo.com/2021/07/22/enumeration-enhancements/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Thu, 22 Jul 2021 11:48:00 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[Enumeration]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8855</guid>

					<description><![CDATA[Xojo 2021r2 introduces a couple of enhancements to Enumerations in Xojo. The enumeration editor now shows a preview of what the value will be so there's no more guessing or counting. In addition, we've added a new Binary option which allows you to automatically create sets that aren't mutually exclusive. ]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2021r2 introduces a couple of enhancements to <a href="https://documentation.xojo.com/getting_started/using_the_xojo_language/enumerations.html">enumerations</a> in Xojo. The enumeration editor now shows a preview of what the value will be so there&#8217;s no more guessing or counting.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2021/07/image-1.png" alt="" class="wp-image-8857" width="156" height="240" srcset="https://blog.xojo.com/wp-content/uploads/2021/07/image-1.png 276w, https://blog.xojo.com/wp-content/uploads/2021/07/image-1-195x300.png 195w" sizes="auto, (max-width: 156px) 100vw, 156px" /><figcaption>Example of Enumeration with default values showing</figcaption></figure></div>



<p>In addition, we&#8217;ve added a new Binary option which allows you to automatically create sets that aren&#8217;t mutually exclusive. That is, the values of the elements are automatically powers of two and can have binary operations applied to them:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2021/07/image-3.png" alt="" class="wp-image-8859" width="162" height="236" srcset="https://blog.xojo.com/wp-content/uploads/2021/07/image-3.png 284w, https://blog.xojo.com/wp-content/uploads/2021/07/image-3-206x300.png 206w" sizes="auto, (max-width: 162px) 100vw, 162px" /><figcaption>Example of Binary Enumeration default values</figcaption></figure></div>



<p>This new feature comes with the requirement that they be placed inside a Module because they&#8217;re rendered into your project as a Class. The reason for this is that these classes automatically have some helper methods on them to make working with the binary data easier.</p>



<ul class="wp-block-list"><li>An Operator_Convert which takes an Integer:<br><code>Var x as MyEnum = 3 // MyEnum.George, MyEnum.John</code><br></li><li>&#8230;as well as one that returns an integer:<br><code>Var y as Integer = MyEnum.George // y = 2</code><br></li><li>Automatic conversion to and from Integer:<br><code>Var x as Integer = MyEnum.Ringo // x = 4</code><br></li><li>Binary operations And, Or and Xor:<br><code>Var x as MyEnum = MyEnum.Paul Or MyEnum.Mary // x has a value of 40</code><br></li><li>Equality operations so you can compare the internal value of one instance to another:<br><code>Var x as MyEnum = MyEnum.Paul<br>Var y as MyEnum = MyEnum.Ringo<br>If x = y Then</code><br></li><li>Contains helper method:<br><code>If x.Contains(MyEnum.Peter) Then</code><br></li><li>A Read-Only Value property so you can see the internal value in the debugger</li></ul>



<p>Just like regular Enumerations, the editor also allows you to explicitly specify the value of an element:</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2021/07/image-5.png" alt="" class="wp-image-8862" width="157" height="226" srcset="https://blog.xojo.com/wp-content/uploads/2021/07/image-5.png 338w, https://blog.xojo.com/wp-content/uploads/2021/07/image-5-209x300.png 209w" sizes="auto, (max-width: 157px) 100vw, 157px" /></figure></div>



<p>This is so instead of having to write: <br><code>Var x as MyEnum = MyEnum.George Or MyEnum.John Or MyEnum.Ringo Or MyEnum.Paul</code><br><br>You can simply write:<br><code>Var x as MyEnum = MyEnum.TheBeatles</code><br><br>We hope that you&#8217;ll enjoy this feature as much as we do!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Your Path Forward with API 2.0</title>
		<link>https://blog.xojo.com/2019/10/29/your-path-forward-with-api-2-0/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 20:50:22 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=6184</guid>

					<description><![CDATA[You might be assuming you absolutely must upgrade to API 2.0 right now, but that’s not the case.  We have designed it so that you have tremendous flexibility in terms of what and when and even if you move to API 2.0.]]></description>
										<content:encoded><![CDATA[
<p>For anything to be easy to learn and use, it needs to be as intuitive and consistent as possible. Over the past 20+ years, many APIs in Xojo have been added that were not intuitive or consistent. While longtime users have gotten used to them, they can make Xojo difficult to adopt for new users. API 2.0 is our solution.</p>



<p>We did this by creating a sensible set of API naming guidelines and then applying them to our existing APIs. APIs that followed the guidelines were left alone. Those that did not, were changed to meet them. Hindsight, as they say, is 20/20. Looking back, it would have been great had we established these guidelines way back in 1998 before we shipped v1.0 but we didn&#8217;t and the fact that we didn&#8217;t is no reason to avoid it now. We always plan for a long future ahead of us and thus have to be willing to make changes to make that future possible. That we are still here 20+ years later suggests we are doing something right.</p>



<p>If you are one of those long time users who has grown accustomed to the inconstancies that API 2.0 addresses, you might be wondering if there&#8217;s any value for you in using it. The answer is absolutely yes! While it will take a little time for you to get used to the new APIs, what you will find is that you become increasingly more productive because they are so consistent. You will find (as I did) that you can guess at what the API is and likely be correct. I personally made 95% of the Language Reference updates for API 2.0. The documentation wiki does not auto-complete so I had to double-check all the code I was updating. In no time I found that I rarely made errors because API 2.0 is so consistent. You will absolutely see productivity gains once you have used it for a short time.</p>



<p>While API 2.0 is a major step forward for Xojo in terms of intuitiveness and consistency, for those of you with large projects you may feel like migrating is a daunting task. Depending on size, there can be anywhere from a handful to thousands of deprecation warnings to deal with, each being a particular change that could be made.</p>



<p>You might be assuming you absolutely must upgrade your projects but that’s not necessarily the case. How much of a project you update and when depends significantly on how important it is for you to update your existing projects to API 2.0. </p>



<p>First, it’s important to understand that most of the deprecated APIs are going be around for a very long time. It’s possible (perhaps even likely) that they could continue to exist for the entire life of your software project. You could decide not to upgrade any portion of your project or only upgrade portions that require it and then only when necessary.</p>



<p>Many deprecated APIs still share their implementation with the API they replace. A good example is RecordSet.MoveNext and RowSet.MoveToNextRow. If a bug is fixed in MoveToNextRow it will also likely be fixed automatically in RecordSet.MoveNext even though that method is deprecated.</p>



<p>Should you find a bug in a deprecated API you are still using, first try the new, replacement API and see if the bug is no longer reproducible. If that’s the case, you have an immediate solution: just upgrade that one usage of the deprecated class to the new one.</p>



<p>If the bug still exists in the new, replacement class, please report the bug using <a href="https://www.xojo.com/download/extras.php">Feedback</a>. Once fixed, there’s a chance that it will be fixed in the deprecated class as well, assuming it still shares its underlying implementation with the old deprecated class which, again, is true in many cases.</p>



<p>When deciding what to do regarding API 2.0 and any particular project, your options are:</p>



<ol class="wp-block-list"><li><strong>Not Upgrading</strong> &#8211; You could choose not to upgrade an existing project to API 2.0. You could then only upgrade portions of it should that become necessary due to a bug fix or the introduction of new features.</li><li><strong>Upgrade Incrementally</strong> &#8211; Another option is to upgrade your code incrementally as an extra step before refactoring or adding new code to a particular part of a project. This is the path we have chosen for the Xojo IDE as it’s a very large project that would take many months to upgrade if we did it all at once.</li><li><strong>Upgrade All At Once</strong> &#8211; Finally, you may decide to go ahead and upgrade your entire project all at once. This has the advantage of allowing you to focus exclusively on the new APIs and no longer have to switch between the old and the new when going back and forth between older projects and newer ones.</li></ol>



<p>If you’re choosing not to upgrade an older project or do so incrementally and you find seeing the deprecation warnings distracting when you use the Analyze Project feature, you can turn off these warnings by choosing Project &gt; Analysis Warnings.</p>



<p>API 2.0 was introduced with desktop projects but it will be coming to web projects in Web Framework 2.0, for mobile in Android and eventually iOS as well. As a result it will be important to use the new APIs but for many of you, using them only with new projects and/or sporadically with older projects, may make sense.</p>



<p>API 2.0 is a huge change and change can often be difficult. There&#8217;s certainly a lot of comfort to be found in the familiar. Still change is sometimes necessary to keep things moving forward. Fortunately, in the case of API 2.0, we have designed it so that you have tremendous flexibility in terms of what options you choose for existing projects. </p>



<ul class="wp-block-list"><li>Read <a href="https://blog.xojo.com/tag/api-2-0/">more blog posts</a> about this transition.</li><li><a href="UserGuide: Moving Forward with API 2.0
">UserGuide: Moving Forward with API 2.0</a></li><li><a href="UserGuide: API 2 Guidelines">UserGuide: API 2 Guidelines</a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo IDE Improvements: Speed, Tab Management, Menus &#038; More</title>
		<link>https://blog.xojo.com/2019/10/09/xojo-ide-improvements-speed-tab-management-menus-more/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Wed, 09 Oct 2019 10:25:41 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[2019r2]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5837</guid>

					<description><![CDATA[Keeping the IDE simple to use for new users is one of our core tenets, but that doesn't mean that we can't add some much needed capabilities for our long-term users. ]]></description>
										<content:encoded><![CDATA[
<p>Keeping the IDE simple to use for new users is one of our core tenets, but that doesn&#8217;t mean that we can&#8217;t add some much needed capabilities for our long-term users. This cycle we&#8217;ve added some new exciting capabilities for managing medium to large-size projects and made some overall improvements that make the Xojo IDE a lot more satisfying to use. To be honest, the more of these things we added the less I wanted to go back to using older versions of the IDE.</p>



<p><strong>Improved Overall Speed</strong><br>One of the most obvious areas that hurt people with large projects is the speed of the IDE itself. We worked on a number of pain points to improve the overall IDE experience.  Specifically, we were looking for things which by themselves were not too bad, but in a cumulative effect they could take large chunks out of your day.</p>



<p>One such area was in saving text projects. Now you wouldn&#8217;t think that there was much room for improvement here, since it&#8217;s just File I/O right? We found an optimization point in the way we save Bookmarks and Breakpoints, which in the IDE project represents a huge savings when making lots of changes. In our case, we went from 30 seconds down to 1, and for someone who insists on saving before every run, it makes a huge difference.</p>



<p>We also optimized drawing in the Navigator, and that change resulted in huge overall speed increases in many parts of the IDE, from selecting large number of items in the Navigator itself, making changes to multiple items, to even just typing code in the code editor.</p>



<p><strong>Improved Tab Management</strong><br>Tabs have been broken in one way or another for a long time. They finally got some TLC this cycle and we think you&#8217;re going to be much happier with the way they work now. We&#8217;ve rewritten the logic surrounding how tabs are chosen when you take an action which results in a new location request and made the behavior consistent, no matter where that request comes from. Whether that&#8217;s a Go To Location request or a search or clicking on an error result. The rules are applied in the following order:</p>



<ol class="wp-block-list"><li>If there is at least one <em>locked</em> <em>tab</em> which matches the Go To target, the first one will be used (left to right).</li><li>If there is at least one <em>unlocked</em> <em>tab</em> which matches the Go To target, the first one will be replaced.</li><li>If the <em>current</em> tab is unlocked, it will be replaced with the new location.</li><li>If there are <em>any</em> unlocked tabs, the first one will be replaced.</li><li>If none of the above conditions are met, a new tab will be created for the target location.</li></ol>



<p class="has-text-color has-regular-font-size has-vivid-red-color">NOTE: Debugger Tabs are <em>never</em> eligible as a Go To target. This may seem obvious, but it wasn&#8217;t always true before. Now it is. Debugger tabs are also locked by default and cannot be unlocked.</p>



<p>The only exceptions to these rules are the Open In New Tab rules. That is, if you right-click on an item and select Open In New Tab or you double-click on an item with the &#8220;Double-click opens item in new tab&#8221; preference set, they will always open a new tab for you.</p>



<p>Once you start using the new logic, I think you&#8217;ll agree that it&#8217;s much more intuitive and you won&#8217;t feel like the IDE is constantly switching contexts on you. Personally I find that I&#8217;m using <em>fewer</em> tabs than in previous versions because I&#8217;m more confident that the objects I opened will still be there when I get back.</p>



<p><strong>MacOS Dark Mode Layout Editor Toggling</strong><br>On macOS 10.14 and above we&#8217;ve added a new toolbar button which allows you to quickly switch the Window you are editing between light and dark mode. No more switching your entire OS just to see how your app will look in the other mode.</p>



<p><strong>Navigator Contextual Menu</strong><br>We&#8217;ve done some cleanup work here to make it more obvious what you can and can&#8217;t do with objects in the Navigator. Gone are all of the disabled items that were not &#8220;in-context&#8221; for the currently selected item because, well duh, they&#8217;re not &#8220;in-context&#8221;. We&#8217;ve also enhanced the Edit Superclass and Edit Subclass menus. Edit Superclass now shows the entire superclass hierarchy, including things that you can&#8217;t edit (disabled of course) so you can track down common parentage. The Edit Subclass menu has been alphabetized so you don&#8217;t have to read the entire list just to find all of the items that begin with &#8220;c&#8221;.</p>



<p><strong>Code Editor Contextual Menu</strong><br>This menu has also gotten some love and attention. First of all, the menu has been reorganized so that the menu groups are based on the context of the thing that you&#8217;ve clicked on and the object where the code itself lives.</p>



<p>Group 1: Just like previous versions of the IDE, Cut, Copy, Paste, Delete and Select All are still at the top of the menu. They&#8217;re a common thing for mouse oriented users and we don&#8217;t want to hurt that functionality.</p>



<p>Group 2: The next group is for things that are for accessing or modifying the object that you&#8217;re currently editing. This is where you&#8217;ll find the Switch To menu for directly accessing the other code items within the current item. </p>



<p>We&#8217;ve also added two new submenus to this section that are specifically for copying the event and delegate signatures of <em>the thing you&#8217;ve clicked</em> <em>on</em>. For example if your code refers to a <strong>URLConnection</strong> object, you can now right-click on URLConnection and select <strong>Add Method</strong> &gt; <strong>From Event</strong> &gt; <strong>ContentReceived</strong> and the IDE will automatically add a method to the current object with the same signature including the object itself for use with AddHandler! In this case, you&#8217;d end up with a method that looks like this:</p>



<p><br><code>URLConnection_ContentReceived(obj As URLConnection, URL As String, HTTPStatus As Integer, content As String)</code></p>



<p>Then you could type something like:</p>



<p><br><code>AddHandler h.ContentReceived, AddressOf URLConnection_ContentReceived</code></p>



<p>Delegates work the same way, albeit without including the object reference in the method signature. No more flipping back and forth between your current code and the target object or Language Reference to copy the signatures!</p>



<p>Group 3: If it exists, this group is for things that are specific to the object or instance of the object that you clicked on in the code editor. This is where you&#8217;ll see the &#8220;Find&#8221; and &#8220;Go To&#8221; menu items for finding other uses of or going to the definition of an item, respectively. </p>



<p>Group 4: This group is for selection and code-specific tools including the <strong>Insert Color</strong> command, <strong>Standardize Format</strong> and the <strong>Wrap In</strong> menus for wrapping the current selection if an #If #EndIf or While/Wend block. This section also sports the menu for converting the current selection to a Constant or a Method.</p>



<p>Group 5: From here you can toggle Breakpoints and Bookmarks</p>



<p>Group 6: Help and Language Reference access.</p>



<p>For more information about the changes in 2019r2, read the full <a href="http://documentation.xojo.com/Resources:2019r2_Release_Notes">Release Notes</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using IDE and System Version Specific Code</title>
		<link>https://blog.xojo.com/2019/07/29/using-ide-and-system-version-specific-code/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Mon, 29 Jul 2019 06:06:20 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5940</guid>

					<description><![CDATA[Ever wonder how to conditionally implement newer features in your code while keeping the ability to use older versions of Xojo at the same time?&#8230;]]></description>
										<content:encoded><![CDATA[<p>Ever wonder how to conditionally implement newer features in your code while keeping the ability to use older versions of Xojo at the same time? It&#8217;s really easy to do, I&#8217;ll show you how.</p>


<p>There&#8217;s an advanced feature in Xojo called Compiler Directives which allows you to direct the compiler to conditionally compile a block of code based on a boolean comparison. For instance, if you wanted to temporarily disable a block of code (as opposed to commenting it out) you could wrap your code like this:</p>



<pre class="wp-block-preformatted">#If False
  // Code that you don't want to compile
#EndIf</pre>



<p>You can also use constants with the #if directive, so if you created a module called &#8220;Switches&#8221; and it contained a Public or Protected constant named &#8220;EnableDeepLearning&#8221; with a value of True or False you could write code like this:</p>



<pre class="wp-block-preformatted">#If Switches.EnableDeepLearning
  // Code for your deep learning feature goes here
  // This code will only be <em>included</em> in your app if EnableNewFeature is set to True
#EndIf</pre>



<p>There are also some built-in constants for you to use. For instance, there are two constants that tell you which version of the IDE is running, one is a Double, the other is a String. Here&#8217;s an example which allows you to use the new Dark Mode capability depending on whether you&#8217;re running 2018r3 or something earlier:</p>



<pre class="wp-block-preformatted">#If XojoVersion &lt; 2018.03
  Var myTextColor As Color = &amp;c000000
#Else
  Var myTextColor As Color = &amp;c1C1C1C
  If IsDarkMode Then
    myTextColor = &amp;cFEFEFE
  End If
#EndIf</pre>



<p>There are also build-in constants per platform and processor type:</p>



<pre class="wp-block-preformatted">#If TargetMacOS
  // macOS Specific Code
#ElseIf TargetWindows
  // Windows Specific Code
#ElseIf TargetLinux
  // Linux Specific Code
#ElseIf TargetIOS
  // iOS Specific Code
#EndIf

#If Target32Bit
  // Code for 32-Bit Processors
#ElseIf Target64Bit
  // Code for 64-Bit Processors
#ElseIf TargetARM
  // Code for ARM Processors
#EndIf</pre>



<p>For more information on Compiler Directives, see <a href="https://documentation.xojo.com/%23If…%23Endif">https://documentation.xojo.com/＃If…＃Endif</a></p>



<p>In addition to code for specific platforms, sometimes you need to know the specific version of the OS that the user is running. In 2019r3 we added the System.Version method specifically for this purpose:</p>



<pre class="wp-block-preformatted">#If TargetMacOS
  If System.Version = "10.15" Then
    // Code that works exclusively on 10.15
  ElseIf System.Version &gt;= "10.15.1"
    // Code that only works on 10.15.1 and above
  End If
#EndIf</pre>



<p>If you&#8217;re working with Windows, keep in mind that System.Version returns NT System Versions, so you&#8217;ll need to compare to these values instead:</p>



<ul class="wp-block-list"><li>Windows 10 = NT 10</li><li>Windows 8.1 = NT 6.3</li><li>Windows 8 = NT 6.2</li><li>Windows 7 = NT 6.1</li><li>Windows Vista = NT 6.0</li></ul>



<p>For more information about System.Version, See <a href="http://documentation.xojo.com/api/os/system.html#system-version" target="_blank" rel="noreferrer noopener">http://documentation.xojo.com/api/os/system.html#system-version</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Join the Dark Side &#8211; Xojo 2018r3 Supports Dark Mode</title>
		<link>https://blog.xojo.com/2018/10/23/join-the-dark-side/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 23 Oct 2018 16:02:04 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Mojave]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5012</guid>

					<description><![CDATA[With the availability of Xojo 2018 Release 3, Xojo now supports macOS Mojave's new dark mode. This means you can update your own apps to support dark mode and it also means that the Xojo IDE works in dark mode.]]></description>
										<content:encoded><![CDATA[<p>With the availability of <a href="https://www.xojo.com/download/">Xojo 2018 Release 3</a>, Xojo now supports macOS Mojave&#8217;s new dark mode. This means you can update your own apps to support dark mode and it also means that the Xojo IDE works in dark mode.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5062" src="https://blog.xojo.com/wp-content/uploads/2018/10/DarthVaderHalloween.jpg" alt="" width="960" height="720" /></p>
<p>To activate dark mode in Mojave, go to System Preferences, click General and select the &#8220;dark&#8221; appearance. The entire UI will switch to a darker, more muted color scheme which can be easier on the eyes, especially at night.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5070" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-16_11-56-20.png" alt="" width="276" height="84" /></p>
<p>Here is what the Xojo IDE looks like in dark mode:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5098" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-25_09-39-06.png" alt="" width="1481" height="880" /></p>
<p>In order for your apps to support dark mode you&#8217;ll have to rebuild them with Xojo 2018r3 with its support for dark mode. Once you open your project in 2018r3 go to <strong>Shared Build Settings</strong> and turn on the Supports Dark Mode property:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5068" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-16_11-53-56.png" alt="" width="204" height="28" /></p>
<p>Note: This property defaults to OFF for existing projects and ON for new projects.</p>
<p>This will automatically cause the Xojo built-in controls to switch to dark mode when you run your app in dark mode on Mojave. Here is Eddie&#8217;s Electronics running in dark mode:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5069" src="https://blog.xojo.com/wp-content/uploads/2018/10/2018-10-11_12-31-29.png" alt="" width="1053" height="846" /></p>
<p>For your own graphics and custom controls you may need to update your drawing code so that you use darker colors and icons when in dark mode. There is now a new <strong>IsDarkMode</strong> global method that you can check to see if your app is running in dark mode so that you can choose a different color or image.</p>
<p>The <strong>App.AppearanceChanged</strong> event is called when the user switches between light and dark modes or when the accent color changes. You can use this to tell your UI to update or redraw as necessary.</p>
<p>Read more about this change and others coming to Xojo graphics and the IDE in <a href="https://blog.xojo.com/2018/10/24/following-the-dark-path/">this post</a>. To learn how you can update your apps to work in dark mode, refer to the <a href="https://documentation.xojo.com/topics/user_interface/desktop/macos/supporting_macos_dark_mode.html">Dark Mode topic in the documentation</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IDE changes in Xojo 2018r3 and more</title>
		<link>https://blog.xojo.com/2018/10/23/following-the-dark-path/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Tue, 23 Oct 2018 10:00:43 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DarkMode]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Lingua]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xojo Feedback]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5075</guid>

					<description><![CDATA[About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped&#8230;]]></description>
										<content:encoded><![CDATA[<p>About three years ago, we added HiDPI/Retina support to our framework which was released to users as part of Xojo 2016r1 when we also shipped our first HiDPI IDE.</p>
<p>With Apple’s announcements at WWDC 2018 and the introduction of dark mode it was time to revisit our graphics and the overall appearance of the IDE again. Here are some things which contribute to the changes that have been made and ones that you will see in the coming months.</p>
<p><span id="more-5075"></span></p>
<h3><b>Dropping macOS 10.9</b></h3>
<p>Xojo 2018r3 drops support for macOS 10.9 and as the last version which had the skeuomorphic design elements all of our supported OS’s now have the flatter modern design. It’s not that this has held anything up per se, but it’s a good reminder that “it’s time”.<span class="Apple-converted-space"> </span></p>
<p>To that end, we have taken that opportunity to remove some of the graphics that make the IDE look out of place and doing so subtly lowers the memory footprint and accelerates drawing of the IDE itself across all platforms. We&#8217;re also using a variation of Apple&#8217;s image templates which has somewhat reduced the on-disk footprint of the IDE itself.</p>
<h3><b>macOS Dark Mode</b></h3>
<p>Apple’s addition of a darker variant of the visual “Aqua” theme in macOS means that we needed to do an audit and update of several of our base framework controls so that <i>your</i> apps would render correctly as well as ours.<span class="Apple-converted-space"> </span></p>
<h4>Events</h4>
<p>While it probably won’t be used very often (how often does one change themes while running a piece of software, besides the novelty of seeing it happen), we added an event to the App class named AppearanceChanged to notify you when the user changes from light to dark or changes their accent color. This is a good place to clear any graphic or color caches which contain theme specific UI graphics.<span class="Apple-converted-space"> </span></p>
<h4>Methods</h4>
<p>There is also a new global method called IsDarkMode(Boolean) which will return True if your app is running with the Dark Mode theme on macOS 10.14 or higher.<span class="Apple-converted-space"> If your app is running on 10.13 or lower or in light mode on 10.14, IsDarkMode will return False.</span></p>
<h4>Build Settings</h4>
<p>Enabling Dark Mode in your apps is as easy as flipping a switch in the Shared Build Settings. Unfortunately, because Apple made the assumption that most apps would “just work” versions of your apps compiled with older versions of Xojo will either need to be recompiled with Xojo 2018r3 or you’ll need to push out a new version with a plist entry to prevent macOS 10.14 from showing your app dark in Dark Mode.<span class="Apple-converted-space"> </span></p>
<h4>Testing</h4>
<p>When testing apps for use with Mojave&#8217;s dark mode, I seriously suggest that you test on a system that allows you to see the translucency effects of dark mode. Virtual Machines are usually really handy for testing, but in this case, Parallels Desktop 14, VirtualBox 5.2 and VMWare Fusion 11 do not show the subtleties of dark mode.</p>
<h4>Colors</h4>
<p>One of our goals at Xojo is to remove some of the headaches involved with the minutiae of each OS that you deploy for and to that end, we wanted to make drawing custom controls easier too. What this means is that the built-in global colors are largely theme aware now and will change depending on whether your app is running in light or dark mode on macOS. This affects things like TextColor, FillColor, FrameColor, HighlightColor, etc, so if you use those methods when drawing in pictures and canvases, you will want to audit that code. If you want a specific color, you should use a color constant. For instance, use &amp;c000000 if you want black because TextColor will now return white in Dark Mode.<span class="Apple-converted-space"> </span></p>
<p>In terms of the framework controls themselves, we are taking this opportunity to make some changes to make your apps appear better in the macOS 10.10+ ecosystem. Ever notice that a Label control and the text portion of a CheckBox or RadioButton control are not exactly the same color? Going forward, the default colors of controls which <i>should</i> automatically change between Light and Dark modes <i>will</i> do that. So if you have a Label using the default color of &amp;c00000000 (Black with Transparency = 0), the color that is actually used is what Apple calls labelColor. It’s still black, but is a tiny bit translucent. TextFields and TextAreas will automatically change text, placeholder, selection and background colors to match the Apple prescribed colors for automatic Light/Dark compatibly. We think you’ll find that building your apps with 2018r3 will largely make them just behave and appear the way you expected them to.</p>
<p>IMPORTANT NOTE: These color and framework changes affect how your apps draw on <i>all</i> versions of macOS, so make sure you try them out on your 10.10 through 10.14 VMs before shipping!</p>
<h4>Eating our own dog food</h4>
<p>One thing we hear from users every so often is the desire for Xojo to use our own products for building apps. As most of you know the IDE itself is written in Xojo, but we also have several other apps (big and small) that are written in Xojo.</p>
<ul>
<li>Feedback &#8211; Our bug reporting system</li>
<li>Xorders &#8211; Our internal order system</li>
<li>Lingua &#8211; The Xojo localization app</li>
<li>Remote Debugger &#8211; The remote debugger stubs for desktop and console</li>
</ul>
<p>While the 2018r3 cycle was in progress, all four of these projects got updated for Mojave&#8217;s Dark Mode and definitely helped us find framework rendering bugs early on in the pre-release process.</p>
<h4><b>What about Windows and Linux?</b></h4>
<p>The TL;DR version is that we’re still looking into it.<span class="Apple-converted-space"> </span></p>
<p>Currently there are several different ways to change Windows 7, 8 and 10 to use a dark interface, not all of which are compatible with the Xojo Framework controls and the Windows 10 2018 Fall Update promised yet another way but that ended up only being for UWP. We are looking into which method gets you the most “bang for the buck” so to speak.<span class="Apple-converted-space"> </span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Quick Control Library Tips</title>
		<link>https://blog.xojo.com/2018/09/17/quick-control-library-tips/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 17 Sep 2018 10:00:24 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=4916</guid>

					<description><![CDATA[But no matter what type of project you are creating, here are some tips to make using the Library and finding controls fast and easy.]]></description>
										<content:encoded><![CDATA[<p>When you start using Xojo one of the first things you&#8217;ll see is that there are many, many types of built-in controls. The area where you see all the controls is called the Library and each project type (desktop, web or iOS) has its own set of controls.</p>
<p>No matter the what type of project you are creating, learn these tips to make using the Library and finding controls fast and easy.</p>
<p><span id="more-4916"></span></p>
<h2>Keep Library and Inspector Visible All The Time</h2>
<p>Normally the Library shares the right side of the Workspace area with the Inspector (which is used to change control properties). You can display the Library and Inspector as palettes so you can keep both displayed at once, even on their own separate display.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-4918" src="https://blog.xojo.com/wp-content/uploads/2018/09/LibraryTips.gif" alt="" width="1552" height="1080" /></p>
<h2>Change Library View</h2>
<p>The default Library view is to show large icons. But you may prefer an alternate view. Use the gear button in the Library to choose a view that works best for you.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-4920" src="https://blog.xojo.com/wp-content/uploads/2018/09/LibraryView.gif" alt="" width="1731" height="1080" /></p>
<h2>Find Controls</h2>
<p>Just start typing to find a control by name or use the Filter field to show controls by name or description.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-4922" src="https://blog.xojo.com/wp-content/uploads/2018/09/FindControl.gif" alt="" width="1731" height="1080" /></p>
<p>Download the <a href="https://www.xojo.com/download">latest version of Xojo today</a>! You can learn more about the Library in the <a href="http://developer.xojo.com/userguide/library-inspector">User Guide</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Avoiding False-Positive Virus Detection in Windows Apps</title>
		<link>https://blog.xojo.com/2018/01/29/avoiding-false-positive-virus-detection-in-your-windows-apps/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Mon, 29 Jan 2018 18:10:37 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Anti-Virus]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[LLVM]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3853</guid>

					<description><![CDATA[Anti-virus software can be a bit over-zealous about detecting what it believes to be apps that have viruses embedded within them. We have had reports over the years that apps made with Xojo are sometimes falsely identified as being infected with a virus. If you're having problems with such false positives, recompiling your apps for 64-bit may solve the problem. Doing this is not a 100% guarantee but it can reduce the chances of a false-positive occurring.]]></description>
										<content:encoded><![CDATA[<p>Viruses continue to be a big problem on Windows. As a result, anti-virus software can be a bit over-zealous about detecting what it believes to be apps that have viruses embedded within them. We have had reports over the years that apps made with Xojo are sometimes falsely identified as being infected with a virus. This sometimes occurs because the 32-bit Xojo compiler puts executable code in a location where the anti-virus software doesn&#8217;t expect to find it. We&#8217;ve seen this occur even when users are debugging apps from the IDE. Fortunately in that case, there&#8217;s a <a href="https://blog.xojo.com/2015/06/11/norton-internet-security-and-xojo/">fairly easy solution</a>.</p>
<p><span id="more-3853"></span></p>
<p>With the <a href="https://blog.xojo.com/2017/12/04/llvm-everywhere/">move to LLVM</a> as the backend of our compiler, the format of our Windows executables changed somewhat. LLVM puts the executable code in a different location that doesn&#8217;t set off those same flags for anti-virus software. If you&#8217;re having problems with such false positives, recompiling your apps for 64-bit may solve the problem. Doing this is not a 100% guarantee but it can reduce the chances of a false-positive occurring.</p>
<p>This is even more true if you are using console-based helper apps especially if you&#8217;re launching multiple instances of them. Despite this being a known and often-used technique for taking advantage of multiple cores (and one we <a href="https://blog.xojo.com/2018/01/25/supporting-multiple-cores/">wrote about</a> recently), it can make anti-virus software more suspicious. If your helper app has code that the anti-virus software thinks is in the wrong place, recompiling it for 64-bit may help.</p>
<p>Having said all of this, false is still false. If your apps (compiled for 32-bit or 64-bit) are falsely identified as having a virus, contact the anti-virus software company so they can update their software. Many have established protocols for reporting false positives.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo and Community Growth in 2017</title>
		<link>https://blog.xojo.com/2017/12/11/xojo-and-community-growth-in-2017/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Mon, 11 Dec 2017 08:00:07 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[AprendeXojo]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[LLVM]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3611</guid>

					<description><![CDATA[2017 has been a good year for Xojo! We hit some bumps but we&#8217;re ending the year with the much-awaited Xojo 64-bit IDE released in Xojo&#8230;]]></description>
										<content:encoded><![CDATA[<div>2017 has been a good year for Xojo! We hit some bumps but we&#8217;re ending the year with the much-awaited Xojo 64-bit IDE released in <a href="https://www.xojo.com/download/">Xojo 2017r3</a>.</div>
<div></div>
<div>Though we didn&#8217;t have a XDC in 2017, we&#8217;re gearing up for <a href="https://www.xojo.com/xdc/">XDC 2018 in Denver</a> in April. This is the longest between conferences in many years and we&#8217;re seeing an increase in early registrations. If you are planning on attending, please register soon. We have sold out before!</div>
<p><span id="more-3611"></span></p>
<div>Some highlights from the Xojo Blog in 2017:</div>
<ul>
<li>Growing? Read how one Xojo user took his app from <a href="https://blog.xojo.com/2017/04/25/taking-your-app-from-in-house-to-commercial/">in-house to commercial</a>,</li>
<li>Transitioning Windows Graphics: <a href="https://blog.xojo.com/2017/04/12/windows-graphics-direct2ddirectwrite-direction/">Direct2D/DirectWrite</a>,</li>
<li><a href="http://blog.xojo.com/2017/03/28/raspberry-pi-remote-debugging/">Remote Debugger for Raspberry Pi</a> and the <a href="https://blog.xojo.com/2017/04/12/windows-graphics-direct2ddirectwrite-direction/">Programming with Raspberry Pi Book</a>,</li>
<li>Check out our highly popular <a href="https://jsonfeed.org">JSON Feed</a> blog post series for <a href="https://blog.xojo.com/2017/05/31/json-feed-ios-app/">iOS</a>, <a href="https://blog.xojo.com/2017/05/30/json-feed-web-app/">web</a> and <a href="https://blog.xojo.com/2017/06/01/json-feed-desktop-app/">Desktop</a>,</li>
<li>We updated Xojo&#8217;s Linux Desktop framework to <a href="https://blog.xojo.com/2017/08/15/goodbye-gtk-2-hello-gtk-3/">GTK3</a> and HiDPI,</li>
<li>Whatever happens, Xojo has your back if <a href="https://blog.xojo.com/2017/09/29/what-it-means-for-your-xojo-projects-if-mac-goes-arm/">Mac goes ARM</a>, and</li>
<li>Jump into our ongoing Compiler blog post series: <a href="https://blog.xojo.com/2017/12/04/llvm-everywhere/">LLVM Everywhere</a>, <a href="https://blog.xojo.com/2017/12/06/compilers-101-overview-and-lexer/">Compiler 101 &#8211; Overview and Lexer</a>, and <a href="https://blog.xojo.com/2017/12/08/compilers-102-parser/">Compilers 102 &#8211; Parser</a>.</li>
</ul>
<p>A special mention on the topic of Net Neutrality in the US. Geoff has <a href="https://blog.xojo.com/2017/12/01/the-last-mile-why-net-neutrality-is-a-must/">shared his point of view</a> and we hope you make your voice heard to the <a href="https://www.fcc.gov/ecfs/filings/express">FCC</a> before December 14th. This is an issue that effects us all.</p>
<p>The Xojo community continues to grow with developers switching from VB, emerging citizen developers and small businesses all discovering what they can with Xojo. In the last 12 months the <a href="https://forum.xojo.com">Xojo Forum</a> has welcomed 1,688 new forum members and 60,772 forum posts.</p>
<p>Our blog post from back in June, <a href="https://blog.xojo.com/2017/06/21/daring-to-defy-software-extinction-a-limited-history/">Daring to Defy Software Extinction</a> sums up Xojo and Dev Tool history with some perspective. We&#8217;re proud of what we, along with the Xojo Community, have built over the past 21 years and we look forward to 2018 &#8211; Android support, I&#8217;m looking at you!</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3010" src="https://blog.xojo.com/wp-content/uploads/2017/06/Ltd-History-of-Dev-Tools-Info-Graphic.png" alt="" width="800" height="2000" /></p>
<p>From everyone at Xojo, thank you for your continued support. This community is truly one-of-a-kind and we look forward to all that 2018 has in store!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The 64-bit Xojo IDE</title>
		<link>https://blog.xojo.com/2017/10/17/the-64-bit-xojo-ide/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 17 Oct 2017 20:03:49 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3455</guid>

					<description><![CDATA[Xojo has provided the ability to build 64-bit applications since earlier this year but now the Xojo IDE itself is a 64-bit application which is a first after 19 years of being 32-bit.]]></description>
										<content:encoded><![CDATA[<p>Back in 1998 when we shipped version 1 of what is now Xojo, it was a 32-bit application and has been ever since. Depending on the operating system, that meant the Xojo IDE itself had at <em>most</em> 4GB of RAM available to it. That would seem like more than enough for any project. However, we have some users that have <em>really</em> big projects. One project I know of has over 1500 project items!</p>
<p><span id="more-3455"></span>For users with large projects (and the Xojo IDE itself is a very large project as well), even 4GB of RAM isn&#8217;t enough. For these users, Xojo sometimes runs out of memory. That&#8217;s why I&#8217;m pleased to announce that today we are shipping a Beta of Xojo 2017 r3 as a 64-bit application. Xojo has provided the ability to build 64-bit applications since earlier this year but now the Xojo IDE itself is a 64-bit application which is a first after 19 years of being 32-bit.</p>
<p>Starting with 2017r3 the Xojo IDE will be able to use all the memory you could possibly have in your computer which means out of memory problems are now going to be a thing of the past. Modernizing Xojo, as we do year after year, keeps it in good shape so that you can depend on it for the foreseeable future.</p>
<p>For those of you have that been Xojo users for many, many years (and there are many of you that were here from the beginning), I thank you for your continued support.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A Better Alternative to PHP</title>
		<link>https://blog.xojo.com/2017/07/28/an-better-alternative-to-php/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Fri, 28 Jul 2017 10:28:51 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Xojo Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2742</guid>

					<description><![CDATA[Like PHP, Xojo is object-oriented. Unlike PHP Xojo has a coherent framework design that is easier to work with. And the language is simpler and more focused as well. Try out Xojo and see how easy creating web apps can be!]]></description>
										<content:encoded><![CDATA[<p>Are you tired of the hassles of creating web apps using PHP? Why not develop faster and smarter with Xojo?</p>
<p>Like PHP, Xojo is object-oriented. Unlike PHP, Xojo has a coherent framework design that is easy to work with; plus the Xojo language is simple and focused.</p>
<p><span id="more-2742"></span></p>
<h3>Work Faster with an IDE</h3>
<p>Save yourself time and trouble by using an integrated development environment (<a href="https://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a>). Why juggle text editors, FTP software, web servers and everything else you need to develop using PHP? With Xojo, you just need the IDE itself. Plus Xojo has a visual layout designer. You can design your web pages by dragging and dropping controls and positioning things how you want.</p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/php/Figure01-VisualDesigner.png" alt="Xojo Visual Designer Web" /></p>
<h3>Learn One Thing</h3>
<p>Rather than having to master the details of PHP, HTML, JavaScript, AJAX, CSS and other somewhat related technologies, with Xojo you only have to know Xojo. You write your code in the Xojo language. Don’t worry about HTML or JavaScript -although you can if you want, Xojo is flexible. Xojo creates the HTML, CSS, JavaScript and AJAX code on the fly at runtime.</p>
<h3>Expandable</h3>
<p>Do you have existing JavaScript controls that you want to use? Take advantage of the Xojo Web SDK, which provides an API for you to integrate JavaScript (and HTML) controls and frameworks into Xojo.</p>
<p>This is Yahoo’s Rich Text Editor in a Xojo web app:</p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/php/Figure02-YUIEditor.png" alt="Xojo UI Editor" /></p>
<h3>Easy Deployment</h3>
<p>Of course you can deploy your web apps to your own properly configured servers. But if you don&#8217;t have web server configuration experience or you just want a simple and secure deployment option, you can use <a href="http://www.xojo.com/cloud">Xojo Cloud</a>. Hosting with Xojo Cloud is as easy as clicking the “Deploy” button in Xojo; your app is built and uploaded to your Xojo Cloud server for immediate availability. You don’t have to worry about permissions, security or configuration.</p>
<p>See a Xojo web app hosted on Xojo Cloud here: <a href="http://demos.xojo.com">http://demos.xojo.com</a></p>
<p align="center"><img decoding="async" src="https://www.xojo.com/resources/images/php/Figure03-WebApp.png" alt="Xojo Web App" /></p>
<h3>Free to Develop</h3>
<p>Xojo is free to use for learning and development. <a href="http://www.xojo.com/download">Download and try it today</a> and see why people are choosing the simplicity of Xojo.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IDECommunicator Protocol v2</title>
		<link>https://blog.xojo.com/2017/06/30/idecommunicator-protocol-v2/</link>
		
		<dc:creator><![CDATA[Greg O'Lone]]></dc:creator>
		<pubDate>Fri, 30 Jun 2017 15:00:43 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Automated Builds]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IDECommunicator]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=3064</guid>

					<description><![CDATA[About two years ago, at XDC 2015 in Austin, Philippe Casgrain from LightSpeed did a bonus presentation on the benefits of Continuous Integration when building&#8230;]]></description>
										<content:encoded><![CDATA[<p>About two years ago, at XDC 2015 in Austin, Philippe Casgrain from LightSpeed did a bonus presentation on the benefits of Continuous Integration when building projects with Xojo. Coincidentally, we at Xojo had decided just days before that we needed to move away from manual builds and automate as much of our build process as possible to keep up with the increasing complexity and number of our frameworks (later that summer we would be going from 3 to 8). After the presentation, we heard from several developers asking when the limitations of automated builds would be addressed and because we were working on our own process, it gave us an excellent place to try out new things while ironing out the wrinkles.</p>
<p><span id="more-3064"></span></p>
<h3>Challenges</h3>
<p>The foremost issue that we had to fix was that the original protocol was designed so that it required you to close the IPCSocket to get your command to run. That meant there was no longer a connection on which the IDE could send any kind of response. It also meant that dealing with issues required making multiple connections.</p>
<p>The second was that there were many things that raised dialogs when something went wrong, which meant that an unattended IDE could get &#8220;stuck&#8221; waiting for user input which would never come. We&#8217;d heard that developers would have their systems take a screenshot if an hour had passed with no activity so they could figure out what had gone wrong, but that can be a huge waste of time if you&#8217;re waiting on a build.</p>
<h3>Solutions</h3>
<p>The new protocol (which was beta in 2016r4 and officially released in 2017r1) addresses both of these problems. The new protocol uses JSON for the command format and the IDE can send back all kinds of information including (but not limited to):</p>
<p>* Script syntax errors<br />
* Script runtime errors<br />
* IDE version conflicts<br />
* Missing assets<br />
* Compile errors</p>
<p>All of these things are returned to your calling script so you can take appropriate action. Because this is truly a two-way protocol now, you can also send data back to your script, like if you wanted to return the path of the built app back to your build system.</p>
<p>We&#8217;ve also been working to make anything that would normally show a dialog to the user gets sent back to the app communicating with the Xojo IDE. As far was we know, all but one was caught, and a fix for it has been submitted for 2017r2.</p>
<p>If you&#8217;d like to see the new IDECommunicator protocol in action, look in the Examples folder next to the IDE: Examples &gt; Advanced &gt; IDE Scripting &gt; IDECommunicator &gt; v2 &gt; IDECommunicator-Tester.xojo_binary_project</p>
<p>For documentation and more information refer to the doc page here: <a href="http://developer.xojo.com/userguide/ide-communicator">IDE Communicator</a></p>
<p><em>Just a note for those of you who have already been using the IDECommunicator project (or something similar) for controlling your builds, when updating to the new protocol make sure you don&#8217;t include a QuitIDE command in the script you initially send to the IDE. Doing so will cause the IDE to quit before you get a response which would present as a false positive. I suggest waiting until you do get a response and then issue a separate QuitIDE command at the end.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Menu Shortcut Editor</title>
		<link>https://blog.xojo.com/2017/04/05/menu-shortcut-editor/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 05 Apr 2017 01:19:08 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2491</guid>

					<description><![CDATA[Easily assign your own shortcut keys to any menu item in the updated Xojo Menu Shortcut Editor.]]></description>
										<content:encoded><![CDATA[<p>Starting with 2017 Release 1 you can now easily assign your own shortcut keys to any menu item.</p>
<p>In the <a href="http://developer.xojo.com/userguide/preferences">General Preferences</a> there is an item for &#8220;Menu shortcuts&#8221;. You can click the Edit button to open the editor which opens a ListBox where you can view the entire menu structure and change or assign shortcuts to any item:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-2493" src="https://blog.xojo.com/wp-content/uploads/2017/03/2017-03-27_11-20-50-1.png" alt="" width="600" height="400" /></p>
<p>If you mess anything up, just click &#8220;Restore Defaults&#8221;. Enjoy!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Working and Saving with Subversion</title>
		<link>https://blog.xojo.com/2017/03/16/working-and-saving-with-subversion/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Thu, 16 Mar 2017 07:00:36 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[SVN]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2450</guid>

					<description><![CDATA[It's a simple, quick way to work with your Xojo code with SVN.]]></description>
										<content:encoded><![CDATA[<p><a href="https://en.wikipedia.org/wiki/Apache_Subversion">Apache Subversion</a> (SVN) is a popular, open source versioning and revision control system. We use it here at Xojo.</p>
<p>You will have times when SVN will update the files on your drive, such as when you update from the server. Xojo does not automatically detect these changes, so most people resort to closing the project file and re-opening it in order to get the new changes displayed in Xojo. In fact, Xojo includes an IDE script to do just that: Examples/Advanced/IDE Scripting/ReloadProject.</p>
<p>There&#8217;s another solution. Here&#8217;s my tip for what I do to quickly have the IDE load those changes without having to close and re-open the project:</p>
<ul>
<li>Save my changes in Xojo</li>
<li>Merge incoming changes from SVN to my local working copy</li>
<li>Touch ONE item in the IDE. For example, change one letter in a property and then change it back.</li>
<li>Select File-&gt;Revert to Saved</li>
</ul>
<p>Voila! The newly merged code on the disk is loaded into the Xojo IDE. It&#8217;s a simple, quick way to work with your Xojo code and SVN.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Inspector Behavior: Class Defaults From the Xojo IDE</title>
		<link>https://blog.xojo.com/2017/03/13/inspector-behavior-class-defaults-from-the-xojo-ide/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Mon, 13 Mar 2017 07:00:17 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Inspector]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2436</guid>

					<description><![CDATA[The Inspector Behavior is a feature that you were probably not aware of at first glance when using the Xojo IDE. It is tightly related&#8230;]]></description>
										<content:encoded><![CDATA[<p>The <a href="http://developer.xojo.com/userguide/desktop-custom-controls"><strong>Inspector Behavior</strong></a> is a feature that you were probably not aware of at first glance when using the <strong>Xojo IDE</strong>. It is tightly related to the Inspector Panel you are already using for adjusting all the control settings and other classes instances properties.<span id="more-2436"></span><br />
For example, via the use of the <strong>Inspector</strong> we can assign the Picture we want to use as the Backdrop for a <strong>Canvas</strong> control, the default items shown by a <strong>PopupMenu</strong> instance, or the initial settings for any other control, as the size, initial text, color, etc. That is, we can define the behavior for any object through its properties.</p>
<p>Wouldn&#8217;t it be great to have that same access via the Inspector for your own classes? It would be simple to define the initial settings for your instances instead of putting the related code in the <strong>Open Event Handler.</strong> Well it is in fact, possible for you to decide what properties can be settable via the Inspector and even provide their default values and instruct an enumerator list for those properties of numerical type. It&#8217;s a nice touch if you are designing classes for your own use but also those you expect (and hope!) will be used by other Xojo developers!</p>
<p>In fact, through the Inspector Behavior feature you can further decide to disable those properties that are shown by default in the Xojo Frameworks. Why you would like to do that? Maybe to avoid problems or limit the things that others developers of the project can modify by default from the IDE (or consumers for your classes).</p>
<h3>Accessing the Inspector Behavior</h3>
<p>To do this, choose the class definition from the Navigator and then select Inspector Behavior from the contextual menu:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2437 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/03/Acceso-a-la-caracteristica-Inspector-Behavior_thumb.png" alt="" width="360" height="490" /></p>
<h3>Using the Inspector Behaviour Features</h3>
<p>This takes you to the window showing all the available properties for the selected class, including those inherited from their class hierarchy and those specifically defined by you. This is, in fact, the window where we can enable the checkbox for the properties we want to be shown in the Inspector and even create new headers in order to group these properties by category. Obviously, we can also disable the checkboxes associated to the Properties we don&#8217;t want to be available from the Inspector.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2439 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/03/InspectorBehaviorWindow.jpg" alt="" width="593" height="457" /></p>
<p>As you can see in the screenshot, the example shows a very basic class that has four defined properties whose types are Color, Text and Integer.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2442 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/03/InspectorPanel.png" alt="" width="309" height="137" /></p>
<p>Once they are enabled in the Inspector Behavior window, these will be shown in the Inspector, so it is easier for the class consumers to define the used colors and other initial attributes from the IDE.</p>
<p><iframe loading="lazy" title="Inspector Behavior [Spanish]" width="500" height="375" src="https://www.youtube.com/embed/fl3zTC8k1aM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p><em>Javier Rodri­guez has been the Xojo Spanish Evangelist since 2008, he’s also a Developer, Consultant and Trainer who has used Xojo since 1998. He is in charge of <a href="http://www.aprendexojo.com">AprendeXojo.com</a> and the developer behind the GuancheMOS plug-in for Xojo Developers and the Snippery app, among others.</em></p>
<p>*<a href="http://www.aprendexojo.com/2016/04/inspector-behavior-y-propiedades-en-xojo/">Read this post in Spanish</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TextField: Getting the User Input</title>
		<link>https://blog.xojo.com/2017/02/06/textfield-getting-the-user-input/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Mon, 06 Feb 2017 20:52:48 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[TextField]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2258</guid>

					<description><![CDATA[Xojo is a modern, powerful programming language with an IDE that simplifies all kind of tasks related your project creation and deployment. One such helpful feature is the&#8230;]]></description>
										<content:encoded><![CDATA[<p><strong>Xojo</strong> is a modern, powerful programming language with an <strong>IDE</strong> that simplifies all kind of tasks related your project creation and deployment. One such helpful feature is the UI layout design; you can find it under the Library Panel, it&#8217;s a meaningful collection of graphic classes (Controls) ready to use in our apps. Probably one of the first and most used controls in apps design is the <a href="http://developer.xojo.com/textfield"><strong>TextField</strong></a>, TextField simplifies the way an app can get the input from the user. Let&#8217;s see its main properties and how this control behaves when used in Desktop, Web (<a href="http://developer.xojo.com/webtextfield">WebTextField</a>) and iOS (<a href="http://developer.xojo.com/iostextfield">iOSTextField</a>) apps!</p>
<p>You can watch <a href="https://www.youtube.com/watch?v=CWy7phIErg4">the video</a> (in Spanish, with English subtitles) as you read and work through this post.<span id="more-2258"></span></p>
<h2>It&#8217;s all about the content: Text</h2>
<p>The main property of the control is the <b>Text</b> property. Accessing this property we can get the text typed by the user of the app…or set the text that we want the control to show (using Text or String data types). This property is available for all the supported platforms without variations.</p>
<p>Obviously, we can set the text shown by the control by default using the <b>Initial State</b> section of the Inspector Panel. Here is where we can find the <b>CueText</b> property for Web and Desktop apps, or the <b>PlaceHolder</b> property for iOS apps. Anyway, the text put here will be shown as <em>ghost text</em> by the control when there is not text entered from the user, giving a hint to the user about the kind of input data our app expect to be entered in the control instance.</p>
<p>Optionally, the Desktop and Web implementations of this control also offer the <b>HelpTag</b> property. Here is we can enter the text to be show to the user as a little help about the control purpose. This text will be automatically shown when the user puts the mouse pointer over the control during a second or so.</p>
<h2>Give me the Password</h2>
<p>Sometimes it&#8217;s very convenient to use the boolean property <b>Password</b>. Once enabled, the TextField will hide the control content from prying eyes, using a series of dots instead of every one of the typed characters. This is, in fact, the way to go when we need that the user of the app enters a Password or any kind of sensible data that shouldn&#8217;t be exposed otherwise.</p>
<p>As it happens with the <b>Text</b> property, the <b>Password</b> property is available for the creation and deployment of Desktop Apps (macOS, Windows, Linux, <a href="https://www.xojo.com/raspberrypi/"><strong>Raspberry Pi</strong></a>), web and native iOS apps. The only difference is that, for web apps, the TextField control will offer the option to save the password for later retrieval, something that only is available for that web browsers that support this feature (as it is with Safari under macOS). For iOS apps, the password behaviour will be the one we can expect from a native iOS app, showing in a fast succession the tapped key and hiding it in the blink of a eye.</p>
<h2>TextField appearance</h2>
<p>When it&#8217;s about the properties related mainly to the appearance of the text shown by this control, we can set several properties under the Attributes Inspector Panel for Desktop apps, as for example the Type, text Size and Style, as its the case when using this control in iOS apps. In addition, we can use the main area of the Properties Inspector to change the text alignment, text color and also the background color (only for Desktop apps, not in the case of iOS apps).</p>
<p>When it&#8217;s about web apps, all the issues related with the text style are related with the assignment of a Web Style that we have had defined previously, and whose creation and assignment is pointed in the video accompanying this blog entry.</p>
<p>When using this control on Desktop apps we can also set other appearance attributes, for example, the use of a border (it is not possible to assign the border color and/or border thickness), the use of the focus ring that points out the control active to receive the user keyboard input, and the feature already exposed that allows us to define the control background color; something that is also possible when using the control with Web apps, via the associated property during a Web Style definition.</p>
<h2>How to limit the text length</h2>
<p>There are several ways to limit the length of the text that the user can type on a TextField, mainly by kind of data or number of characters. The simpler is obviously the second option, available when using the TextField on Desktop apps and Web apps, via the <b>LimitText</b> property.</p>
<h2>Applying format to the Text</h2>
<p>There are countless the kind of apps where we would want to apply a specific format to the text typed by the user, and in fact we can turn again to the TextField properties to find the way to do it! However, we will have more or less flexibility if we are dealing with a Desktop app, a Web app or an iOS app.</p>
<p><img loading="lazy" decoding="async" class="wp-image-2262 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/02/TextFieldMascara-1024x688.png" width="800" height="538" /></p>
<h3>Desktop</h3>
<p>For example, when using a TextField with Desktop apps (macOS, Windows, Linux), we can use the <b>Mask</b> property to apply an specific format to the typed data. In these cases, the format will be applied once the control loses its focus. For example, the following format sequence applied in the <b>Mask</b> property:</p>
<pre>###,###.00\ \€</pre>
<p>will automatically format the number &#8220;123456&#8221; as:</p>
<pre>123.456,00 €</pre>
<p>Notice that even if we use the English notation (the comma as thousands separator and the dot as decimal separator), our app will apply the <a href="http://blog.xojo.com/2017/01/24/localizing-web-apps/">regional settings configured</a> on the computer that runs the app. I mean, it will format correctly the string using the appropriate regional settings on every case.</p>
<h3>Web</h3>
<p>In this case we could talk about a combination between text format and text restriction. For that, we can choose any of the options available under the popup menu <b>Type</b> under the Appearance section of the Inspector Panel:</p>
<ul>
<li><b>Normal</b>. The <b>WebTextField</b> will show any typed text.</li>
<li><b>Password</b>. It will behave as explained under the Password section, hiding the typed text.</li>
<li><b>E-mail Address</b>. The control will show an error ring if the typed text doesn&#8217;t seems to be a legal e-mail address. For that, it only seeks for the presence of the &#8216;at&#8217; symbol (&#8216;@&#8217;) and a dot character (&#8216;.&#8217;) in the entered text.</li>
<li><b>Number</b>. The control will show an error ring if the typed content is not exclusively numeric. This is something similar to the example we have seen with the <b>Mask</b> in a Desktop app, except that in this case the control adds a couple of graphical widgets that allows us to increase or decrease the TextField value when clicking on them.</li>
<li><b>Telephone Number</b>. At first, this option should accept only the input of a legal phone number, but in practice it will admit any kind of data.</li>
<li><b>URL</b>. As it happens with the previous item, it should admit and show just the kind of data for a legal URL, but in practice it will admit any text composition.</li>
</ul>
<p><img loading="lazy" decoding="async" class="size-full wp-image-2261 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/02/iOSTextField_Keyboard.png" alt="" width="325" height="254" /></p>
<h3>iOS</h3>
<p>In this case it is mainly about setting the kind of keyboard shown to the user once he taps on the TextField, where we can choose the most adequate for numeric values, URL, e-mail or general text, between some of all the available options.</p>
<p>So that&#8217;s the TextField control. You can watch <a href="https://www.youtube.com/watch?v=CWy7phIErg4" target="_blank">the video</a> (in Spanish, with English subtitles) that talks you though this example. And remember, when you have questions visit the <a href="http://developer.xojo.com/home">Xojo Dev Center</a> for documentation, examples, tutorials and more. Or ask the Xojo community on the <a href="https://forum.xojo.com">Forums</a>.</p>
<p><em>Javier Rodri­guez has been the Xojo Spanish Evangelist since 2008, he’s also a Developer, Consultant and Trainer who has used Xojo since 1998. He is in charge of <a href="http://www.aprendexojo.com">AprendeXojo.com</a> and the developer behind the GuancheMOS plug-in for Xojo Developers and the Snippery app, among others.</em></p>
<p>*<a href="http://www.aprendexojo.com/2017/01/textfield-introduccion-de-texto/">Read this post in Spanish</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is Xojo?</title>
		<link>https://blog.xojo.com/2017/02/01/what-is-xojo/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 01 Feb 2017 22:47:32 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Xojo IDE]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<category><![CDATA[Xojo Resources]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2247</guid>

					<description><![CDATA[2017&#8217;s first &#8220;What is Xojo?&#8221; webinar was well received and there were lots of questions. Rather than include the questions in the video, I&#8217;ve included a&#8230;]]></description>
										<content:encoded><![CDATA[<p>2017&#8217;s first &#8220;What is Xojo?&#8221; webinar was well received and there were lots of questions. Rather than include the questions in the video, I&#8217;ve included a selection of those questions and detailed answers.</p>
<p>If you missed it, the recording of the presentation is available in the <a href="http://developer.xojo.com/webinar-what-is-xojo">Dev Center: What is Xojo?</a></p>
<p><strong>Q: I would use Microsoft SQL Server Express with Xojo Lite. Is this possible?</strong></p>
<p>A: You can certainly use <a href="http://developer.xojo.com/userguide/microsoft-sql-server">Microsoft SQL Server with Xojo</a>, but you will need to upgrade to a <a href="https://www.xojo.com/store/">Desktop, Web or Xojo Pro license</a>. Contact <a href="mailto:hello@xojo.com">customer support to get a quote</a>.</p>
<p><strong>Q: Will Xojo be supporting build apps for Android?</strong></p>
<p>A: Yes! We announced plans for Xojo to be able to create Android apps at the <a href="https://blog.xojo.com/2016/10/11/xdc-2016-recap/">Xojo Developer Conference in October 2016</a>. We will post milestones as we reach them on the <a href="https://blog.xojo.com">Xojo blog</a>.</p>
<p><strong>Q: Is it possible to deploy an iOS app to my own iPad?</strong></p>
<p>A: Yes, absolutely. If you don&#8217;t have an Apple Developer account, you can follow these steps to get your <a href="http://developer.xojo.com/userguide/ios-free-provisioning-profile">free Provisioning Profile from Apple</a>. If you do have an Apple Developer account, the steps are much easier: <a href="http://developer.xojo.com/userguide/device-deployment">Deploying to Device</a>.</p>
<p><strong>Q: Is there a way to show the Library and Inspector at same time?</strong></p>
<p>A: Yes! Xojo has a preference to change the Library and Inspector to <a href="http://developer.xojo.com/userguide/preferences">display as floating palettes</a>. When you do this you can have both open at the same time and can even position them on a second display.</p>
<p><strong>Q: Can iOS apps make use of low-level APIs?</strong></p>
<p>A: You can use the <a href="http://developer.xojo.com/declare">Declare command</a> to directly access iOS APIs. Some <a href="http://developer.xojo.com/ios-declare-example-projects">examples are also included with Xojo</a>. The <a href="https://github.com/kingj5/iOSKit">open-source iOSKit library</a> provides access to many additional iOS features as well.</p>
<p><strong>Q: How do you connect to database(s)?</strong></p>
<p>A: Xojo has built-in support for <a href="http://developer.xojo.com/userguide/sqlite">SQLite</a>, <a href="http://developer.xojo.com/userguide/mysql">MySQL</a>, <a href="http://developer.xojo.com/userguide/postgresql">PostgreSQL</a>, <a href="http://developer.xojo.com/userguide/microsoft-sql-server">Microsoft SQL Server</a> and <a href="http://developer.xojo.com/userguide/oracle">Oracle</a>. In addition you can use <a href="http://developer.xojo.com/userguide/odbc">ODBC</a> to connect to any other database (as long as you have a driver).</p>
<p><strong>Q: How easy is it to access the hardware features of apple devices, such as the GPS or its movements?</strong></p>
<p>A: Xojo has a built-in class for accessing location/GPS information: <a href="http://developer.xojo.com/ioslocation">iOSLocation</a>. The <a href="http://developer.xojo.com/iosmotion">iOSMotion</a> class gives you access to information about device movement from the accelerometer and gyroscope.</p>
<p><strong>Q: How do you create apps that work on both iPhone and iPad, switch screens as appropriate?</strong></p>
<p>A: You can specify different views that are used for iPhone and iPads by setting the <a href="http://developer.xojo.com/userguide/ios-screens">Screens</a>. Also, the <a href="http://developer.xojo.com/userguide/ios-split-screen">Split Screen topic</a> in the User Guide shows how iPad apps can have two views displayed at once. There are a few example projects that show this as well:</p>
<ul>
<li>Examples/iOS/Apps/XojoNotes</li>
<li>Examples/iOS/Navigation/SplitViewExample</li>
</ul>
<p><strong>Q: Where can I find Xojo training materials?</strong></p>
<p>A: You can access our vast library of online learning materials at the <a href="http://developer.xojo.com">Xojo Dev Center</a>. There you will find <a href="http://developer.xojo.com/quickstart-overvew">Quick Starts</a>, <a href="http://developer.xojo.com/tutorials-overview">Tutorials</a>, <a href="http://developer.xojo.com/userguide">User Guide</a>, <a href="http://developer.xojo.com/reference-guide">Reference Guide</a>, <a href="http://developer.xojo.com/videos">Videos</a> and much more. From our Resources page you can access our free textbook, <a href="https://xojo.com/learn/"><i>Introduction </i><i>to Prog<wbr />ramming with Xojo</i></a>, and our <a href="https://xojo.com/learn/">Teacher&#8217;s Guide</a>. Join us for free webinars and virtual events, or <a href="https://www.youtube.com/user/goxojo">watch on-demand webinars and video tutorials</a> covering all kinds of topics. If you are interested in training, <a href="https://www.xojo.com/store/#conference">Xojo offers training</a> and there are other options in our <a href="https://www.xojo.com/store/#addons">Add-On Store.</a></p>
<p><strong>Q: How would I transition a desktop Xojo app to a web service + custom web UI?</strong></p>
<p>A: You can move your desktop app&#8217;s business logic to a web app that functions as a web service. More information about that is in the <a href="http://developer.xojo.com/userguide/web-services">Web Services topic</a>, which has links to many videos on this topic. Another option to help with this is the <a href="https://github.com/timdietrich/luna">Luna open-source framework</a>. Once you have your web service set up, you can use the <a href="http://developer.xojo.com/xojo-net-httpsocket">HTTPSocket</a> in desktop, web or iOS apps to connect and use the web service.</p>
<p><strong>Q: As a Filemaker developer, can Xojo display/play photos,video, mp3 files?</strong></p>
<p>A: Yes, Xojo has built-in controls to display pictures, play video and mp3 files. Some of them include: ImageWell, WebImageView, iOSImageView, MoviePlayer, WebMoviePlayer. Also there is a web project that shows how to play audio using HTML5: Examples/Web/Controls/AudioPlayer.</p>
<p><strong>Q: How do I convert my FileMaker Apps (desktop and mobile apps) to Xojo?</strong></p>
<p>A: You&#8217;ll find some ideas at the <a href="http://developer.xojo.com/migrating-from-filemaker">Migrating from FileMaker topic</a> at the Dev Center.</p>
<p><strong>Q: Where can I find examples for developing Xojo plugins?</strong></p>
<p>A: Included in your Xojo download (in the Extras folder) is the PluginsSDK, which has documentation and examples on how to create your own plugins.</p>
<p><strong>Q: Can you say a bit about reports?</strong></p>
<p>A: Xojo desktop projects can use the <a href="http://developer.xojo.com/userguide/report-layout-editor">Report Layout Editor</a> to design reports that can be printed or displayed on the screen. There are also <a href="http://documentation.xojo.com/index.php/Third_Party_Products#Reporting">several 3rd-party reporting products</a> available.</p>
<p><strong>Q: Info about Raspberry Pi and for Apple TV?</strong></p>
<p>A: Xojo can create desktop, web and console apps that run on Raspberry Pi 2 and 3. You can find more information, with some example hardware projects here: <a href="http://developer.xojo.com/pibook/about">Raspberry Pi</a>. Xojo cannot directly create Apple TV apps, but you can use a Xojo web app as a web service to send content to Apple TV TVML apps using the open-source <a href="http://timdietrich.me/viewpoint/">Viewpoint project</a> shown by Tim Dietrich in the most recent <a href="http://www.vxug.org/meetings">Virtual Xojo User Group meeting</a>.</p>
<p><strong>Q: What happens with my Xojo Apps when the user updates their Operating System? Will I have to make an update for the Apps?</strong></p>
<p>A: Your Xojo apps are generally not affected by OS updates. Of course, you&#8217;ll want to use the latest version of Xojo to ensure you have the most recent support for the latest operating systems.</p>
<p><strong>Q: How active is the referral forum for the Pro users, specifically from the freelance developer perspective?</strong></p>
<p>A: This varies greatly, but currently there are about 2 posts per week on average with about 28 items currently listed.</p>
<h2>Thanks!</h2>
<p>Thanks to all the attendees for the great questions! Be sure to give <a href="http://www.xojo.com/download">Xojo a try today</a>. It&#8217;s free! You&#8217;ll soon be making apps faster than you ever thought possible. Additional &#8220;What is Xojo?&#8221; webinars are scheduled for <a href="http://www.xojo.com/support/webinar.php">February and March</a>. Be sure to join so you can ask your own questions. For more casual conversations, join our Lunch with Xojo hangouts in <a href="http://www.xojo.com/support/webinar.php">February and March</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo Community Growth in 2016</title>
		<link>https://blog.xojo.com/2017/01/05/xojo-community-growth-in-2016/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Thu, 05 Jan 2017 17:33:50 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Retina]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2137</guid>

					<description><![CDATA[As you may already know, 2016 was Xojo's 20 Anniversary. I take great pride in the fact that we have created something that has that kind of staying power. In 2016 we took many big steps forward with Xojo including HiDPI support for macOS (Retina), Windows and the web, hardware-acellerated graphics for Windows, tons of new iOS features, IDE improvements and compiler optimization for 64-bit builds. From everyone here at Xojo, Happy New Year!]]></description>
										<content:encoded><![CDATA[<p>As you may already know, 2016 was Xojo&#8217;s 20 Anniversary. Sitting down to write this post, I can&#8217;t help but think back to 20 years ago and starting what has now become Xojo. Most of the developer tools that were around when we started either no longer exist or are no longer published by the people who had the original vision to create them in the first place. In that respect, we are members of a very exclusive club. I&#8217;m also pleasantly surprised at how many users from way back then are actively using Xojo today. I take great pride in the fact that we have created something that has that kind of staying power.</p>
<p><span id="more-2137"></span></p>
<p><figure id="attachment_2138" aria-describedby="caption-attachment-2138" style="width: 1010px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2138 size-full" src="https://blog.xojo.com/wp-content/uploads/2016/12/Anniversary-Shirt.png" alt="anniversary-shirt" width="1010" height="732" /><figcaption id="caption-attachment-2138" class="wp-caption-text">Email hello@xojo.com to order yours!</figcaption></figure></p>
<p>In 2016 we took many big steps forward with Xojo including HiDPI support for macOS (Retina), Windows and the web, hardware-acellerated graphics for Windows, tons of new iOS features, IDE improvements and compiler optimization for 64-bit builds. Check out the <a href="http://developer.xojo.com/2016-release-highlights">2016 Release Highlights</a>. The Xojo Forum has grown to over 16,000 members. We published our 100th video in the <a href="https://www.youtube.com/c/xojoinc">Xojo YouTube Channel</a> and added new playlists for <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXi_p96LT5k4BPwBlmH1HytK">Raspberry Pi</a> and <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiH5A32myqHwd1WLuUnBTuO">Web Services</a> and more new videos in our <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiePe2EYqV1J4whLP9O9vHQ">Spanish</a>, <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXjoTYaHQeFRKpk1p7qKbwCd">Italian</a> and <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiYHemQHGYv3CO7vQWYt7Gz">German</a> language playlists.</p>
<p>We hosted another highly successful<a href="http://blog.xojo.com/2016/10/11/xdc-2016-recap/"> Xojo Developer Conference</a> in Houston, Texas and we&#8217;ll have an announcement soon about the next XDC. 2016 was another great year for Xojo and 2017 is looking even better! One of my favorite things is hearing about all the cool projects our users create and I have no doubt that there will be many more this year.</p>
<p>From everyone here at Xojo, Happy New Year!</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
