Esempio n. 1
0
mitk::KeyEvent
QmitkEventAdapter::AdaptKeyEvent(mitk::BaseRenderer* sender, QKeyEvent* keyEvent, const QPoint& cp)
{
  int key = keyEvent->key();

  // Those keycodes changed in Qt 4
  if (key >= 0x01000000 && key <= 0x01000060)
    key -= (0x01000000 - 0x1000);
  else if(key >= 0x01001120 && key <= 0x01001262)
    key -= 0x01000000;

  mitk::Point2D p;
  p[0] = cp.x();
  p[1] = cp.y();

  int modifiers = keyEvent->modifiers();
  int state = 0;
  if (modifiers & Qt::ShiftModifier)
    state |= mitk::BS_ShiftButton;
  if (modifiers & Qt::ControlModifier)
    state |= mitk::BS_ControlButton;
  if (modifiers & Qt::AltModifier)
    state |= mitk::BS_AltButton;
  if (modifiers & Qt::MetaModifier)
    state |= mitk::BS_MetaButton;
  //if (modifiers & Qt::KeypadModifier)
  //  state |= mitk::BS_Keypad;

  mitk::KeyEvent mke(sender, keyEvent->type(), mitk::BS_NoButton, state, key, keyEvent->text().toStdString(), p);

  return mke;
}
Esempio n. 2
0
mitk::KeyEvent
//mitk::VtkEventAdapter::AdaptKeyEvent(mitk::BaseRenderer* sender, QKeyEvent* keyEvent, const QPoint& cp)
mitk::VtkEventAdapter::AdaptKeyEvent(mitk::BaseRenderer* sender, unsigned long vtkCommandEventId,vtkRenderWindowInteractor* rwi)
{
  // TODO: is this viable?
  int key = (int)rwi->GetKeyCode();

  // Those keycodes changed in Qt 4
  if (key >= 0x01000000 && key <= 0x01000060)
    key -= (0x01000000 - 0x1000);
  else if(key >= 0x01001120 && key <= 0x01001262)
    key -= 0x01000000;

  mitk::Point2D p;
  p[0] = rwi->GetEventPosition()[0];
  p[1] = rwi->GetEventPosition()[1];

  int type = 0;
  if(vtkCommandEventId == vtkCommand::KeyPressEvent)
    type = 6; // http://doc.trolltech.com/4.6/qevent.html#Type-enum

  int state = 0;
  if(rwi->GetShiftKey())
    state |= mitk::BS_ShiftButton;
  if(rwi->GetControlKey())
     state |= mitk::BS_ControlButton;
  if(rwi->GetAltKey())
     state |= mitk::BS_AltButton;

    mitk::KeyEvent mke(sender, type, mitk::BS_NoButton, state, key, std::string(rwi->GetKeySym()), p);

  return mke;
}
Esempio n. 3
0
void QmitkRenderWindow::keyPressEvent(QKeyEvent *ke)
{
  mitk::InteractionEvent::ModifierKeys modifiers = GetModifiers(ke);
  std::string key = GetKeyLetter(ke);

  mitk::InteractionKeyEvent::Pointer keyEvent = mitk::InteractionKeyEvent::New(m_Renderer, key, modifiers);
  if (!this->HandleEvent(keyEvent.GetPointer()))
  { // TODO: INTERACTION_LEGACY
    QPoint cp = mapFromGlobal(QCursor::pos());
    mitk::KeyEvent mke(QmitkEventAdapter::AdaptKeyEvent(m_Renderer, ke, cp));
    this->keyPressMitkEvent(&mke);
    ke->accept();
    QVTKWidget::keyPressEvent(ke);
  }

  if (m_ResendQtEvents)
    ke->ignore();
}
Esempio n. 4
0
//----------------------------------------------------------------------------
void mitk::vtkEventProvider::ProcessEvents(vtkObject* object,
                                               unsigned long event,
                                               void* clientData,
                                               void* vtkNotUsed(callData))
{

  vtkEventProvider* self =
    reinterpret_cast<vtkEventProvider *>( clientData );
  vtkRenderWindowInteractor* rwi =
    static_cast<vtkInteractorStyle *>( object )->GetInteractor();

  // base renderer
  mitk::BaseRenderer* baseRenderer = mitk::BaseRenderer::GetInstance(self->GetRenderWindow()->GetVtkRenderWindow());


  switch(event)
  {
    // key press
    case vtkCommand::KeyPressEvent:
    {
      VTKEVENTPROVIDER_DEBUG << "key press event";
      mitk::KeyEvent mke(mitk::VtkEventAdapter::AdaptKeyEvent(baseRenderer,event,rwi));
      self->GetRenderWindow()->keyPressMitkEvent(&mke);
      break;
    }

    // mouse events
    case vtkCommand::MouseMoveEvent:
  {
      VTKEVENTPROVIDER_DEBUG << "mouse move event";
      mitk::MouseEvent me(mitk::VtkEventAdapter::AdaptMouseEvent(baseRenderer,event,rwi));
      self->GetRenderWindow()->mouseMoveMitkEvent(&me);
      break;
    }

  case vtkCommand::LeftButtonPressEvent:
    case vtkCommand::MiddleButtonPressEvent:
    case vtkCommand::RightButtonPressEvent:
  {
      VTKEVENTPROVIDER_DEBUG << "mouse press event";
      mitk::MouseEvent me(mitk::VtkEventAdapter::AdaptMouseEvent(baseRenderer,event,rwi));
      self->GetRenderWindow()->mousePressMitkEvent(&me);
      break;
    }

  case vtkCommand::LeftButtonReleaseEvent:
    case vtkCommand::MiddleButtonReleaseEvent:
    case vtkCommand::RightButtonReleaseEvent:
    {
      VTKEVENTPROVIDER_DEBUG << "mouse release event";
      mitk::MouseEvent me(mitk::VtkEventAdapter::AdaptMouseEvent(baseRenderer,event,rwi));
      self->GetRenderWindow()->mouseReleaseMitkEvent(&me);
      break;
    }

  // mouse WHEEL
    case vtkCommand::MouseWheelForwardEvent:
    case vtkCommand::MouseWheelBackwardEvent:
    {
      VTKEVENTPROVIDER_DEBUG << "mouse wheel event";
      mitk::WheelEvent we(mitk::VtkEventAdapter::AdaptWheelEvent(baseRenderer,event,rwi));
      self->GetRenderWindow()->wheelMitkEvent(&we);
      break;
    }

  default:
      VTKEVENTPROVIDER_INFO << "VTK event not mapped properly.";
    break;
  }

}