#include <kdepreferencesdialog.h>
Collaboration diagram for KdePreferencesDialog:

|
||||||||||||
|
Definition at line 51 of file kdepreferencesdialog.cpp. References ambientLabel, appCore, Selection::body(), displayTimezoneCombo, DSpin, dtsSpin, faintestLabel, FilterOtherLocations, Simulation::getActiveObserver(), Renderer::getAmbientLightLevel(), CelestiaCore::getDistanceToScreen(), Simulation::getFaintestVisible(), Renderer::getGLContext(), CelestiaCore::getHudDetail(), Renderer::getLabelMode(), CelestiaCore::getLightDelayActive(), Observer::getLocationFilter(), Renderer::getMinimumFeatureSize(), Body::getName(), Simulation::getObserver(), Renderer::getOrbitMask(), Observer::getPosition(), Selection::getPosition(), CelestiaCore::getRenderer(), Renderer::getRenderFlags(), GLContext::getRenderPath(), CelestiaCore::getScreenDpi(), Simulation::getSelection(), CelestiaCore::getSimulation(), Simulation::getTime(), CelestiaCore::getTimeZoneBias(), hSpin, glx::int(), keyChooser, Vector3< T >::length(), astro::lightYearsToKilometers(), ltSubstract(), minFeatureSizeLabel, mSpin, MSpin, parent, renderPathCombo, renderPathLabel, GLContext::renderPathSupported(), savedAmbientLightLevel, savedDisplayLocalTime, savedDistanceToScreen, savedFaintestVisible, savedHudDetail, savedLabelMode, savedLocationFilter, savedMinFeatureSize, savedOrbitMask, savedRendererFlags, savedRenderPath, setNow(), setRenderPathLabel(), setTime(), setTimezoneCombo, slotAmbientLightLevel(), slotDistanceToScreen(), slotFaintestVisible(), slotMinFeatureSize(), slotRenderPath(), slotTimeHasChanged(), sSpin, timeHasChanged, and YSpin. 00051 : 00052 KDialogBase (KDialogBase::IconList, "", 00053 KDialogBase::Ok | KDialogBase::Apply | KDialogBase::Cancel, KDialogBase::Ok,parent) 00054 { 00055 00056 setCaption(i18n("Celestia Preferences")); 00057 appCore=core; 00058 00059 this->parent = (KdeApp*)parent; 00060 00061 // Render page 00062 QGrid* renderFrame = addGridPage(2, Qt::Horizontal, i18n("Rendering"), i18n("Rendering"), 00063 KGlobal::iconLoader()->loadIcon("configure", KIcon::NoGroup)); 00064 00065 int renderFlags = appCore->getRenderer()->getRenderFlags(); 00066 savedRendererFlags = renderFlags; 00067 00068 KActionCollection* actionColl = ((KdeApp*)parent)->actionCollection(); 00069 00070 QGroupBox* showGroup = new QGroupBox(1, Qt::Horizontal, i18n("Show"), renderFrame); 00071 00072 QCheckBox* showStarsCheck = new QCheckBox(i18n("Stars"), showGroup); 00073 actionColl->action("showStars")->connect(showStarsCheck, SIGNAL(clicked()), SLOT(activate())); 00074 showStarsCheck->setChecked(renderFlags & Renderer::ShowStars); 00075 00076 QCheckBox* showAutoMagCheck = new QCheckBox(i18n("Auto Magnitudes"), showGroup); 00077 actionColl->action("showAutoMag")->connect(showAutoMagCheck, SIGNAL(clicked()), SLOT(activate())); 00078 showAutoMagCheck->setChecked(renderFlags & Renderer::ShowAutoMag); 00079 00080 QCheckBox* showPlanetsCheck = new QCheckBox(i18n("Planets"), showGroup); 00081 actionColl->action("showPlanets")->connect(showPlanetsCheck, SIGNAL(clicked()), SLOT(activate())); 00082 showPlanetsCheck->setChecked(renderFlags & Renderer::ShowPlanets); 00083 00084 QCheckBox* showGalaxiesCheck = new QCheckBox(i18n("Galaxies"), showGroup); 00085 actionColl->action("showGalaxies")->connect(showGalaxiesCheck, SIGNAL(clicked()), SLOT(activate())); 00086 showGalaxiesCheck->setChecked(renderFlags & Renderer::ShowGalaxies); 00087 00088 QCheckBox* showNebulaeCheck = new QCheckBox(i18n("Nebulae"), showGroup); 00089 actionColl->action("showNebulae")->connect(showNebulaeCheck, SIGNAL(clicked()), SLOT(activate())); 00090 showNebulaeCheck->setChecked(renderFlags & Renderer::ShowNebulae); 00091 00092 QCheckBox* showOpenClustersCheck = new QCheckBox(i18n("Open Clusters"), showGroup); 00093 actionColl->action("showOpenClusters")->connect(showOpenClustersCheck, SIGNAL(clicked()), SLOT(activate())); 00094 showOpenClustersCheck->setChecked(renderFlags & Renderer::ShowOpenClusters); 00095 00096 QCheckBox* showAtmospheresCheck = new QCheckBox(i18n("Atmospheres"), showGroup); 00097 actionColl->action("showAtmospheres")->connect(showAtmospheresCheck, SIGNAL(clicked()), SLOT(activate())); 00098 showAtmospheresCheck->setChecked(renderFlags & Renderer::ShowAtmospheres); 00099 00100 QCheckBox* showCloudMapsCheck = new QCheckBox(i18n("Clouds"), showGroup); 00101 actionColl->action("showCloudMaps")->connect(showCloudMapsCheck, SIGNAL(clicked()), SLOT(activate())); 00102 showCloudMapsCheck->setChecked(renderFlags & Renderer::ShowCloudMaps); 00103 00104 QCheckBox* showNightMapsCheck = new QCheckBox(i18n("Night Side Lights"), showGroup); 00105 actionColl->action("showNightMaps")->connect(showNightMapsCheck, SIGNAL(clicked()), SLOT(activate())); 00106 showNightMapsCheck->setChecked(renderFlags & Renderer::ShowNightMaps); 00107 00108 QCheckBox* showEclipseShadowsCheck = new QCheckBox(i18n("Eclipse Shadows"), showGroup); 00109 actionColl->action("showEclipseShadows")->connect(showEclipseShadowsCheck, SIGNAL(clicked()), SLOT(activate())); 00110 showEclipseShadowsCheck->setChecked(renderFlags & Renderer::ShowEclipseShadows); 00111 00112 QCheckBox* showCometTailsCheck = new QCheckBox(i18n("Comet Tails"), showGroup); 00113 actionColl->action("showCometTails")->connect(showCometTailsCheck, SIGNAL(clicked()), SLOT(activate())); 00114 showCometTailsCheck->setChecked(renderFlags & Renderer::ShowCometTails); 00115 00116 QCheckBox* showOrbitsCheck = new QCheckBox(i18n("Orbits"), showGroup); 00117 actionColl->action("showOrbits")->connect(showOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00118 showOrbitsCheck->setChecked(renderFlags & Renderer::ShowOrbits); 00119 00120 QCheckBox* showPartialTrajectoriesCheck = new QCheckBox(i18n("Partial Trajectories"), showGroup); 00121 actionColl->action("showPartialTrajectories")->connect(showPartialTrajectoriesCheck, SIGNAL(clicked()), SLOT(activate())); 00122 showPartialTrajectoriesCheck->setChecked(renderFlags & Renderer::ShowPartialTrajectories); 00123 00124 QCheckBox* showSmoothLinesCheck = new QCheckBox(i18n("Smooth Orbit Lines"), showGroup); 00125 actionColl->action("showSmoothLines")->connect(showSmoothLinesCheck, SIGNAL(clicked()), SLOT(activate())); 00126 showSmoothLinesCheck->setChecked(renderFlags & Renderer::ShowSmoothLines); 00127 00128 QCheckBox* showCelestialSphereCheck = new QCheckBox(i18n("Celestial Grid"), showGroup); 00129 actionColl->action("showCelestialSphere")->connect(showCelestialSphereCheck, SIGNAL(clicked()), SLOT(activate())); 00130 showCelestialSphereCheck->setChecked(renderFlags & Renderer::ShowCelestialSphere); 00131 00132 QCheckBox* showDiagramsCheck = new QCheckBox(i18n("Constellations"), showGroup); 00133 actionColl->action("showDiagrams")->connect(showDiagramsCheck, SIGNAL(clicked()), SLOT(activate())); 00134 showDiagramsCheck->setChecked(renderFlags & Renderer::ShowDiagrams); 00135 00136 QCheckBox* showMarkersCheck = new QCheckBox(i18n("Markers"), showGroup); 00137 actionColl->action("showMarkers")->connect(showMarkersCheck, SIGNAL(clicked()), SLOT(activate())); 00138 showMarkersCheck->setChecked(renderFlags & Renderer::ShowMarkers); 00139 00140 QCheckBox* showRingShadowsCheck = new QCheckBox(i18n("Ring Shadows"), showGroup); 00141 actionColl->action("showRingShadows")->connect(showRingShadowsCheck, SIGNAL(clicked()), SLOT(activate())); 00142 showRingShadowsCheck->setChecked(renderFlags & Renderer::ShowRingShadows); 00143 00144 QCheckBox* showBoundariesCheck = new QCheckBox(i18n("Constellation Boundaries"), showGroup); 00145 actionColl->action("showBoundaries")->connect(showBoundariesCheck, SIGNAL(clicked()), SLOT(activate())); 00146 showBoundariesCheck->setChecked(renderFlags & Renderer::ShowBoundaries); 00147 00148 00149 QVBox* vbox1 = new QVBox(renderFrame); 00150 int labelMode = appCore->getRenderer()->getLabelMode(); 00151 savedLabelMode = labelMode; 00152 int orbitMask = appCore->getRenderer()->getOrbitMask(); 00153 savedOrbitMask = orbitMask; 00154 00155 QGroupBox* labelGroup = new QGroupBox(0, Qt::Horizontal, i18n("Orbits / Labels"), vbox1); 00156 QGridLayout* labelGroupLayout = new QGridLayout( labelGroup->layout() ); 00157 labelGroupLayout->setAlignment( Qt::AlignTop ); 00158 00159 QLabel* orbitsLabel = new QLabel(i18n("Orbits"), labelGroup); 00160 labelGroupLayout->addWidget(orbitsLabel, 0, 0); 00161 QLabel* labelsLabel = new QLabel(i18n("Labels"), labelGroup); 00162 labelGroupLayout->addWidget(labelsLabel, 0, 1); 00163 00164 QCheckBox* showStarLabelsCheck = new QCheckBox(i18n("Stars"), labelGroup); 00165 actionColl->action("showStarLabels")->connect(showStarLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00166 showStarLabelsCheck->setChecked(labelMode & Renderer::StarLabels); 00167 labelGroupLayout->addWidget(showStarLabelsCheck, 1, 1); 00168 00169 00170 QCheckBox* showPlanetOrbitsCheck = new QCheckBox("", labelGroup); 00171 actionColl->action("showPlanetOrbits")->connect(showPlanetOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00172 showPlanetOrbitsCheck->setChecked(orbitMask & Body::Planet); 00173 labelGroupLayout->addWidget(showPlanetOrbitsCheck, 3, 0, Qt::AlignHCenter); 00174 QCheckBox* showPlanetLabelsCheck = new QCheckBox(i18n("Planets"), labelGroup); 00175 actionColl->action("showPlanetLabels")->connect(showPlanetLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00176 showPlanetLabelsCheck->setChecked(labelMode & Renderer::PlanetLabels); 00177 labelGroupLayout->addWidget(showPlanetLabelsCheck, 3, 1); 00178 00179 QCheckBox* showMoonOrbitsCheck = new QCheckBox("", labelGroup); 00180 actionColl->action("showMoonOrbits")->connect(showMoonOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00181 showMoonOrbitsCheck->setChecked(orbitMask & Body::Moon); 00182 labelGroupLayout->addWidget(showMoonOrbitsCheck, 4, 0, Qt::AlignHCenter); 00183 QCheckBox* showMoonLabelsCheck = new QCheckBox(i18n("Moons"), labelGroup); 00184 actionColl->action("showMoonLabels")->connect(showMoonLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00185 showMoonLabelsCheck->setChecked(labelMode & Renderer::MoonLabels); 00186 labelGroupLayout->addWidget(showMoonLabelsCheck, 4, 1); 00187 00188 QCheckBox* showCometOrbitsCheck = new QCheckBox("", labelGroup); 00189 actionColl->action("showCometOrbits")->connect(showCometOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00190 showCometOrbitsCheck->setChecked(orbitMask & Body::Comet); 00191 labelGroupLayout->addWidget(showCometOrbitsCheck, 5, 0, Qt::AlignHCenter); 00192 QCheckBox* showCometLabelsCheck = new QCheckBox(i18n("Comets"), labelGroup); 00193 actionColl->action("showCometLabels")->connect(showCometLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00194 showCometLabelsCheck->setChecked(labelMode & Renderer::CometLabels); 00195 labelGroupLayout->addWidget(showCometLabelsCheck, 5, 1); 00196 00197 QCheckBox* showConstellationLabelsCheck = new QCheckBox(i18n("Constellations"), labelGroup); 00198 actionColl->action("showConstellationLabels")->connect(showConstellationLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00199 showConstellationLabelsCheck->setChecked(labelMode & Renderer::ConstellationLabels); 00200 labelGroupLayout->addWidget(showConstellationLabelsCheck, 6, 1); 00201 00202 QCheckBox* showI18nConstellationLabelsCheck = new QCheckBox(i18n("Constellations in Latin"), labelGroup); 00203 actionColl->action("showI18nConstellationLabels")->connect(showI18nConstellationLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00204 showI18nConstellationLabelsCheck->setChecked(!(labelMode & Renderer::I18nConstellationLabels)); 00205 labelGroupLayout->addWidget(showI18nConstellationLabelsCheck, 7, 1); 00206 00207 QCheckBox* showGalaxyLabelsCheck = new QCheckBox(i18n("Galaxies"), labelGroup); 00208 actionColl->action("showGalaxyLabels")->connect(showGalaxyLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00209 showGalaxyLabelsCheck->setChecked(labelMode & Renderer::GalaxyLabels); 00210 labelGroupLayout->addWidget(showGalaxyLabelsCheck, 8, 1); 00211 00212 QCheckBox* showNebulaLabelsCheck = new QCheckBox(i18n("Nebulae"), labelGroup); 00213 actionColl->action("showNebulaLabels")->connect(showNebulaLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00214 showNebulaLabelsCheck->setChecked(labelMode & Renderer::NebulaLabels); 00215 labelGroupLayout->addWidget(showNebulaLabelsCheck, 9, 1); 00216 00217 QCheckBox* showOpenClusterLabelsCheck = new QCheckBox(i18n("Open Clusters"), labelGroup); 00218 actionColl->action("showOpenClusterLabels")->connect(showOpenClusterLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00219 showOpenClusterLabelsCheck->setChecked(labelMode & Renderer::OpenClusterLabels); 00220 labelGroupLayout->addWidget(showOpenClusterLabelsCheck, 10, 1); 00221 00222 QCheckBox* showAsteroidOrbitsCheck = new QCheckBox("", labelGroup); 00223 actionColl->action("showAsteroidOrbits")->connect(showAsteroidOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00224 showAsteroidOrbitsCheck->setChecked(orbitMask & Body::Asteroid); 00225 labelGroupLayout->addWidget(showAsteroidOrbitsCheck, 11, 0, Qt::AlignHCenter); 00226 QCheckBox* showAsteroidLabelsCheck = new QCheckBox(i18n("Asteroids"), labelGroup); 00227 actionColl->action("showAsteroidLabels")->connect(showAsteroidLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00228 showAsteroidLabelsCheck->setChecked(labelMode & Renderer::AsteroidLabels); 00229 labelGroupLayout->addWidget(showAsteroidLabelsCheck, 11, 1); 00230 00231 QCheckBox* showSpacecraftOrbitsCheck = new QCheckBox("", labelGroup); 00232 actionColl->action("showSpacecraftOrbits")->connect(showSpacecraftOrbitsCheck, SIGNAL(clicked()), SLOT(activate())); 00233 showSpacecraftOrbitsCheck->setChecked(orbitMask & Body::Spacecraft); 00234 labelGroupLayout->addWidget(showSpacecraftOrbitsCheck, 12, 0, Qt::AlignHCenter); 00235 QCheckBox* showSpacecraftLabelsCheck = new QCheckBox(i18n("Spacecrafts"), labelGroup); 00236 actionColl->action("showSpacecraftLabels")->connect(showSpacecraftLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00237 showSpacecraftLabelsCheck->setChecked(labelMode & Renderer::SpacecraftLabels); 00238 labelGroupLayout->addWidget(showSpacecraftLabelsCheck, 12, 1); 00239 00240 QCheckBox* showLocationLabelsCheck = new QCheckBox(i18n("Locations"), labelGroup); 00241 actionColl->action("showLocationLabels")->connect(showLocationLabelsCheck, SIGNAL(clicked()), SLOT(activate())); 00242 showLocationLabelsCheck->setChecked(labelMode & Renderer::LocationLabels); 00243 labelGroupLayout->addWidget(showLocationLabelsCheck, 13, 1); 00244 00245 QSpacerItem* spacer = new QSpacerItem( 151, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); 00246 labelGroupLayout->addItem( spacer, 0, 2 ); 00247 00248 savedAmbientLightLevel = int(appCore->getRenderer()->getAmbientLightLevel() * 100); 00249 QGroupBox* ambientLightGroup = new QGroupBox(1, Qt::Vertical, i18n("Ambient Light"), vbox1); 00250 QSlider* ambientLightSlider = new QSlider(0, 25, 1, savedAmbientLightLevel, Qt::Horizontal, ambientLightGroup); 00251 connect(ambientLightSlider, SIGNAL(valueChanged(int)), SLOT(slotAmbientLightLevel(int))); 00252 ambientLabel = new QLabel(ambientLightGroup); 00253 ambientLabel->setMinimumWidth(40); 00254 ambientLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 00255 char buff[20]; 00256 sprintf(buff, "%.2f", savedAmbientLightLevel / 100.); 00257 ambientLabel->setText(buff); 00258 00259 savedFaintestVisible = int(appCore->getSimulation()->getFaintestVisible() * 100); 00260 QGroupBox* faintestVisibleGroup = new QGroupBox(1, Qt::Vertical, i18n("Limiting Magnitude"), vbox1); 00261 QSlider* faintestVisibleSlider = new QSlider(1, 1200, 1, savedFaintestVisible, Qt::Horizontal, faintestVisibleGroup); 00262 connect(faintestVisibleSlider, SIGNAL(valueChanged(int)), SLOT(slotFaintestVisible(int))); 00263 faintestLabel = new QLabel(faintestVisibleGroup); 00264 faintestLabel->setMinimumWidth(40); 00265 faintestLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 00266 sprintf(buff, "%.2f", savedFaintestVisible / 100.); 00267 faintestLabel->setText(buff); 00268 00269 QGroupBox* infoTextGroup = new QGroupBox(1, Qt::Vertical, i18n("Info Text"), vbox1); 00270 new QLabel(i18n("Level: "), infoTextGroup); 00271 QComboBox* infoTextCombo = new QComboBox(infoTextGroup); 00272 infoTextCombo->insertItem(i18n("None")); 00273 infoTextCombo->insertItem(i18n("Terse")); 00274 infoTextCombo->insertItem(i18n("Verbose")); 00275 savedHudDetail = appCore->getHudDetail(); 00276 infoTextCombo->setCurrentItem(savedHudDetail); 00277 ((KdeApp*)parent)->connect(infoTextCombo, SIGNAL(activated(int)), SLOT(slotHudDetail(int))); 00278 00279 QGroupBox* fovGroup = new QGroupBox(2, Qt::Horizontal, i18n("Automatic FOV"), vbox1); 00280 new QLabel(i18n("Screen DPI: "), fovGroup); 00281 new QLabel(QString::number(appCore->getScreenDpi(), 10), fovGroup); 00282 new QLabel(i18n("Viewing Distance (cm): "), fovGroup); 00283 dtsSpin = new QSpinBox(10, 300, 1, fovGroup); 00284 savedDistanceToScreen = appCore->getDistanceToScreen(); 00285 dtsSpin->setValue(savedDistanceToScreen / 10); 00286 connect(dtsSpin, SIGNAL(valueChanged(int)), SLOT(slotDistanceToScreen(int))); 00287 00288 // Locations page 00289 Observer* obs = appCore->getSimulation()->getActiveObserver(); 00290 savedLocationFilter = obs->getLocationFilter(); 00291 00292 QFrame* locationsFrame = addPage(i18n("Locations"), i18n("Locations"), 00293 KGlobal::iconLoader()->loadIcon("package_network", KIcon::NoGroup)); 00294 QVBoxLayout* locationsLayout = new QVBoxLayout( locationsFrame ); 00295 locationsLayout->setAutoAdd(TRUE); 00296 locationsLayout->setAlignment(Qt::AlignTop); 00297 00298 QCheckBox* showCityLocationsCheck = new QCheckBox(i18n("Cities"), locationsFrame); 00299 actionColl->action("showCityLocations")->connect(showCityLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00300 showCityLocationsCheck->setChecked(savedLocationFilter & Location::City); 00301 00302 QCheckBox* showObservatoryLocationsCheck = new QCheckBox(i18n("Observatories"), locationsFrame); 00303 actionColl->action("showObservatoryLocations")->connect(showObservatoryLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00304 showObservatoryLocationsCheck->setChecked(savedLocationFilter & Location::Observatory); 00305 00306 QCheckBox* showLandingSiteLocationsCheck = new QCheckBox(i18n("Landing Sites"), locationsFrame); 00307 actionColl->action("showLandingSiteLocations")->connect(showLandingSiteLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00308 showLandingSiteLocationsCheck->setChecked(savedLocationFilter & Location::LandingSite); 00309 00310 QCheckBox* showCraterLocationsCheck = new QCheckBox(i18n("Craters"), locationsFrame); 00311 actionColl->action("showCraterLocations")->connect(showCraterLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00312 showCraterLocationsCheck->setChecked(savedLocationFilter & Location::Crater); 00313 00314 QCheckBox* showMonsLocationsCheck = new QCheckBox(i18n("Mons"), locationsFrame); 00315 actionColl->action("showMonsLocations")->connect(showMonsLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00316 showMonsLocationsCheck->setChecked(savedLocationFilter & Location::Mons); 00317 00318 QCheckBox* showTerraLocationsCheck = new QCheckBox(i18n("Terra"), locationsFrame); 00319 actionColl->action("showTerraLocations")->connect(showTerraLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00320 showTerraLocationsCheck->setChecked(savedLocationFilter & Location::Terra); 00321 00322 QCheckBox* showVallisLocationsCheck = new QCheckBox(i18n("Vallis"), locationsFrame); 00323 actionColl->action("showVallisLocations")->connect(showVallisLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00324 showVallisLocationsCheck->setChecked(savedLocationFilter & Location::Vallis); 00325 00326 QCheckBox* showMareLocationsCheck = new QCheckBox(i18n("Mare"), locationsFrame); 00327 actionColl->action("showMareLocations")->connect(showMareLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00328 showMareLocationsCheck->setChecked(savedLocationFilter & Location::Mare); 00329 00330 QCheckBox* showOtherLocationsCheck = new QCheckBox(i18n("Other"), locationsFrame); 00331 actionColl->action("showOtherLocations")->connect(showOtherLocationsCheck, SIGNAL(clicked()), SLOT(activate())); 00332 showOtherLocationsCheck->setChecked(savedLocationFilter & FilterOtherLocations); 00333 00334 QGroupBox* minFeatureSizeGroup = new QGroupBox(1, Qt::Vertical, i18n("Minimum Feature Size"), locationsFrame); 00335 minFeatureSizeGroup->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); 00336 savedMinFeatureSize = (int)appCore->getRenderer()->getMinimumFeatureSize(); 00337 QSlider* minFeatureSizeSlider = new QSlider(1, 1000, 1, savedMinFeatureSize, Qt::Horizontal, minFeatureSizeGroup); 00338 connect(minFeatureSizeSlider, SIGNAL(valueChanged(int)), SLOT(slotMinFeatureSize(int))); 00339 minFeatureSizeLabel = new QLabel(minFeatureSizeGroup); 00340 minFeatureSizeLabel->setMinimumWidth(40); 00341 minFeatureSizeLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); 00342 sprintf(buff, "%d", savedMinFeatureSize); 00343 minFeatureSizeLabel->setText(buff); 00344 00345 00346 // Time page 00347 timeHasChanged = false; 00348 QVBox* timeFrame = addVBoxPage(i18n("Date/Time"), i18n("Date/Time"), 00349 KGlobal::iconLoader()->loadIcon("clock", KIcon::NoGroup)); 00350 00351 savedDisplayLocalTime = appCore->getTimeZoneBias(); 00352 QGroupBox* displayTimezoneGroup = new QGroupBox(1, Qt::Vertical, i18n("Display"), timeFrame); 00353 new QLabel(i18n("Timezone: "), displayTimezoneGroup); 00354 displayTimezoneCombo = new QComboBox(displayTimezoneGroup); 00355 displayTimezoneCombo->insertItem(i18n("UTC")); 00356 displayTimezoneCombo->insertItem(i18n("Local Time")); 00357 displayTimezoneCombo->setCurrentItem((appCore->getTimeZoneBias()==0)?0:1); 00358 ((KdeApp*)parent)->connect(displayTimezoneCombo, SIGNAL(activated(int)), SLOT(slotDisplayLocalTime())); 00359 displayTimezoneGroup->addSpace(0); 00360 00361 QGroupBox* setTimezoneGroup = new QGroupBox(1, Qt::Horizontal, i18n("Set"), timeFrame); 00362 new QLabel(i18n("Local Time is only supported for dates between 1902 and 2037.\n"), setTimezoneGroup); 00363 QHBox *hbox2 = new QHBox(setTimezoneGroup); 00364 new QLabel(i18n("Timezone: "), hbox2); 00365 setTimezoneCombo = new QComboBox(hbox2); 00366 setTimezoneCombo->insertItem(i18n("UTC")); 00367 setTimezoneCombo->insertItem(i18n("Local Time")); 00368 // setTimezoneCombo->setCurrentItem((appCore->getTimeZoneBias()==0)?0:1); 00369 KGlobal::config()->setGroup("ConfigureDialog"); 00370 if (KGlobal::config()->hasKey("SetTimeTimeZoneLocal")) 00371 setTimezoneCombo->setCurrentItem(KGlobal::config()->readNumEntry("SetTimeTimeZoneLocal")); 00372 KGlobal::config()->setGroup(0); 00373 connect(setTimezoneCombo, SIGNAL(activated(int)), SLOT(slotTimeHasChanged())); 00374 00375 00376 QHBox *hboxdate = new QHBox(setTimezoneGroup); 00377 QLabel* spacerdate1 = new QLabel(" ", hboxdate); 00378 timeFrame->setStretchFactor(spacerdate1, 2); 00379 YSpin = new QSpinBox(-1000000000, 1000000000, 1, hboxdate); 00380 YSpin->setWrapping(true); 00381 MSpin = new QSpinBox(1, 12, 1, hboxdate); 00382 MSpin->setWrapping(true); 00383 DSpin = new QSpinBox(1, 31, 1, hboxdate); 00384 DSpin->setWrapping(true); 00385 QLabel* spacerdate2 = new QLabel(" ", hboxdate); 00386 timeFrame->setStretchFactor(spacerdate2, 2); 00387 00388 QVBox *vbox3 = new QVBox(setTimezoneGroup); 00389 QHBox *hbox3 = new QHBox(vbox3); 00390 QLabel* spacer1 = new QLabel(" ", hbox3); 00391 hbox3->setStretchFactor(spacer1, 10); 00392 hSpin = new QSpinBox(0, 23, 1, hbox3); 00393 hSpin->setWrapping(true); 00394 new QLabel(":", hbox3); 00395 mSpin = new QSpinBox(0, 59, 1, hbox3); 00396 mSpin->setWrapping(true); 00397 new QLabel(":", hbox3); 00398 sSpin = new QSpinBox(0, 59, 1, hbox3); 00399 sSpin->setWrapping(true); 00400 QLabel* spacer2 = new QLabel(" ", hbox3); 00401 hbox3->setStretchFactor(spacer2, 10); 00402 00403 QLabel* spacer3 = new QLabel(" ", timeFrame); 00404 timeFrame->setStretchFactor(spacer3, 2); 00405 00406 setTime(appCore->getSimulation()->getTime()); 00407 connect(YSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00408 connect(MSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00409 connect(DSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00410 connect(hSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00411 connect(mSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00412 connect(sSpin, SIGNAL(valueChanged(int)), SLOT(slotTimeHasChanged())); 00413 00414 KPushButton *nowButton = new KPushButton(setTimezoneGroup); 00415 nowButton->setText(i18n("Now")); 00416 QSizePolicy nowButtonSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); 00417 nowButton->setSizePolicy(nowButtonSizePolicy); 00418 connect(nowButton, SIGNAL(clicked()), SLOT(setNow())); 00419 00420 Selection selection = appCore->getSimulation()->getSelection(); 00421 std::string sel_name; 00422 if (selection.body() != 0) { 00423 QHBox* ltBox = new QHBox(setTimezoneGroup); 00424 char time[50]; 00425 sel_name = selection.body()->getName(); 00426 Vec3d v = selection.getPosition(appCore->getSimulation()->getTime()) - 00427 appCore->getSimulation()->getObserver().getPosition(); 00428 double dist = astro::lightYearsToKilometers(v.length()*1e-6); 00429 double lt = dist / astro::speedOfLight; 00430 long lt_h = (long)(lt / 3600); 00431 int lt_m = (int)((lt - lt_h * 3600) / 60); 00432 double lt_s = (lt - lt_h * 3600 - lt_m * 60); 00433 if (lt_h == 0) snprintf(time, 50, "%d min %02.1f s", lt_m, lt_s); 00434 else snprintf(time, 50, "%ld h %02d min %02.1f s", lt_h, lt_m, lt_s); 00435 00436 new QLabel(i18n("\nSelection: " + QString(sel_name.c_str()) 00437 + QString("\nLight Travel Time: %2").arg(time)), ltBox); 00438 00439 KPushButton *ltButton = new KPushButton(ltBox); 00440 ltButton->setToggleButton(true); 00441 00442 if (!appCore->getLightDelayActive()) 00443 ltButton->setText(i18n("Include Light Travel Time")); 00444 else 00445 ltButton->setText(i18n("Ignore Light Travel Time ")); 00446 00447 ltButton->setSizePolicy(nowButtonSizePolicy); 00448 connect(ltButton, SIGNAL(clicked()), SLOT(ltSubstract())); 00449 } 00450 00451 // OpenGL Page 00452 QVBox* openGL = addVBoxPage(i18n("OpenGL"), i18n("OpenGL"), 00453 KGlobal::iconLoader()->loadIcon("misc", KIcon::NoGroup)); 00454 00455 renderPathCombo = new QComboBox(openGL); 00456 savedRenderPath = (int)appCore->getRenderer()->getGLContext()->getRenderPath(); 00457 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_Basic)) 00458 renderPathCombo->insertItem(i18n("Basic")); 00459 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_Multitexture)) 00460 renderPathCombo->insertItem(i18n("Multitexture")); 00461 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_NvCombiner)) 00462 renderPathCombo->insertItem(i18n("NvCombiners")); 00463 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_DOT3_ARBVP)) 00464 renderPathCombo->insertItem(i18n("DOT3 ARBVP")); 00465 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_NvCombiner_NvVP)) 00466 renderPathCombo->insertItem(i18n("NvCombiner NvVP")); 00467 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_NvCombiner_ARBVP)) 00468 renderPathCombo->insertItem(i18n("NvCombiner ARBVP")); 00469 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_ARBFP_ARBVP)) 00470 renderPathCombo->insertItem(i18n("ARBFP ARBVP")); 00471 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_NV30)) 00472 renderPathCombo->insertItem(i18n("NV30")); 00473 if (appCore->getRenderer()->getGLContext()->renderPathSupported(GLContext::GLPath_GLSL)) 00474 renderPathCombo->insertItem(i18n("OpenGL 2.0")); 00475 00476 connect(renderPathCombo, SIGNAL(activated(int)), SLOT(slotRenderPath(int))); 00477 00478 { 00479 int path=0, ipathIdx=0; 00480 while (path != appCore->getRenderer()->getGLContext()->getRenderPath()) { 00481 ipathIdx++; 00482 do { 00483 path++; 00484 } while (!appCore->getRenderer()->getGLContext()->renderPathSupported((GLContext::GLRenderPath)path)); 00485 } 00486 renderPathCombo->setCurrentItem(ipathIdx); 00487 } 00488 00489 renderPathLabel = new QLabel(openGL); 00490 renderPathLabel->setTextFormat(Qt::RichText); 00491 setRenderPathLabel(); 00492 00493 QTextEdit* edit = new QTextEdit(openGL); 00494 edit->append(((KdeApp*)parent)->getOpenGLInfo()); 00495 edit->setFocusPolicy(QWidget::NoFocus); 00496 00497 00498 // Key bindings page 00499 QVBox* keyBindings = addVBoxPage(i18n("Key Bindings"), i18n("Key Bindings"), 00500 KGlobal::iconLoader()->loadIcon("key_bindings", KIcon::NoGroup)); 00501 00502 keyChooser = new KKeyChooser(((KMainWindow*)parent)->actionCollection(), keyBindings, false); 00503 00504 resize(550,400); 00505 }
|
|
|
Definition at line 507 of file kdepreferencesdialog.cpp. 00507 {
00508 }
|
|
|
Definition at line 578 of file kdepreferencesdialog.cpp. References astro::Date::day, DSpin, astro::Date::hour, hSpin, astro::Date::minute, astro::Date::month, mSpin, MSpin, astro::Date::seconds, astro::secondsToJulianDate(), setTimezoneCombo, sSpin, astro::Date::year, and YSpin. Referenced by ltSubstract(). 00578 {
00579 double d;
00580
00581 if (setTimezoneCombo->currentItem() == 0 || YSpin->value() < 1902 || YSpin->value() > 2037) {
00582 astro::Date date(0.0);
00583 date.year=YSpin->value();
00584 date.month=MSpin->value();
00585 date.day=DSpin->value();
00586 date.hour=hSpin->value();
00587 date.minute=mSpin->value();
00588 date.seconds=float(sSpin->value());
00589 d = (double) date;
00590 } else {
00591 struct tm time;
00592 time.tm_year = YSpin->value() - 1900;
00593 time.tm_mon = MSpin->value() - 1;
00594 time.tm_mday = DSpin->value();
00595 time.tm_hour = hSpin->value();
00596 time.tm_min = mSpin->value();
00597 time.tm_sec = sSpin->value();
00598 d = astro::secondsToJulianDate(mktime(&time)) + (double) astro::Date(1970, 1, 1);
00599 }
00600 return d;
00601 }
|
|
|
|
Definition at line 511 of file kdepreferencesdialog.cpp. References DSpin, hSpin, mSpin, MSpin, setTimezoneCombo, sSpin, and YSpin. Referenced by KdePreferencesDialog(). 00511 {
00512 time_t date_t;
00513 time(&date_t);
00514 struct tm* tm;
00515 if (setTimezoneCombo->currentItem() != 0) {
00516 tm = localtime ( &date_t);
00517 } else {
00518 tm = gmtime ( &date_t);
00519 }
00520 YSpin->setValue(tm->tm_year + 1900);
00521 MSpin->setValue(tm->tm_mon + 1);
00522 DSpin->setValue(tm->tm_mday);
00523 hSpin->setValue(tm->tm_hour);
00524 mSpin->setValue(tm->tm_min);
00525 sSpin->setValue(tm->tm_sec);
00526 }
|
|
|
Definition at line 710 of file kdepreferencesdialog.cpp. References appCore, Renderer::getGLContext(), CelestiaCore::getRenderer(), GLContext::getRenderPath(), and renderPathLabel. Referenced by KdePreferencesDialog(), and slotRenderPath(). 00710 {
00711 switch(appCore->getRenderer()->getGLContext()->getRenderPath()) {
00712 case GLContext::GLPath_Basic:
00713 renderPathLabel->setText(i18n("<b>Unextended OpenGL 1.1</b>"));
00714 break;
00715 case GLContext::GLPath_Multitexture:
00716 renderPathLabel->setText(i18n("<b>Multiple textures and the ARB_texenv_combine extension</b>"));
00717 break;
00718 case GLContext::GLPath_NvCombiner:
00719 renderPathLabel->setText(i18n("<b>NVIDIA combiners, no vertex programs</b>"));
00720 break;
00721 case GLContext::GLPath_DOT3_ARBVP:
00722 renderPathLabel->setText(i18n("<b>ARB_texenv_DOT3 extension, ARB_vertex_program extension</b>"));
00723 break;
00724 case GLContext::GLPath_NvCombiner_NvVP:
00725 renderPathLabel->setText(i18n("<b>NVIDIA Combiners, NV_vertex_program extension</b><br> "
00726 "provide bump mapping, ring shadows, and specular "
00727 "highlights on any Geforce or ATI Radeon graphics card, though "
00728 "NvCombiner ARBVP is a slightly better option for Geforce users"));
00729 break;
00730 case GLContext::GLPath_NvCombiner_ARBVP:
00731 renderPathLabel->setText(i18n("<b>NVIDIA Combiners, ARB_vertex_program extension</b>"));
00732 break;
00733 case GLContext::GLPath_ARBFP_ARBVP:
00734 renderPathLabel->setText(i18n("<b>ARB_fragment_program and ARB_vertex_program extensions</b><br>"
00735 "provide advanced effects on Geforce FX and Radeon 9700 cards"));
00736 break;
00737 case GLContext::GLPath_NV30:
00738 renderPathLabel->setText(i18n("<b>NV_fragment_program and ARB_vertex_program extensions</b>"));
00739 break;
00740 case GLContext::GLPath_GLSL:
00741 renderPathLabel->setText(i18n("<b>OpenGL 2.0 Shading Language</b>"));
00742 break;
00743 }
00744 }
|
|
|
Definition at line 555 of file kdepreferencesdialog.cpp. References astro::Date::day, DSpin, astro::Date::hour, hSpin, astro::julianDateToSeconds(), astro::Date::minute, astro::Date::month, mSpin, MSpin, astro::Date::seconds, setTimezoneCombo, sSpin, astro::Date::year, and YSpin. Referenced by KdePreferencesDialog(), and ltSubstract(). 00555 {
00556 if (setTimezoneCombo->currentItem() != 0 && d < 2465442 && d > 2415733) {
00557 time_t date_t = (int) astro::julianDateToSeconds( d - (float)astro::Date(1970, 1, 1) );
00558
00559 struct tm* tm;
00560 tm = localtime ( &date_t);
00561 YSpin->setValue(tm->tm_year + 1900);
00562 MSpin->setValue(tm->tm_mon + 1);
00563 DSpin->setValue(tm->tm_mday);
00564 hSpin->setValue(tm->tm_hour);
00565 mSpin->setValue(tm->tm_min);
00566 sSpin->setValue(tm->tm_sec);
00567 } else {
00568 astro::Date date(d);
00569 YSpin->setValue(date.year);
00570 MSpin->setValue(date.month);
00571 DSpin->setValue(date.day);
00572 hSpin->setValue(date.hour);
00573 mSpin->setValue(date.minute);
00574 sSpin->setValue(int(date.seconds));
00575 }
00576 }
|
|
|
Definition at line 685 of file kdepreferencesdialog.cpp. References ambientLabel, parent, and KdeApp::slotAmbientLightLevel(). Referenced by KdePreferencesDialog(). 00685 {
00686 char buff[20];
00687
00688 parent->slotAmbientLightLevel(l / 100.);
00689 sprintf(buff, "%.2f", l / 100.);
00690 ambientLabel->setText(buff);
00691 }
|
|
|
|
|
Definition at line 706 of file kdepreferencesdialog.cpp. References appCore, and CelestiaCore::setDistanceToScreen(). Referenced by KdePreferencesDialog(). 00706 {
00707 appCore->setDistanceToScreen(dts * 10);
00708 }
|
|
|
Definition at line 669 of file kdepreferencesdialog.cpp. References faintestLabel, parent, and KdeApp::slotFaintestVisible(). Referenced by KdePreferencesDialog(). 00669 {
00670 char buff[20];
00671
00672 parent->slotFaintestVisible(m / 100.);
00673 sprintf(buff, "%.2f", m / 100.);
00674 faintestLabel->setText(buff);
00675 }
|
|
|
Definition at line 677 of file kdepreferencesdialog.cpp. References minFeatureSizeLabel, parent, and KdeApp::slotMinFeatureSize(). Referenced by KdePreferencesDialog(). 00677 {
00678 char buff[20];
00679
00680 parent->slotMinFeatureSize(s);
00681 sprintf(buff, "%d", s);
00682 minFeatureSizeLabel->setText(buff);
00683 }
|
|
|
Definition at line 603 of file kdepreferencesdialog.cpp. References slotApply(). 00603 {
00604 slotApply();
00605 accept();
00606 }
|
|
|
Definition at line 693 of file kdepreferencesdialog.cpp. References appCore, Renderer::getGLContext(), CelestiaCore::getRenderer(), GLContext::renderPathSupported(), GLContext::setRenderPath(), and setRenderPathLabel(). Referenced by KdePreferencesDialog(). 00693 {
00694 int path=0, ipathIdx=0;
00695 while (ipathIdx != pathIdx) {
00696 ipathIdx++;
00697 do {
00698 path++;
00699 } while (!appCore->getRenderer()->getGLContext()->renderPathSupported((GLContext::GLRenderPath)path));
00700 }
00701
00702 appCore->getRenderer()->getGLContext()->setRenderPath((GLContext::GLRenderPath)path);
00703 setRenderPathLabel();
00704 }
|
|
|
Definition at line 665 of file kdepreferencesdialog.cpp. References timeHasChanged. Referenced by KdePreferencesDialog(). 00665 {
00666 timeHasChanged = true;
00667 }
|
|
|
Definition at line 80 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotAmbientLightLevel(). |
|
|
Definition at line 51 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), ltSubstract(), setRenderPathLabel(), slotApply(), slotCancel(), slotDistanceToScreen(), and slotRenderPath(). |
|
|
Definition at line 70 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(). |
|
|
Definition at line 72 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 76 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(). |
|
|
Definition at line 80 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotFaintestVisible(). |
|
|
Definition at line 74 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 54 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotApply(). |
|
|
Definition at line 80 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotMinFeatureSize(). |
|
|
Definition at line 74 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 72 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 52 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotAmbientLightLevel(), slotFaintestVisible(), and slotMinFeatureSize(). |
|
|
Definition at line 78 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(). |
|
|
Definition at line 79 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and setRenderPathLabel(). |
|
|
Definition at line 59 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 62 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotApply(). |
|
|
Definition at line 64 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 60 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 61 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 57 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 65 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 66 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 58 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), and slotCancel(). |
|
|
Definition at line 56 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 63 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotCancel(). |
|
|
Definition at line 71 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 74 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
|
|
Definition at line 68 of file kdepreferencesdialog.h. Referenced by KdePreferencesDialog(), slotApply(), and slotTimeHasChanged(). |
|
|
Definition at line 72 of file kdepreferencesdialog.h. Referenced by getTime(), KdePreferencesDialog(), setNow(), setTime(), and slotApply(). |
1.4.1