// Unzoom and go to the init position void StelMovementMgr::autoZoomOut(float moveDuration, bool full) { moveDuration /= movementsSpeedFactor; if (objectMgr->getWasSelected() && !full) { // If the selected object has satellites, unzoom to satellites view // unless specified otherwise float satfov = objectMgr->getSelectedObject()[0]->getSatellitesFov(core); if (satfov>0.0 && currentFov<=satfov*0.9) { zoomTo(satfov, moveDuration); return; } // If the selected object is part of a Planet subsystem (other than sun), // unzoom to subsystem view satfov = objectMgr->getSelectedObject()[0]->getParentSatellitesFov((core)); if (satfov>0.0 && currentFov<=satfov*0.9) { zoomTo(satfov, moveDuration); return; } } zoomTo(initFov, moveDuration); if (flagAutoZoomOutResetsDirection) { moveToJ2000(core->altAzToJ2000(getInitViewingDirection(), StelCore::RefractionOff), moveDuration, -1); setFlagTracking(false); setFlagLockEquPos(false); } }
//! Make the first screen position correspond to the second (useful for mouse dragging) void StelMovementMgr::dragView(int x1, int y1, int x2, int y2) { if (dragTimeMode) { core->setTimeRate(0); Vec3d v1, v2; const StelProjectorP prj = core->getProjection(StelCore::FrameEquinoxEqu); prj->unProject(x2,y2, v2); prj->unProject(x1,y1, v1); v1[2]=0; v1.normalize(); v2[2]=0; v2.normalize(); double angle = (v2^v1)[2]; double deltaDay = angle/(2.*M_PI)*core->getLocalSiderealDayLength(); core->setJD(core->getJD()+deltaDay); addTimeDragPoint(x2, y2); } else { Vec3d tempvec1, tempvec2; const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000); prj->unProject(x2,y2, tempvec2); prj->unProject(x1,y1, tempvec1); double az1, alt1, az2, alt2; StelUtils::rectToSphe(&az1, &alt1, j2000ToMountFrame(tempvec1)); StelUtils::rectToSphe(&az2, &alt2, j2000ToMountFrame(tempvec2)); panView(az2-az1, alt1-alt2); } setFlagTracking(false); setFlagLockEquPos(false); }
/************************************************************************* The selected objects changed, follow it if we were already following another one *************************************************************************/ void StelMovementMgr::selectedObjectChange(StelModule::StelModuleSelectAction) { // If an object was selected keep the earth following if (objectMgr->getWasSelected()) { if (getFlagTracking()) setFlagLockEquPos(true); setFlagTracking(false); } }
bool StelMovementMgr::handleMouseMoves(int x, int y, Qt::MouseButtons) { // Turn if the mouse is at the edge of the screen unless config asks otherwise if (flagEnableMoveAtScreenEdge) { if (x <= 1) { turnLeft(1); isMouseMovingHoriz = true; } else if (x >= core->getProjection2d()->getViewportWidth() - 2) { turnRight(1); isMouseMovingHoriz = true; } else if (isMouseMovingHoriz) { turnLeft(0); isMouseMovingHoriz = false; } if (y <= 1) { turnUp(1); isMouseMovingVert = true; } else if (y >= core->getProjection2d()->getViewportHeight() - 2) { turnDown(1); isMouseMovingVert = true; } else if (isMouseMovingVert) { turnUp(0); isMouseMovingVert = false; } } // We can hardly use the mouse exactly enough to go to the zenith/pole. Any mouse motion can safely reset the simplified up vector. setViewUpVector(Vec3d(0., 0., 1.)); if (isDragging && flagEnableMouseNavigation) { if (hasDragged || (std::sqrt((float)((x-previousX)*(x-previousX) +(y-previousY)*(y-previousY)))>dragTriggerDistance)) { hasDragged = true; setFlagTracking(false); dragView(previousX, previousY, x, y); previousX = x; previousY = y; return true; } } return false; }
void StelMovementMgr::turnDown(bool s) { if (s && flagEnableMoveKeys) { deltaAlt = -1; setFlagTracking(false); setFlagLockEquPos(false); } else deltaAlt = 0; }
void StelMovementMgr::panView(const double deltaAz, const double deltaAlt) { // The function is called in update loops, so make a quick check for exit. if ((deltaAz==0.) && (deltaAlt==0.)) return; double azVision, altVision; StelUtils::rectToSphe(&azVision,&altVision,j2000ToMountFrame(viewDirectionJ2000)); // Az is counted from South, eastward. // qDebug() << "Azimuth:" << azVision * 180./M_PI << "Altitude:" << altVision * 180./M_PI << "Up.X=" << upVectorMountFrame.v[0] << "Up.Y=" << upVectorMountFrame.v[1] << "Up.Z=" << upVectorMountFrame.v[2]; // if we are just looking into the pole, azimuth can hopefully be recovered from the customized up vector! // When programmatically centering on a pole, we should have set a better up vector for |alt|>0.9*M_PI/2. if (fabs(altVision)> 0.95* M_PI/2.) { if (upVectorMountFrame.v[2] < 0.9) { // qDebug() << "Recovering azimuth..."; azVision=atan2(-upVectorMountFrame.v[1], -upVectorMountFrame.v[0]); if (altVision < 0.) azVision+=M_PI; } // else // { // // qDebug() << "UpVector:" << upVectorMountFrame.v[0] << "/" << upVectorMountFrame.v[1] << "/" << upVectorMountFrame.v[2] << "Cannot recover azimuth. Hope it's OK"; // } } // if we are moving in the Azimuthal angle (left/right) if (deltaAz) azVision-=deltaAz; if (deltaAlt) { if (altVision+deltaAlt <= M_PI_2 && altVision+deltaAlt >= -M_PI_2) altVision+=deltaAlt; if (altVision+deltaAlt > M_PI_2) altVision = M_PI_2 - 0.000001; // Prevent bug if (altVision+deltaAlt < -M_PI_2) altVision = -M_PI_2 + 0.000001; // Prevent bug } // recalc all the position variables if (deltaAz || deltaAlt) { setFlagTracking(false); Vec3d tmp; StelUtils::spheToRect(azVision, altVision, tmp); setViewDirectionJ2000(mountFrameToJ2000(tmp)); setViewUpVector(Vec3d(0., 0., 1.)); // We ensured above that view vector is never parallel to this simple up vector. } }
// Go and zoom to the selected object. (Action linked to key, default "/") void StelMovementMgr::autoZoomIn(float moveDuration, bool allowManualZoom) { if (!objectMgr->getWasSelected()) return; moveDuration /= movementsSpeedFactor; float manualMoveDuration; if (!getFlagTracking()) { setFlagTracking(true); // includes a call to moveToObject(), but without zooming=1! moveToObject(objectMgr->getSelectedObject()[0], moveDuration, ZoomIn); manualMoveDuration = moveDuration; } else { // faster zoom in manual zoom mode once object is centered manualMoveDuration = moveDuration*.66f; } if( allowManualZoom && flagManualZoom ) { // if manual zoom mode, user can zoom in incrementally float newfov = currentFov*0.5f; zoomTo(newfov, manualMoveDuration); } else { float satfov = objectMgr->getSelectedObject()[0]->getSatellitesFov(core); if (satfov>0.0 && currentFov*0.9>satfov) zoomTo(satfov, moveDuration); else { float closefov = objectMgr->getSelectedObject()[0]->getCloseViewFov(core); if (currentFov>closefov) zoomTo(closefov, moveDuration); } } }
void StelMovementMgr::handleMouseClicks(QMouseEvent* event) { switch (event->button()) { case Qt::RightButton: { if (event->type()==QEvent::MouseButtonRelease) { // Deselect the selected object StelApp::getInstance().getStelObjectMgr().unSelect(); event->accept(); return; } break; } case Qt::LeftButton : if (event->type()==QEvent::MouseButtonPress) { isDragging = true; hasDragged = false; previousX = event->x(); previousY = event->y(); beforeTimeDragTimeRate=core->getTimeRate(); if (dragTimeMode) { timeDragHistory.clear(); addTimeDragPoint(event->pos().x(), event->pos().y()); } event->accept(); return; } else { isDragging = false; if (hasDragged) { event->accept(); if (dragTimeMode) { if (timeDragHistory.size()>=3) { const double deltaT = timeDragHistory.last().runTime-timeDragHistory.first().runTime; Vec2f d(timeDragHistory.last().x-timeDragHistory.first().x, timeDragHistory.last().y-timeDragHistory.first().y); if (d.length()/deltaT<dragTriggerDistance) { core->setTimeRate(StelCore::JD_SECOND); } else { const double deltaJd = timeDragHistory.last().jd-timeDragHistory.first().jd; const double newTimeRate = deltaJd/deltaT; if (deltaT>0.00000001) { if (newTimeRate>=0) core->setTimeRate(qMax(newTimeRate, StelCore::JD_SECOND)); else core->setTimeRate(qMin(newTimeRate, -StelCore::JD_SECOND)); } else core->setTimeRate(beforeTimeDragTimeRate); } } else core->setTimeRate(beforeTimeDragTimeRate); } return; } else { // It's a normal click release #ifdef Q_OS_MAC // CTRL + left clic = right clic for 1 button mouse if (event->modifiers().testFlag(Qt::ControlModifier)) { StelApp::getInstance().getStelObjectMgr().unSelect(); event->accept(); return; } // Try to select object at that position StelApp::getInstance().getStelObjectMgr().findAndSelect(StelApp::getInstance().getCore(), event->x(), event->y(), event->modifiers().testFlag(Qt::MetaModifier) ? StelModule::AddToSelection : StelModule::ReplaceSelection); #else StelApp::getInstance().getStelObjectMgr().findAndSelect(StelApp::getInstance().getCore(), event->x(), event->y(), event->modifiers().testFlag(Qt::ControlModifier) ? StelModule::AddToSelection : StelModule::ReplaceSelection); #endif if (StelApp::getInstance().getStelObjectMgr().getWasSelected()) { setFlagTracking(false); } //GZ: You must comment out this line for testing Landscape transparency debug prints. //event->accept(); return; } } break; case Qt::MidButton : if (event->type()==QEvent::MouseButtonRelease) { if (objectMgr->getWasSelected()) { moveToObject(objectMgr->getSelectedObject()[0],autoMoveDuration); setFlagTracking(true); } } break; default: break; } return; }
void StelGui::init(QGraphicsWidget* atopLevelGraphicsWidget, StelAppGraphicsWidget* astelAppGraphicsWidget) { qDebug() << "Creating GUI ..."; StelGuiBase::init(atopLevelGraphicsWidget, astelAppGraphicsWidget); skyGui = new SkyGui(atopLevelGraphicsWidget); locationDialog = new LocationDialog(); helpDialog = new HelpDialog(); dateTimeDialog = new DateTimeDialog(); searchDialog = new SearchDialog(); viewDialog = new ViewDialog(); shortcutsDialog = new ShortcutsDialog(); configurationDialog = new ConfigurationDialog(this); #ifdef ENABLE_SCRIPT_CONSOLE scriptConsole = new ScriptConsole(); #endif /////////////////////////////////////////////////////////////////////// // Create all the main actions of the program, associated with shortcuts StelApp::getInstance().getStelShortcutManager()->loadShortcuts(); #ifdef ENABLE_SCRIPT_CONSOLE StelApp::getInstance().getStelShortcutManager()-> addGuiAction("actionShow_ScriptConsole_Window_Global", true, N_("Script console window"), "F12", "", N_("Windows"), true, false, true); #endif /////////////////////////////////////////////////////////////////////// // Connect all the GUI actions signals with the Core of Stellarium connect(getGuiAction("actionQuit_Global"), SIGNAL(triggered()), this, SLOT(quit())); initConstellationMgr(); initGrindLineMgr(); initLandscapeMgr(); NebulaMgr* nmgr = GETSTELMODULE(NebulaMgr); connect(getGuiAction("actionShow_Nebulas"), SIGNAL(toggled(bool)), nmgr, SLOT(setFlagHints(bool))); getGuiAction("actionShow_Nebulas")->setChecked(nmgr->getFlagHints()); StelSkyLayerMgr* imgr = GETSTELMODULE(StelSkyLayerMgr); connect(getGuiAction("actionShow_DSS"), SIGNAL(toggled(bool)), imgr, SLOT(setFlagShow(bool))); getGuiAction("actionShow_DSS")->setChecked(imgr->getFlagShow()); StelCore* core = StelApp::getInstance().getCore(); StelMovementMgr* mmgr = GETSTELMODULE(StelMovementMgr); connect(getGuiAction("actionIncrease_Script_Speed"), SIGNAL(triggered()), this, SLOT(increaseScriptSpeed())); connect(getGuiAction("actionDecrease_Script_Speed"), SIGNAL(triggered()), this, SLOT(decreaseScriptSpeed())); connect(getGuiAction("actionSet_Real_Script_Speed"), SIGNAL(triggered()), this, SLOT(setRealScriptSpeed())); connect(getGuiAction("actionStop_Script"), SIGNAL(triggered()), this, SLOT(stopScript())); connect(getGuiAction("actionPause_Script"), SIGNAL(triggered()), this, SLOT(pauseScript())); connect(getGuiAction("actionResume_Script"), SIGNAL(triggered()), this, SLOT(resumeScript())); connect(getGuiAction("actionIncrease_Time_Speed"), SIGNAL(triggered()), core, SLOT(increaseTimeSpeed())); connect(getGuiAction("actionDecrease_Time_Speed"), SIGNAL(triggered()), core, SLOT(decreaseTimeSpeed())); connect(getGuiAction("actionIncrease_Time_Speed_Less"), SIGNAL(triggered()), core, SLOT(increaseTimeSpeedLess())); connect(getGuiAction("actionDecrease_Time_Speed_Less"), SIGNAL(triggered()), core, SLOT(decreaseTimeSpeedLess())); connect(getGuiAction("actionSet_Real_Time_Speed"), SIGNAL(triggered()), core, SLOT(toggleRealTimeSpeed())); connect(getGuiAction("actionSet_Time_Rate_Zero"), SIGNAL(triggered()), core, SLOT(setZeroTimeSpeed())); connect(getGuiAction("actionReturn_To_Current_Time"), SIGNAL(triggered()), core, SLOT(setTimeNow())); connect(getGuiAction("actionSwitch_Equatorial_Mount"), SIGNAL(toggled(bool)), mmgr, SLOT(setEquatorialMount(bool))); getGuiAction("actionSwitch_Equatorial_Mount")->setChecked(mmgr->getMountMode() != StelMovementMgr::MountAltAzimuthal); connect(getGuiAction("actionAdd_Solar_Hour"), SIGNAL(triggered()), core, SLOT(addHour())); connect(getGuiAction("actionAdd_Solar_Day"), SIGNAL(triggered()), core, SLOT(addDay())); connect(getGuiAction("actionAdd_Solar_Week"), SIGNAL(triggered()), core, SLOT(addWeek())); connect(getGuiAction("actionSubtract_Solar_Hour"), SIGNAL(triggered()), core, SLOT(subtractHour())); connect(getGuiAction("actionSubtract_Solar_Day"), SIGNAL(triggered()), core, SLOT(subtractDay())); connect(getGuiAction("actionSubtract_Solar_Week"), SIGNAL(triggered()), core, SLOT(subtractWeek())); connect(getGuiAction("actionAdd_Sidereal_Day"), SIGNAL(triggered()), core, SLOT(addSiderealDay())); connect(getGuiAction("actionAdd_Sidereal_Week"), SIGNAL(triggered()), core, SLOT(addSiderealWeek())); connect(getGuiAction("actionAdd_Sidereal_Month"), SIGNAL(triggered()), core, SLOT(addSiderealMonth())); connect(getGuiAction("actionAdd_Sidereal_Year"), SIGNAL(triggered()), core, SLOT(addSiderealYear())); connect(getGuiAction("actionSubtract_Sidereal_Day"), SIGNAL(triggered()), core, SLOT(subtractSiderealDay())); connect(getGuiAction("actionSubtract_Sidereal_Week"), SIGNAL(triggered()), core, SLOT(subtractSiderealWeek())); connect(getGuiAction("actionSubtract_Sidereal_Month"), SIGNAL(triggered()), core, SLOT(subtractSiderealMonth())); connect(getGuiAction("actionSubtract_Sidereal_Year"), SIGNAL(triggered()), core, SLOT(subtractSiderealYear())); connect(getGuiAction("actionSet_Home_Planet_To_Selected"), SIGNAL(triggered()), core, SLOT(moveObserverToSelected())); connect(getGuiAction("actionGo_Home_Global"), SIGNAL(triggered()), core, SLOT(returnToHome())); // connect the actor after setting the nightmode. // StelApp::init() already set flagNightMode for us, don't do it twice! getGuiAction("actionShow_Night_Mode")->setChecked(StelApp::getInstance().getVisionModeNight()); connect(getGuiAction("actionShow_Night_Mode"), SIGNAL(toggled(bool)), &StelApp::getInstance(), SLOT(setVisionModeNight(bool))); connect(getGuiAction("actionGoto_Selected_Object"), SIGNAL(triggered()), mmgr, SLOT(setFlagTracking())); connect(getGuiAction("actionZoom_In_Auto"), SIGNAL(triggered()), mmgr, SLOT(autoZoomIn())); connect(getGuiAction("actionZoom_Out_Auto"), SIGNAL(triggered()), mmgr, SLOT(autoZoomOut())); connect(getGuiAction("actionSet_Tracking"), SIGNAL(toggled(bool)), mmgr, SLOT(setFlagTracking(bool))); getGuiAction("actionSet_Tracking")->setChecked(mmgr->getFlagTracking()); connect(getGuiAction("actionSet_Full_Screen_Global"), SIGNAL(toggled(bool)), &StelMainWindow::getInstance(), SLOT(setFullScreen(bool))); getGuiAction("actionSet_Full_Screen_Global")->setChecked(StelMainWindow::getInstance().isFullScreen()); QAction* tempAction = getGuiAction("actionShow_Location_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), locationDialog, SLOT(setVisible(bool))); connect(locationDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); #ifdef ENABLE_SCRIPT_CONSOLE tempAction = getGuiAction("actionShow_ScriptConsole_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), scriptConsole, SLOT(setVisible(bool))); connect(scriptConsole, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); #endif tempAction = getGuiAction("actionShow_Configuration_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), configurationDialog, SLOT(setVisible(bool))); connect(configurationDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction = getGuiAction("actionShow_SkyView_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), viewDialog, SLOT(setVisible(bool))); connect(viewDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction = getGuiAction("actionShow_Help_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), helpDialog, SLOT(setVisible(bool))); connect(helpDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction = getGuiAction("actionShow_DateTime_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), dateTimeDialog, SLOT(setVisible(bool))); connect(dateTimeDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction = getGuiAction("actionShow_Search_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), searchDialog, SLOT(setVisible(bool))); connect(searchDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); tempAction = getGuiAction("actionShow_Shortcuts_Window_Global"); connect(tempAction, SIGNAL(toggled(bool)), shortcutsDialog, SLOT(setVisible(bool))); connect(shortcutsDialog, SIGNAL(visibleChanged(bool)), tempAction, SLOT(setChecked(bool))); connect(getGuiAction("actionSave_Screenshot_Global"), SIGNAL(triggered()), &StelMainGraphicsView::getInstance(), SLOT(saveScreenShot())); connect(getGuiAction("actionSave_Copy_Object_Information_Global"), SIGNAL(triggered()), this, SLOT(copySelectedObjectInfo())); getGuiAction("actionToggle_GuiHidden_Global")->setChecked(true); connect(getGuiAction("actionToggle_GuiHidden_Global"), SIGNAL(toggled(bool)), this, SLOT(setGuiVisible(bool))); connect(getGuiAction("actionHorizontal_Flip"), SIGNAL(toggled(bool)), StelApp::getInstance().getCore(), SLOT(setFlipHorz(bool))); getGuiAction("actionHorizontal_Flip")->setChecked(StelApp::getInstance().getCore()->getFlipHorz()); connect(getGuiAction("actionVertical_Flip"), SIGNAL(toggled(bool)), StelApp::getInstance().getCore(), SLOT(setFlipVert(bool))); getGuiAction("actionVertical_Flip")->setChecked(StelApp::getInstance().getCore()->getFlipVert()); StarMgr* smgr = GETSTELMODULE(StarMgr); connect(getGuiAction("actionShow_Stars"), SIGNAL(toggled(bool)), smgr, SLOT(setFlagStars(bool))); getGuiAction("actionShow_Stars")->setChecked(smgr->getFlagStars()); connect(getGuiAction("actionShow_Stars_Labels"), SIGNAL(toggled(bool)), smgr, SLOT(setFlagLabels(bool))); getGuiAction("actionShow_Stars_Labels")->setChecked(smgr->getFlagLabels()); SolarSystem* ssmgr = GETSTELMODULE(SolarSystem); connect(getGuiAction("actionShow_Planets_Labels"), SIGNAL(toggled(bool)), ssmgr, SLOT(setFlagLabels(bool))); getGuiAction("actionShow_Planets_Labels")->setChecked(ssmgr->getFlagLabels()); connect(getGuiAction("actionShow_Planets_Orbits"), SIGNAL(toggled(bool)), ssmgr, SLOT(setFlagOrbits(bool))); getGuiAction("actionShow_Planets_Orbits")->setChecked(ssmgr->getFlagOrbits()); connect(getGuiAction("actionShow_Planets_Trails"), SIGNAL(toggled(bool)), ssmgr, SLOT(setFlagTrails(bool))); getGuiAction("actionShow_Planets_Trails")->setChecked(ssmgr->getFlagTrails()); QSettings* conf = StelApp::getInstance().getSettings(); Q_ASSERT(conf); setAutoHideHorizontalButtonBar(conf->value("gui/auto_hide_horizontal_toolbar", true).toBool()); setAutoHideVerticalButtonBar(conf->value("gui/auto_hide_vertical_toolbar", true).toBool()); connect(getGuiAction("actionAutoHideHorizontalButtonBar"), SIGNAL(toggled(bool)), this, SLOT(setAutoHideHorizontalButtonBar(bool))); getGuiAction("actionAutoHideHorizontalButtonBar")->setChecked(getAutoHideHorizontalButtonBar()); connect(getGuiAction("actionAutoHideVerticalButtonBar"), SIGNAL(toggled(bool)), this, SLOT(setAutoHideVerticalButtonBar(bool))); getGuiAction("actionAutoHideVerticalButtonBar")->setChecked(getAutoHideVerticalButtonBar()); #ifndef DISABLE_SCRIPTING StelScriptMgr& scriptMgr = StelMainGraphicsView::getInstance().getScriptMgr(); connect(&scriptMgr, SIGNAL(scriptRunning()), this, SLOT(scriptStarted())); connect(&scriptMgr, SIGNAL(scriptStopped()), this, SLOT(scriptStopped())); #endif /////////////////////////////////////////////////////////////////////////// //// QGraphicsView based GUI /////////////////////////////////////////////////////////////////////////// // Add everything QPixmap pxmapDefault; QPixmap pxmapGlow(":/graphicGui/glow.png"); QPixmap pxmapOn(":/graphicGui/2-on-location.png"); QPixmap pxmapOff(":/graphicGui/2-off-location.png"); StelButton* b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_Location_Window_Global")); skyGui->winBar->addButton(b); pxmapOn = QPixmap(":/graphicGui/1-on-time.png"); pxmapOff = QPixmap(":/graphicGui/1-off-time.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_DateTime_Window_Global")); skyGui->winBar->addButton(b); pxmapOn = QPixmap(":/graphicGui/5-on-labels.png"); pxmapOff = QPixmap(":/graphicGui/5-off-labels.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_SkyView_Window_Global")); skyGui->winBar->addButton(b); pxmapOn = QPixmap(":/graphicGui/6-on-search.png"); pxmapOff = QPixmap(":/graphicGui/6-off-search.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_Search_Window_Global")); skyGui->winBar->addButton(b); pxmapOn = QPixmap(":/graphicGui/8-on-settings.png"); pxmapOff = QPixmap(":/graphicGui/8-off-settings.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_Configuration_Window_Global")); skyGui->winBar->addButton(b); pxmapOn = QPixmap(":/graphicGui/9-on-help.png"); pxmapOff = QPixmap(":/graphicGui/9-off-help.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow, getGuiAction("actionShow_Help_Window_Global")); skyGui->winBar->addButton(b); QPixmap pxmapGlow32x32(":/graphicGui/glow32x32.png"); pxmapOn = QPixmap(":/graphicGui/btConstellationLines-on.png"); pxmapOff = QPixmap(":/graphicGui/btConstellationLines-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Constellation_Lines")); skyGui->buttonBar->addButton(b, "010-constellationsGroup"); pxmapOn = QPixmap(":/graphicGui/btConstellationLabels-on.png"); pxmapOff = QPixmap(":/graphicGui/btConstellationLabels-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Constellation_Labels")); skyGui->buttonBar->addButton(b, "010-constellationsGroup"); pxmapOn = QPixmap(":/graphicGui/btConstellationArt-on.png"); pxmapOff = QPixmap(":/graphicGui/btConstellationArt-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Constellation_Art")); skyGui->buttonBar->addButton(b, "010-constellationsGroup"); pxmapOn = QPixmap(":/graphicGui/btEquatorialGrid-on.png"); pxmapOff = QPixmap(":/graphicGui/btEquatorialGrid-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Equatorial_Grid")); skyGui->buttonBar->addButton(b, "020-gridsGroup"); pxmapOn = QPixmap(":/graphicGui/btAzimuthalGrid-on.png"); pxmapOff = QPixmap(":/graphicGui/btAzimuthalGrid-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Azimuthal_Grid")); skyGui->buttonBar->addButton(b, "020-gridsGroup"); pxmapOn = QPixmap(":/graphicGui/btGround-on.png"); pxmapOff = QPixmap(":/graphicGui/btGround-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Ground")); skyGui->buttonBar->addButton(b, "030-landscapeGroup"); pxmapOn = QPixmap(":/graphicGui/btCardinalPoints-on.png"); pxmapOff = QPixmap(":/graphicGui/btCardinalPoints-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Cardinal_Points")); skyGui->buttonBar->addButton(b, "030-landscapeGroup"); pxmapOn = QPixmap(":/graphicGui/btAtmosphere-on.png"); pxmapOff = QPixmap(":/graphicGui/btAtmosphere-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Atmosphere")); skyGui->buttonBar->addButton(b, "030-landscapeGroup"); pxmapOn = QPixmap(":/graphicGui/btNebula-on.png"); pxmapOff = QPixmap(":/graphicGui/btNebula-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Nebulas")); skyGui->buttonBar->addButton(b, "040-nebulaeGroup"); pxmapOn = QPixmap(":/graphicGui/btPlanets-on.png"); pxmapOff = QPixmap(":/graphicGui/btPlanets-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Planets_Labels")); skyGui->buttonBar->addButton(b, "040-nebulaeGroup"); pxmapOn = QPixmap(":/graphicGui/btEquatorialMount-on.png"); pxmapOff = QPixmap(":/graphicGui/btEquatorialMount-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionSwitch_Equatorial_Mount")); b->setChecked(getGuiAction("actionSwitch_Equatorial_Mount")->isChecked()); skyGui->buttonBar->addButton(b, "060-othersGroup"); pxmapOn = QPixmap(":/graphicGui/btGotoSelectedObject-on.png"); pxmapOff = QPixmap(":/graphicGui/btGotoSelectedObject-off.png"); buttonGotoSelectedObject = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionGoto_Selected_Object")); skyGui->buttonBar->addButton(buttonGotoSelectedObject, "060-othersGroup"); pxmapOn = QPixmap(":/graphicGui/btNightView-on.png"); pxmapOff = QPixmap(":/graphicGui/btNightView-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionShow_Night_Mode")); skyGui->buttonBar->addButton(b, "060-othersGroup"); pxmapOn = QPixmap(":/graphicGui/btFullScreen-on.png"); pxmapOff = QPixmap(":/graphicGui/btFullScreen-off.png"); b = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionSet_Full_Screen_Global")); skyGui->buttonBar->addButton(b, "060-othersGroup"); pxmapOn = QPixmap(":/graphicGui/btTimeRewind-on.png"); pxmapOff = QPixmap(":/graphicGui/btTimeRewind-off.png"); buttonTimeRewind = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionDecrease_Time_Speed")); skyGui->buttonBar->addButton(buttonTimeRewind, "070-timeGroup"); pxmapOn = QPixmap(":/graphicGui/btTimeRealtime-on.png"); pxmapOff = QPixmap(":/graphicGui/btTimeRealtime-off.png"); pxmapDefault = QPixmap(":/graphicGui/btTimePause-on.png"); buttonTimeRealTimeSpeed = new StelButton(NULL, pxmapOn, pxmapOff, pxmapDefault, pxmapGlow32x32, getGuiAction("actionSet_Real_Time_Speed")); skyGui->buttonBar->addButton(buttonTimeRealTimeSpeed, "070-timeGroup"); pxmapOn = QPixmap(":/graphicGui/btTimeNow-on.png"); pxmapOff = QPixmap(":/graphicGui/btTimeNow-off.png"); buttonTimeCurrent = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionReturn_To_Current_Time")); skyGui->buttonBar->addButton(buttonTimeCurrent, "070-timeGroup"); pxmapOn = QPixmap(":/graphicGui/btTimeForward-on.png"); pxmapOff = QPixmap(":/graphicGui/btTimeForward-off.png"); buttonTimeForward = new StelButton(NULL, pxmapOn, pxmapOff, pxmapGlow32x32, getGuiAction("actionIncrease_Time_Speed")); skyGui->buttonBar->addButton(buttonTimeForward, "070-timeGroup"); skyGui->buttonBar->setGroupMargin("070-timeGroup", 32, 0); pxmapOn = QPixmap(":/graphicGui/btQuit.png"); b = new StelButton(NULL, pxmapOn, pxmapOn, pxmapGlow32x32, getGuiAction("actionQuit_Global")); skyGui->buttonBar->addButton(b, "080-quitGroup"); // add the flip buttons if requested in the config setFlagShowFlipButtons(conf->value("gui/flag_show_flip_buttons", false).toBool()); setFlagShowNebulaBackgroundButton(conf->value("gui/flag_show_nebulae_background_button", false).toBool()); /////////////////////////////////////////////////////////////////////// // Create the main base widget skyGui->init(this); QGraphicsGridLayout* l = new QGraphicsGridLayout(); l->setContentsMargins(0,0,0,0); l->setSpacing(0); l->addItem(skyGui, 0, 0); stelAppGraphicsWidget->setLayout(l); setStelStyle(StelApp::getInstance().getCurrentStelStyle()); skyGui->setGeometry(stelAppGraphicsWidget->geometry()); skyGui->updateBarsPos(); // The disabled text for checkboxes is embossed with the QPalette::Light setting for the ColorGroup Disabled. // It doesn't appear to be possible to set this from the stylesheet. Instead we'll make it 100% transparent // and set the text color for disabled in the stylesheets. QPalette p = QApplication::palette(); p.setColor(QPalette::Disabled, QPalette::Light, QColor(0,0,0,0)); // And this is for the focus... apparently the focus indicator is the inverted value for Active/Button. p.setColor(QPalette::Active, QPalette::Button, QColor(255,255,255)); QApplication::setPalette(p); StelApp *app = &StelApp::getInstance(); connect(app, SIGNAL(languageChanged()), this, SLOT(updateI18n())); connect(app, SIGNAL(colorSchemeChanged(const QString&)), this, SLOT(setStelStyle(const QString&))); initDone = true; }