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

Reply via email to