[KSS-checkins] r50845 - kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo
jone at codespeak.net
jone at codespeak.net
Mon Jan 21 16:50:40 CET 2008
Author: jone
Date: Mon Jan 21 16:50:40 2008
New Revision: 50845
Added:
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.css
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.kss
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.pt
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.py
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.pyc (contents, props changed)
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.zcml
Modified:
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml
kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py
Log:
added demo application "typewriter"
Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py (original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/config.py Mon Jan 21 16:50:40 2008
@@ -17,6 +17,7 @@
zope_demos = (
KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
+ KSSDemo('', 'Applications', "typewriter.html", "Typewriter"),
## KSSDemo('', '', "draganddrop.html", "Scriptaculous drag and drop"),
KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),
KSSDemo('', 'Selectors', 'selectors.html', 'Parent node selector'),
Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml (original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/configure.zcml Mon Jan 21 16:50:40 2008
@@ -548,5 +548,8 @@
<!-- Dynamic table -->
<include file="dynamic_table.zcml" />
+ <!-- Typewriter -->
+ <include file="typewriter.zcml" />
+
</configure>
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.css
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.css Mon Jan 21 16:50:40 2008
@@ -0,0 +1,47 @@
+div.key {
+ border: 1px solid #FF4916;
+ display: table-cell;
+ padding: 10px;
+ width: 15px;
+ text-align: center;
+}
+
+div.key.active {
+ background-color: red;
+ color: white;
+}
+
+div.key.spacekey {
+ width: 150px;
+}
+
+input#field {
+ border: 1px solid #FF4916;
+ width: 100%;
+}
+
+div.keyrow {
+ display: inline;
+}
+
+div#pattern {
+ border: 1px solid #FF4916;
+}
+
+hr {
+ border: none;
+ border-top: 1px solid #FF4916;
+}
+
+input.lesson {
+ color: #FF4916;
+ background: none;
+ border: 1px solid #FF4916;
+}
+
+input.lesson:hover, input.lesson.active {
+ background-color: #FF4916;
+ color: white;
+ cursor: pointer;
+}
+
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.kss
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.kss Mon Jan 21 16:50:40 2008
@@ -0,0 +1,26 @@
+input#field:keyup {
+ evt-keyup-preventdefault: false;
+ action-server: typewriter_keyup;
+ typewriter_keyup-keycode: pass(keycode);
+}
+
+input#field:keydown {
+ evt-keydown-preventdefault: false;
+ action-server: typewriter_keydown;
+ typewriter_keydown-keycode: pass(keycode);
+}
+
+body:load {
+ action-client: executeCommand;
+ executeCommand-name: focus;
+ executeCommand-selector: "input#field";
+}
+
+input.lesson:click {
+ action-server: setCurrentLesson;
+ setCurrentLesson-title: nodeAttr(value);
+ action-client: executeCommand;
+ executeCommand-name: focus;
+ executeCommand-selector: "input#field";
+}
+
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.pt
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.pt Mon Jan 21 16:50:40 2008
@@ -0,0 +1,57 @@
+<html tal:define="viewname string:typewriter">
+
+ <head>
+
+ <title>Typewriter</title>
+
+ <metal:header use-macro="context/@@header_macros/header_resources" />
+ <link rel="stylesheet" type="text/css"
+ tal:attributes="href
+ string:${context/@@absolute_url}/++resource++${viewname}.css"/>
+
+ </head>
+
+ <body>
+
+ <p metal:use-macro="context/@@body_macros/header">header</p>
+
+ <h2>Typewriter</h2>
+
+ <tal:block tal:repeat="lesson view/getLessonTitles">
+ <input type="button" class="lesson"
+ tal:attributes="value lesson;
+ id python:'lesson_%s' % str(view.getLessonTitles().index(lesson));
+ class python:view.getLessonTitles()[0]==lesson and 'lesson active' or 'lesson';" />
+ </tal:block>
+
+ <br />
+ <br />
+
+ <div id="pattern" tal:content="view/loadInitialPattern"></div>
+
+ <br />
+
+ <input type="text" id="field" name="field" value="" /><br />
+ <br />
+
+ <div style="text-align:center;">
+ <tal:block tal:repeat="line view/displayedKeys">
+ <div class="keyrow">
+ <tal:block tal:repeat="keycode line">
+ <div class="key"
+ tal:condition="python:keycode!=32"
+ tal:content="python:chr(keycode)"
+ tal:attributes="id string:key_${keycode}" />
+ <div class="key spacekey"
+ tal:condition="python:keycode==32"
+ tal:attributes="id string:key_${keycode}">
+
+ </div>
+ </tal:block>
+ </div>
+ <br />
+ </tal:block>
+ </div>
+
+ </body>
+</html>
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.py
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.py Mon Jan 21 16:50:40 2008
@@ -0,0 +1,87 @@
+# Copyright (c) 2005-2007
+# Authors: KSS Project Contributors (see docs/CREDITS.txt)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+from kss.core import KSSView, force_unicode, KSSExplicitError, kssaction
+from time import time
+from persistent.list import PersistentList
+
+class KSSTypewriterDemo(KSSView):
+
+ def displayedKeys(self):
+ keys = [
+ [113, 119, 101, 114, 116, 122, 117, 105, 111, 112],
+ [97, 115, 100, 102, 103, 104, 106, 107, 108],
+ [121, 120, 99, 118, 98, 110, 109],
+ [32]
+ ]
+ return keys
+
+ def setCurrentLesson(self, title):
+ text = self.getLessons()[title].strip()
+ self.context.setValue('typewriter', text)
+ self.getCommandSet('core').replaceInnerHTML('div#pattern', text)
+ self.getCommandSet('core').setAttribute('input#field', 'value', '')
+ self.getCommandSet('core').removeClass('input.lesson', 'active')
+ self.getCommandSet('core').addClass('input#lesson_%s' % self.getLessonTitles().index(title), 'active')
+ return self.render()
+
+
+ def loadInitialPattern(self):
+ lessonText = self.getLessons()[self.getLessonTitles()[0]]
+ self.context.setValue('typewriter', lessonText)
+ return lessonText
+
+
+
+ def getLessons(self):
+ lessons = {
+ 'Lesson 1' : 'This is our first lesson at the SnowSprint',
+ 'Lesson 2' : 'WTF',
+ }
+ return lessons
+
+ def getLessonTitles(self):
+ titles = self.getLessons().keys()
+ titles.sort()
+ return titles
+
+
+ def keydown(self, keycode):
+ keycode = int(keycode)
+ if keycode == 16:
+ for key in range(97, 97+26):
+ self.getCommandSet('core').replaceInnerHTML('div#key_%s' % key, chr(key).upper())
+ elif keycode in range(97, 97+26) + range(65, 65+26) + [32]:
+ self.getCommandSet('core').addClass('div#key_%s' % keycode, 'active')
+ currentText = self.context.getValue('typewriter', '')
+ if len(currentText)>0 and currentText[0]==chr(keycode):
+ currentText = currentText[1:]
+ self.context.setValue('typewriter', currentText)
+ if len(currentText)==0:
+ currentText = 'please select another lesson'
+ self.getCommandSet('core').removeClass('input.lesson', 'active')
+ self.getCommandSet('core').replaceInnerHTML('div#pattern', currentText.replace(' ', ' '))
+ return self.render()
+
+ def keyup(self, keycode):
+ keycode = int(keycode)
+ if keycode == 16:
+ for key in range(97, 97+26):
+ self.getCommandSet('core').replaceInnerHTML('div#key_%s' % key, chr(key))
+ elif keycode in range(97, 97+26) + range(65, 65+26) + [32]:
+ self.getCommandSet('core').removeClass('div#key_%s' % keycode, 'active')
+ return self.render()
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.pyc
==============================================================================
Binary file. No diff available.
Added: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.zcml
==============================================================================
--- (empty file)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/typewriter.zcml Mon Jan 21 16:50:40 2008
@@ -0,0 +1,51 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:kss="http://namespaces.zope.org/kss"
+ xmlns:zcml="http://namespaces.zope.org/zcml"
+ i18n_domain="kss"
+ >
+
+ <!-- Typewriter -->
+ <browser:page
+ for="kss.demo.interfaces.ISimpleContent"
+ class=".typewriter.KSSTypewriterDemo"
+ template="typewriter.pt"
+ name="typewriter.html"
+ permission="zope.View"
+ />
+
+ <browser:resource
+ file="typewriter.kss"
+ name="typewriter.kss"
+ />
+
+ <browser:resource
+ file="typewriter.css"
+ name="typewriter.css"
+ />
+
+ <browser:page
+ for="kss.demo.interfaces.ISimpleContent"
+ class=".typewriter.KSSTypewriterDemo"
+ attribute="keyup"
+ name="typewriter_keyup"
+ permission="zope.View"
+ />
+
+ <browser:page
+ for="kss.demo.interfaces.ISimpleContent"
+ class=".typewriter.KSSTypewriterDemo"
+ attribute="keydown"
+ name="typewriter_keydown"
+ permission="zope.View"
+ />
+
+ <browser:page
+ for="kss.demo.interfaces.ISimpleContent"
+ class=".typewriter.KSSTypewriterDemo"
+ attribute="setCurrentLesson"
+ name="setCurrentLesson"
+ permission="zope.View"
+ />
+</configure>
+
Modified: kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py
==============================================================================
--- kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py (original)
+++ kukit/kss.core/branch/improve-demos/kss/core/plugins/core/demo/zopeconfig.py Mon Jan 21 16:50:40 2008
@@ -19,6 +19,7 @@
demos = (
KSSDemo('', 'Applications', "dynamic_table.html", "Addressbook"),
+ KSSDemo('', 'Applications', "typewriter.html", "Typewriter"),
## KSSDemo('', '', "draganddrop.html", "Scriptaculous drag and drop"),
KSSDemo('', 'Parameter functions', 'pf_forms.html', 'Forms'),
KSSDemo('', 'Selectors', 'selectors.html', 'Parent node selector'),
More information about the Kukit-checkins
mailing list