コード例 #1
0
ファイル: cmapwidget.cpp プロジェクト: adamfur/kmuddy
bool CMapWidget::event(QEvent *e)
{
  if (e->type() == QEvent::ToolTip) {
    QHelpEvent *helpEvent = static_cast<QHelpEvent *>(e);
    QPoint point = helpEvent->pos();

    CMapView *view = getView();
    CMapLevel *level = view->getCurrentlyViewedLevel();
    CMapElement *element = level ? level->findElementAt(point) : 0;
    QString s;
    if (element)
    {
      if (element->getElementType() == ROOM)
      {
        s = ((CMapRoom*)element)->getLabel();
      }
      else if (element->getElementType() == ZONE)
      {
        s = ((CMapZone*)element)->getLabel();
      }

      if (!s.trimmed().isEmpty())
        QToolTip::showText (helpEvent->globalPos(), s, this);
      else
        QToolTip::hideText ();
    }
  }
  return QWidget::event(e);
}
コード例 #2
0
ファイル: cmapwidget.cpp プロジェクト: adamfur/kmuddy
void CMapWidget::showContexMenu(QMouseEvent *e)
{
  CMapLevel *level = viewWidget->getCurrentlyViewedLevel();
  if (!level) return;

  CMapView *view = mapManager->getActiveView();
  view->setSelectedPos(e->pos());
  selectedPos = e->pos();

  view->setSelectedElement(0);
  CMapElement *element = level->findElementAt (e->pos());
  if (!element) {
    showOtherContextMenu();
    return;
  }

  view->setSelectedElement(element);

  mapManager->unsetEditElement();
  switch(element->getElementType())
  {
    case ROOM : showRoomContextMenu(); break;
    case PATH : showPathContextMenu(); break;
    case TEXT : showTextContextMenu(); break;
    default   : showOtherContextMenu(); break;
  }
}