about summary refs log tree commit diff stats
path: root/v.el
diff options
context:
space:
mode:
authorDarren Bane <darren.bane@gmail.com>2020-05-11 01:15:06 +0100
committerDarren Bane <darren.bane@gmail.com>2020-05-11 01:15:06 +0100
commitc066ab2a55a069802009568a051673b3505503d4 (patch)
tree3cf0613bb334461c1f39f55a78a4ff79d3fb971f /v.el
parent5eba13b70414e1a40ef2418978082c6e4ac37c19 (diff)
downloadlsp-c066ab2a55a069802009568a051673b3505503d4.tar.gz
Lots of unfinished stuff
Diffstat (limited to 'v.el')
-rw-r--r--v.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/v.el b/v.el
new file mode 100644
index 0000000..84903a9
--- /dev/null
+++ b/v.el
@@ -0,0 +1,31 @@
+(require 'eieio)
+(eval-when-compile (require 'cl-lib))
+(eval-when-compile (require 'cl-generic))
+(require 'jsonrpc)
+(defclass v-view ()
+  ((button :accessor button)
+    (model :accessor model)
+    (controller :writer controller)
+    ))
+(cl-defmethod initialize-instance :after ((self v-view) &rest initargs)
+  (oset self button (make-instance (find-class 'button) 'm "Click Me"))
+  (oset self model (make-instance (find-class 'v-model-stub)))
+  (oset self controller (make-instance (find-class 'v-controller-stub) 'm (model self) 'b (button self))))
+(defconst v--port-num 8194)
+(defvar v--conn (make-instance 'jsonrpc-process-connection
+                    :process (lambda ()
+                               (open-network-stream
+                                 "*MVC JSON-RPC*" nil
+                                 "localhost" v--port-num))))
+(defclass v-model-stub () (id :reader id))
+(cl-defmethod initialize-instance :after ((self v-model-stub) &rest initargs)
+  (oset self id (jsonrpc-request v--conn :create-model)))
+(cl-defgeneric get-number (model))
+(cl-defmethod get-number ((model v-model-stub))
+  (jsonrpc-request v--conn :get-number '(:id (id model))))
+(defclass v-controller-stub () (id :reader id))
+(cl-defmethod initialize-instance :after ((self v-controller-stub) &rest initargs)
+  (oset self id (jsonrpc-request v--conn :create-controller)))
+(cl-defgeneric on-button-clicked (controller))
+(cl-defmethod on-button-clicked ((controller v-controller-stub))
+  (jsonrpc-request v--conn :on-button-clicked '(:id (id controller))))