#include "sichtsystemgui.h" SichtsystemGUI::SichtsystemGUI(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { debug = NULL; // Help-Process vorbereiten helpProcess = new QProcess; // Instantiate externalLinkDataContainer externalDataContainer = new visualGUI_externalDataContainer(this); // Intantiate externalLink externalLink = new visualGUI_externalLinkVCL(this, externalDataContainer); externalLink->InitExternalLink(); // Activate externalLink externalLinkTimer = new QTimer(this); connect( externalLinkTimer, SIGNAL(timeout()), this, SLOT(on_actionTriggerExternalLink_triggered()) ); externalLinkTimer->start(25); // GUI instanziieren ui.setupUi(this); // GUI-Klassen instanziieren & connectieren // Centralwidget initialisieren -> Workflow //workflow = new chm3ReadWorkflow( this ); //this->setCentralWidget( workflow ); // Toolbars initialisieren setupDockWidgets(); setupToolbars(); // Windowgeometrie wiederherstellen QSettings settings("OSG-Visual", "Visual-GUI 1.0"); restoreGeometry(settings.value("mainwindow/maingeometry").toByteArray() ); restoreState( settings.value("mainwindow/DockwidgetLayout").toByteArray() ); // Und schlußendlich die GUI zeigen this->show(); } SichtsystemGUI::~SichtsystemGUI() { } void SichtsystemGUI::closeEvent(QCloseEvent *event) { // Anwendung schliessen: this->hide(); // Geometrien speichern QSettings settings("OSG-Visual", "Visual-GUI 1.0"); settings.setValue("mainwindow/maingeometry", saveGeometry()); settings.setValue("mainwindow/DockwidgetLayout", saveState() ); //Debugfenster schliessen if( debug != NULL ) { settings.setValue("debugwindow/geometry", debug->saveGeometry()); qInstallMsgHandler(0); debug->close(); } // Event akzeptieren event->accept(); } void SichtsystemGUI::setDebug(QTextEdit* debug_) { if ( debug_ != NULL ) { debug = debug_; ui.dW_Debug->setWidget(debug); } } void SichtsystemGUI::on_actionAbout_Qt_triggered() { QMessageBox::aboutQt( this, "About Qt Toolkit" ); } void SichtsystemGUI::on_actionAbout_This_Programm_triggered() { QMessageBox::about( this, tr("About OSG Visual GUI"), tr("OSG Visual is a GUI application for easy controlling and testing of the OSG-Visual programm.\n\n It is freely available unter GNU LGPL license\n\n Developement version 0.1\n\nLGPL icons created & copyright by the \"Crystal - Interaction Design Project\".\nPlease visit http://www.everaldo.com/crystal/") ); } void SichtsystemGUI::setupDockWidgets() { // DateTime Widget // dateTimeWidget = new visualGUI_DateTime( this ); ui.dW_DateTime->setWidget( dateTimeWidget ); // Objects objectPositionWidget = new visualGUI_ObjectPosition(this); ui.dW_Objects->setWidget(objectPositionWidget); // Menü populieren // ui.menuEdit->addAction( ui.dW_DateTime->toggleViewAction() ); ui.dW_DateTime->toggleViewAction()->setText( tr("Show/Hide Date & Time") ); ui.dW_DateTime->toggleViewAction()->setToolTip( tr("Show/Hide date & time area") ); // ui.menuEdit->addAction( ui.dW_Objects->toggleViewAction() ); ui.dW_Objects->toggleViewAction()->setText( tr("Show/Hide Object Position") ); ui.dW_Objects->toggleViewAction()->setToolTip( tr("Show/Hide the object positioning area") ); // ui.menuEdit->addAction( ui.dW_Weather->toggleViewAction() ); ui.dW_Weather->toggleViewAction()->setText( tr("Show/Hide Weather") ); ui.dW_Weather->toggleViewAction()->setToolTip( tr("Show/Hide the weather area") ); ui.menuEdit->addAction( ui.actionSettings ); } void SichtsystemGUI::setupToolbars() { // main-Toolbar ui.mainToolBar->addAction( ui.actionExit ); ui.mainToolBar->addAction( ui.actionSettings ); } void SichtsystemGUI::on_actionToggle_top_left_corner_triggered() { if( this->corner( Qt::TopLeftCorner ) == Qt::LeftDockWidgetArea ) setCorner( Qt::TopLeftCorner, Qt::BottomDockWidgetArea ); else if( this->corner( Qt::TopLeftCorner ) == Qt::BottomDockWidgetArea ) setCorner( Qt::TopLeftCorner, Qt::LeftDockWidgetArea ); } void SichtsystemGUI::on_actionToggle_top_right_corner_triggered() { if( this->corner( Qt::TopRightCorner ) == Qt::RightDockWidgetArea ) setCorner( Qt::TopRightCorner, Qt::TopDockWidgetArea ); else if( this->corner( Qt::TopRightCorner ) == Qt::TopDockWidgetArea ) setCorner( Qt::TopRightCorner, Qt::RightDockWidgetArea ); } void SichtsystemGUI::on_actionToggle_bottom_left_corner_triggered() { if( this->corner( Qt::BottomLeftCorner ) == Qt::LeftDockWidgetArea ) setCorner( Qt::BottomLeftCorner, Qt::BottomDockWidgetArea ); else if( this->corner( Qt::BottomLeftCorner ) == Qt::BottomDockWidgetArea ) setCorner( Qt::BottomLeftCorner, Qt::LeftDockWidgetArea ); } void SichtsystemGUI::on_actionToggle_bottom_right_corner_triggered() { if( this->corner( Qt::BottomRightCorner ) == Qt::RightDockWidgetArea ) setCorner( Qt::BottomRightCorner, Qt::BottomDockWidgetArea ); else if( this->corner( Qt::BottomRightCorner ) == Qt::BottomDockWidgetArea ) setCorner( Qt::BottomRightCorner, Qt::RightDockWidgetArea ); } void SichtsystemGUI::on_actionTriggerExternalLink_triggered() { // Copy Data to Transfercontainer after converting ( GUI is in deg, osgvisual+VCL need rad) externalDataContainer->lat = osg::DegreesToRadians( objectPositionWidget->getUI()->dSB_Lat->value() ); externalDataContainer->lon = osg::DegreesToRadians( objectPositionWidget->getUI()->dSB_Lon->value() ); externalDataContainer->alt = objectPositionWidget->getUI()->dSB_Alt->value(); externalDataContainer->bank_phi = osg::DegreesToRadians( objectPositionWidget->getUI()->dSB_bank_phi->value() ); externalDataContainer->pitch_theta = osg::DegreesToRadians( objectPositionWidget->getUI()->dSB_pitch_theta->value() ); externalDataContainer->azimuth_psi = osg::DegreesToRadians( objectPositionWidget->getUI()->dSB_azimuth_psi->value() ); externalDataContainer->idToTrack = objectPositionWidget->getUI()->idToTrack->value(); // TransferData externalLink->processExternalLink(); }