Select Git revision
test_hg_beam.py
-
Daniel Brown authored
adding in block selector to loadkatfile and parsecommands, so that it only reads in certain blocks. Fixed factorial code in HG_beam
Daniel Brown authoredadding in block selector to loadkatfile and parsecommands, so that it only reads in certain blocks. Fixed factorial code in HG_beam
pulsatingscience.cpp 6.45 KiB
/******************************************************************************
* 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 <http://www.gnu.org/licenses/>. *
* *
******************************************************************************/
#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)));
connect(ui.pulsarGlWidget, SIGNAL(pulsarAnimationStep(float)),
ui.pulseScopeWidget, SLOT(markerStep(float)));
connect(ui.pulsarGlWidget, SIGNAL(pulsarAnimationReset()),
ui.pulseScopeWidget, SLOT(markerReset()));
connect(ui.pulsarGlWidget, SIGNAL(pulsarViewDataUpdated(const QVector<float>&)),
ui.pulseScopeWidget, SLOT(drawCurve(const QVector<float>&)));
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",
"<b>Pulsating Science</b><br>"
"International Year of Astronomy 2009<br><br>"
"Authors: Oliver Bock, Benjamin Knispel<br><br>"
"Copyright © 2009 "
"<a href=\"http://www.aei.mpg.de\">Max-Planck-Institut für Gravitationsphysik</a>");
}
void PulsatingScience::updatePulsarSemiMajorAxisValue(double value)
{
ui.sliderPulsarSemiMajorAxis->setValue(value * 1000.0);
if((int)value <= 1 || (int)value >= 20) {
if((int)value < 1 || (int)value > 20) {
ui.lcdPulsarSemiMajorAxis->setStyleSheet("color: red");
}
else {
ui.lcdPulsarSemiMajorAxis->setStyleSheet("color: black");
}
ui.lcdPulsarSemiMajorAxis->display(QString::number(value, 'f', 1));
}
}