Пример #1
0
void MainWindow::createActs()
{
    newAct = new QAction(tr("New"), this);
    newAct->setShortcut(QKeySequence::New);
    connect(newAct, SIGNAL(triggered()), m_field, SLOT(newGame()));

    pauseAct = new QAction(tr("Pause"), this);
    pauseAct->setCheckable(true);
    pauseAct->setShortcut(Qt::Key_P);
    connect(pauseAct, SIGNAL(toggled(bool)), m_field, SLOT(pause(bool)));

    showHighScoreAct = new QAction(tr("Show High Scores"), this);
    connect(showHighScoreAct, SIGNAL(triggered()), SLOT(showHighScore()));

    quitAct = new QAction(tr("Quit"), this);
    quitAct->setShortcut(QKeySequence::Quit);
    connect(quitAct, SIGNAL(triggered()), SLOT(close()));

    showToolbarAct = new QAction(tr("Show Toolbar"), this);
    showToolbarAct->setCheckable(true);
    showToolbarAct->setChecked(true);

    showStatusbarAct = new QAction(tr("Show Statusbar"), this);
    showStatusbarAct->setCheckable(true);
    showStatusbarAct->setChecked(true);

    easyAct = new QAction(tr("Easy"), this);
    easyAct->setCheckable(true);
    easyAct->setData(1);
    connect(easyAct, SIGNAL(triggered()), m_field, SLOT(setDifficulty()));

    mediumAct = new QAction(tr("Medium"), this);
    mediumAct->setCheckable(true);
    mediumAct->setData(2);
    connect(mediumAct, SIGNAL(triggered()), m_field, SLOT(setDifficulty()));

    hardAct = new QAction(tr("Hard"), this);
    hardAct->setCheckable(true);
    hardAct->setData(3);
    connect(hardAct, SIGNAL(triggered()), m_field, SLOT(setDifficulty()));

    customAct = new QAction(tr("Custom"), this);
    customAct->setCheckable(true);
    customAct->setData(4);
    connect(customAct, SIGNAL(triggered()), m_field, SLOT(setDifficulty()));

    QActionGroup *actGroup = new QActionGroup(this);
    actGroup->addAction(easyAct);
    actGroup->addAction(mediumAct);
    actGroup->addAction(hardAct);
    actGroup->addAction(customAct);
    easyAct->setChecked(true);

    aboutAct = new QAction(tr("About"), this);
    aboutAct->setShortcut(QKeySequence::HelpContents);
    connect(aboutAct, SIGNAL(triggered()), SLOT(aboutSlot()));
}
Пример #2
0
void FFCP::createActions()
{
	newAct = new QAction( tr("新建"), this);  //QIcon("./images/open.png"), 暂时不设置图片
	newAct->setShortcut(tr("N"));   
	connect(newAct, SIGNAL(triggered()), this, SLOT(newSlot()));

	openAct = new QAction(tr("打开"), this);
	openAct->setShortcut(tr("O"));   
	connect(openAct, SIGNAL(triggered()), this, SLOT(openSlot()));

	saveAct = new QAction(tr("保存"), this);
	saveAct->setShortcut(tr("S"));
	connect(saveAct, SIGNAL(triggered()), this, SLOT(saveSlot()));

	quitAct = new QAction(tr("退出"), this);
	quitAct->setShortcut(tr("Q"));
	connect(quitAct, SIGNAL(triggered()), this, SLOT(close()));

	aboutAct = new QAction(tr("关于"), this);
	aboutAct->setShortcut(tr("A"));
	connect(aboutAct, SIGNAL(triggered()), this, SLOT(aboutSlot()));

	compileAct = new QAction(tr("编译"), this);
	compileAct->setShortcut(tr("F7"));
	connect(compileAct, SIGNAL(triggered()), this, SLOT(compileSlot()));

	simulationAct = new QAction(tr("仿真"), this);
	simulationAct->setShortcut(tr("F6"));
	connect(simulationAct, SIGNAL(triggered()), this, SLOT(simulationSlot()));

	downloadAct = new QAction(tr("下载"), this);
	downloadAct->setShortcut(tr("F5"));
	connect(downloadAct, SIGNAL(triggered()), this, SLOT(downloadSlot()));

	clearAct = new QAction(tr("清除"), this);
	clearAct->setShortcut(tr("F8"));
	connect(clearAct, SIGNAL(triggered()), this, SLOT(clearSlot()));

	//在工具中添加变量定义
	defineAct = new QAction(tr("变量定义"),this);
	defineAct->setShortcut(tr("F1"));
	connect(defineAct, SIGNAL(triggered()), this, SLOT(defineSlot()));

	hardwareAct = new QAction(tr("硬件结构图"), this);
	defineAct->setShortcut(tr("F3"));
	connect(hardwareAct, SIGNAL(triggered()), this, SLOT(hardwareSlot()));

	softwareAct = new QAction(tr("软件流程图"), this);
	defineAct->setShortcut(tr("F2"));
	connect(softwareAct, SIGNAL(triggered()), this, SLOT(softwareSlot()));
}
Пример #3
0
void MainWindow::createActions(){
    this->newGameAction=new QAction(tr("&New Game"),this);
    this->newGameAction->setStatusTip(tr("start a new game"));
    this->newGameAction->setShortcut(tr("Ctrl+n"));
    //this->newGameAction->setIcon(QIcon(":/images/img/new.png"));  //doesn't work?
    connect(this->newGameAction,SIGNAL(triggered()),this,SLOT(newGameSlot()));

    this->quitAction=new QAction(tr("&Quit"),this);
    this->quitAction->setStatusTip(tr("quit QMineSweeper"));
    this->quitAction->setShortcut(tr("Ctrl+q"));
    //this->quitAction->setIcon(QIcon(":/images/img/quit.png"));    //doesn't work?
    connect(this->quitAction,SIGNAL(triggered()),this,SLOT(close()));

    this->aboutAction=new QAction(tr("&About"),this);
    this->aboutAction->setShortcut(tr("Ctrl+h"));
    connect(this->aboutAction,SIGNAL(triggered()),this,SLOT(aboutSlot()));
}
Пример #4
0
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: newGameSlot(); break;
        case 1: aboutSlot(); break;
        case 2: winSlot(); break;
        case 3: loseSlot(); break;
        case 4: updateGUISlot((*reinterpret_cast< bool(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 5;
    }
    return _id;
}
Пример #5
0
bool mainWidget::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: slotLoadMainConfig((const QString&)static_QUType_QString.get(_o+1)); break;
    case 1: slotFileOpen(); break;
    case 2: chooseOpenFile(); break;
    case 3: slotClickedListViewItem((QListViewItem*)static_QUType_ptr.get(_o+1)); break;
    case 4: slotFileSave(); break;
    case 5: aboutSlot(); break;
    case 6: slotReloadMainConfig(); break;
    case 7: slotAskForSave(); break;
    case 8: commentLine(); break;
    case 9: closeClicked(); break;
    case 10: languageChange(); break;
    default:
	return QMainWindow::qt_invoke( _id, _o );
    }
    return TRUE;
}
Пример #6
0
/**
 * @brief MainWindow::MainWindow Initialize the main window and everything else
 * @param parent
 */
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
  // Initialize the interface
  ui->setupUi(this);
  ui->glWidget->addAction(ui->actionFullscreen);
  ui->glWidget->addAction(ui->actionExit);

  connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(close()));
  connect(ui->actionFullscreen,SIGNAL(triggered()),this,SLOT(toggleFullscreenSlot()));

  // The test script runs a simple experiment
  experimentScript = new TestScript(this,this);

  // Add a cosmetic line to the splitter handle
  // so that it's easier to grab with the mouse
  QSplitterHandle *handle = ui->splitter->handle(1);
  QVBoxLayout *layout = new QVBoxLayout(handle);
  layout->setSpacing(0);
  layout->setMargin(0);
  QFrame *line = new QFrame(handle);
  line->setFrameShape(QFrame::VLine);
  line->setFrameShadow(QFrame::Sunken);
  layout->addWidget(line);

  // In a future revision, we'll move the SimWorld
  // to a more intelligent place.  It doesn't
  // belong as a child to the graphics widget.
  SimWorld* world = ui->glWidget->getWorld();
  CapBody* capBody = world->getBody();
#if defined( BOARD_DATA )
  BoardMarkerData* md = ui->glWidget->getWorld()->getMarkerData();
#elif defined( POKE_DATA )
  PokeMarkerData* md = ui->glWidget->getWorld()->getMarkerData();
#else
  MarkerData* md = world->getMarkerData();
#endif

  // We populate a ScrollArea with the same number of
  // MarkerWidgets as there are markers in the data file.
  QScrollArea* sa = new QScrollArea;
  QWidget* wid = new QWidget;
  layout = new QVBoxLayout;
  layout->setContentsMargins(0,0,0,0);

  // This part needs to become part of a function
  // that is called everytime a new data file is
  // loaded.
  int markCnt = md->marker_count;
  ui->markerCountLineEdit->setText(QString::number(markCnt));
  ui->frameCountLineEdit->setText(QString::number(md->size()));
  ui->markerFileLineEdit->setText("data.c3d");
  ui->markerFrameStartBox->setValue(0);
  setDataRange(md->size());

  QHBoxLayout* innerLayout = new QHBoxLayout;
  QPushButton* connectButton = new QPushButton("Connect");
  QPushButton* releaseButton = new QPushButton("Release");
  QPushButton* updateButton = new QPushButton("Update Anchors");
  innerLayout->addWidget(connectButton);
  innerLayout->addWidget(releaseButton);
  innerLayout->addWidget(updateButton);
  connect(connectButton,SIGNAL(clicked()),this,SLOT(connectMarkers()));
  connect(releaseButton,SIGNAL(clicked()),this,SLOT(releaseMarkers()));
  connect(updateButton,SIGNAL(clicked()),this,SLOT(updateMarkerAnchors()));
  layout->addLayout(innerLayout);

  markerWidgetArray.resize(markCnt);
  for (int ii=0;ii<markCnt;++ii) {
    markerWidgetArray[ii] = new MarkerWidget(ii,0);
    layout->addWidget(markerWidgetArray[ii]);
  }
  wid->setLayout(layout);
  sa->setWidget(wid);
  ui->controlTabWidget->addTab(sa,"Markers");

  // Joint control tab
  sa = new QScrollArea;
  wid = new QWidget;
  layout = new QVBoxLayout;
  layout->setContentsMargins(0,0,0,0);

  // A couple buttons at the top of the joint tab make it possible
  // to rapidly change all the force limits
  innerLayout = new QHBoxLayout;
  QPushButton* zeroButton = new QPushButton("Zero");
  QPushButton* lightButton = new QPushButton("Light");
  QPushButton* resetButton = new QPushButton("Strong");
  innerLayout->addWidget(zeroButton);
  innerLayout->addWidget(lightButton);
  innerLayout->addWidget(resetButton);
  layout->addLayout(innerLayout);
  connect(zeroButton,SIGNAL(clicked()),this,SLOT(zeroForces()));
  connect(lightButton,SIGNAL(clicked()),this,SLOT(lightForces()));
  connect(resetButton,SIGNAL(clicked()),this,SLOT(strongForces()));

  // Fill the tab with hard-coded data about the model...
  populateJointTab(capBody,layout);
  wid->setLayout(layout);
  sa->setWidget(wid);
  ui->controlTabWidget->addTab(sa,"Joints");

  // Body dimensions widget
  sa = new QScrollArea;
  wid = new QWidget;
  layout = new QVBoxLayout;
  layout->setContentsMargins(0,0,0,0);
  QCheckBox* keepBodyRel = new QCheckBox("Body Rel");
  layout->addWidget(keepBodyRel);

  // Fill the tab with model-specific widgets
  populateBodyTab(capBody,layout);
  wid->setLayout(layout);
  sa->setWidget(wid);
  ui->controlTabWidget->addTab(sa,"Model dimensions");

  // Hook up the interface elements to their respecitve functionality
  connect(ui->saveButton,SIGNAL(clicked()),capBody,SLOT(saveBody()));
  connect(ui->loadButton,SIGNAL(clicked()),capBody,SLOT(loadBody()));
  connect(ui->testButton,SIGNAL(clicked()),this,SLOT(experimentSlot()));

  // When a the CapBody loads the marker map, tell the interface
  // how and where the markers are connected.
  connect(capBody,SIGNAL(markMap(int,int)),this,SLOT(setMarkMap(int,int)));
  connect(capBody,SIGNAL(markPoint(int,double,double,double)),
          this,SLOT(setMarkPoint(int,double,double,double)));

  // *****
  // (Each MarkerWidget informs the capBody when the interface
  //  changes).
  for (int ii=0;ii<markCnt;++ii) {
    connect(markerWidgetArray[ii],SIGNAL(markBodySet(int,int)),md,SLOT(changeBodyConnect(int,int)));
    connect(markerWidgetArray[ii],SIGNAL(markConnect(int,bool)),md,SLOT(changeBodyLink(int,bool)));
    connect(markerWidgetArray[ii],SIGNAL(markPosSet(int,double,double,double)),
            md,SLOT(changeLinkPos(int,double,double,double)));
    connect(markerWidgetArray[ii],SIGNAL(markGrab(int)),this, SLOT(grabMarkPos(int)));
  }

  connect(ui->clearPlotButton,SIGNAL(clicked()),this,SLOT(clearData()));
  connect(ui->glWidget->getWorld(),SIGNAL(useMarkers(bool)),this,SLOT(usingMarkers(bool)));
  connect(ui->frictionSpinBox,SIGNAL(valueChanged(double)),world,SLOT(setGroundFriction(double)));
  connect(ui->terrainSpinBox,SIGNAL(valueChanged(double)),world,SLOT(setTerrainSoftness(double)));
  connect(ui->zBox,SIGNAL(valueChanged(double)),ui->glWidget->getWorld(),SLOT(setTerrainZ(double)));
  connect(ui->forceLinesCheckBox,SIGNAL(clicked(bool)),ui->glWidget,SLOT(setDrawLines(bool)));
  connect(ui->camFollowCheckBox,SIGNAL(clicked(bool)),ui->glWidget,SLOT(setFollowCamera(bool)));
  connect(ui->timeSlider,SIGNAL(valueChanged(int)),world->getMarkerData(),SLOT(setFrame(int)));
  connect(ui->glWidget->getWorld()->getMarkerData(),SIGNAL(frameChanged(int)),ui->timeSlider,SLOT(setValue(int)));
  connect(ui->bodyAlpha,SIGNAL(valueChanged(double)),ui->glWidget,SLOT(setBodyAlpha(double)));
  connect(ui->showMarkBox,SIGNAL(toggled(bool)),ui->glWidget,SLOT(setShowMarkers(bool)));
  connect(ui->selfCollideBox,SIGNAL(toggled(bool)),world,SLOT(setSelfCollide(bool)));
  connect(ui->saveStateButton,SIGNAL(clicked()),this,SLOT(saveModel()));
  connect(ui->restoreButton,SIGNAL(clicked()),this,SLOT(restoreModel()));

  connect(ui->markerRadio,SIGNAL(toggled(bool)),this,SLOT(useMarkers(bool)));
  connect(ui->torqueRadio,SIGNAL(toggled(bool)),this,SLOT(useTorques(bool)));
  connect(ui->altRadio,SIGNAL(toggled(bool)),this,SLOT(useAltForces(bool)));

  connect(ui->playAllButton,SIGNAL(clicked(bool)),this,SLOT(playPauseAll(bool)));
  connect(ui->playPauseDataButton,SIGNAL(clicked(bool)),this,SLOT(playPauseData(bool)));
  connect(ui->playPauseSimButton,SIGNAL(clicked(bool)),this,SLOT(playPauseSim(bool)));

  connect(ui->stepAllButton,SIGNAL(clicked()),this,SLOT(stepAll()));
  connect(ui->stepDataButton,SIGNAL(clicked()),this,SLOT(stepData()));
  connect(ui->stepSimButton,SIGNAL(clicked()),this,SLOT(stepSim()));


  connect(ui->selectFileToolButton,SIGNAL(clicked()),this,SLOT(markerFileDialog()));
  connect(ui->dataStepBox,SIGNAL(valueChanged(int)),this,SLOT(setDataStep(int)));
  connect(ui->dataFrameBox,SIGNAL(valueChanged(int)),this,SLOT(setDataFrame(int)));
  connect(ui->timeSlider,SIGNAL(valueChanged(int)),ui->dataFrameBox,SLOT(setValue(int)));

  connect(ui->actionAbout,SIGNAL(triggered()),this,SLOT(aboutSlot()));

  // Monitor and manipulate recorded angle data
  connect(world->angle_sequence,SIGNAL(lengthChanged(int)),this,SLOT(setAngleFrameCount(int)));
  connect(ui->angleDataFrameBox,SIGNAL(valueChanged(int)),this,SLOT(setAngleCurrentFrame(int)));
  connect(world,SIGNAL(angleFrame(int)),this,SLOT(setAngleCurrentFrame(int)));
  connect(ui->saveAnglesButton,SIGNAL(clicked()),this,SLOT(writeSavedAngles()));
  connect(ui->loadAnglesButton,SIGNAL(clicked()),this,SLOT(loadSavedAngles()));
  connect(ui->clearAnglesButton,SIGNAL(clicked()),this,SLOT(clearSavedAngles()));

  // Monitor and manipulate recorded torque data
  connect(world->torque_sequence,SIGNAL(lengthChanged(int)),this,SLOT(setTorqueFrameCount(int)));
  connect(ui->torqueDataFrameBox,SIGNAL(valueChanged(int)),this,SLOT(setTorqueCurrentFrame(int)));
  connect(world,SIGNAL(torqueFrame(int)),this,SLOT(setTorqueCurrentFrame(int)));
  connect(ui->saveTorquesButton,SIGNAL(clicked()),this,SLOT(writeSavedTorques()));
  connect(ui->loadTorquesButton,SIGNAL(clicked()),this,SLOT(loadSavedTorques()));
  connect(ui->clearTorquesButton,SIGNAL(clicked()),this,SLOT(clearSavedTorques()));

  // *****
  // Need to dynamically change this
  ui->timeSlider->setRange(0,world->getMarkerData()->size()-1);
  connect(ui->globalBox,SIGNAL(toggled(bool)),this,SLOT(useGlobalForces(bool)));

#if defined( BOARD_DATA )
  bd = new BoardData(this);
  bd->loadData("boardData.dat");
  ui->glWidget->setBoardData(bd);
#endif

  // Start the timer for updating the data, sim, and graphics
  updateTimer.setSingleShot(false);
  connect(&updateTimer,SIGNAL(timeout()),this,SLOT(updateLoop()));

  connect(ui->frameTimeBox,SIGNAL(valueChanged(double)),this,SLOT(setFrameTime(double)));
  ui->frameTimeBox->setValue(1/60.0);
  ui->dataStepBox->setValue(2);

  capBody->loadBody();
  useMarkers(true);
  saveModel();
}