Mercurial > repos > tabletprog
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{ |