add support for local listbox styles to eListboxPythonConfigContent
[enigma2.git] / lib / gui / elistbox.h
index 87013bc1617fa6986e4a660cf81c189df74f68e8..1cadf74b75085d4c0b8537fbc9471f1c73b1fc21 100644 (file)
@@ -38,6 +38,8 @@ protected:
        
        virtual int size()=0;
        
+       virtual int currentCursorSelectable();
+       
        void setListbox(eListbox *lb);
        
        // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
@@ -46,10 +48,29 @@ protected:
                /* the following functions always refer to the selected item */
        virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0;
        
+       virtual int getItemHeight()=0;
+       
        eListbox *m_listbox;
 #endif
 };
 
+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;
+
+               /*
+                       {m_transparent_background m_background_color_set m_background}
+                       {0 0 0} use global background color
+                       {0 1 x} use background color
+                       {0 0 p} use background picture
+                       {1 x 0} use transparent background
+                       {1 x p} use transparent background picture
+               */
+};
+
 class eListbox: public eWidget
 {
        void updateScrollBar();
@@ -65,9 +86,10 @@ public:
                showNever
        };
        void setScrollbarMode(int mode);
+       void setWrapAround(bool);
 
        void setContent(iListboxContent *content);
-       
+
 /*     enum Movement {
                moveUp,
                moveDown,
@@ -79,6 +101,9 @@ public:
        int getCurrentIndex();
        void moveSelection(int how);
        void moveSelectionTo(int index);
+       void moveToEnd();
+       bool atBegin();
+       bool atEnd();
 
        enum ListboxActions {
                moveUp,
@@ -89,9 +114,16 @@ public:
                pageDown,
                justCheck
        };
-       
+
        void setItemHeight(int h);
        void setSelectionEnable(int en);
+
+       void setBackgroundColor(gRGB &col);
+       void setForegroundColor(gRGB &col);
+       void setBackgroundPicture(ePtr<gPixmap> &pixmap);
+       void setSelectionPicture(ePtr<gPixmap> &pixmap);
+
+       struct eListboxStyle *getLocalStyle(void);
 #ifndef SWIG
                /* entryAdded: an entry was added *before* the given index. it's index is the given number. */
        void entryAdded(int index);
@@ -109,6 +141,7 @@ protected:
 private:
        int m_scrollbar_mode, m_prev_scrollbar_page;
        bool m_content_changed;
+       bool m_enabled_wrap_around;
 
        int m_top, m_selected;
        int m_itemheight;
@@ -116,6 +149,7 @@ private:
        int m_selection_enabled;
        ePtr<iListboxContent> m_content;
        eSlider *m_scrollbar;
+       eListboxStyle m_style;
 #endif
 };