Esempio n. 1
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow){
    ui->setupUi(this);
	currentScene = NULL;
	zoomToolSpinBox = NULL;
	ui->statusBar->addPermanentWidget(new MemoryMonitor(this));

	// Variable editor
	VariableDelegate* delegate = new VariableDelegate(this);
	ui->variableView->setItemDelegate(delegate);

	//Set delegate for query editor
	ui->queryView->setItemDelegateForColumn(1, new ProgressViewDelegate(this));

	// Add actions for toggling dockwidgets
	QAction* toggleVariablesDock = ui->variableDock->toggleViewAction();
	toggleVariablesDock->setText(tr("Show variables"));
	ui->menuView->addAction(toggleVariablesDock);
	QAction* toggleQueryDock = ui->queryDock->toggleViewAction();
	toggleQueryDock->setText(tr("Show queries"));
	ui->menuView->addAction(toggleQueryDock);
	QAction* toggleValidationDock = ui->validationDock->toggleViewAction();
	toggleValidationDock->setText(tr("Show validation issues"));
	ui->menuView->addAction(toggleValidationDock);

	//Hide validation dock initially
	ui->validationDock->hide();

	// Decide which dock-widget gets the corners
	this->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
	this->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
	this->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
	this->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);

	// Action group for editing mode
	ui->InsertPlaceModeAction->setProperty("Mode", PetriNetScene::InsertPlaceMode);
	ui->PointerModeAction->setProperty("Mode", PetriNetScene::PointerMode);
	ui->InsertTransitionModeAction->setProperty("Mode", PetriNetScene::InsertTransitionMode);
	ui->InsertArcModeAction->setProperty("Mode", PetriNetScene::InsertArcMode);
	this->modeActionGroup = new QActionGroup(this);
	this->modeActionGroup->addAction(ui->InsertPlaceModeAction);
	this->modeActionGroup->addAction(ui->PointerModeAction);
	this->modeActionGroup->addAction(ui->InsertTransitionModeAction);
	this->modeActionGroup->addAction(ui->InsertArcModeAction);

	this->modeActionGroup->setExclusive(true);
	connect(this->modeActionGroup, SIGNAL(triggered(QAction*)),
			this, SLOT(modeActionGroup_triggered(QAction*)));

	createUndoActions();
	createToggleToolsbars();
	createZoomTool();

	// Listen for clean state changed
	connect(&undoGroup, SIGNAL(cleanChanged(bool)), this, SLOT(updateWindowTitle()));

	// Create new document
	on_NewPNDVAction_triggered();

	//Load settings
	loadSettings();
}
Esempio n. 2
0
PowerGui::PowerGui(): PowerGui_class()
{
	setupUi(this);
	
	windowMapper = new QSignalMapper(this);
  splash->showMessage("Loading user menu...",Qt::AlignLeft | Qt::AlignBottom);
	loadUserMenus();

  splash->showMessage("Loading libraries...",Qt::AlignLeft | Qt::AlignBottom);
  loadLibrary();
	addDockWidget(Qt::LeftDockWidgetArea, &dockLib);
  
  createRecentFiles();
  updateRecentFiles();
  #ifdef UNDO
  	createUndoActions();
  #endif
  updateMenus();

  connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(updateMenus()));
  #ifdef UNDO
  connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(setActiveUndoStack()));
  #endif
  connect(windowMapper, SIGNAL(mapped(QWidget*)), this, SLOT(setActiveSubWindow(QWidget*)));
  QString scilabPath = getSetting("scilabPath").toString(); 
  bool startScilab = getSetting("startScilab").toBool(); 
  if (startScilab) { 
    splash->showMessage("Starting Scilab...",Qt::AlignLeft | Qt::AlignBottom);
    QString outputPath = getSetting("Path/outputPath").toString(); 
    qDebug() << "Starting Scilab from " << scilabPath << " in directory " << outputPath << " with arg " << getSetting("scilabArg").toString();
#ifndef Q_OS_WIN32

    bool scilabRunning = system("ps -e | grep scilab") == 0;
    if (scilabRunning) {
      struct sockaddr_in service;
      int sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
      service.sin_family = AF_INET;
      service.sin_addr.s_addr = inet_addr("127.0.0.1");
      int actual_port = 27020+(getuid() % 10000);
      service.sin_port = htons(actual_port);
      if (::connect(sock,(struct sockaddr*)&service,sizeof(service)) == -1) {
	      scilabRunning=false;
      }
      ::close(sock);
    }
 

    
#else
    bool scilabRunning = false;
#endif
    if (!scilabRunning) {
      if (getSetting("scilabArg").toString().trimmed().size())
        QProcess::startDetached(scilabPath, QStringList() << "-f" << getSetting("scilabArg").toString().replace("$HOMEAPP",QCoreApplication::applicationDirPath()), outputPath); 
      else
        QProcess::startDetached(scilabPath, QStringList(), outputPath); 
    } else {
      qDebug() << "Scilab is already running";
    }
  }
}