Public Member Functions | Protected Attributes

QmitkDataManagerHotkeysPrefPage Struct Reference

#include <QmitkDataManagerHotkeysPrefPage.h>

Inheritance diagram for QmitkDataManagerHotkeysPrefPage:
Inheritance graph
[legend]
Collaboration diagram for QmitkDataManagerHotkeysPrefPage:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkDataManagerHotkeysPrefPage ()
void Init (berry::IWorkbench::Pointer workbench)
void CreateQtControl (QWidget *parent)
QWidget * GetQtControl () const
virtual bool PerformOk ()
virtual void PerformCancel ()
virtual void Update ()

Protected Attributes

berry::IPreferences::WeakPtr m_DataManagerHotkeysPreferencesNode
std::map< QString,
QmitkHotkeyLineEdit * > 
m_HotkeyEditors
QWidget * m_MainControl

Detailed Description

Definition at line 30 of file QmitkDataManagerHotkeysPrefPage.h.


Constructor & Destructor Documentation

QmitkDataManagerHotkeysPrefPage::QmitkDataManagerHotkeysPrefPage (  )

Definition at line 35 of file QmitkDataManagerHotkeysPrefPage.cpp.

: m_MainControl(0)
{

}

Member Function Documentation

void QmitkDataManagerHotkeysPrefPage::CreateQtControl ( QWidget *  parent ) [virtual]

Implements berry::IQtPreferencePage.

Definition at line 46 of file QmitkDataManagerHotkeysPrefPage.cpp.

References ID, m_DataManagerHotkeysPreferencesNode, m_HotkeyEditors, m_MainControl, and Update().

{
  IPreferencesService::Pointer prefService = Platform::GetServiceRegistry().GetServiceById<IPreferencesService>(IPreferencesService::ID);
  berry::IPreferences::Pointer _DataManagerHotkeysPreferencesNode = prefService->GetSystemPreferences()->Node("/DataManager/Hotkeys");
  m_DataManagerHotkeysPreferencesNode = _DataManagerHotkeysPreferencesNode;

  m_HotkeyEditors["Make all nodes invisible"] = new QmitkHotkeyLineEdit("Ctrl+, V");

  m_HotkeyEditors["Toggle visibility of selected nodes"] = new QmitkHotkeyLineEdit("V");

  m_HotkeyEditors["Delete selected nodes"] = new QmitkHotkeyLineEdit("Del");

  m_HotkeyEditors["Reinit selected nodes"] = new QmitkHotkeyLineEdit("R");

  m_HotkeyEditors["Global Reinit"] = new QmitkHotkeyLineEdit("Ctrl+, R");

  m_HotkeyEditors["Save selected nodes"] = new QmitkHotkeyLineEdit("Ctrl+, S");

  m_HotkeyEditors["Load"] = new QmitkHotkeyLineEdit("Ctrl+, L");

  m_HotkeyEditors["Show Node Information"] = new QmitkHotkeyLineEdit("Ctrl+, I");

  m_MainControl = new QWidget(parent);

  QGridLayout* layout = new QGridLayout;
  int i = 0;
  for (std::map<QString, QmitkHotkeyLineEdit*>::iterator it = m_HotkeyEditors.begin()
    ; it != m_HotkeyEditors.end(); ++it)
  {
    layout->addWidget(new QLabel(it->first), i,0);
    layout->addWidget(it->second, i,1);
    layout->setRowStretch(i,0);
    ++i;
  }
  layout->setRowStretch(i+1,10);

  m_MainControl->setLayout(layout);
  this->Update();
}
QWidget * QmitkDataManagerHotkeysPrefPage::GetQtControl (  ) const [virtual]

Implements berry::IQtPreferencePage.

Definition at line 86 of file QmitkDataManagerHotkeysPrefPage.cpp.

References m_MainControl.

{
  return m_MainControl;
}
void QmitkDataManagerHotkeysPrefPage::Init ( berry::IWorkbench::Pointer  workbench ) [virtual]

Implements berry::IPreferencePage.

Definition at line 41 of file QmitkDataManagerHotkeysPrefPage.cpp.

{

}
void QmitkDataManagerHotkeysPrefPage::PerformCancel (  ) [virtual]
See also:
IPreferencePage::PerformCancel()

Implements berry::IPreferencePage.

Definition at line 143 of file QmitkDataManagerHotkeysPrefPage.cpp.

{

}
bool QmitkDataManagerHotkeysPrefPage::PerformOk (  ) [virtual]
See also:
IPreferencePage::PerformOk()

Implements berry::IPreferencePage.

Definition at line 91 of file QmitkDataManagerHotkeysPrefPage.cpp.

References berry::WeakPointer< TObjectType >::Lock(), m_DataManagerHotkeysPreferencesNode, and m_HotkeyEditors.

{
  IPreferences::Pointer _DataManagerHotkeysPreferencesNode = m_DataManagerHotkeysPreferencesNode.Lock();
  if(_DataManagerHotkeysPreferencesNode.IsNotNull())
  {
    bool duplicate = false;
    QString keyString;
    QString errString;
    for (std::map<QString, QmitkHotkeyLineEdit*>::iterator it = m_HotkeyEditors.begin()
      ; it != m_HotkeyEditors.end(); ++it)
    {
      keyString = it->second->GetKeySequenceAsString();

      if(keyString.isEmpty())
        errString = QString("No valid key sequence for \"%1\"").arg(it->first);

      if(errString.isEmpty())
      {
        std::map<QString, QmitkHotkeyLineEdit*>::iterator it2;
        // search for duplicated key
        for (it2 = m_HotkeyEditors.begin(); it2 != m_HotkeyEditors.end(); ++it2)
        {
           if(it->first != it2->first && keyString == it2->second->GetKeySequenceAsString())
           {
             duplicate = true;
             break;
           }
        }
        if(duplicate == true)
          errString = QString("Duplicate hot key for \"%1\" and \"%2\"").arg(it->first).arg(it2->first);
      }

      if(!errString.isEmpty())
      {
        QMessageBox::critical(QApplication::activeWindow(), "Error", errString);
        return false;
      }
    }

        //# no errors -> save all values and flush to file
    for (std::map<QString, QmitkHotkeyLineEdit*>::iterator it = m_HotkeyEditors.begin()
      ; it != m_HotkeyEditors.end(); ++it)
      _DataManagerHotkeysPreferencesNode->Put(it->first.toStdString()
        , it->second->GetKeySequenceAsString().toStdString());

    _DataManagerHotkeysPreferencesNode->Flush();

    return true;
  }
  return false;
}
void QmitkDataManagerHotkeysPrefPage::Update (  ) [virtual]
See also:
IPreferencePage::Update()

Implements berry::IPreferencePage.

Definition at line 148 of file QmitkDataManagerHotkeysPrefPage.cpp.

References berry::WeakPointer< TObjectType >::Lock(), m_DataManagerHotkeysPreferencesNode, and m_HotkeyEditors.

Referenced by CreateQtControl().

{
  IPreferences::Pointer _DataManagerHotkeysPreferencesNode = m_DataManagerHotkeysPreferencesNode.Lock();
  if(_DataManagerHotkeysPreferencesNode.IsNotNull())
  {
    for (std::map<QString, QmitkHotkeyLineEdit*>::iterator it = m_HotkeyEditors.begin()
      ; it != m_HotkeyEditors.end(); ++it)
    {
      it->second->setText(QString::fromStdString(_DataManagerHotkeysPreferencesNode->Get(it->first.toStdString()
        , it->second->text().toStdString())));
    }
  }
}

Member Data Documentation

The node from which the properties are taken (will be catched from the preferences service in ctor)

Definition at line 61 of file QmitkDataManagerHotkeysPrefPage.h.

Referenced by CreateQtControl(), PerformOk(), and Update().

Maps a label to hotkey lineedit, e.g. "Toggle Visibility of selected nodes" => QmitkHotkeyLineEdit

Definition at line 66 of file QmitkDataManagerHotkeysPrefPage.h.

Referenced by CreateQtControl(), PerformOk(), and Update().

Definition at line 68 of file QmitkDataManagerHotkeysPrefPage.h.

Referenced by CreateQtControl(), and GetQtControl().


The documentation for this struct was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines