예제 #1
0
QMenu* ColorCalibrationWidget::createUserMenu() const
{
  QMenu* menu = new QMenu(tr("&Color Calibration"));

  QAction* saveColorCalibration = new QAction(QIcon(":/Icons/kick_save.png"), tr("&Save Color Calibration"), menu);
  const_cast<ColorCalibrationWidget*>(this)->undoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->undoAction,
      QIcon(":/Icons/edit_undo.png"), tr("&Undo Color Calibration"), menu);
  const_cast<ColorCalibrationWidget*>(this)->redoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->redoAction,
      QIcon(":/Icons/edit_redo.png"), tr("&Redo Color Calibration"), menu);

  const_cast<ColorCalibrationWidget*>(this)->currentCalibrationChanged();

  connect(saveColorCalibration, SIGNAL(triggered()), this, SLOT(saveColorCalibration()));
  connect(undoAction, SIGNAL(triggered()), this, SLOT(undoColorCalibration()));
  connect(redoAction, SIGNAL(triggered()), this, SLOT(redoColorCalibration()));

  menu->addAction(saveColorCalibration);
  menu->addAction(undoAction);
  menu->addAction(redoAction);
  menu->addSeparator();

  QAction* colorButtons[FieldColors::numOfColors - FieldColors::numOfNonColors + 1] =
  {
    new QAction(QIcon(":/Icons/orange.png"), tr("Calibrate &Saturation"), menu),
    new QAction(QIcon(":/Icons/ownColor.png"), tr("Calibrate &Own Color"), menu),
    new QAction(QIcon(":/Icons/opponentColor.png"), tr("Calibrate &Opponent Color"), menu)
  };

  QActionGroup* colorGroup = new QActionGroup(menu);
  QSignalMapper* signalMapper = new QSignalMapper(const_cast<ColorCalibrationWidget*>(this));
  connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(colorAct(int)));
  for(int i = 0; i < FieldColors::numOfColors - FieldColors::numOfNonColors + 1; ++i)
  {
    signalMapper->setMapping(colorButtons[i], i);
    connect(colorButtons[i], SIGNAL(triggered()), signalMapper, SLOT(map()));
    colorGroup->addAction(colorButtons[i]);
    colorButtons[i]->setCheckable(true);
    colorButtons[i]->setChecked(currentColor == i + FieldColors::numOfNonColors - 1);
    colorButtons[i]->setEnabled(true);
    menu->addAction(colorButtons[i]);
  }

  return menu;
}
QMenu* ColorCalibrationWidget::createUserMenu() const
{
  QMenu* menu = new QMenu(tr("&Color Calibration"));

  QAction* saveColorCalibration = new QAction(QIcon(":/Icons/kick_save.png"), tr("&Save Color Calibration"), menu);
  const_cast<ColorCalibrationWidget*>(this)->undoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->undoAction,
      QIcon(":/Icons/edit_undo.png"), tr("&Undo Color Calibration"), menu);
  const_cast<ColorCalibrationWidget*>(this)->redoAction = new WorkAroundAction(&const_cast<ColorCalibrationWidget*>(this)->redoAction,
      QIcon(":/Icons/edit_redo.png"), tr("&Redo Color Calibration"), menu);

  const_cast<ColorCalibrationWidget*>(this)->currentCalibrationChanged();

  connect(saveColorCalibration, SIGNAL(triggered()), this, SLOT(saveColorCalibration()));
  connect(undoAction, SIGNAL(triggered()), this, SLOT(undoColorCalibration()));
  connect(redoAction, SIGNAL(triggered()), this, SLOT(redoColorCalibration()));

  menu->addAction(saveColorCalibration);
  menu->addAction(undoAction);
  menu->addAction(redoAction);
  menu->addSeparator();

  return menu;
}