« Adobe Apollo + Flex | Main | Tip of the day - Native look and feel »

Writing Darkstar applications in Python

You don't have to use Java in order to create Darkstar applications. Here is a simple project I wrote in Python - py_dsi.zip.

Darkstar application written in Python

makefile
hello.jfc - Install Fabric if you want to create the JXML file.
hello.jxml

Doing layout in Fabric

<layout class="java.awt.BorderLayout" xmlns:t="teppefall">
<component class="javax.swing.JScrollPane" constraint="Center" id="scroll">
<property name="viewportView" type="Component">
<component class="javax.swing.JList" id="list">
<!--<property name="background" value="#0000ff" type="color"/>-->
<property name="cellRenderer" type="Object" value="com.teppefall.ds.layout.jxml.MediaListRenderer"/>
<property name="listData" type="Vector">
<vector>
<item>StreamingServerOne</item>
<item>StreamingServerTwo</item>
</vector>
</property>
</component>
</property>
</component>
<component class="javax.swing.JPanel" constraint="East">
<!--<property name="background" value="#ff0000" type="color"/>-->
<layout class="com.teppefall.ds.layout.jxml.AssemblyBoxLayout$VBox" link="true">
<component class="javax.swing.JButton" text="Add..." id="add"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Edit..." enabled="false" id="edit"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Remove..." enabled="false" id="remove"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Close" id="close"/>
</layout>
</component>
<layout class="java.awt.BorderLayout" constraint="South">
<component class="javax.swing.JPanel" constraint="West">
<component class="javax.swing.JButton" text="Help" id="help"/>
</component>
<component class="javax.swing.JPanel" constraint="East">
<!--<property name="background" value="#00ff00" type="color"/>-->
<component class="javax.swing.JButton" text="Watch" id="watch">
<property name="defaultCapable" value="true" type="boolean"/>
</component>
</component>
</layout>
<listener type="selected" source="list" button="remove"/>
<listener type="selected" source="list" button="edit"/>
</layout>

hello.py


# hello.py
# Darkstar demo based on Python
from java.io import *
from java.awt import *
from java.beans import *
from com.teppefall.ds import *
from com.teppefall.ds.console import *
class JythonImporter:
def decode(self, xml):
decoder = XMLDecoder(BufferedInputStream(FileInputStream(xml)))
assembly = decoder.readObject()
return assembly
class Hello(Application):
jxml = "hello.jxml"
def __init__(self, args):
Application.__init__(self, "Servers", "Teppefall", "http://localhost", args, Dimension(416,235))
assembly = JythonImporter().decode(self.jxml)
if not assembly:
self.getApplicationFrame().getContentPane().add(Label("Not found: " + self.jxml))
else:
self.getApplicationFrame().getContentPane().add(assembly.getPanel())
list = assembly.getComponentById("list")
add = assembly.getComponentById("add")
edit = assembly.getComponentById("edit")
remove = assembly.getComponentById("remove")
help = assembly.getComponentById("help")
watch = assembly.getComponentById("watch")
edit.setEnabled(1)
remove.setEnabled(1)
self.showApplication()
if __name__ == '__main__':
import sys
##Application.launch(Hello.__class__) # broken under Jython
Hello(sys.argv)


Bookmark and Share

TrackBack

TrackBack URL for this entry:
http://www.installer.teppefall.com/movabletype/mt-tb.cgi/128

Comments

have a nice day!

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

This website is all about alpha and beta software

Download non-beta software here