34 #include <QtCore/QtDebug>
45 mAutomaticColorScaling(false),
49 mBarChartFilled(false),
50 mOneDimensional(false),
55 qDebug() <<
"-- in constructor -- \n";
76 mpPlot3d->setSliderActive(
true);
81 connect(mpButton, SIGNAL(clicked()),
this, SLOT(
changeContents()));
86 connect(mpContentTable->horizontalHeader(), SIGNAL(sectionResized(
int,
int,
int)),
this, SLOT(
setColumnSize(
int,
int,
int)));
94 qDebug() <<
"-- in destructor -- \n";
104 qDebug() <<
"-- in setColorCoding -- \n";
123 qDebug() <<
"-- in setArrayAnnotation -- \n";
138 for (; i != imax; i++)
143 mpComboRows->blockSignals(
true);
144 mpComboRows->clear();
145 mpComboRows->addItems(Items);
146 mpComboRows->blockSignals(
false);
148 mpComboColumns->blockSignals(
true);
149 mpComboColumns->clear();
150 mpComboColumns->addItems(Items);
151 mpComboColumns->blockSignals(
false);
157 mpComboRows->setEnabled(
false);
158 mpComboColumns->setEnabled(
false);
162 CCopasiAbstractArray::index_type::iterator it =
mSelectionIndex.begin();
163 CCopasiAbstractArray::index_type::iterator end =
mSelectionIndex.end();
166 CCopasiAbstractArray::index_type::iterator itCell =
mSelectedCell.begin();
168 for (; it != end; ++it)
179 mpLblColumns->hide();
180 mpComboColumns->hide();
182 mpSelectionTable->hide();
193 mpLblColumns->hide();
194 mpComboColumns->hide();
196 mpSelectionTable->hide();
204 mpLblColumns->show();
205 mpComboColumns->show();
207 mpSelectionTable->hide();
215 mpLblColumns->show();
216 mpComboColumns->show();
218 mpSelectionTable->hide();
229 qDebug() <<
"-- in initSelectionTable -- \n";
234 mpSelectionTable->setRowCount((
int) imax);
235 mpSelectionTable->setColumnCount(2);
237 for (i = 0; i < imax; ++i)
241 mpSelectionTable->setItem((
int) i, 0, pItem);
244 QStringList ComboEntries;
248 pItem->setData(Qt::EditRole, ComboEntries);
249 mpSelectionTable->setItem((
int) i, 1, pItem);
252 mpSelectionTable->resizeColumnsToContents();
254 mpSelectionTable->show();
256 mpSelectionTable->resizeColumnsToContents();
257 mpSelectionTable->resizeRowsToContents();
259 mpSelectionTable->setMaximumHeight(mpSelectionTable->verticalHeader()->sectionSize(0) * (
mpArray->
dimensionality() + 1));
265 qDebug() <<
"-- in clearWidget -- \n";
269 mpSelectionTable->setRowCount(0);
270 mpContentTable->setColumnCount(0);
271 mpContentTable->setRowCount(0);
276 mpPlot3d->emptyPlot();
285 qDebug() <<
"-- in setLegendEnabled -- \n";
289 mpSelectionTable->show();
291 mpSelectionTable->hide();
297 if (mpComboColumns->currentIndex() == row)
299 mpComboColumns->blockSignals(
true);
300 mpComboColumns->setCurrentIndex(row == 0 ? 1 : 0);
301 mpComboColumns->blockSignals(
false);
304 mColIndex = mpComboColumns->currentIndex();
318 if (mpComboRows->currentIndex() == col)
320 mpComboRows->blockSignals(
true);
321 mpComboRows->setCurrentIndex(col == 0 ? 1 : 0);
322 mpComboRows->blockSignals(
false);
368 qDebug() <<
"-- in fillTable0 A -- \n";
373 assert(rowIndex < index.size());
374 assert(colIndex < index.size());
376 mpContentTable->setColumnCount((
int)
mpArray->
size()[colIndex]);
377 mpContentTable->setRowCount((
int)
mpArray->
size()[rowIndex]);
385 if (jmax == 0)
return;
387 int TableWidth = mpContentTable->size().width();
388 mpContentTable->verticalHeader()->setMaximumWidth(TableWidth / std::min< size_t >(jmax, 5));
389 mpContentTable->verticalHeader()->setTextElideMode(Qt::ElideRight);
390 mpContentTable->horizontalHeader()->setTextElideMode(Qt::ElideRight);
395 for (i = 0; i < imax; ++i)
398 QTableWidgetItem * pItem =
new QTableWidgetItem(DisplayName);
399 pItem->setToolTip(DisplayName);
400 mpContentTable->setVerticalHeaderItem(i, pItem);
403 for (j = 0; j < jmax; ++j)
406 DisplayName =
FROM_UTF8(coldescr[j]).replace(
"; {",
"\n{");
407 QTableWidgetItem * pItem =
new QTableWidgetItem(DisplayName);
408 pItem->setToolTip(DisplayName);
409 mpContentTable->setHorizontalHeaderItem((
int) j, pItem);;
412 qDebug() <<
"text on col " << j <<
" = " <<
FROM_UTF8(coldescr[j]).replace(
"; {",
"\n{");
423 for (i = 0; i < imax; ++i)
424 for (j = 0; j < jmax; ++j)
435 for (i = 0; i < imax; ++i)
436 for (j = 0; j < jmax; ++j)
441 QTableWidgetItem * pItem =
new QTableWidgetItem(QString::number((*
mpArray->
array())[Index]));
442 mpContentTable->setItem((
int) i, (
int) j, pItem);
452 mpContentTable->resizeRowsToContents();
453 mpContentTable->resizeColumnsToContents();
456 if (mpStack->currentIndex() == 1)
464 qDebug() <<
"-- in fillTable0 B -- \n";
469 assert(rowIndex < index.size());
471 mpContentTable->setColumnCount(1);
472 mpContentTable->setRowCount((
int)
mpArray->
size()[rowIndex]);
474 mpContentTable->setHorizontalHeaderItem(0,
new QTableWidgetItem(
""));
485 for (i = 0; i < imax; ++i)
497 for (i = 0; i < imax; ++i)
500 QTableWidgetItem * pItem =
new QTableWidgetItem(
FROM_UTF8(rowdescr[i]));
501 mpContentTable->setVerticalHeaderItem((
int) i, pItem);
503 pItem =
new QTableWidgetItem(QString::number((*
mpArray->
array())[Index]));
504 mpContentTable->setItem((
int) i, 0, pItem);
514 mpContentTable->resizeRowsToContents();
515 mpContentTable->resizeColumnsToContents();
517 if (mpStack->currentIndex() == 1)
524 qDebug() <<
"-- in fillTable0 C -- \n";
529 mpContentTable->setColumnCount(0);
530 mpContentTable->setRowCount(0);
531 mpContentTable->setColumnCount(1);
532 mpContentTable->setRowCount(1);
534 mpContentTable->setHorizontalHeaderItem(0,
new QTableWidgetItem(
""));
535 mpContentTable->setVerticalHeaderItem(0,
new QTableWidgetItem(
""));
539 mpContentTable->setItem(0, 0,
new QTableWidgetItem(QString::number((*
mpArray->
array())[index])));
545 qDebug() <<
"-- in changeContents -- \n";
549 if (mpStack->currentIndex() == 0)
558 qDebug() <<
"-- in enableBarChart -- \n";
565 mpButton->setEnabled(
true);
570 if (mpStack->currentIndex() == 1)
574 mpButton->setEnabled(
false);
585 qDebug() <<
"-- in switchToTable -- \n";
587 qDebug() <<
"A mpStack->currentIndex() = " << mpStack->currentIndex();
591 mpStack->setCurrentWidget(mpContentTable);
594 qDebug() <<
"B mpStack->currentIndex() = " << mpStack->currentIndex();
610 qDebug() <<
"-- in switchToBarChart -- \n";
627 mpStack->setCurrentWidget(mpPlot3d);
637 qDebug() <<
"-- in disableBarChart -- \n";
647 qDebug() <<
"-- in disableSlider -- \n";
650 if (mpPlot3d && mpPlot3d->isSliderActive())
652 mpPlot3d->setSliderActive(
false);
662 qDebug() <<
"-- in setFocusOnTable -- \n";
665 qDebug() <<
"boolean mpPlot3d = " << mpPlot3d;
666 qDebug() <<
"boolean mpPlot3d->sliderActive() = " << mpPlot3d->sliderActive();
671 int col = mpPlot3d->mpSliderColumn->value() / mpPlot3d->scaleFactor();
672 int row = mpPlot3d->mpSliderRow->value() / mpPlot3d->scaleFactor();
675 qDebug() <<
"col = " << col <<
" - row = " << row;
678 mpContentTable->clearSelection();
680 if (col < mpContentTable->columnCount())
682 if (row < mpContentTable->rowCount())
684 mpContentTable->setCurrentCell(row, col);
685 mpContentTable->scrollToItem(mpContentTable->item(mpContentTable->currentRow(), mpContentTable->currentColumn()));
686 mpContentTable->setFocus();
690 mpContentTable->selectColumn(col);
691 mpContentTable->setFocus();
696 if (row < mpContentTable->rowCount())
698 mpContentTable->selectRow(row);
699 mpContentTable->setFocus();
703 mpContentTable->setCurrentCell(-1, -1);
708 qDebug() <<
"label at col = " << mpContentTable->horizontalHeader()->label(col);
719 qDebug() <<
"at the end of setFocusOnTable";
730 QList<QTableWidgetSelectionRange> Ranges = mpContentTable->selectedRanges();
732 if (Ranges.size() == 1)
734 int SliderColumn = Ranges[0].leftColumn() * mpPlot3d->scaleFactor();
735 int SliderRow = Ranges[0].topRow() * mpPlot3d->scaleFactor();
737 if (Ranges[0].leftColumn() == Ranges[0].rightColumn() &&
738 Ranges[0].topRow() == Ranges[0].bottomRow())
740 mpPlot3d->mpSliderColumn->setValue(SliderColumn);
741 mpPlot3d->mpSliderRow->setValue(SliderRow);
742 mpPlot3d->sliderMoved(Ranges[0].leftColumn(), Ranges[0].topRow());
743 mpPlot3d->setSlider();
747 else if (Ranges[0].leftColumn() == Ranges[0].rightColumn())
749 mpPlot3d->mpSliderColumn->setValue(SliderColumn);
750 mpPlot3d->mpSliderRow->setValue(-1);
751 mpPlot3d->sliderMoved(Ranges[0].leftColumn(), mpContentTable->rowCount());
752 mpPlot3d->setSlider();
756 else if (Ranges[0].topRow() == Ranges[0].bottomRow())
758 mpPlot3d->mpSliderColumn->setValue(-1);
759 mpPlot3d->mpSliderRow->setValue(SliderRow);
760 mpPlot3d->sliderMoved(mpContentTable->columnCount(), Ranges[0].topRow());
761 mpPlot3d->setSlider();
767 mpPlot3d->mpSliderColumn->setValue(-1);
768 mpPlot3d->mpSliderRow->setValue(-1);
769 mpPlot3d->sliderMoved(mpContentTable->columnCount(), mpContentTable->rowCount());
770 mpPlot3d->setSlider();
799 qDebug() <<
"-- in slotContentDoubleClicked -- \n";
802 if (mpPlot3d && mpPlot3d->isSliderActive())
808 disconnect(mpContentTable->horizontalHeader(), SIGNAL(sectionResized(
int,
int,
int)),
this, SLOT(
setColumnSize(
int,
int,
int)));
811 qDebug() <<
"-- in setColumnSize -- \n";
817 for (i = 0; i <= col; ++i)
818 sum += mpContentTable->horizontalHeader()->sectionSize(i);
822 if (newSize < 5) newSize = 5;
824 for (i = 0; i < mpContentTable->columnCount(); i++)
825 mpContentTable->setColumnWidth(i, ((
int)(newSize * (i + 1))) - ((
int)(newSize * i)));
827 mpContentTable->horizontalHeader()->repaint();
829 connect(mpContentTable->horizontalHeader(), SIGNAL(sectionResized(
int,
int,
int)),
this, SLOT(
setColumnSize(
int,
int,
int)));
835 qDebug() <<
"-- in fillBarChart -- \n";
858 if (imax == 0 || jmax == 0)
860 mpPlot3d->emptyPlot();
865 mpContentTable->setRowCount((
int) imax);
868 mpContentTable->setColumnCount(1);
870 mpContentTable->setColumnCount((
int) jmax);
882 if (jmax > 0 && imax > 0)
885 size_t columns = jmax;
887 data =
new double * [columns];
889 for (i = 0; i < columns; ++i)
890 data[i] =
new double[rows];
902 for (i = 0; i < imax; ++i)
903 for (j = 0; j < jmax; ++j)
915 if (0 > maxValue) maxValue = 0;
917 if (0 < minValue) minValue = 0;
934 if ((minValue < 0) && (maxValue < 0))
942 if ((minValue > 0) && (maxValue > 0))
957 double holeSection = maxZ - minZ;
958 double step = holeSection / 99;
960 for (i = 0; i < 100; i++)
967 if ((maxValue == 0) && (minValue == 0))
969 mpPlot3d->emptyPlot();
976 mpPlot3d->setPlotTitle(QString(
""));
977 mpPlot3d->setColors(
mColors, minZ, maxZ);
979 mpPlot3d->showColorLegend(
true);
986 mpPlot3d->setData(
data, (
int) columns, (
int) rows, holeSection);
992 mpPlot3d->emptyPlot();
1004 qDebug() <<
"-- in createBarChart -- \n";
1008 mpPlot3d->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
1013 mpStack->addWidget(mpPlot3d);
const std::string & getDimensionDescription(size_t d) const
const std::vector< std::string > & getAnnotationsString(size_t d, bool display=true) const
CCopasiAbstractArray * array()
std::vector< size_t > index_type
virtual void startAutomaticParameterCalculation()
virtual void finishAutomaticParameterCalculation()
void vectorOfStrings2QStringList(std::vector< std::string > vs, QStringList &qsl)
virtual QColor getColor(const C_FLOAT64 &number)=0
static const QIcon & icon(const IconID &id)
virtual void passValue(const C_FLOAT64 &)
CCopasiAbstractArray::index_type size() const
size_t dimensionality() const