<?xml version="1.0" encoding="UTF-8"?><feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="en"
  >
  <id>http://livingcode.org/feed/atom</id>
  <updated>2009-11-13T19:33:25Z</updated>
  <title type="text">Living Code</title>
  <subtitle type="text">Programming for the Fun of It</subtitle>
  <link rel="self" type="application/atom+xml" href="http://livingcode.org/feed" />
  <link rel="alternate" href="http://livingcode.org" />
  <rights type="text">Copyright 2009</rights>
  <generator uri="http://wordpress.org/" version="2.8.6">WordPress</generator>
      <entry>
    <id>http://livingcode.org/2004/a-new-renaissance</id>
    <title type="html"><![CDATA[A New Renaissance]]></title>
    <updated>2008-01-26T05:54:02Z</updated>
    <published>2004-11-04T05:49:54Z</published>
    <author>
      <name>Dethe</name>
      <email>delza@livingcode.org</email>
<uri>http://livingcode.org/</uri>    </author>
    <link rel="replies" type="application/atom+xml" href="http://livingcode.org/2004/11/03/a-new-renaissance/feed" thr:count="1"  />
    <link rel="alternate" href="http://livingcode.org/2004/11/03/a-new-renaissance" />
    <category scheme="http://livingcode.org" term="Python" />
    <summary type="html"><![CDATA[Yesterday I laid out the issues I have with using Interface Builder to create Cocoa applications (whether in Objective-C or Python), and my requirements for a replacement. To sum up, here are the requirements again:

Declarative
Simple and powerful
Able to replace NIB files and Interface Builder
Text-based, not binary
Agile for rapid development, adapts to rapidly changing code
Able to [...]]]></summary>
      <content type="html" xml:base="http://livingcode.org/2004/11/03/a-new-renaissance"><![CDATA[<p>Yesterday I laid out the issues I have with using Interface Builder to create Cocoa applications (whether in Objective-C or Python), and my requirements for a replacement. To sum up, here are the requirements again:</p>
<ul>
<li>Declarative</li>
<li>Simple and powerful</li>
<li>Able to replace NIB files and Interface Builder</li>
<li>Text-based, not binary</li>
<li>Agile for rapid development, adapts to rapidly changing code</li>
<li>Able to specify simple apps completely, in code, without resorting to pictures or talking the user through mouse gestures</li>
</ul>
<p>As I hinted at previously, I think I&#8217;ve found the tool I was looking for in GNUstep Renaissance, and as an added bonus, it can be used to create applications for Linux, unix, and Windows using the GNUstep framework. So although I&#8217;m interested mainly in building applications for OS X, there is still a chance for cross-platform compatibility.</p>
<p>So what does Renaissance look like? It&#8217;s and XML format, similar to HTML and Mozilla XUL (but simpler than XUL). Today I will cover how to install Renaissance and set it up to use from PyObjC.</p>
<p>Prerequisites (this is my setup, others may work, but I haven&#8217;t tested them).</p>
<ol>
<li>A Mac</li>
<li>OS X (10.3)</li>
<li>PyObjC (1.1), available from <a href="http://pyobjc.sourceforge.net/">http://pyobjc.sourceforge.net/</a></li>
<li>py2app (0.1.4), available from <a href="http://pythonmac.org/wiki/py2app">http://pythonmac.org/wiki/py2app</a> (we&#8217;ll use this to build our double-clickable applications)</li>
<li>Renaissance framework (0.8), available from <a href="http://www.gnustep.it/Renaissance/Download.html">http://www.gnustep.it/Renaissance/Download.html</a> (this is the secret sauce)</li>
</ol>
<p>Once you have the prerequisites installed, you need to make Renaissance available from Python. In your site-packages directory (on my machine this is <em>/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages</em>) add a Renaissance directory containing the following file:</p>
<p><strong>__init__.py </strong></p>
<pre class="code">import objc, AppKit, Foundation</pre>
<pre class="code">objc.loadBundle('Renaissance', globals(),</pre>
<pre class="code">    bundle_path='/Library/Frameworks/Renaissance.framework')</pre>
<pre class="code">del objc, AppKit, Foundation</pre>
<p>Well, that was easy enough. Next up, a Hello World application.</p>
]]></content>
        </entry>
  </feed>
