/* * ImageDescriptionForm.cpp * * Created on: Oct 11, 2011 * Author: Gapchich Vlad */ #include "OptionsForm.h" #include #include #include #include #include #include #include #include #include #include //! A constructor /*! * Constructor is responsible for allocating memory for all the GUI, * arranging and connecting them in the right order. */ OptionsForm::OptionsForm(QWidget *aParent) : QWidget(aParent) { setWindowTitle(tr("Options")); PASCALpath_ = 0; layout_v_ = new QVBoxLayout(this); layout_PASCAL_root_ = new QHBoxLayout; layout_h_ = new QHBoxLayout; auto_color_generation_box_ = new QCheckBox(this); auto_color_generation_box_->setText(tr("Automatic label color generation")); button_set_PASCAL_root_ = new QPushButton(this); button_set_PASCAL_root_->setText(tr("set PASCAL root path")); edit_PASCAL_root_ = new QLineEdit("", this); edit_PASCAL_root_->setMinimumWidth(180); button_ok_ = new QPushButton(this); button_ok_->setText(tr("OK")); button_cancel_ = new QPushButton(this); button_cancel_->setText(tr("Cancel")); layout_v_->addWidget(auto_color_generation_box_); layout_v_->addLayout(layout_PASCAL_root_); layout_v_->addLayout(layout_h_); layout_PASCAL_root_->addWidget(button_set_PASCAL_root_); layout_PASCAL_root_->addWidget(edit_PASCAL_root_); layout_h_->addWidget(button_ok_); layout_h_->addWidget(button_cancel_); connect( button_set_PASCAL_root_, SIGNAL(clicked()), this, SLOT(newPascalPath()) ); connect( button_ok_, SIGNAL(clicked()), this, SLOT(setOptions()) ); connect( button_cancel_, SIGNAL(clicked()), this, SLOT(hide()) ); connect( edit_PASCAL_root_, SIGNAL(editingFinished()), this, SLOT(onPathEditing()) ); /* moving it to the center of the screen */ move(QApplication::desktop()->screen()->rect().center() - rect().center()); } //! A destructor OptionsForm::~OptionsForm() { delete auto_color_generation_box_; delete button_set_PASCAL_root_; delete edit_PASCAL_root_; delete button_ok_; delete button_cancel_; delete layout_v_; } //! A slot member confirming all the changes in options void OptionsForm::setOptions() { *auto_color_generation_ = auto_color_generation_box_->isChecked(); hide(); } //! Sets a pointer on the ImageLabeler::PASCALpath_ void OptionsForm::setPASCALpath(QString *aPath) { if (!aPath) { return; /* NOTREACHED */ } PASCALpath_ = aPath; } //! Asks user for the new path to the PASCAL "root" folder void OptionsForm::newPascalPath() { QString newPath; QFileDialog fileDialog(0, tr("root directory for the PASCAL files")); fileDialog.setFileMode(QFileDialog::Directory); if (fileDialog.exec()) newPath = fileDialog.selectedFiles().last(); else { return; /* NOTREACHED */ } if (newPath.isEmpty()) { return; /* NOTREACHED */ } *PASCALpath_ = newPath; edit_PASCAL_root_->setText(newPath); } //! Returns auto_color_generation_box_ status bool OptionsForm::autoColorGeneration() { return auto_color_generation_box_->isChecked(); } //! Sets auto_color_generation_box_ status void OptionsForm::setAutoColorGeneration(bool *flag) { auto_color_generation_box_->setChecked(*flag); auto_color_generation_ = flag; } //! A slot member showing the form and initializing widgets void OptionsForm::showOptions() { if (!PASCALpath_) { return; /* NOTREACHED */ } if (PASCALpath_->isEmpty()) edit_PASCAL_root_->setText(tr("root path is not set yet")); else edit_PASCAL_root_->setText(*PASCALpath_); show(); } //! A slot member validating path to the PASCAL "root" folder typed by user void OptionsForm::onPathEditing() { QString text = edit_PASCAL_root_->text(); QDir dir(text); if (dir.exists()) *PASCALpath_ = text; else edit_PASCAL_root_->setText(*PASCALpath_); } //! An event which is automatically called on every key press void OptionsForm::keyPressEvent(QKeyEvent *anEvent) { if ((Qt::Key_Enter == anEvent->key() || Qt::Key_Return == anEvent->key()) && !edit_PASCAL_root_->hasFocus()) { setOptions(); } } /* * */