diff --git a/uppsrc/ide/LayDes/LayDes.lay b/uppsrc/ide/LayDes/LayDes.lay index f7542fe56..05a706af2 100644 --- a/uppsrc/ide/LayDes/LayDes.lay +++ b/uppsrc/ide/LayDes/LayDes.lay @@ -57,7 +57,7 @@ LAYOUT(InsertLangLayout, 252, 68) END_LAYOUT LAYOUT(VisGenLayout, 724, 488) - ITEM(Switch, type, SetLabel(t_("Dialog class\nModal classless dialog\nCtrl list\nCtrl list pairs")).LeftPosZ(8, 156).TopPosZ(8, 76)) + ITEM(Switch, type, SetLabel(t_("Dialog class\nDialog struct\nModal classless dialog\nCtrl list\nCtrl list pairs")).LeftPosZ(8, 156).TopPosZ(8, 76)) ITEM(Label, name_lbl, SetLabel(t_("Name")).LeftPosZ(8, 32).TopPosZ(96, 19)) ITEM(EditString, name, LeftPosZ(44, 120).TopPosZ(96, 19)) ITEM(Option, pars, SetLabel(t_("Parenthesis")).LeftPosZ(8, 152).TopPosZ(124, 15)) diff --git a/uppsrc/ide/LayDes/visgen.cpp b/uppsrc/ide/LayDes/visgen.cpp index b9cf64bf4..7e78ca434 100644 --- a/uppsrc/ide/LayDes/visgen.cpp +++ b/uppsrc/ide/LayDes/visgen.cpp @@ -50,10 +50,10 @@ void VisGenDlg::Refresh() oce << "Cancel"; if(HasItem("exit")) oce << "Exit"; + String n = ~name; + if(IsNull(n)) + n = GetName(); if(q == 0) { - String n = ~name; - if(IsNull(n)) - n = GetName(); s << "class " << n << " : public With" << layout.name << " {\n" << "\ttypedef " << n << " CLASSNAME;\n" << "\n" @@ -69,6 +69,19 @@ void VisGenDlg::Refresh() } else if(q == 1) { + s << "struct " << n << " : With" << layout.name << " {\n" + << "\ttypedef " << n << " CLASSNAME;\n" + << "\t" << n << "();\n" + << "};\n" + << "\n" + << n << "::" << n << "()\n" + << "{\n" + << oce; + s << "(*this, \"\");\n"; + s << "}\n"; + } + else + if(q == 2) { String n = ~name; if(IsNull(n)) n = "dlg"; @@ -91,7 +104,7 @@ void VisGenDlg::Refresh() s << ToUpper(id); else s << id; - if(q == 3) { + if(q == 4) { s << ", "; if(name2 && !IsNull(~name)) s << ~name << '.'; @@ -113,9 +126,10 @@ void VisGenDlg::Type() String n = GetName(); switch((int)~type) { case 0: + case 1: name <<= GetName(); break; - case 1: + case 2: name <<= "dlg"; break; default: