aboutsummaryrefslogtreecommitdiff
path: root/lib/gui
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-11-09 00:13:20 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-11-09 00:13:20 +0000
commit612e765ceb09fce886ffc02120f039f7d880048f (patch)
tree2b0bb67fe3e1a4e81b21b12bd57293caf1038c23 /lib/gui
parentbae4b8c8df551c8a32ce9611ad1691ccb405791a (diff)
downloadenigma2-612e765ceb09fce886ffc02120f039f7d880048f.tar.gz
enigma2-612e765ceb09fce886ffc02120f039f7d880048f.zip
add foregroundcolor selected and backgroundcolor selected to local listbox
styles (backgroundColorSelected, foregroundColorSelected in skin) add EntryForegroundColorSelected support to GraphMultiEPG add possibility to set selected foregroundcolor for listboxmulticontent entries
Diffstat (limited to 'lib/gui')
-rw-r--r--lib/gui/elistbox.cpp12
-rw-r--r--lib/gui/elistbox.h6
-rw-r--r--lib/gui/elistboxcontent.cpp155
3 files changed, 131 insertions, 42 deletions
diff --git a/lib/gui/elistbox.cpp b/lib/gui/elistbox.cpp
index c7a46baa..383ac42d 100644
--- a/lib/gui/elistbox.cpp
+++ b/lib/gui/elistbox.cpp
@@ -483,12 +483,24 @@ void eListbox::setBackgroundColor(gRGB &col)
m_style.m_background_color_set = 1;
}
+void eListbox::setBackgroundColorSelected(gRGB &col)
+{
+ m_style.m_background_color_selected = col;
+ m_style.m_background_color_selected_set = 1;
+}
+
void eListbox::setForegroundColor(gRGB &col)
{
m_style.m_foreground_color = col;
m_style.m_foreground_color_set = 1;
}
+void eListbox::setForegroundColorSelected(gRGB &col)
+{
+ m_style.m_foreground_color_selected = col;
+ m_style.m_foreground_color_selected_set = 1;
+}
+
void eListbox::setBackgroundPicture(ePtr<gPixmap> &pm)
{
m_style.m_background = pm;
diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h
index 20f23b5b..e3234322 100644
--- a/lib/gui/elistbox.h
+++ b/lib/gui/elistbox.h
@@ -59,8 +59,8 @@ struct eListboxStyle
{
ePtr<gPixmap> m_background, m_selection;
int m_transparent_background;
- gRGB m_background_color, m_foreground_color;
- int m_background_color_set, m_foreground_color_set;
+ gRGB m_background_color, m_background_color_selected, m_foreground_color, m_foreground_color_selected;
+ int m_background_color_set, m_foreground_color_set, m_background_color_selected_set, m_foreground_color_selected_set;
/*
{m_transparent_background m_background_color_set m_background}
@@ -120,7 +120,9 @@ public:
void setSelectionEnable(int en);
void setBackgroundColor(gRGB &col);
+ void setBackgroundColorSelected(gRGB &col);
void setForegroundColor(gRGB &col);
+ void setForegroundColorSelected(gRGB &col);
void setBackgroundPicture(ePtr<gPixmap> &pixmap);
void setSelectionPicture(ePtr<gPixmap> &pixmap);
diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp
index 8331ca11..39509064 100644
--- a/lib/gui/elistboxcontent.cpp
+++ b/lib/gui/elistboxcontent.cpp
@@ -147,15 +147,29 @@ void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style,
if (m_listbox)
local_style = m_listbox->getLocalStyle();
- /* if we have a local background color set, use that. */
- if (local_style && local_style->m_background_color_set)
- painter.setBackgroundColor(local_style->m_background_color);
-
- /* same for foreground */
- if (local_style && local_style->m_foreground_color_set)
- painter.setForegroundColor(local_style->m_foreground_color);
+ if (local_style)
+ {
+ if (selected)
+ {
+ /* if we have a local background color set, use that. */
+ if (local_style->m_background_color_selected_set)
+ painter.setBackgroundColor(local_style->m_background_color_selected);
+ /* same for foreground */
+ if (local_style->m_foreground_color_selected_set)
+ painter.setForegroundColor(local_style->m_foreground_color_selected);
+ }
+ else
+ {
+ /* if we have a local background color set, use that. */
+ if (local_style->m_background_color_set)
+ painter.setBackgroundColor(local_style->m_background_color);
+ /* same for foreground */
+ if (local_style->m_foreground_color_set)
+ painter.setForegroundColor(local_style->m_foreground_color);
+ }
+ }
- /* if we have no transparent background */
+ /* if we have no transparent background */
if (!local_style || !local_style->m_transparent_background)
{
/* blit background picture, if available (otherwise, clear only) */
@@ -268,13 +282,27 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style,
if (m_listbox)
local_style = m_listbox->getLocalStyle();
- /* if we have a local background color set, use that. */
- if (local_style && local_style->m_background_color_set)
- painter.setBackgroundColor(local_style->m_background_color);
-
- /* same for foreground */
- if (local_style && local_style->m_foreground_color_set)
- painter.setForegroundColor(local_style->m_foreground_color);
+ if (local_style)
+ {
+ if (selected)
+ {
+ /* if we have a local background color set, use that. */
+ if (local_style->m_background_color_selected_set)
+ painter.setBackgroundColor(local_style->m_background_color_selected);
+ /* same for foreground */
+ if (local_style->m_foreground_color_selected_set)
+ painter.setForegroundColor(local_style->m_foreground_color_selected);
+ }
+ else
+ {
+ /* if we have a local background color set, use that. */
+ if (local_style->m_background_color_set)
+ painter.setBackgroundColor(local_style->m_background_color);
+ /* same for foreground */
+ if (local_style->m_foreground_color_set)
+ painter.setForegroundColor(local_style->m_foreground_color);
+ }
+ }
if (!local_style || !local_style->m_transparent_background)
/* if we have no transparent background */
@@ -472,7 +500,7 @@ void eListboxPythonMultiContent::setSelectionClip(eRect &rect, bool update)
m_listbox->entryChanged(m_cursor);
}
-static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *local_style, ePyObject pforeColor, ePyObject pbackColor, ePyObject pbackColorSelected, int selected, gRegion &rc, eRect &sel_clip)
+static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *local_style, ePyObject pforeColor, ePyObject pforeColorSelected, ePyObject pbackColor, ePyObject pbackColorSelected, int selected, gRegion &rc, eRect &sel_clip)
{
if (selected && sel_clip.valid())
{
@@ -500,6 +528,8 @@ static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *l
int color = PyInt_AsLong(pbackColorSelected);
painter.setBackgroundColor(gRGB(color));
}
+ else if (local_style && local_style->m_background_color_selected_set)
+ painter.setBackgroundColor(local_style->m_background_color_selected);
painter.clear();
painter.clippop();
}
@@ -513,6 +543,8 @@ static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *l
int color = PyInt_AsLong(pbackColorSelected);
painter.setBackgroundColor(gRGB(color));
}
+ else if (local_style && local_style->m_background_color_selected_set)
+ painter.setBackgroundColor(local_style->m_background_color_selected);
painter.clear();
}
else
@@ -536,13 +568,28 @@ static void clearRegion(gPainter &painter, eWindowStyle &style, eListboxStyle *l
painter.clear();
}
}
- if (pforeColor)
+ if (selected)
{
- int color = PyInt_AsLong(pforeColor);
- painter.setForegroundColor(gRGB(color));
- }/* if we have a local foreground color set, use that. */
- else if (local_style && local_style->m_foreground_color_set)
- painter.setForegroundColor(local_style->m_foreground_color);
+ if (pforeColorSelected)
+ {
+ int color = PyInt_AsLong(pforeColor);
+ painter.setForegroundColor(gRGB(color));
+ }
+ /* if we have a local foreground color set, use that. */
+ else if (local_style && local_style->m_foreground_color_selected_set)
+ painter.setForegroundColor(local_style->m_foreground_color_selected);
+ }
+ else
+ {
+ if (pforeColor)
+ {
+ int color = PyInt_AsLong(pforeColor);
+ painter.setForegroundColor(gRGB(color));
+ }
+ /* if we have a local foreground color set, use that. */
+ else if (local_style && local_style->m_foreground_color_set)
+ painter.setForegroundColor(local_style->m_foreground_color);
+ }
}
void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
@@ -559,7 +606,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
painter.clip(itemregion);
- clearRegion(painter, style, local_style, ePyObject(), ePyObject(), ePyObject(), selected, itemregion, sel_clip);
+ clearRegion(painter, style, local_style, ePyObject(), ePyObject(), ePyObject(), ePyObject(), selected, itemregion, sel_clip);
ePyObject items;
@@ -625,7 +672,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
case TYPE_TEXT: // text
{
/*
- (0, x, y, width, height, fnt, flags, "bla" [, color, backColor, backColorSelected, borderWidth, borderColor] )
+ (0, x, y, width, height, fnt, flags, "bla" [, color, colorSelected, backColor, backColorSelected, borderWidth, borderColor] )
*/
ePyObject px = PyTuple_GET_ITEM(item, 1),
py = PyTuple_GET_ITEM(item, 2),
@@ -634,7 +681,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
pfnt = PyTuple_GET_ITEM(item, 5),
pflags = PyTuple_GET_ITEM(item, 6),
pstring = PyTuple_GET_ITEM(item, 7),
- pforeColor, pbackColor, pbackColorSelected, pborderWidth, pborderColor;
+ pforeColor, pforeColorSelected, pbackColor, pbackColorSelected, pborderWidth, pborderColor;
if (!(px && py && pwidth && pheight && pfnt && pflags && pstring))
{
@@ -650,20 +697,34 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
}
if (size > 9)
{
- pbackColor = PyTuple_GET_ITEM(item, 9);
+ pforeColorSelected = PyTuple_GET_ITEM(item, 9);
+ if (pforeColorSelected == Py_None)
+ pforeColorSelected=ePyObject();
+ }
+ if (size > 10)
+ {
+ pbackColor = PyTuple_GET_ITEM(item, 10);
if (pbackColor == Py_None)
pbackColor=ePyObject();
}
- if (size > 10)
+ if (size > 11)
{
- pbackColorSelected = PyTuple_GET_ITEM(item, 10);
+ pbackColorSelected = PyTuple_GET_ITEM(item, 11);
if (pbackColorSelected == Py_None)
pbackColorSelected=ePyObject();
}
- if (size > 11)
- pborderWidth = PyTuple_GET_ITEM(item, 11);
if (size > 12)
- pborderColor = PyTuple_GET_ITEM(item, 12);
+ {
+ pborderWidth = PyTuple_GET_ITEM(item, 12);
+ if (pborderWidth == Py_None)
+ pborderWidth=ePyObject();
+ }
+ if (size > 13)
+ {
+ pborderColor = PyTuple_GET_ITEM(item, 13);
+ if (pborderColor == Py_None)
+ pborderColor=ePyObject();
+ }
const char *string = (PyString_Check(pstring)) ? PyString_AsString(pstring) : "<not-a-string>";
int x = PyInt_AsLong(px) + offset.x();
@@ -682,10 +743,10 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
eRect rect(x+bwidth, y+bwidth, width-bwidth*2, height-bwidth*2);
painter.clip(rect);
- if (pbackColor || pbackColorSelected || pforeColor)
+ if (pbackColor || pbackColorSelected || pforeColor || pforeColorSelected)
{
gRegion rc(rect);
- clearRegion(painter, style, local_style, pforeColor, pbackColor, pbackColorSelected, selected, rc, sel_clip);
+ clearRegion(painter, style, local_style, pforeColor, pforeColorSelected, pbackColor, pbackColorSelected, selected, rc, sel_clip);
reset_colors=true;
}
@@ -732,7 +793,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
pwidth = PyTuple_GET_ITEM(item, 3),
pheight = PyTuple_GET_ITEM(item, 4),
pfilled_perc = PyTuple_GET_ITEM(item, 5),
- pborderWidth, pforeColor, pbackColor, pbackColorSelected;
+ pborderWidth, pforeColor, pforeColorSelected, pbackColor, pbackColorSelected;
if (!(px && py && pwidth && pheight && pfilled_perc))
{
@@ -741,18 +802,32 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
}
if (size > 6)
+ {
pborderWidth = PyTuple_GET_ITEM(item, 6);
+ if (pborderWidth == Py_None)
+ pborderWidth = ePyObject();
+ }
if (size > 7)
+ {
pforeColor = PyTuple_GET_ITEM(item, 7);
+ if (pforeColor == Py_None)
+ pforeColor = ePyObject();
+ }
if (size > 8)
{
- pbackColor = PyTuple_GET_ITEM(item, 8);
+ pforeColorSelected = PyTuple_GET_ITEM(item, 8);
+ if (pforeColorSelected == Py_None)
+ pforeColorSelected=ePyObject();
+ }
+ if (size > 9)
+ {
+ pbackColor = PyTuple_GET_ITEM(item, 9);
if (pbackColor == Py_None)
pbackColor=ePyObject();
}
- if (size > 9)
+ if (size > 10)
{
- pbackColorSelected = PyTuple_GET_ITEM(item, 9);
+ pbackColorSelected = PyTuple_GET_ITEM(item, 10);
if (pbackColorSelected == Py_None)
pbackColorSelected=ePyObject();
}
@@ -766,10 +841,10 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
eRect rect(x, y, width, height);
painter.clip(rect);
- if (pbackColor || pbackColorSelected || pforeColor)
+ if (pbackColor || pbackColorSelected || pforeColor || pforeColorSelected)
{
gRegion rc(rect);
- clearRegion(painter, style, local_style, pforeColor, pbackColor, pbackColorSelected, selected, rc, sel_clip);
+ clearRegion(painter, style, local_style, pforeColor, pforeColorSelected, pbackColor, pbackColorSelected, selected, rc, sel_clip);
reset_colors=true;
}
@@ -843,7 +918,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
if (pbackColor || pbackColorSelected)
{
gRegion rc(rect);
- clearRegion(painter, style, local_style, ePyObject(), pbackColor, pbackColorSelected, selected, rc, sel_clip);
+ clearRegion(painter, style, local_style, ePyObject(), ePyObject(), pbackColor, pbackColorSelected, selected, rc, sel_clip);
reset_colors=true;
}