#include "gaboutstepdialog.h" #include "ui_gaboutstepdialog.h" #include "dm_guimanager.h" #include "ct_abstractstepplugin.h" #include "ct_result/abstract/ct_abstractresult.h" #include "ct_itemdrawable/abstract/ct_abstractitemdrawable.h" #include "cdm_citationinfo.h" #include "ct_global/ct_context.h" #include "ct_categories/tools/ct_categorymanager.h" GAboutStepDialog::GAboutStepDialog(CT_VirtualAbstractStep *step, QWidget *parent) : QDialog(parent), ui(new Ui::GAboutStepDialog) { ui->setupUi(this); initView(step); } GAboutStepDialog::~GAboutStepDialog() { delete ui; } void GAboutStepDialog::initView(CT_VirtualAbstractStep *step) { ui->scrollArea->setWidgetResizable(true); QString pluginName = GUI_MANAGER->getPluginManager()->getPluginName(step->getPlugin()); if (pluginName.left(5) == "plug_") { pluginName.remove(0, 5); } ui->pluginName->setText(pluginName); ui->stepName->setText(step->getPlugin()->getKeyForStep(*step)); if (step->getPlugin()->getPluginURL() == step->getStepURL()) { ui->lb_wiki_link->setText(QString(tr("Aide en ligne : Page internet du plugin")).arg(step->getPlugin()->getPluginURL())); } else { ui->lb_wiki_link->setText(QString(tr("Aide en ligne : Page internet de cette étape")).arg(step->getStepURL())); } ui->briefDescription->setText(step->getStepDescription()); QStringList citations = step->getStepRISCitations(); if (citations.size() > 0) { ui->citation->setVisible(true); ui->cb_ris->setVisible(true); ui->ris->setVisible(false); QString citation = tr("References :

"); QString risData; for (int i = 0 ; i < citations.size() ; i++) { citation.append(CDM_CitationInfo::parseRIS(citations.at(i))); if (i < citations.size() - 1) {citation.append("
");} risData.append(citations.at(i)); } ui->citation->setText(citation); ui->ris->setText(risData); } else { ui->citation->setVisible(false); ui->cb_ris->setVisible(false); ui->ris->setVisible(false); } ui->detailledDescription->setText(tr("Description détaillée :

") + step->getStepDetailledDescription()); // In models QTreeWidgetItem *inRootItem = new QTreeWidgetItem(ui->inModels); inRootItem->setData(0, Qt::DisplayRole, tr("Données en entrée :")); inRootItem->setExpanded(true); QList list = step->getInResultsModel(); QListIterator it(list); while(it.hasNext()) recursiveCreateItemsForResultModel(inRootItem, it.next()); //ui->inModels->expandAll(); // Out models QTreeWidgetItem *outRootItem = new QTreeWidgetItem(ui->outModels); outRootItem->setData(0, Qt::DisplayRole, tr("Données en sortie :")); outRootItem->setExpanded(true); QList listOut = step->getOutResultsModel(); QListIterator itO(listOut); while(itO.hasNext()) recursiveCreateItemsForResultModel(outRootItem, itO.next()); //ui->outModels->expandAll(); // Resize widgets to contents... int inModelsItemCount = 0; QTreeWidgetItemIterator iti(ui->inModels); while (*iti) { ++inModelsItemCount; ++iti; } int outModelsItemCount = 0; QTreeWidgetItemIterator ito(ui->outModels); while (*ito) { ++outModelsItemCount; ++ito; } int inSize = (inModelsItemCount + 1)*ui->inModels->visualItemRect(inRootItem).height(); int outSize = (outModelsItemCount + 1)*ui->outModels->visualItemRect(outRootItem).height(); ui->inModels->setMinimumHeight(inSize); ui->outModels->setMinimumHeight(outSize); ui->inModels->setMaximumHeight(inSize); ui->outModels->setMaximumHeight(outSize); } void GAboutStepDialog::recursiveCreateItemsForModel(QTreeWidgetItem *parent, const CT_OutAbstractModel *model) const { const CT_OutAbstractResultModel *rModel = dynamic_cast(model); if(rModel != NULL) { recursiveCreateItemsForResultModel(parent, rModel); } else { const CT_OutAbstractItemModel *iModel = dynamic_cast(model); if(iModel != NULL) { recursiveCreateItemsForItemModel(parent, iModel); } else { const CT_OutAbstractItemAttributeModel *iaModel = dynamic_cast(model); if(iaModel != NULL) recursiveCreateItemsForItemAttributesModel(parent, iaModel); else qFatal("In GAboutStepDialog::recursiveCreateItemsForModel : model is not known"); } } } void GAboutStepDialog::recursiveCreateItemsForModel(QTreeWidgetItem *parent, const CT_InAbstractModel *model) const { const CT_InAbstractResultModel *rModel = dynamic_cast(model); if(rModel != NULL) { recursiveCreateItemsForResultModel(parent, rModel); } else { const CT_InAbstractItemModel *iModel = dynamic_cast(model); if(iModel != NULL) { recursiveCreateItemsForItemModel(parent, iModel); } else { const CT_InAbstractItemAttributeModel *iaModel = dynamic_cast(model); if(iaModel != NULL) recursiveCreateItemsForItemAttributesModel(parent, iaModel); else qFatal("In GAboutStepDialog::recursiveCreateItemsForModel : model is not known"); } } } void GAboutStepDialog::recursiveCreateItemsForResultModel(QTreeWidgetItem *parent, const CT_OutAbstractResultModel *rModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); //item->setText(0, QString("Result") + " / " + rModel->uniqueName() + " / " + rModel->modelTypeDisplayable() + " : " + rModel->resultName()); item->setText(0, QString("Result") + " / " + rModel->uniqueName()); item->setExpanded(true); createForChildrens(item, rModel); } void GAboutStepDialog::recursiveCreateItemsForResultModel(QTreeWidgetItem *parent, const CT_InAbstractResultModel *rModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); item->setText(0, "Result : " + rModel->displayableName()); item->setExpanded(true); createForChildrens(item, rModel); } void GAboutStepDialog::recursiveCreateItemsForItemModel(QTreeWidgetItem *parent, const CT_OutAbstractItemModel *iModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); //item->setText(0, iModel->displayableName() + " (" + iModel->itemDrawable()->name() + ")" + " / " + (iModel->lastOriginalModelWithAStep() != NULL ? iModel->lastOriginalModelWithAStep()->step()->getStepCustomName() : "???") + " / " + iModel->uniqueName() + " / " + iModel->modelTypeDisplayable()); item->setText(0, iModel->displayableName() + " [" + iModel->itemDrawable()->name() + "]"); item->setExpanded(true); createForChildrens(item, iModel); } void GAboutStepDialog::recursiveCreateItemsForItemModel(QTreeWidgetItem *parent, const CT_InAbstractItemModel *iModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); item->setText(0, iModel->displayableName() + " [" + CT_AbstractItemDrawable::getNameFromType(iModel->itemType()) + "]"); item->setExpanded(true); createForChildrens(item, iModel); } void GAboutStepDialog::recursiveCreateItemsForItemAttributesModel(QTreeWidgetItem *parent, const CT_OutAbstractItemAttributeModel *iaModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); //item->setText(0, iaModel->itemAttribute()->displayableName() + " (" + iaModel->itemAttribute()->typeToString() + ")" + " / " + (iaModel->lastOriginalModelWithAStep() != NULL ? iaModel->lastOriginalModelWithAStep()->step()->getStepCustomName() : "???") + " / " + iaModel->uniqueName() + " / " + iaModel->modelTypeDisplayable()); item->setText(0, iaModel->itemAttribute()->displayableName() + " [" + iaModel->itemAttribute()->typeToString() + "]"); item->setExpanded(false); parent->setExpanded(false); createForChildrens(item, iaModel); } void GAboutStepDialog::recursiveCreateItemsForItemAttributesModel(QTreeWidgetItem *parent, const CT_InAbstractItemAttributeModel *iaModel) const { QTreeWidgetItem *item = new QTreeWidgetItem(parent); item->setText(0, iaModel->displayableName() + " [" + CT_AbstractCategory::valueTypeToString(iaModel->valueType()) + "]"); item->setExpanded(false); parent->setExpanded(true); createForChildrens(item, iaModel); } void GAboutStepDialog::createForChildrens(QTreeWidgetItem *parent, const CT_OutAbstractModel *model) const { QList list = model->childrens(); QListIterator it(list); while(it.hasNext()) recursiveCreateItemsForModel(parent, (CT_OutAbstractModel*)it.next()); } void GAboutStepDialog::createForChildrens(QTreeWidgetItem *parent, const CT_InAbstractModel *model) const { QList list = model->childrens(); QListIterator it(list); while(it.hasNext()) recursiveCreateItemsForModel(parent, (CT_InAbstractModel*)it.next()); } void GAboutStepDialog::on_cb_ris_toggled(bool checked) { Q_UNUSED(checked); if (ui->cb_ris->isChecked()) { ui->ris->setVisible(true); } else { ui->ris->setVisible(false); } }