From ba02fb4aced5868d047a5bffbd2ed87583daee4d Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Sun, 9 Jan 2005 16:29:34 +0000 Subject: - add more python stuff - fix some gui/gdi - add eslider - improve windowstyle --- lib/gui/eslider.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 lib/gui/eslider.cpp (limited to 'lib/gui/eslider.cpp') diff --git a/lib/gui/eslider.cpp b/lib/gui/eslider.cpp new file mode 100644 index 00000000..20b3ab47 --- /dev/null +++ b/lib/gui/eslider.cpp @@ -0,0 +1,56 @@ +#include + +eSlider::eSlider(eWidget *parent): eWidget(parent) +{ +} + +int eSlider::event(int event, void *data, void *data2) +{ + switch (event) + { + case evtPaint: + { + ePtr style; + gPainter &painter = *(gPainter*)data2; + + + getStyle(style); + style->paintBackground(painter, ePoint(0, 0), size()); + style->setForegroundStyle(painter); + painter.fill(m_currently_filled); + + return 0; + } + case evtChangedSlider: + { + + int num_pix = 0; + if (m_min < m_max) + num_pix = size().width() * m_value / (m_max - m_min); + gRegion old_currently_filled = m_currently_filled; + m_currently_filled = eRect(0, 0, num_pix, size().height()); + + // redraw what *was* filled before and now isn't. + invalidate(m_currently_filled - old_currently_filled); + // redraw what wasn't filled before and is now. + invalidate(old_currently_filled - m_currently_filled); + + return 0; + } + default: + return eWidget::event(event, data, data2); + } +} + +void eSlider::setValue(int value) +{ + m_value = value; + event(evtChangedSlider); +} + +void eSlider::setRange(int min, int max) +{ + m_min = min; + m_max = max; + event(evtChangedSlider); +} -- cgit v1.2.3