optionsWidget.cc 4.17 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
//=============================================================================
//
//                               OpenFlipper
//        Copyright (C) 2008 by Computer Graphics Group, RWTH Aachen
//                           www.openflipper.org
//
//-----------------------------------------------------------------------------
//
//                                License
//
//  OpenFlipper is free software: you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
Jan Möbius's avatar
Jan Möbius committed
15
//
16 17 18 19
//  OpenFlipper is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.
Jan Möbius's avatar
Jan Möbius committed
20
//
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
//  You should have received a copy of the GNU Lesser General Public License
//  along with OpenFlipper.  If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
//
//   $Revision: 1909 $
//   $Author: wilden $
//   $Date: 2008-06-03 18:45:21 +0200 (Tue, 03 Jun 2008) $
//
//=============================================================================




#include "optionsWidget.hh"
#include <iostream>
#include <OpenFlipper/common/GlobalOptions.hh>

Dirk Wilden's avatar
Dirk Wilden committed
39 40 41


OptionsWidget::OptionsWidget(std::vector<PluginInfo>& _plugins, std::vector<KeyBinding>& _core, QWidget *parent)
Jan Möbius's avatar
Jan Möbius committed
42 43 44 45
  : QWidget(parent),
    plugins_(_plugins),
    coreKeys_(_core)

46 47
{
  setupUi(this);
Dirk Wilden's avatar
Dirk Wilden committed
48

49 50 51 52 53
  connect(applyButton,SIGNAL(clicked()),this,SLOT(slotApply()));
  connect(cancelButton,SIGNAL(clicked()),this,SLOT(slotCancel()));
}

void OptionsWidget::showEvent ( QShowEvent * event ) {
Dirk Wilden's avatar
Dirk Wilden committed
54

Jan Möbius's avatar
Jan Möbius committed
55
  //general
Dirk Wilden's avatar
Dirk Wilden committed
56 57 58 59 60 61 62 63 64 65
  fullscreen->setChecked( OpenFlipper::Options::fullScreen() );
  splash->setChecked( OpenFlipper::Options::splash() );
  toolbox->setChecked( !OpenFlipper::Options::hideToolbox() );
  logger->setChecked( !OpenFlipper::Options::hideLogger() );

  //viewer
  backfaceCulling->setChecked( OpenFlipper::Options::backfaceCulling() );
  wZoomFactor->setText( QString::number(OpenFlipper::Options::wheelZoomFactor(), 'f') );
  wZoomFactorShift->setText( QString::number(OpenFlipper::Options::wheelZoomFactorShift(), 'f') );

Dirk Wilden's avatar
Dirk Wilden committed
66 67 68 69 70 71 72 73 74 75 76 77 78 79
  //keyBindings
  keyTree->setColumnCount ( 2 );

  QStringList headerdata;
  headerdata << "Action" << "Shortcut";
  keyTree->setHeaderLabels(headerdata);

  //add Core Keys
  QTreeWidgetItem * core = new QTreeWidgetItem(keyTree, QStringList("CoreWidget"));

  QList<QTreeWidgetItem *> keys;

  for (uint i=0; i < coreKeys_.size(); i++){
    QStringList row;
Jan Möbius's avatar
Jan Möbius committed
80 81
    QKeySequence keySequence( coreKeys_[i].key + coreKeys_[i].modifiers );
    row << coreKeys_[i].description << keySequence.toString();
Dirk Wilden's avatar
Dirk Wilden committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
    keys.append(new QTreeWidgetItem(core, row));
  }

  core->addChildren(keys);
  keyTree->addTopLevelItem( core );



  QList<QTreeWidgetItem *> plugins;

  for (uint i=0; i < plugins_.size(); i++){
    plugins.append(new QTreeWidgetItem(keyTree, QStringList( plugins_[i].name )));

    QList<QTreeWidgetItem *> keys;

    for (int k=0; k < plugins_[i].keys.count(); k++){
      QStringList row;
Jan Möbius's avatar
Jan Möbius committed
99 100
      QKeySequence keySequence( plugins_[i].keys[k].key + plugins_[i].keys[k].modifiers );
      row << plugins_[i].keys[k].description << keySequence.toString();
Dirk Wilden's avatar
Dirk Wilden committed
101 102 103 104 105 106 107 108 109 110 111
      keys.append(new QTreeWidgetItem(plugins[i], row));
    }

    plugins[i]->addChildren(keys);

  }

  keyTree->addTopLevelItems( plugins );

  keyTree->resizeColumnToContents(0);
  keyTree->resizeColumnToContents(1);
112 113 114
}

void OptionsWidget::slotApply() {
Dirk Wilden's avatar
Dirk Wilden committed
115

Jan Möbius's avatar
Jan Möbius committed
116
  //general
Dirk Wilden's avatar
Dirk Wilden committed
117 118 119 120 121 122 123 124 125 126
  OpenFlipper::Options::fullScreen( fullscreen->isChecked() );
  OpenFlipper::Options::splash( splash->isChecked() );
  OpenFlipper::Options::hideToolbox( !toolbox->isChecked() );
  OpenFlipper::Options::hideLogger( !logger->isChecked() );

  //viewer
  OpenFlipper::Options::backfaceCulling( backfaceCulling->isChecked() );
  OpenFlipper::Options::wheelZoomFactor( wZoomFactor->text().toDouble() );
  OpenFlipper::Options::wheelZoomFactorShift( wZoomFactorShift->text().toDouble() );

127
  emit applyOptions();
Dirk Wilden's avatar
Dirk Wilden committed
128
  emit saveOptions();
129 130 131 132 133 134
  hide();
}

void OptionsWidget::slotCancel() {
  hide();
}