123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- /*
- * ImageDescriptionForm.cpp
- *
- * Created on: Oct 11, 2011
- * Author: Gapchich Vlad
- */
- #include "OptionsForm.h"
- #include <QCheckBox>
- #include <QPushButton>
- #include <QLabel>
- #include <QLineEdit>
- #include <QBoxLayout>
- #include <QMessageBox>
- #include <QApplication>
- #include <QDesktopWidget>
- #include <QFileDialog>
- #include <QKeyEvent>
- //! 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();
- }
- }
- /*
- *
- */
|