1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef __lib_gui_elistboxcontent_h
#define __lib_gui_elistboxcontent_h
#include <lib/python/python.h>
#include <lib/gui/elistbox.h>
class eListboxPythonStringContent: public virtual iListboxContent
{
DECLARE_REF(eListboxPythonStringContent);
public:
eListboxPythonStringContent();
~eListboxPythonStringContent();
void setList(SWIG_PYOBJECT(ePyObject) list);
PyObject *getCurrentSelection();
int getCurrentSelectionIndex() { return m_cursor; }
void invalidateEntry(int index);
void invalidate();
eSize getItemSize() { return m_itemsize; }
#ifndef SWIG
protected:
void cursorHome();
void cursorEnd();
int cursorMove(int count=1);
int cursorValid();
int cursorSet(int n);
int cursorGet();
virtual int currentCursorSelectable();
void cursorSave();
void cursorRestore();
int size();
RESULT connectItemChanged(const Slot0<void> &itemChanged, ePtr<eConnection> &connection);
// void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
void setSize(const eSize &size);
/* the following functions always refer to the selected item */
virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
int getItemHeight() { return m_itemheight; }
protected:
ePyObject m_list;
int m_cursor, m_saved_cursor;
eSize m_itemsize;
int m_itemheight;
#endif
};
class eListboxPythonConfigContent: public eListboxPythonStringContent
{
public:
void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
void setSeperation(int sep) { m_seperation = sep; }
int currentCursorSelectable();
private:
int m_seperation;
};
class eListboxPythonMultiContent: public eListboxPythonStringContent
{
ePyObject m_buildFunc;
ePyObject m_selectableFunc;
ePyObject m_template;
eRect m_selection_clip;
gRegion m_clip, m_old_clip;
public:
eListboxPythonMultiContent();
~eListboxPythonMultiContent();
enum { TYPE_TEXT, TYPE_PROGRESS, TYPE_PIXMAP, TYPE_PIXMAP_ALPHATEST, TYPE_PIXMAP_ALPHABLEND };
void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
int currentCursorSelectable();
void setList(SWIG_PYOBJECT(ePyObject) list);
void setFont(int fnt, gFont *font);
void setBuildFunc(SWIG_PYOBJECT(ePyObject) func);
void setSelectableFunc(SWIG_PYOBJECT(ePyObject) func);
void setItemHeight(int height);
void setSelectionClip(eRect &rect, bool update=false);
void updateClip(gRegion &);
void entryRemoved(int idx);
void setTemplate(SWIG_PYOBJECT(ePyObject) tmplate);
private:
std::map<int, ePtr<gFont> > m_font;
};
#ifdef SWIG
#define RT_HALIGN_LEFT 0
#define RT_HALIGN_RIGHT 1
#define RT_HALIGN_CENTER 2
#define RT_HALIGN_BLOCK 4
#define RT_VALIGN_TOP 0
#define RT_VALIGN_CENTER 8
#define RT_VALIGN_BOTTOM 16
#define RT_WRAP 32
#endif // SWIG
#endif
|