From 6014ae6fdff2ebb78e3bae9546fb05c27acd81d8 Mon Sep 17 00:00:00 2001 From: catdog2 Date: Tue, 9 Dec 2008 22:01:57 +0000 Subject: [PATCH] viele viele sachen git-svn-id: http://svn.lsim.tuxzone.org/trunk@29 4bec179b-ab65-46ed-a5f8-55b8b5c735d0 --- lsim.kdevelop | 2 +- lsim.kdevelop.pcs | Bin 161394 -> 201769 bytes lsim.kdevses | 27 +- src/application.qrc | 3 + src/graphicsview.cpp | 61 +- src/graphicsview.h | 8 +- src/homoefielditem.cpp | 13 +- src/homoefielditem.h | 7 +- src/homoefieldwidget.cpp | 4 +- src/icons/view-fullscreen.svg | 7402 +++++++++++++++++++++++++++++++++ src/icons/view-restore.svg | 7402 +++++++++++++++++++++++++++++++++ src/lsim.cpp | 60 +- src/lsim.h | 4 + src/main.cpp | 18 +- src/simulscene.cpp | 14 +- src/simulscene.h | 1 + 16 files changed, 14992 insertions(+), 34 deletions(-) create mode 100644 src/icons/view-fullscreen.svg create mode 100644 src/icons/view-restore.svg diff --git a/lsim.kdevelop b/lsim.kdevelop index c8982a4..ee263e1 100644 --- a/lsim.kdevelop +++ b/lsim.kdevelop @@ -161,7 +161,7 @@ /mnt/sdb1/c++/lsim - + diff --git a/lsim.kdevelop.pcs b/lsim.kdevelop.pcs index b46d0d2111a8179554b3ebbdc00dab1b953e5b87..322f3a98c7929ef89f25dc5190b9688721377ea0 100644 GIT binary patch delta 24989 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 delta 5366 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 - + - + - + @@ -15,10 +15,10 @@ - + - + @@ -33,20 +33,29 @@ - + - + - + - + + + + + + + + + + diff --git a/src/application.qrc b/src/application.qrc index 597bbb6..2800a4f 100644 --- a/src/application.qrc +++ b/src/application.qrc @@ -16,6 +16,9 @@ icons/window-simulmode.svg icons/application-exit.svg icons/lsim.svg + icons/view-fullscreen.svg + icons/view-restore.svg + diff --git a/src/graphicsview.cpp b/src/graphicsview.cpp index 6d1a0d0..e73e8f5 100644 --- a/src/graphicsview.cpp +++ b/src/graphicsview.cpp @@ -20,12 +20,21 @@ #include "graphicsview.h" //#include #include +#include +#include +#include +#include +#include "simulscene.h" +#include -GraphicsView::GraphicsView(): QGraphicsView() { +GraphicsView::GraphicsView(QWidget * parent, QStatusBar* statusbar): QGraphicsView(parent) { + mainWindowStatusBar = statusbar; //setMinimumSize(900,700); //setDragMode(QGraphicsView::ScrollHandDrag); //setRenderHint (QPainter::QPainter::Antialiasing,true); + //setCacheMode(QGraphicsView::CacheBackground); + //setTransformationAnchor (QGraphicsView::AnchorUnderMouse); //scale(2,2); @@ -34,6 +43,56 @@ GraphicsView::GraphicsView(): QGraphicsView() { } +void GraphicsView::drawBackground ( QPainter * painter, const QRectF & rect ) { + int lineDistance = 20; + + double startX = rect.x(); + double startY = rect.y(); + double endX = rect.x() + rect.width(); + double endY = rect.y() + rect.height(); + + QPainterPath currPath; + int startPaintX = floor(startX/(double)lineDistance)*lineDistance; + int endPaintX = ceil(endX/(double)lineDistance)*lineDistance; + for (double i = startPaintX; isetPen(QPen(Qt::lightGray, 1, Qt::SolidLine)); + painter->drawPath(currPath); + + painter->setPen(QPen(Qt::green, 1, Qt::SolidLine)); + painter->drawLine(startX,0,endX,0); + painter->drawLine(0,startY,0,endY); + +} + +void GraphicsView::mouseMoveEvent ( QMouseEvent * e ) { + QGraphicsView::mouseMoveEvent(e); + SimulScene* simulScene = dynamic_cast (scene()); + if (simulScene != 0 && mainWindowStatusBar !=0) { + QPointF scenePos = mapToScene(e->pos()); + QString posString; + posString += "Mausposition: "; + posString += "x: " + QLocale().toString(scenePos.x(),'g') + " px"+QChar(8793); + posString += QLocale().toString(scenePos.x()*simulScene->getMeterPerPx(),'g') + " m"; + posString += " y: " + QLocale().toString(scenePos.y(),'g') + " px"+QChar(8793); + posString += QLocale().toString(scenePos.y()*simulScene->getMeterPerPx(),'g') + " m"; + mainWindowStatusBar->showMessage(posString); + } +} + + void GraphicsView::enableOGLViewport() { //setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); } diff --git a/src/graphicsview.h b/src/graphicsview.h index 405ecc9..7714679 100644 --- a/src/graphicsview.h +++ b/src/graphicsview.h @@ -24,13 +24,14 @@ class HomoEFieldItem; class QTimeLine; +class QStatusBar; /** @author Peter Dahlberg */ class GraphicsView : public QGraphicsView { Q_OBJECT public: - GraphicsView(); + GraphicsView(QWidget * parent = 0, QStatusBar* statusbar = 0); ~GraphicsView(); @@ -38,6 +39,11 @@ class GraphicsView : public QGraphicsView { void enableOGLViewport(); void disableOGLViewport(); private: + QStatusBar * mainWindowStatusBar; + + protected: + void drawBackground ( QPainter * painter, const QRectF & rect ); + void mouseMoveEvent ( QMouseEvent * e ); }; diff --git a/src/homoefielditem.cpp b/src/homoefielditem.cpp index e0e51ff..9b5aed6 100644 --- a/src/homoefielditem.cpp +++ b/src/homoefielditem.cpp @@ -29,7 +29,7 @@ HomoEFieldItem::HomoEFieldItem(QRectF sizeRect) setRectF(sizeRect); dockWidget = new HomoEFieldWidget(0,0,this); setFieldPower(10); - setFieldLineDistance(10); + setFieldLineDistance(12); setFlag(ItemIsMovable); setFlag(ItemIsSelectable); setFlag(ItemIsFocusable); @@ -38,6 +38,7 @@ HomoEFieldItem::HomoEFieldItem(QRectF sizeRect) //QGraphicsRectItem * testItem = new QGraphicsRectItem(QRectF(-10,-10,6,6), this); //testItem->setBrush(Qt::SolidPattern); + connect(this, SIGNAL(heightChanged(double)), this, SLOT(handleVoltageChange())); @@ -124,6 +125,16 @@ void HomoEFieldItem::setFieldPower (double fieldPower ) { //if (this->fieldPower == fieldPower) return; this->fieldPower = fieldPower; emit fieldPowerChanged(fieldPower); + handleVoltageChange (); +} + +void HomoEFieldItem::setVoltage (double voltage ) { + setFieldPower( voltage/getRectF().height()); + +} + +void HomoEFieldItem::handleVoltageChange () { + emit voltageChanged(getFieldPower()*getRectF().height()); } diff --git a/src/homoefielditem.h b/src/homoefielditem.h index 8c0efa6..3c1d6b9 100644 --- a/src/homoefielditem.h +++ b/src/homoefielditem.h @@ -58,12 +58,15 @@ class HomoEFieldItem : public FieldItem { public slots: void setFieldPower (double fieldPower ); - + void setVoltage (double voltage ); void setOuterPenWidth ( double theValue ); - + + private slots: + void handleVoltageChange(); signals: void fieldPowerChanged(double fieldPower); + void voltageChanged(double voltage); private: //! Abstand der Feldlinien in der Zeichnung diff --git a/src/homoefieldwidget.cpp b/src/homoefieldwidget.cpp index f07b82b..efd7942 100644 --- a/src/homoefieldwidget.cpp +++ b/src/homoefieldwidget.cpp @@ -117,11 +117,13 @@ void HomoEFieldWidget::createWidget() connect(fieldPowerBox, SIGNAL(valueChanged(double)),homoEField ,SLOT(setFieldPower(double)) ); ExpDoubleSpinBox* voltageBox = new ExpDoubleSpinBox; - voltageBox->setRange(-1e+200,1e+200); + voltageBox->setRange(0,1e+200); voltageBox->setDecimals(35); voltageBox->setDisplayDecimals(3); voltageBox->setKeyboardTracking(false); voltageBox->setSuffix(" V"); + connect(homoEField ,SIGNAL(voltageChanged(double)),voltageBox, SLOT(setValue(double)) ); + connect(voltageBox, SIGNAL(valueChanged(double)),homoEField ,SLOT(setVoltage(double)) ); QGridLayout* constGridLayout = new QGridLayout; //constGridLayout->setSizeConstraint(QLayout::SetFixedSize); diff --git a/src/icons/view-fullscreen.svg b/src/icons/view-fullscreen.svg new file mode 100644 index 0000000..06f8404 --- /dev/null +++ b/src/icons/view-fullscreen.svg @@ -0,0 +1,7402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/view-restore.svg b/src/icons/view-restore.svg new file mode 100644 index 0000000..b7f6d3b --- /dev/null +++ b/src/icons/view-restore.svg @@ -0,0 +1,7402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lsim.cpp b/src/lsim.cpp index 829b099..92d00e6 100644 --- a/src/lsim.cpp +++ b/src/lsim.cpp @@ -39,7 +39,7 @@ lsim::lsim() { - gview = new GraphicsView(); + gview = new GraphicsView(this,statusBar()); setCentralWidget (gview); createScene(); createActions(); @@ -66,6 +66,19 @@ void lsim::about() { void lsim::createActions() { + QIcon fullScreenIcon = QIcon(":icons/view-fullscreen.svg"); + fullScreenIcon.addFile(":icons/view-restore.svg", QSize(),QIcon::Normal,QIcon::On); + fullScreenIcon.addFile(":icons/view-restore.svg", QSize(),QIcon::Disabled,QIcon::On); + fullScreenIcon.addFile(":icons/view-restore.svg", QSize(),QIcon::Active,QIcon::On); + fullScreenIcon.addFile(":icons/view-restore.svg", QSize(),QIcon::Selected,QIcon::On); + acts.fullScreenAct = new QAction (tr ("&Vollbild"), this); + acts.fullScreenAct->setStatusTip (tr ("In den Vollbildmodus Wechseln")); + acts.fullScreenAct->setIcon(fullScreenIcon); + acts.fullScreenAct->setCheckable(true); + acts.fullScreenAct->setShortcut(QKeySequence(Qt::Key_F11)); + connect (acts.fullScreenAct, SIGNAL (toggled(bool)), this, SLOT (goToFullscreen(bool))); + connect (this, SIGNAL (fullScreenModeChanged(bool)), acts.fullScreenAct, SLOT (setChecked(bool))); + acts.aboutAct = new QAction (tr ("&About"), this); acts.aboutAct->setStatusTip (tr ("Show the application's About box")); connect (acts.aboutAct, SIGNAL (triggered()), this, SLOT (about())); @@ -115,6 +128,7 @@ void lsim::createActions() { acts.exitAct = new QAction (tr ("Beenden"), this); acts.exitAct->setStatusTip (tr ("lsim beenden")); + acts.exitAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); acts.exitAct->setIcon(QIcon(":icons/application-exit.svg")); connect (acts.exitAct, SIGNAL (triggered()), qApp, SLOT (quit())); @@ -152,13 +166,13 @@ void lsim::createActions() { //Edit, insert, Modechange - acts.itemEditModeAct = new QAction (tr ("Bearbeiten"), this); + acts.itemEditModeAct = new QAction (tr ("Felder Bearbeiten"), this); acts.itemEditModeAct->setStatusTip (tr ("Die Anordnung ver\344ndern")); acts.itemEditModeAct->setIcon(QIcon(":icons/edit-scene.svg")); acts.itemEditModeAct->setCheckable(true); acts.itemEditModeAct->setData(QVariant(SimulScene::FieldItemEdit)); - acts.insertEFieldItemAct = new QAction (tr ("elektrisches Feld hizuf\374gen"), this); + acts.insertEFieldItemAct = new QAction (tr ("Elektrisches Feld hizuf\374gen"), this); acts.insertEFieldItemAct->setStatusTip (tr ("Ein elekrisches Feld hizuf\374gen")); acts.insertEFieldItemAct->setIcon(QIcon(":icons/insert-efield.svg")); acts.insertEFieldItemAct->setCheckable(true); @@ -194,16 +208,18 @@ void lsim::createActions() { //Window Mode - acts.editModeAct = new QAction (tr ("in den Bearbeitungsmodus wechseln"), this); + acts.editModeAct = new QAction (tr ("&Bearbeitungsmodus"), this); acts.editModeAct->setStatusTip (tr ("erm\366glicht das Bearbeiten der Anordnung")); acts.editModeAct->setIcon(QIcon(":icons/window-editmode.svg")); acts.editModeAct->setCheckable(true); + acts.editModeAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E)); acts.editModeAct->setData(QVariant(lsim::EditMode)); - acts.simulationModeAct = new QAction (tr ("in den Simulation wechseln"), this); + acts.simulationModeAct = new QAction (tr ("&Simulationsmodus"), this); acts.simulationModeAct->setStatusTip (tr ("Berechnet die Flugbahn und wechselt in den Simulationsmodus")); acts.simulationModeAct->setIcon(QIcon(":icons/window-simulmode.svg")); acts.simulationModeAct->setCheckable(true); + acts.simulationModeAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); acts.simulationModeAct->setData(QVariant(lsim::SimulationMode)); windowModeActGroup = new QActionGroup(this); @@ -215,15 +231,21 @@ void lsim::createActions() { } void lsim::createMenus() { - fileMenu = menuBar()->addMenu(tr("Datei")); + fileMenu = menuBar()->addMenu(tr("&Datei")); + fileMenu->addAction(acts.resetAct); fileMenu->addAction(acts.exitAct); - menuBar()->addMenu(tr("Bearbeiten")); - viewMenu = menuBar()->addMenu(tr("Ansicht")); - viewMenu->addAction(acts.resetAct); + editMenu = menuBar()->addMenu(tr("&Bearbeiten")); - menuBar()->addMenu(tr("Einstellungen")); + + viewMenu = menuBar()->addMenu(tr("&Ansicht")); + viewMenu->addAction(acts.editModeAct); + viewMenu->addAction(acts.simulationModeAct); + viewMenu->addSeparator(); + viewMenu->addAction(acts.fullScreenAct); + + menuBar()->addMenu(tr("&Einstellungen")); helpMenu = menuBar()->addMenu (tr ("&Help")); @@ -271,6 +293,7 @@ void lsim::initWindowMode(WindowMode newMode) { removeDockWidget(simulOptDock); gview->setDragMode(QGraphicsView::NoDrag); gview->setInteractive(true); + if (newMode == lsim::EditMode) { simulscene->clearFlightPath(); acts.timerStop->trigger(); @@ -280,8 +303,9 @@ void lsim::initWindowMode(WindowMode newMode) { addDockWidget(Qt::LeftDockWidgetArea,fieldItemEditDock); addDockWidget(Qt::LeftDockWidgetArea,probeItemDock); addDockWidget(Qt::LeftDockWidgetArea,sceneDock); - tabifyDockWidget(probeItemDock,fieldItemEditDock); - tabifyDockWidget(fieldItemEditDock, sceneDock); + tabifyDockWidget(probeItemDock,sceneDock); + tabifyDockWidget(sceneDock,fieldItemEditDock); + sceneDock->show(); sceneModeBar->setVisible(true); upDownBar->setVisible(true); fieldItemEditDock->setVisible(true); @@ -303,11 +327,11 @@ void lsim::initWindowMode(WindowMode newMode) { acts.itemEditModeAct->trigger(); simulscene->clearSelection(); acts.calculate->trigger(); - //gview->setScene(simulscene); //ueberfluessige scrollbars entfernen gview->centerOn(simulscene->getProbeChargeItem()); } + } @@ -318,6 +342,7 @@ void lsim::createStatusBar() { void lsim::createScene() { simulscene = new SimulScene(); gview->setScene(simulscene); + simulscene->addRect(-qApp->desktop()->screenGeometry().width(),-qApp->desktop()->screenGeometry().height(), qApp->desktop()->screenGeometry().width()*2, qApp->desktop()->screenGeometry().height()*2)->setVisible(false); } void lsim::createDocks() { @@ -614,4 +639,13 @@ void lsim::resetAll() { simulscene->resetScene(); gview->centerOn(0,0); +} + +void lsim::goToFullscreen(bool yesno) { + if (yesno && windowState() == Qt::WindowFullScreen) return; + if (!yesno && windowState() != Qt::WindowFullScreen) return; + + setWindowState(windowState() ^ Qt::WindowFullScreen); + //qDebug()<< (windowState() == Qt::WindowFullScreen); + emit fullScreenModeChanged(windowState() == Qt::WindowFullScreen); } \ No newline at end of file diff --git a/src/lsim.h b/src/lsim.h index 1df402f..18958f2 100644 --- a/src/lsim.h +++ b/src/lsim.h @@ -55,6 +55,8 @@ class lsim: public QMainWindow { protected: void closeEvent (QCloseEvent *event); + public slots: + void goToFullscreen(bool yesno); private slots: void about(); @@ -119,6 +121,7 @@ class lsim: public QMainWindow { QAction *probeChargeItemPlaceAct; QAction *resetAct; + QAction *fullScreenAct; }; Actions acts; @@ -138,6 +141,7 @@ class lsim: public QMainWindow { signals: void windowModeChanged(WindowMode mode); void timeLineDurationChangedSec(double duration); + void fullScreenModeChanged(bool mode); }; #endif diff --git a/src/main.cpp b/src/main.cpp index b22b556..21fd332 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,14 +22,30 @@ #include #include #include "lsim.h" +#include +#include int main(int argc, char *argv[]) { Q_INIT_RESOURCE(application); QApplication app(argc, argv); app.setWindowIcon(QIcon(":icons/lsim.svg")); + lsim * mw = new lsim(); - mw->show(); + int dWidth = app.desktop()->availableGeometry(mw).width(); + int dHeight = app.desktop()->availableGeometry(mw).height(); + int frWidth = mw->frameGeometry().width() - mw->geometry().width(); + int frHeight = mw->frameGeometry().height() - mw->geometry().height(); + mw->resize(0.9*dWidth-frWidth, 0.9 *dHeight-frHeight); + int midX = (dWidth - mw->frameGeometry().width()) / 2.0; + int midY = (dHeight - mw->frameGeometry().height()) / 2.0; + mw->move(midX,midY); + if (dWidth <= 1024) { + mw->showMaximized(); + } + else { + mw->show(); + } return app.exec(); } diff --git a/src/simulscene.cpp b/src/simulscene.cpp index 84fe65e..f7766f8 100644 --- a/src/simulscene.cpp +++ b/src/simulscene.cpp @@ -37,6 +37,7 @@ #include #include #include +#include SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) { @@ -60,7 +61,7 @@ SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) { setFlightPathVisible(); - addLine(0,-298,0,298,QPen(Qt::green, 1, Qt::SolidLine) )->setCacheMode(QGraphicsItem::DeviceCoordinateCache); + /*addLine(0,-298,0,298,QPen(Qt::green, 1, Qt::SolidLine) )->setCacheMode(QGraphicsItem::DeviceCoordinateCache); addLine(-398,0,398,0,QPen(Qt::green, 1, Qt::SolidLine) )->setCacheMode(QGraphicsItem::DeviceCoordinateCache); for (int i = -39; i< 39; ++i) { @@ -76,7 +77,7 @@ SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) { line ->setCacheMode(QGraphicsItem::DeviceCoordinateCache); line->setZValue(-1); } - } + }*/ ellipse1 = new GraphicsEllipseItem(); ellipse1->setRect(-2,-2,5,5); @@ -102,6 +103,11 @@ SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) { } +void SimulScene::drawBackground ( QPainter * painter, const QRectF & rect ) { + QGraphicsScene::drawBackground(painter,rect); +} + + void SimulScene::setupVars() { //variablen initialisieren setTimePerStep(1e-10); @@ -111,7 +117,7 @@ void SimulScene::setupVars() { setPxPerSec(90.0); timer->setFrameRange(0,100); - timer->setUpdateInterval(30); + //timer->setUpdateInterval(30); timer->setCurveShape(QTimeLine::LinearCurve); setTimeLineDuration(30000); @@ -457,7 +463,7 @@ void SimulScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) { } void SimulScene::keyPressEvent (QKeyEvent *keyevent) { - if(keyevent->key() == Qt::Key_Delete) { + if(keyevent->matches(QKeySequence::Delete)) { deleteSelectedFieldItems(); } } diff --git a/src/simulscene.h b/src/simulscene.h index bf94972..6050988 100644 --- a/src/simulscene.h +++ b/src/simulscene.h @@ -199,6 +199,7 @@ class SimulScene : public QGraphicsScene { void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent); void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent); void keyPressEvent ( QKeyEvent * keyEvent ); + void drawBackground ( QPainter * painter, const QRectF & rect ); }; #endif