diff --git a/app/mindmap/eaf-mindmap.el b/app/mindmap/eaf-mindmap.el index aef99b1..ad4feb6 100644 --- a/app/mindmap/eaf-mindmap.el +++ b/app/mindmap/eaf-mindmap.el @@ -318,14 +318,14 @@ actural call `org-json-gen-alist1' to work." (switch-to-buffer edit-text-buffer) (setq-local eaf-mindmap--current-add-mode "sub") (setq header-line-format - (substitute-command-keys - (concat - "\\" - " EAF/" eaf--buffer-app-name " EDIT: " - "Confirm with `\\[eaf-edit-buffer-confirm]', " - "Cancel with `\\[eaf-edit-buffer-cancel]', " - "Separate diffrent nodes with 'RET'. " - ))) + (substitute-command-keys + (concat + "\\" + " EAF/" eaf--buffer-app-name " EDIT: " + "Confirm with `\\[eaf-edit-buffer-confirm]', " + "Cancel with `\\[eaf-edit-buffer-cancel]', " + "Separate diffrent nodes with 'RET'. " + ))) ;; When text line number above (when (> (line-number-at-pos) 30) (beginning-of-buffer)) @@ -347,14 +347,14 @@ actural call `org-json-gen-alist1' to work." (switch-to-buffer edit-text-buffer) (setq-local eaf-mindmap--current-add-mode "brother") (setq header-line-format - (substitute-command-keys - (concat - "\\" - " EAF/" eaf--buffer-app-name " EDIT: " - "Confirm with `\\[eaf-edit-buffer-confirm]', " - "Cancel with `\\[eaf-edit-buffer-cancel]', " - "Separate diffrent nodes with 'RET'. " - ))) + (substitute-command-keys + (concat + "\\" + " EAF/" eaf--buffer-app-name " EDIT: " + "Confirm with `\\[eaf-edit-buffer-confirm]', " + "Cancel with `\\[eaf-edit-buffer-cancel]', " + "Separate diffrent nodes with 'RET'. " + ))) ;; When text line number above (when (> (line-number-at-pos) 30) (beginning-of-buffer)) @@ -376,14 +376,14 @@ actural call `org-json-gen-alist1' to work." (switch-to-buffer edit-text-buffer) (setq-local eaf-mindmap--current-add-mode "middle") (setq header-line-format - (substitute-command-keys - (concat - "\\" - " EAF/" eaf--buffer-app-name " EDIT: " - "Confirm with `\\[eaf-edit-buffer-confirm]', " - "Cancel with `\\[eaf-edit-buffer-cancel]', " - "Separate diffrent nodes with 'RET'. " - ))) + (substitute-command-keys + (concat + "\\" + " EAF/" eaf--buffer-app-name " EDIT: " + "Confirm with `\\[eaf-edit-buffer-confirm]', " + "Cancel with `\\[eaf-edit-buffer-cancel]', " + "Separate diffrent nodes with 'RET'. " + ))) ;; When text line number above (when (> (line-number-at-pos) 30) (beginning-of-buffer)) diff --git a/app/mindmap/index.html b/app/mindmap/index.html index 79cc335..b7f167a 100644 --- a/app/mindmap/index.html +++ b/app/mindmap/index.html @@ -1,336 +1,336 @@ - - - - - - - - - - -
- - + + + + +
+ + - + function change_text_color(color) { + var selected_id = get_selected_nodeid(); + if(selected_id) { + _jm.set_node_color(selected_id, null, color); + } + } + + function select_root_node() { + _jm.select_node("root"); + } + + function init_root_node() { + _jm = jsMind.show(options); + select_root_node(); + } + + function init_background(color) { + document.getElementById("jsmind_container").style.backgroundColor = color; + } + + function get_root_node_topic() { + return _jm.get_node("root").topic; + } + + function get_node_topic() { + var selected_node = _jm.get_selected_node(); // as parent of new node + if (selected_node) { + return selected_node.topic; + } else { + return "" + } + } + + function add_sub_node(){ + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!selected_node) { + _jm.move_node(selected_id,'_first_'); + } + + var nodeid = jsMind.util.uuid.newid(); + var node = _jm.add_node(selected_node, nodeid, 'Topic'); + _jm.select_node(node); + } + + function add_texted_sub_node(text){ + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!selected_node) { + _jm.move_node(selected_id,'_first_'); + } + + var nodeid = jsMind.util.uuid.newid(); + _jm.add_node(selected_node, nodeid, text); + } + + function add_brother_node(){ + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!selected_node) { + _jm.move_node(selected_id,'_first_'); + } + if(_jm.view.is_editing()) { + _jm.end_edit(); + } else { + var nodeid = jsMind.util.uuid.newid(); + var node = _jm.insert_node_after(selected_node, nodeid, 'Topic'); + _jm.select_node(node); + } + } + + function add_texted_brother_node(text){ + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!selected_node) { + _jm.move_node(selected_id,'_first_'); + } + if(_jm.view.is_editing()) { + _jm.end_edit(); + } else { + var nodeid = jsMind.util.uuid.newid(); + _jm.insert_node_after(selected_node, nodeid, text); + } + } + + function get_selected_nodeid(){ + var selected_node = _jm.get_selected_node(); + if(!!selected_node){ + return selected_node.id; + }else{ + return null; + } + } + + function remove_node(){ + var selected_id = get_selected_nodeid(); + if(selected_id) { + _jm.select_node(_jm.get_selected_node().parent); + _jm.remove_node(selected_id); + } + } + + function update_node_topic(topic) { + var selected_id = get_selected_nodeid(); + if (selected_id) { + _jm.update_node(selected_id, topic); + } + } + + function update_node_topic_inline() { + var selected_id = get_selected_nodeid(); + if (selected_id) { + _jm.begin_edit(selected_id); + } + } + + function zoom_in() { + _jm.view.zoom_in(); + }; + + function zoom_out() { + _jm.view.zoom_out(); + }; + + function zoom_reset() { + _jm.view.set_zoom(1); + } + + function select_up_node(){ + var selected_node = _jm.get_selected_node(); + if(!!selected_node){ + var up_node = _jm.find_node_before(selected_node); + if(!up_node){ + var np = _jm.find_node_before(selected_node.parent); + if(!!np && np.children.length > 0){ + up_node = np.children[np.children.length-1]; + } + } + if(!!up_node){ + _jm.select_node(up_node); + } + } + } + + function select_down_node(){ + var selected_node = _jm.get_selected_node(); + if(!!selected_node){ + var down_node = _jm.find_node_after(selected_node); + if(!down_node){ + var np = _jm.find_node_after(selected_node.parent); + if(!!np && np.children.length > 0){ + down_node = np.children[0]; + } + } + if(!!down_node){ + _jm.select_node(down_node); + } + } + } + + function select_left_node(){ + select_relative_node(-1); + } + + function select_right_node(){ + select_relative_node(1); + } + + function select_relative_node(d){ + var selected_node = _jm.get_selected_node(); + var node = null; + if(!!selected_node){ + if(selected_node.isroot){ + var c = selected_node.children; + var children = []; + for(var i=0;i 0){ + node = children[Math.floor((childrencount-1)/2)] + } + }else{ + node = selected_node.parent; + } + if(!!node){ + _jm.select_node(node); + } + } + } + + function node_is_focus() { + return _jm.view.is_editing(); + } + + function toggle_node() { + var selected_node = _jm.get_selected_node(); // as parent of new node + if (selected_node) { + _jm.toggle_node(selected_node); + } + } + + function save_screenshot() { + _jm.screenshot.shootDownload(); + } + + function open_file(file_base64_content) { + _jm = jsMind.show(options); + + var file_data = decodeURIComponent(escape(window.atob(file_base64_content))); + var mind = jsMind.util.json.string2json(file_data); + + if(!!mind){ + _jm.show(mind); + + select_root_node(); + } + } + + function save_file() { + return jsMind.util.json.json2string(_jm.get_data()); + } + + function change_node_background(image) { + var selected_id = get_selected_nodeid(); + if(selected_id) { + _jm.set_node_background_image(selected_id, "file://" + image); + } + } + + function relayout() { + _jm.view.relayout(); + } + + function paste_node_tree(src_node_id) { + /* var selected_node = _jm.get_selected_node(); + * if(!!selected_node){ + * var src_node = _jm.get_node(src_node_id); + * _jm.move_node(src_node, selected_node, selected_node.direction); + * } */ + + var selected_node = _jm.get_selected_node(); + if(!!selected_node){ + var src_node = _jm.get_node(src_node_id); + _jm.move_node(src_node, src_node_id, selected_node.id, selected_node.direction); + } + } + + function remove_middle_node() { + var selected_node = _jm.get_selected_node(); + if(!!selected_node){ + var children = selected_node.children; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + _jm.move_node(child, child.id, selected_node.parent.id, selected_node.parent.direction); + } + + _jm.select_node(selected_node.parent); + _jm.remove_node(selected_node.id); + } + } + + function add_middle_node() { + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!!selected_node) { + var topic = selected_node.topic; + + add_brother_node(); + + var brother_node = _jm.get_selected_node(); + _jm.update_node(brother_node.id, topic); + _jm.update_node(selected_node.id, "Topic"); + + _jm.move_node(selected_node, selected_node.id, brother_node.id, brother_node.direction); + + _jm.select_node(selected_node); + } + } + + function add_texted_middle_node(text){ + var selected_node = _jm.get_selected_node(); // as parent of new node + if(!!selected_node) { + var topic = selected_node.topic; + + if(_jm.view.is_editing()) { + _jm.end_edit(); + } else { + var nodeid = jsMind.util.uuid.newid(); + var node = _jm.insert_node_after(selected_node, nodeid, text); + _jm.select_node(node); + } + + var brother_node = _jm.get_selected_node(); + _jm.update_node(brother_node.id, topic); + _jm.update_node(selected_node.id, text); + + _jm.move_node(selected_node, selected_node.id, brother_node.id, brother_node.direction); + + _jm.select_node(selected_node); + } + + } + + diff --git a/eaf.el b/eaf.el index 270d522..d2beb2a 100644 --- a/eaf.el +++ b/eaf.el @@ -1296,8 +1296,8 @@ of `eaf--buffer-app-name' inside the EAF buffer." (with-current-buffer buffer (when (and (derived-mode-p 'eaf-mode) (string= eaf--buffer-id focus-buffer-id) - (select-window window) - (throw 'find-window t))))))))) + (select-window window) + (throw 'find-window t))))))))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" @@ -1666,7 +1666,7 @@ This function works best if paired with a fuzzy search package." (if history-file-exists (mapcar (lambda (h) (when (string-match history-pattern h) - (format "[%s] ⇰ %s" (match-string 1 h) (match-string 2 h)))) + (format "[%s] ⇰ %s" (match-string 1 h) (match-string 2 h)))) (with-temp-buffer (insert-file-contents browser-history-file-path) (split-string (buffer-string) "\n" t))) nil))) @@ -1825,11 +1825,11 @@ When called interactively, URL accepts a file that can be opened by EAF." (unless app-name ;; Output error to user if app-name is empty string. (user-error (concat (if app-name (concat "[EAF/" app-name "] ") "[EAF] ") - (cond - ((not (or (string-prefix-p "/" url) - (string-prefix-p "~" url))) "File %s cannot be opened.") - ((file-exists-p url) "File %s cannot be opened.") - (t "File %s does not exist."))) + (cond + ((not (or (string-prefix-p "/" url) + (string-prefix-p "~" url))) "File %s cannot be opened.") + ((file-exists-p url) "File %s cannot be opened.") + (t "File %s does not exist."))) url)) (unless args (setq args "")) (setq always-new (or always-new current-prefix-arg)) @@ -1927,21 +1927,21 @@ Make sure that your smartphone is connected to the same WiFi network as this com ;; Note: pickup buffer-id from buffer name and not restore buffer-id from buffer local variable. ;; Then we can switch edit buffer to any other mode, such as org-mode, to confirm buffer string. (cond ((equal eaf-mindmap--current-add-mode "sub") - (eaf-call "update_multiple_sub_nodes" - eaf--buffer-id - (buffer-string))) - ((equal eaf-mindmap--current-add-mode "brother") - (eaf-call "update_multiple_brother_nodes" - eaf--buffer-id - (buffer-string))) - ((equal eaf-mindmap--current-add-mode "middle") - (eaf-call "update_multiple_middle_nodes" - eaf--buffer-id - (buffer-string))) - (t - (eaf-call "update_focus_text" - eaf--buffer-id - (buffer-string)))) + (eaf-call "update_multiple_sub_nodes" + eaf--buffer-id + (buffer-string))) + ((equal eaf-mindmap--current-add-mode "brother") + (eaf-call "update_multiple_brother_nodes" + eaf--buffer-id + (buffer-string))) + ((equal eaf-mindmap--current-add-mode "middle") + (eaf-call "update_multiple_middle_nodes" + eaf--buffer-id + (buffer-string))) + (t + (eaf-call "update_focus_text" + eaf--buffer-id + (buffer-string)))) (kill-buffer) (delete-window))