comparison src/editor.tp @ 117:f4e464a17579

Cleanup selection code in editor.
author Mike Pavone <pavone@retrodev.com>
date Mon, 15 Apr 2013 21:35:37 -0700
parents 9cf3e0b18ecc
children 0a66fe3a368a
comparison
equal deleted inserted replaced
116:9cf3e0b18ecc 117:f4e464a17579
42 //editor code 42 //editor code
43 selection <- #{ 43 selection <- #{
44 valid? <- false 44 valid? <- false
45 } 45 }
46 46
47 setSelection:withInNode <- :astnode :innode {
48 fakeEvent <- #{
49 stopPropagation <- :Blah {
50 }
51 }
52 selection <- #{
53 valid? <- true
54 in <- {
55 (innode domNode) onclick: fakeEvent
56 }
57 out <- {
58 fakeEvent <- #{
59 stopPropagation <- :Blah {
60 }
61 }
62 ((astnode up) domNode) onclick: fakeEvent
63 }
64 }
65 }
66
47 editFile <- :path { 67 editFile <- :path {
48 get: path :request { 68 get: path :request {
49 addClass: (q: "body") "editorMode" 69 addClass: (q: "body") "editorMode"
50 src <- request responseText 70 src <- request responseText
51 ast <- parser parse: src 71 ast <- parser parse: src
103 123
104 opClick <- :domnode astnode event { 124 opClick <- :domnode astnode event {
105 selectParent: domnode 125 selectParent: domnode
106 selectQuery: ".selectParent > .opname" in: domnode 126 selectQuery: ".selectParent > .opname" in: domnode
107 showOps 127 showOps
128 setSelection: astnode withInNode: (astnode left)
108 event stopPropagation: (foreign: undefined) 129 event stopPropagation: (foreign: undefined)
109 } 130 }
110 131
111 funClick <- :domnode astnode event { 132 funClick <- :domnode astnode event {
112 selectParent: domnode 133 selectParent: domnode
113 selectQuery: ".selectParent > .funpart" in: domnode 134 selectQuery: ".selectParent > .funpart" in: domnode
114 symtable <- astnode symbols 135 symtable <- astnode symbols
115 syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym { 136 syms <- filter: (symtable allSymbols: (foreign: undefined)) :sym {
116 isLambda: ((symtable find: sym) def) 137 isLambda: ((symtable find: sym) def)
117 } 138 }
118 self selection!: #{ 139 inner <- if: (astnode receiver) != (foreign: null) {
119 valid? <- true 140 astnode receiver
120 in <- { 141 } else: {
121 fakeEvent <- #{ 142 (astnode args) getEl: 0
122 stopPropagation <- :Blah { 143 }
123 } 144 setSelection: astnode withInNode: inner
124 }
125 if: (astnode receiver) != (foreign: null) {
126 ((astnode receiver) domNode) onclick: fakeEvent
127 } else: {
128 if: ((astnode args) length) > 0 {
129 (((astnode args) getEl: 0) domNode) onclick: fakeEvent
130 }
131 }
132 }
133 out <- {
134 fakeEvent <- #{
135 stopPropagation <- :Blah {
136 }
137 }
138 ((astnode up) domNode) onclick: fakeEvent
139 }
140 }
141 popInscope: syms onClick: :key { 145 popInscope: syms onClick: :key {
142 astnode name!: key 146 astnode name!: key
143 parts <- key split: ":" 147 parts <- key split: ":"
144 nodes <- [] 148 nodes <- []
145 each: (domnode children) :idx val{ 149 each: (domnode children) :idx val{