void LegendWidget::restore(Graph *g, const QStringList& lst) { QColor backgroundColor = Qt::white; double x = 0.0, y = 0.0; QStringList::const_iterator line; LegendWidget *l = new LegendWidget(g); for (line = lst.begin(); line != lst.end(); line++){ QString s = *line; if (s.contains("<Frame>")) l->setFrameStyle((s.remove("<Frame>").remove("</Frame>").toInt())); else if (s.contains("<Color>")) l->setFrameColor(QColor(s.remove("<Color>").remove("</Color>"))); else if (s.contains("<FrameWidth>")) l->setFrameWidth(s.remove("<FrameWidth>").remove("</FrameWidth>").toInt()); else if (s.contains("<LineStyle>")) l->setFrameLineStyle(PenStyleBox::penStyle(s.remove("<LineStyle>").remove("</LineStyle>").toInt())); else if (s.contains("<x>")) x = s.remove("<x>").remove("</x>").toDouble(); else if (s.contains("<y>")) y = s.remove("<y>").remove("</y>").toDouble(); else if (s.contains("<Text>")){ QStringList txt; while ( s != "</Text>" ){ s = *(++line); txt << s; } txt.pop_back(); l->setText(txt.join("\n")); } else if (s.contains("<Font>")){ QStringList lst = s.remove("<Font>").remove("</Font>").split("\t"); QFont f = QFont(lst[0], lst[1].toInt(), lst[2].toInt(), lst[3].toInt()); f.setUnderline(lst[4].toInt()); f.setStrikeOut(lst[5].toInt()); l->setFont(f); } else if (s.contains("<TextColor>")) l->setTextColor(QColor(s.remove("<TextColor>").remove("</TextColor>"))); else if (s.contains("<Background>")) backgroundColor = QColor(s.remove("<Background>").remove("</Background>")); else if (s.contains("<Alpha>")) backgroundColor.setAlpha(s.remove("<Alpha>").remove("</Alpha>").toInt()); else if (s.contains("<Angle>")) l->setAngle(s.remove("<Angle>").remove("</Angle>").toInt()); else if (s.contains("<AutoUpdate>")) l->setAutoUpdate(s.remove("<AutoUpdate>").remove("</AutoUpdate>").toInt()); } if (l){ l->setBackgroundColor(backgroundColor); l->setOriginCoord(x, y); g->add(l, false); } }
foreach(QWidget *i, d_widgets){ LegendWidget *l = qobject_cast<LegendWidget *>(i); if (!l){ QRect r = operateOn(i->geometry()); i->setGeometry(r); FrameWidget *f = qobject_cast<FrameWidget *>(i); if (f) f->updateCoordinates(); continue; } QRect new_rect = operateOn(l->geometry()); l->move(new_rect.topLeft()); if (!l->text().isEmpty()){ QFont f = l->font(); f.setPointSize(f.pointSize() * new_rect.width() * new_rect.height()/(l->rect().width() * l->rect().height())); l->setFont(f); l->plot()->notifyFontChange(f); } }