macro "Ctr -> assignments" { begin = .GetSelBegin(); end = begin + .GetSelCount(); while(end > begin) { d = c = .Get(--end); if(c == ",") d = ";\n"; else if(c == ")") d = ""; else if(c == "(") d = " = "; if(d != c) { .Remove(end, 1); .Insert(end, d); } } } macro "Kill RegisterHelpTopic" { for(;;) { if(!.Find("RegisterHelpTopicObjectTitle(")) return; line = .GetLine(.GetCursor()); if(!(.Get(.GetLinePos(line), 2) == "//")) break; } ident = .GetSelBegin() + .GetSelCount(); .MoveWordRight(); endid = .GetCursor(); id = .Get(ident, endid - ident); if(.Get(endid) == ",") { len = .GetLength(); while(++endid < len && .Get(endid) == " ") ; ist = .Get(endid, 4) == "t_(\""; if(ist || .Get(endid) == "\"") { bstr = endid + (ist ? 3 : 0); estr = bstr + 1; while(estr < len && !(.Get(estr) == "\"")) if(.Get(estr++) == "\\" && estr < len) estr++; if(estr < len && .Get(estr) == "\"") estr++; if(ist) nstr = "t_(" + .Get(bstr, estr - bstr) + ")"; else nstr = .Get(bstr, estr - bstr); .SetSelection(0, len); cout(id); .Replace(id + "HelpTitle()", nstr); .SetCursor(.GetLinePos(line)); .Insert("//"); } } } macro "Dialog class" Shift+Ctrl+D { ntr = Input("Name", "Title", "Return type"); n = ntr[0]; t = ntr[1]; if(t == "") t = "(dialog title)"; r = ntr[2]; if(r == "") r = "void"; isvoid = (r == "void"); dlgn = "Dlg" + n; if(n != "") { .Insert( "#define LAYOUTFILE \"" + dlgn + ".lay\"\n" "#include \n" "\n" "class " + dlgn + " : public With" + n + "Layout {\n" "public:\n" "\ttypedef " + dlgn + " CLASSNAME;\n" "\t" + dlgn + "();\n" "\n" "\t" + r + " Run();\n" "\n" "private:\n" "};\n" "\n" + r + " Run" + dlgn + "() { " + (isvoid ? "" : "return ") + dlgn + "().Run(); }\n" "\n" + dlgn + "::" + dlgn + "()\n" "{\n" "\t" + (isvoid ? "CtrlLayout" : "CtrlLayoutOKCancel") + "(*this, t_(\"" + t + "\"));\n" "\n" "}\n" "\n" + r + " " + dlgn + "::Run()\n" "{\n" + (isvoid ? "\tTopWindow::Run();\n" : "\tif(TopWindow::Run() != IDOK)\n" "\t\treturn false;\n" "\treturn true;\n" ) + "}\n" ); } } macro "Tool + On-menu fn" Shift+Ctrl+T { cn = Input("CLASSNAME", "Name", "Text", "Help"); cls = cn[0]; name = cn[1]; text = cn[2]; help = cn[3]; if(text == "") text = name; .Insert( "void " + cls + "::Tool" + name + "(Bar& bar)\n" "{\n" "\tbar.Add(t_(\"" + text + "\"), THISBACK(On" + name + "))" + (help == "" ? "" : "\n\t\t.Help(t_(\"" + help + "\"))") + ";\n" "}\n" "\n" "void " + cls + "::On" + name + "()\n" "{\n" "\t// action\n" "}\n" "\n" ); }