+// vim:syntax=javascript
+
+// Helper function to toggle frame
+function toggle_frame(map)
+{
+ if (map.getFrameType() == "NoFrame" ) {
+ map.setFrameType ("RoundedRectangle");
+ } else
+ map.setFrameType ("NoFrame");
+}
+function colorSubtreeWithQuickColor(n)
+{
+ map = vym.currentMap();
+ vym.selectQuickColor(n);
+ c = vym.currentColor();
+ map.colorSubtree (c);
+}
+
+// Macro F1: Color subtree red
+function macro_f1()
+{
+ colorSubtreeWithQuickColor(0);
+}
+
+// Macro F2: Color subtree orange
+function macro_f2()
+{
+ colorSubtreeWithQuickColor(1);
+
+ // Or if you prefer to edit the heading of a branch using "F2"-key,
+ // you can use below instead of above:
+ // vym.editHeading();
+}
+
+// Macro F3: Color subtree green
+function macro_f3()
+{
+ colorSubtreeWithQuickColor(2);
+}
+
+
+// Macro F4: Color subtree purple
+function macro_f4()
+{
+ colorSubtreeWithQuickColor(3);
+}
+
+// Macro F5: Color subtree blue
+function macro_f5()
+{
+ colorSubtreeWithQuickColor(4);
+}
+
+// Macro F6: Color subtree blue
+function macro_f6()
+{
+ colorSubtreeWithQuickColor(5);
+}
+
+// Macro F7: Color subtree black
+function macro_f7()
+{
+ colorSubtreeWithQuickColor(6);
+}
+
+// Macro F8: Color subtree dark gray
+function macro_f8()
+{
+ colorSubtreeWithQuickColor(7);
+}
+
+// Macro F9: Color subtree light gray
+function macro_f9()
+{
+ colorSubtreeWithQuickColor(8);
+}
+
+// Macro F10: Color subtree light white
+function macro_f10()
+{
+ colorSubtreeWithQuickColor(9);
+}
+
+// Macro F11: Repeat last command
+function macro_f11()
+{
+ map = vym.currentMap();
+ map.repeatLastCommand();
+}
+
+// Macro F12: toggle high prio task
+function macro_f12()
+{
+ // Assuming 3 states, which are cycled:
+ // 0 - nothing set
+ // 1 - high prio task with arrows
+ // 2 - done task without arrows, but green hook
+ map = vym.currentMap();
+ if (map.hasTask() ) {
+ // Switch to state 2
+ map.toggleTask();
+ map.unsetFlagByName("2arrow-up");
+ map.unsetFlagByName("stopsign");
+ map.setFlagByName("hook-green");
+ map.colorBranch("#0000ff");
+ } else {
+ if (map.hasActiveFlag("hook-green")) {
+ // Switch to state 0
+ map.unsetFlagByName("hook-green");
+ } else {
+ // Switch to state 1
+ map.setFlagByName("2arrow-up");
+ map.toggleTask();
+ }
+ }
+}
+
+
+// Macro Shift + F1: Frame background light red
+function macro_shift_f1()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background light red";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#ffb3b4");
+ statusMessage(status);
+}
+
+// Macro Shift + F2: Frame background light green
+function macro_shift_f2()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background light green";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#bdffd6");
+ statusMessage(status);
+}
+
+// Macro Shift + F3: Frame background light yellow
+function macro_shift_f3()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background light yellow";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#efefb3");
+ statusMessage(status);
+}
+
+// Macro Shift + F4: Frame background light blue
+function macro_shift_f4()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background light blue";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#e2e6ff");
+ statusMessage(status);
+}
+
+// Macro Shift + F5: Frame background light grey
+function macro_shift_f5()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background light grey";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#d6d6d6");
+ statusMessage(status);
+}
+
+// Macro Shift + F6: Frame background purple
+function macro_shift_f6()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background purple";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#ffaaff");
+ statusMessage(status);
+}
+
+// Macro Shift + F7: Frame background white
+function macro_shift_f7()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background white";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#ffffff");
+ statusMessage(status);
+}
+
+// Macro Shift + F8: Frame background black
+function macro_shift_f8()
+{
+ map = vym.currentMap();
+ status = "Background off";
+ if (map.getFrameType() == "NoFrame") {
+ status = "Background black";
+ }
+ toggle_frame ( map );
+ map.setFrameBrushColor("#000000");
+ statusMessage(status);
+}
+
+// Macro Shift + F9: Toggle frame to include children
+function macro_shift_f9()
+{
+ map = vym.currentMap();
+ map.toggleFrameIncludeChildren();
+}
+
+// Macro Shift + F10:
+// Useful for timestamps created on last entry
+function macro_shift_f10()
+{
+}
+
+// Macro Shift + F11: Replace "@..." by mutt aliases
+function macro_shift_f11()
+{
+ map = vym.currentMap();
+ lines = vym.loadFile("/home/uwe/.mutt/eb-aliases").split('\n');
+
+
+ if (map.getHeadingPlainText() == "parts") {
+ map.setHeadingPlainText("Participants");
+ }
+
+ map.initIterator("foobar");
+
+ while (map.nextIterator("foobar") ) {
+ heading = map.getHeadingPlainText();
+
+ // Search for "@alias" at beginning of heading
+ if (heading.search(/^@\w/) == 0) {
+ alias_map = heading.replace(/@/,"");
+
+ for(var i = 0;i < lines.length;i++){
+ if (lines[i].search(/^alias/) == 0) {
+ if (lines[i].search(alias_map) == 6) {
+ name = lines[i].replace(/^.+?\"/, "");
+ name = name.replace(/\".+/, "");
+
+ email = lines[i].replace(/^.+?</, "");
+ email = email.replace(/>.*/, "");
+
+ map.setHeadingPlainText(name);
+ }
+ }
+ }
+ } else {
+ print ("No alias found");
+ }
+ }
+}
+
+// Macro Shift + F12: Strip URLs from confluence and generate readable heading
+function macro_shift_f12()
+{
+ vym.clearConsole();
+ m1 = vym.currentMap();
+
+ if (vym.isConfluenceAgentAvailable() ) {
+ m1.setHeadingConfluencePageName();
+ statusMessage("Contacting Confluence...");
+ return;
+ }
+
+ org = m1.getURL();
+
+ if (org.length == 0) {
+ // No URL yet
+ org = m1.getHeadingPlainText();
+ print ("No URL yet");
+ print ("org: " + org);
+ m1.setURL(org);
+ }
+ print ("Original:");
+ print (org);
+
+ s = org;
+
+ // Chop trailing "/"
+ if (s[s.length-1] == '/') {
+ s = s.slice(0, s.length - 1);
+ }
+
+ // Remove confluence parts
+ if (s.indexOf("infohub") != -1) {
+ print("Found infohub page");
+ if (s.indexOf("spaceKey") != -1) {
+ s = s.replace(/^.*spaceKey=/g, "");
+ s = s.replace(/(&title=)/g, ": ");
+ } else
+ {
+ s = s.replace(/^.*display\//g, "");
+ s = s.replace(/\//g, ": ");
+ }
+ } else // no infohub page
+ {
+ // remove path
+ s = s.replace(/^.*\//g, "");
+ }
+
+ print (s);
+
+ // Replace "+" and "-"
+ s = s.replace(/\+/g, " ");
+ s = s.replace(/%3A/g, "");
+ print ("After replacing:");
+ print (s);
+
+ // Write new header
+ m1.setHeadingPlainText(s);
+
+ if ( org == s ) {
+ statusMessage ("Heading not changed.");
+ } else {
+ statusMessage("Changed heading: " + org + " -> " + s);
+ }
+}
\ No newline at end of file