[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}">
+                        &nbsp;
+                    </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(' ', '&nbsp;'))
+        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