Switch to side-by-side view

--- a/src/cdplugins/pycommon/cmdtalkplugin.py
+++ b/src/cdplugins/pycommon/cmdtalkplugin.py
@@ -1 +1,54 @@
-/home/dockes/projets/docklib/cmdtalk/cmdtalkplugin.py+#!/usr/bin/env python
+# Copyright (C) 2016 J.F.Dockes
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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 __future__ import print_function
+
+import cmdtalk
+
+prcnmkey = "cmdtalk:proc"
+
+class Dispatch:
+    def __init__(self):
+        self.map = {}
+        
+    def record(self, nm):
+        def decorator(func):
+            self.map[nm] = func
+            return func
+        return decorator
+
+    def run(self, nm, params):
+        func = self.map[nm]
+        return func(params)
+    
+class Processor:
+    def __init__(self, dispatcher):
+        self.em = cmdtalk.CmdTalk()
+        self.dispatcher = dispatcher
+        
+    def log(self, s, doexit = 0, exitvalue = 1):
+        self.em.log(s, doexit, exitvalue)
+        
+    def process(self, params):
+        self.em.log("pCmdTalkProcessor.process: [%s]" % params)
+        if not prcnmkey in params:
+            raise Exception('%s not in args' % prcnmkey)
+        
+        return self.dispatcher.run(params[prcnmkey], params)
+
+    def mainloop(self):
+        cmdtalk.main(self.em, self)