void TemplateDlg::EnterTemplate() { const PackageTemplate& tp = ActualTemplate(); ArrayMap<String, EscValue> var; var.Add("PACKAGE", (String)~package); StdLib(var); label.Clear(); ctrl.Clear(); Point pos = templist.GetRect().BottomLeft(); pos.y += 8; int cx = cancel.GetRect().right - pos.x; for(int i = 0; i < tp.item.GetCount(); i++) { const TemplateItem& m = tp.item[i]; if(m.type == TEMPLATEITEM_OPTION) ctrl.Create<Option>().SetLabel(m.label); else { label.Add().SetLabel(m.label).LeftPos(pos.x, cx).TopPos(pos.y); Add(label.Top()); pos.y += label.Top().GetMinSize().cy; switch(m.type) { case TEMPLATEITEM_ID: { EditField *e = new EditField; e->SetFilter(IdFilter); ctrl.Add(e); break; } case TEMPLATEITEM_FILENAME: { EditField *e = new EditField; e->SetFilter(FilenameFilter); ctrl.Add(e); break; } case TEMPLATEITEM_SELECT: { DropList *d = new DropList; for(int i = 0; i < m.value.GetCount(); i++) d->Add(i, m.value[i]); if(m.value.GetCount()) d->SetIndex(0); ctrl.Add(d); break; } case TEMPLATEITEM_TEXT: { EditField *e = new EditField; ctrl.Add(e); break; } } } Add(ctrl.Top()); ctrl.Top() << ~delay; ctrl.Top().LeftPos(pos.x, cx).TopPos(pos.y); pos.y += ctrl.Top().GetMinSize().cy + 6; ctrl.Top().ClearModify(); } Inits(); Preview(); }
ArrayMap<String, EscValue> TemplateDlg::MakeVars() { const PackageTemplate& tp = ActualTemplate(); ArrayMap<String, EscValue> var = MakeVars0(); for(int i = 0; i < tp.item.GetCount(); i++) var.Add(tp.item[i].id, EscFromStdValue(~ctrl[i])); StdLib(var); return var; }
void CleanUsc() { UscGlobal().Clear(); UscMacros().Clear(); if(sCleanModules) sCleanModules(); StdLib(UscGlobal()); Escape(UscGlobal(), "cout(x)", ESC_cout); Escape(UscGlobal(), "dump(x)", ESC_dump); }
void Main() { String code = LoadFile("E:\\sic.sic"); ArrayMap<String, SVal> global; Escape(global, "print(x)", SIC_Print); Escape(global, "dump_locals()", SIC_DumpLocals); StdLib(global); try { Scan(global, code); TimeStop(); SVal ret = Execute(global, "main"); RLOG(TimeStop()); RLOG("RETURN VALUE: " << ret.Dump()); } catch(CParser::Error& e) { RLOG(e); } }