/****************************************************************************** * Copyright (C) 2008 by Oliver Bock * * oliver.bock[AT]aei.mpg.de * * * * This file is part of PulsatingScience. * * * * PulsatingScience is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published * * by the Free Software Foundation, version 3 of the License. * * * * PulsatingScience is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with PulsatingScience. If not, see . * * * ******************************************************************************/ #include "pulsatingscience.h" PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); QAction* animControl = ui.dockAnimControl->toggleViewAction(); animControl->setStatusTip("Toggle the animation control visibility"); animControl->setShortcut(QKeySequence::fromString("Alt+A")); ui.menuView->addAction(animControl); connect(ui.actionRun, SIGNAL(activated()), ui.pulsarGlWidget, SLOT(runAnimation())); connect(ui.actionPause, SIGNAL(activated()), ui.pulsarGlWidget, SLOT(pauseAnimation())); connect(ui.actionStop, SIGNAL(activated()), ui.pulsarGlWidget, SLOT(stopAnimation())); connect(ui.actionRotationAxes, SIGNAL(toggled(bool)), ui.pulsarGlWidget, SLOT(showRotationAxes(bool))); connect(ui.pulsarGlWidget, SIGNAL(pulsarSemiMajorAxisUpdated(double)), this, SLOT(updatePulsarSemiMajorAxisValue(double))); on_sliderPulsarSemiMajorAxis_valueChanged(ui.sliderPulsarSemiMajorAxis->value()); on_radioCompanionNS_toggled(true); on_sliderPulsarMass_valueChanged(ui.sliderPulsarMass->value()); on_sliderPulsarSpinFrequency_valueChanged(ui.sliderPulsarSpinFrequency->value()); on_sliderPulsarSpinAxisInclination_valueChanged(ui.sliderPulsarSpinAxisInclination->value()); on_sliderPulsarMagneticAxisInclination_valueChanged(ui.sliderPulsarMagneticAxisInclination->value()); } PulsatingScience::~PulsatingScience() { } void PulsatingScience::on_pushRun_clicked() { if(ui.pushRun->isEnabled()) { ui.pushRun->setEnabled(false); ui.pushPause->setEnabled(true); ui.pushStop->setEnabled(true); } else { ui.pushRun->setEnabled(true); ui.pushPause->setEnabled(false); ui.pushStop->setEnabled(false); } } void PulsatingScience::on_pushPause_clicked() { ui.pushRun->setEnabled(true); ui.pushPause->setEnabled(false); ui.pushStop->setEnabled(true); } void PulsatingScience::on_pushStop_clicked() { ui.pushRun->setEnabled(true); ui.pushPause->setEnabled(false); ui.pushStop->setEnabled(false); } void PulsatingScience::on_radioCompanionWD_toggled(bool checked) { if(checked) { ui.pulsarGlWidget->setCompanionMass(0.6f); ui.lcdCompanionMass->display(QString::number(0.6f, 'f', 1)); } } void PulsatingScience::on_radioCompanionSun_toggled(bool checked) { if(checked) { ui.pulsarGlWidget->setCompanionMass(1.0f); ui.lcdCompanionMass->display(QString::number(1.0f, 'f', 1)); } } void PulsatingScience::on_radioCompanionNS_toggled(bool checked) { if(checked) { ui.pulsarGlWidget->setCompanionMass(1.4f); ui.lcdCompanionMass->display(QString::number(1.4f, 'f', 1)); } } void PulsatingScience::on_sliderPulsarMass_valueChanged(int value) { ui.pulsarGlWidget->setPulsarMass(value * 0.1f); ui.lcdPulsarMass->display(QString::number(value * 0.1f, 'f', 1)); } void PulsatingScience::on_sliderPulsarSpinFrequency_valueChanged(int value) { ui.pulsarGlWidget->setPulsarSpinFrequency(value * 0.1f); ui.lcdPulsarSpinFrequency->display(QString::number(value * 0.1f, 'f', 1)); } void PulsatingScience::on_sliderPulsarSpinAxisInclination_valueChanged(int value) { ui.pulsarGlWidget->setPulsarSpinAxisInclination(value); ui.lcdPulsarSpinAxisInclination->display(QString::number(value)); } void PulsatingScience::on_sliderPulsarMagneticAxisInclination_valueChanged(int value) { ui.pulsarGlWidget->setPulsarMagneticAxisInclination(value); ui.lcdPulsarMagneticAxisInclination->display(QString::number(value)); } void PulsatingScience::on_sliderPulsarSemiMajorAxis_valueChanged(int value) { ui.pulsarGlWidget->setPulsarSemiMajorAxis(value * 0.001f); ui.lcdPulsarSemiMajorAxis->display(QString::number(value * 0.001f, 'f', 1)); ui.lcdPulsarSemiMajorAxis->setStyleSheet("color: black"); } void PulsatingScience::on_actionMenu_bar_toggled(bool checked) { checked ? ui.menuBar->show() : ui.menuBar->hide(); } void PulsatingScience::on_actionStatus_bar_toggled(bool checked) { checked ? ui.statusbar->show() : ui.statusbar->hide(); } void PulsatingScience::on_actionAbout_activated() { QMessageBox::about(this, "About", "Pulsating Science
" "International Year of Astronomy 2009

" "Authors: Oliver Bock, Benjamin Knispel

" "Copyright © 2009 " "Max-Planck-Institut für Gravitationsphysik"); } void PulsatingScience::updatePulsarSemiMajorAxisValue(double value) { ui.sliderPulsarSemiMajorAxis->setValue(value * 1000.0); if(value < 1.0 || value > 20.0) { ui.lcdPulsarSemiMajorAxis->setStyleSheet("color: red"); ui.lcdPulsarSemiMajorAxis->display(QString::number(value, 'f', 1)); } }