Go to the documentation of this file.00001 #include "transform_selector.h"
00002 #include "ui_transform_selector.h"
00003 #include <QSettings>
00004 #include <QDomDocument>
00005 #include <QTableWidget>
00006 #include <QComboBox>
00007 #include <QDebug>
00008
00009 TransformSelector::TransformSelector(QStringList builtin_transform,
00010 QStringList available_transforms,
00011 QString *default_tansform,
00012 std::map<std::string, QString> *curve_transforms,
00013 QWidget *parent) :
00014 QDialog(parent),
00015 ui(new Ui::transform_selector),
00016 _curves_trans(curve_transforms),
00017 _default_trans(default_tansform)
00018 {
00019 ui->setupUi(this);
00020
00021 QStringList transforms = builtin_transform + available_transforms;
00022
00023 ui->comboDefault->insertItems(0, transforms);
00024 ui->comboDefault->insertSeparator( builtin_transform.size() );
00025 if( transforms.contains( *default_tansform ) )
00026 {
00027 ui->comboDefault->setCurrentText( *default_tansform );
00028 }
00029
00030 ui->tableWidget->setRowCount( int(curve_transforms->size()) );
00031 ui->tableWidget->setColumnCount(2);
00032
00033 int row = 0;
00034 for(const auto& it: *curve_transforms)
00035 {
00036 const auto& trans = it.second;
00037 auto item_name = new QTableWidgetItem(QString::fromStdString(it.first));
00038 auto item_combo = new QComboBox();
00039 item_combo->insertItems(0, transforms);
00040 item_combo->insertSeparator(3);
00041 ui->tableWidget->setItem(row, 0, item_name);
00042 ui->tableWidget->setCellWidget(row, 1, item_combo);
00043 if( transforms.contains( trans ) )
00044 {
00045 item_combo->setCurrentText( trans );
00046 }
00047 row++;
00048 }
00049 QHeaderView* header = ui->tableWidget->horizontalHeader();
00050 header->setSectionResizeMode(QHeaderView::Stretch);
00051 }
00052
00053 TransformSelector::~TransformSelector()
00054 {
00055 delete ui;
00056 }
00057
00058
00059 void TransformSelector::on_buttonApplyDefault_clicked()
00060 {
00061 int default_index = ui->comboDefault->currentIndex();
00062 for(int row = 0; row < ui->tableWidget->rowCount(); row++)
00063 {
00064 auto combo = static_cast<QComboBox*>(ui->tableWidget->cellWidget(row,1));
00065 combo->setCurrentIndex(default_index);
00066 }
00067 }
00068
00069 void TransformSelector::on_buttonResetAll_clicked()
00070 {
00071 for(int row = 0; row < ui->tableWidget->rowCount(); row++)
00072 {
00073 auto combo = static_cast<QComboBox*>(ui->tableWidget->cellWidget(row,1));
00074 combo->setCurrentIndex(0);
00075 }
00076 }
00077
00078 void TransformSelector::on_transform_selector_accepted()
00079 {
00080 for(int row = 0; row < ui->tableWidget->rowCount(); row++)
00081 {
00082 const auto& name = ui->tableWidget->item(row,0)->text();
00083 auto combo = static_cast<QComboBox*>(ui->tableWidget->cellWidget(row,1));
00084 (*_curves_trans)[ name.toStdString() ] = combo->currentText();
00085 }
00086 *_default_trans = ui->comboDefault->currentText();
00087 }