Martin Vermeer wrote: [A lot. You've been busy!] >> This stuff belongs in the InsetBoxParams constructor. >> Index: src/insets/insetbox.C >> +InsetBox::InsetBox(BufferParams const & bp, string const & label) >> + : InsetCollapsable(bp) >> +{ >> + params_.type = label; >> + params_.inner_box = true; >> + params_.use_parbox = false; >> + params_.pos ='t'; >> + params_.hor_pos ='c'; >> + params_.inner_pos ='t'; >> + params_.width = LyXLength("100col%"); >> + params_.special = "none"; >> + params_.height = LyXLength("1in"); >> + params_.height_special = "totalheight"; // default is >> 1\\totalheight > > OK, except type
What's wrong with InsetBox::Params::Params(string const & label); > See attached (and it still works!). Sorry for the added files > separately, this is my read-only CVS tree using gcc3. Looking again... why not move InsetBox::BoxType into the Params struct. That way you'll be able to store a BoxType type; variable in there rather than that string. Again, you could use a translator between string and enum when reading/writing. In insetbox.C: Personally, I would use namespace { typedef Translator<string, InsetBox::BoxType> BoxTranslator; BoxTranslator const & boxtranslator(); BoxTranslator const & boxtranslator_loc(); } ... end of file namespace { BoxTranslator const init_boxtranslator() { BoxTranslator translator("Boxed", InsetBox::Boxed); translator.addPair("Frameless", Frameless); translator.addPair("ovalbox", ovalbox); translator.addPair("Ovalbox", Ovalbox); translator.addPair("Shadowbox", Shadowbox); translator.addPair("Doublebox", Doublebox); } BoxTranslator const init_boxtranslator_loc() { BoxTranslator translator(_("Boxed"), InsetBox::Boxed); translator.addPair(_("Frameless"), Frameless); translator.addPair(_("ovalbox"), ovalbox); translator.addPair(_("Ovalbox"), Ovalbox); translator.addPair(_("Shadowbox"), Shadowbox); translator.addPair(_("Doublebox"), Doublebox); } BoxTranslator const & boxtranslator() { static BoxTranslator translator = init_boxtranslator(); return translator; } BoxTranslator const & boxtranslator_loc() { static BoxTranslator translator = init_boxtranslator_loc(); return translator; } } Change this: InsetBoxParams::InsetBoxParams() { inner_box = true; use_parbox = false; pos ='t'; hor_pos ='c'; inner_pos ='t'; width = LyXLength("100col%"); special = "none"; height = LyXLength("1in"); height_special = "totalheight"; // default is 1\\totalheight } to this: InsetBoxParams::InsetBoxParams() : inner_box(true), use_parbox(false), pos('t'), hor_pos('c'), inner_pos('t'), width(LyXLength("100col%")), special("none"), height(LyXLength("1in")), height_special("totalheight") // default is 1\\totalheight {} You must be sick to the back teeth of my suggestions ;-) -- Angus