+ if (i.value ()["key"].isString ()) {
+ key = i.value ()["key"].cast<std::string> ();
+ }
+
+ LuaDialogWidget* w = NULL;
+
+ if (type == "heading") {
+ Gtk::AlignmentEnum xalign = Gtk::ALIGN_CENTER;
+ if (i.value ()["align"].isString ()) {
+ std::string align = i.value ()["align"].cast <std::string> ();
+ if (align == "left") {
+ xalign = Gtk::ALIGN_LEFT;
+ } else if (align == "right") {
+ xalign = Gtk::ALIGN_RIGHT;
+ }
+ }
+ w = new LuaDialogHeading (title, xalign);
+ } else if (type == "label") {
+ Gtk::AlignmentEnum xalign = Gtk::ALIGN_CENTER;
+ if (i.value ()["align"].isString ()) {
+ std::string align = i.value ()["align"].cast <std::string> ();
+ if (align == "left") {
+ xalign = Gtk::ALIGN_LEFT;
+ } else if (align == "right") {
+ xalign = Gtk::ALIGN_RIGHT;
+ }
+ }
+ w = new LuaDialogLabel (title, xalign);
+ } else if (type == "hseparator") {
+ w = new LuaHSeparator ();
+ }
+ /* the following widgets do require a key */
+ else if (key.empty ()) {
+ continue;
+ }
+ else if (type == "checkbox") {