7#include "colorscheme.h"
12#include "auxiliary/ksnotification.h"
13#include "skyobjects/starobject.h"
15#include "skymaplite.h"
17#include "skyqpainter.h"
29 appendItem(
"SkyColor",
i18n(
"Sky"),
"#000000");
30 appendItem(
"SkyColorDaytime",
i18n(
"Sky Daytime"),
"#7896e6");
31 appendItem(
"DSOColor",
i18n(
"Messier Object"),
"#008f00");
32 appendItem(
"HSTColor",
i18nc(
"Object with extra attached URLs",
"Object w/ Links"),
"#930000");
33 appendItem(
"SNameColor",
i18n(
"Star Name"),
"#577d7d");
34 appendItem(
"DSNameColor",
i18n(
"Deep Sky Object Name"),
"#75759c");
35 appendItem(
"PNameColor",
i18n(
"Planet Name"),
"#ac9800");
36 appendItem(
"CNameColor",
i18nc(
"Constellation Name",
"Constell. Name"),
"#718488");
37 appendItem(
"CLineColor",
i18nc(
"Constellation Line",
"Constell. Line"),
"#3d3d3d");
38 appendItem(
"CBoundColor",
i18nc(
"Constellation Boundary",
"Constell. Boundary"),
"#222f2f");
39 appendItem(
"CBoundHighColor",
i18nc(
"Highlighted Constellation Boundary",
"Constell. Boundary Highlight"),
41 appendItem(
"MWColor",
i18nc(
"refers to the band of stars in the sky due to the Galactic plane",
"Milky Way"),
43 appendItem(
"EqColor",
i18n(
"Equator"),
"#909090");
44 appendItem(
"EclColor",
i18n(
"Ecliptic"),
"#613d12");
45 appendItem(
"HorzColor",
i18n(
"Horizon"),
"#091f14");
46 appendItem(
"LocalMeridianColor",
i18n(
"Local Meridian"),
"#0059b3");
47 appendItem(
"CompassColor",
i18n(
"Compass Labels"),
"#909055");
48 appendItem(
"EquatorialGridColor",
i18n(
"Equatorial Coordinate Grid"),
"#445566");
49 appendItem(
"HorizontalGridColor",
i18n(
"Horizontal Coordinate Grid"),
"#091f14");
50 appendItem(
"BoxTextColor",
i18n(
"Info Box Text"),
"#d2dbef");
51 appendItem(
"BoxGrabColor",
i18n(
"Info Box Selected"),
"#900000");
52 appendItem(
"BoxBGColor",
i18n(
"Info Box Background"),
"#000000");
53 appendItem(
"TargetColor",
i18n(
"Target Indicator"),
"#DD0000");
54 appendItem(
"UserLabelColor",
i18n(
"User Labels"),
"#AAAAAA");
55 appendItem(
"PlanetTrailColor",
i18n(
"Planet Trails"),
"#993311");
56 appendItem(
"AngularRuler",
i18n(
"Angular Distance Ruler"),
"#445566");
57 appendItem(
"ObsListColor",
i18n(
"Observing List Label"),
"#FF0000");
58 appendItem(
"StarHopRouteColor",
i18n(
"Star-Hop Route"),
"#00FFFF");
59 appendItem(
"VisibleSatColor",
i18n(
"Visible Satellites"),
"#00FF00");
60 appendItem(
"SatColor",
i18n(
"Satellites"),
"#FF0000");
61 appendItem(
"SatLabelColor",
i18n(
"Satellites Labels"),
"#640000");
62 appendItem(
"SupernovaColor",
i18n(
"Supernovae"),
"#FFA500");
63 appendItem(
"AsteroidColor",
i18n(
"Asteroids"),
"#F1C232");
64 appendItem(
"ArtificialHorizonColor",
i18n(
"Artificial Horizon"),
"#C82828");
65 appendItem(
"RAGuideError",
i18n(
"RA Guide Error"),
"#00FF00");
66 appendItem(
"DEGuideError",
i18n(
"DEC Guide Error"),
"#00A5FF");
67 appendItem(
"SolverFOVColor",
i18n(
"Solver FOV"),
"#FFFFFF");
68 appendItem(
"SensorFOVColor",
i18n(
"Sensor FOV"),
"#FFAA00");
69 appendItem(
"HIPSGridColor",
i18n(
"HiPS Grid"),
"#FFFFFF");
70 appendItem(
"DomeColor",
i18n(
"Dome Slit"),
"#445566");
71 appendItem(
"FITSObjectLabelColor",
i18n(
"FITS Image Object Label"),
"#00FF00");
72 appendItem(
"FITSObjectHighlightLabelColor",
i18n(
"FITS Image Object Highlight Label"),
"#FF0000");
79 StarColorIntensity = 4;
94 qWarning() <<
"No color named" << name <<
"found in color scheme.";
98 return QColor(Palette[name]);
103 return QColor(Palette[KeyName.at(i)]);
113 return KeyName.
at(i);
118 return nameAt(KeyName.indexOf(key));
124 Palette.insert(key, color);
134 int inew = 0, iold = 0;
138 if (name ==
i18nc(
"use default color scheme",
"Default Colors"))
139 filename =
"classic.colors";
140 if (name ==
i18nc(
"use 'star chart' color scheme",
"Star Chart"))
141 filename =
"chart.colors";
142 if (name ==
i18nc(
"use 'night vision' color scheme",
"Night Vision"))
143 filename =
"night.colors";
147 ok = KSUtils::openDataFile(file, filename);
156 ok = KSUtils::openDataFile(file, filename);
161 qDebug() << Q_FUNC_INFO <<
QString(
"Unable to load color scheme named %1. Also tried %2.").
arg(name, filename);
174 if (modes.
count() > 0)
176 int newmode = modes[0].toInt(&ok);
182 if (modes.
count() > 1)
184 int newintens = modes[1].toInt(&ok);
191 if (modes.
count() > 2)
193 int newintens = modes[2].toInt(&ok);
201 while (!stream.
atEnd())
205 if (line.
count(
':') ==
216 if (KeyName.contains(tkey))
223 if (KeyName.contains(k))
229 qWarning() <<
"Could not use the key \"" << tkey <<
"\" from the color scheme file \"" << filename
230 <<
"\". I also tried \"" << k <<
"\".";
243 foreach (
const QString &key, KeyName)
261 for (
int i = 0; i < filename.
length(); ++i)
262 if (filename.
at(i) ==
' ')
265 filename = filename.
append(
".colors");
272 KSNotification::sorry(
i18n(
"Local color scheme file could not be opened.\nScheme cannot be recorded."));
278 stream << StarColorMode <<
":" << StarColorIntensity <<
":" << DarkPalette <<
'\n';
280 foreach (
const QString &key, KeyName)
281 stream << Palette[key] <<
" :" << key <<
'\n';
290 KSNotification::sorry(
i18n(
"Local color scheme index file could not be opened.\nScheme cannot be recorded."));
295 QString schemeLine = name +
':' + filename;
300 while (stream.
atEnd() ==
false)
303 if (line == schemeLine)
312 stream << schemeLine <<
'\n';
319 KSNotification::sorry(
"Invalid filename requested.\nScheme cannot be recorded.");
332 for (
int i = 0; i < KeyName.size(); ++i)
333 setColor(KeyName.at(i), cg.
readEntry(KeyName.at(i).toUtf8().constData(), Default.at(i)));
338 FileName = cg.
readEntry(
"ColorSchemeFile",
"moonless-night.colors");
344 for (
int i = 0; i < KeyName.size(); ++i)
358 StarColorMode = mode;
359 Options::setStarColorMode(mode);
368 DarkPalette = enable ? 1 : 0;
369 Options::setDarkAppColors(enable);
378 StarColorIntensity = intens;
379 Options::setStarColorIntensity(intens);
387 StarColorMode = mode;
388 StarColorIntensity = intens;
389 Options::setStarColorMode(mode);
390 Options::setStarColorIntensity(intens);
bool save(const QString &name)
Save the current color scheme to a *.colors file.
void saveToConfig()
Save color-scheme data to the Config object.
void setStarColorModeIntensity(int mode, int intens)
Set the star color mode and intensity value used by the color scheme mode the star color mode to use ...
QColor colorNamed(const QString &name) const
Retrieve a color by name.
int starColorIntensity() const
int starColorMode() const
void setStarColorIntensity(int intens)
Set the star color intensity value used by the color scheme intens The star color intensity value.
bool hasColorNamed(const QString &name) const
QString nameFromKey(const QString &key) const
QColor colorAt(int i) const
i the index of the color to retrieve
QString nameAt(int i) const
i the index of the long name to retrieve
void setDarkPalette(bool enable)
setDarkPalette Set whether the color schemes uses dark palette
QString keyAt(int i) const
i the index of the key name to retrieve
bool load(const QString &filename)
Load a color scheme from a *.colors file filename the filename of the color scheme to be loaded.
void setColor(const QString &key, const QString &color)
Change the color with the given key to the given value key the key-name of the color to be changed co...
void loadFromConfig()
Read color-scheme data from the Config object.
void setStarColorMode(int mode)
Set the star color mode used by the color scheme mode the star color mode to use.
ColorScheme()
Constructor.
bool useDarkPalette() const
KConfigGroup group(const QString &group)
void writeEntry(const char *key, const char *value, WriteConfigFlags pFlags=Normal)
QString readEntry(const char *key, const char *aDefault=nullptr) const
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
static void initStarImages()
Recalculates the star pixmaps.
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
QString name(NameFormat format) const const
bool open(FILE *fh, OpenMode mode, FileHandleFlags handleFlags)
void setFileName(const QString &name)
virtual void close() override
void append(QList< T > &&value)
qsizetype count() const const
qsizetype count() const const
QString & append(QChar ch)
QString arg(Args &&... args) const const
const QChar at(qsizetype position) const const
bool endsWith(QChar c, Qt::CaseSensitivity cs) const const
qsizetype indexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
QString left(qsizetype n) const const
qsizetype length() const const
QString mid(qsizetype position, qsizetype n) const const
QString & replace(QChar before, QChar after, Qt::CaseSensitivity cs)
QStringList split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) const const
QString toLower() const const
QString trimmed() const const
QString readLine(qint64 maxlen)