trunk 20080912
[gitenigma.git] / lib / gui / statusbar.cpp
blob0d8e7b1b2836f01723e012a1c9ca58b47ff2f47a
1 #include <lib/gui/statusbar.h>
3 #include <lib/system/init.h>
4 #include <lib/system/init_num.h>
5 #include <lib/gui/eskin.h>
6 #include <lib/gdi/font.h>
8 eStatusBar::eStatusBar( eWidget* parent, const char *deco)
9 :eLabel(parent, 0, 0, deco), current(0)
11 setFont( eSkin::getActive()->queryFont("eStatusBar") );
12 setForegroundColor ( eSkin::getActive()->queryColor("eStatusBar.foreground") );
13 setBackgroundColor ( eSkin::getActive()->queryColor("eStatusBar.background") );
14 eLabel::setFlags( RS_WRAP | eLabel::flagVCenter );
15 initialize();
19 void eStatusBar::initialize()
21 if ( parent )
23 if ( flags & flagOwnerDraw )
25 if ( conn.connected() )
26 conn.disconnect();
28 else
29 conn = CONNECT( parent->focusChanged, eStatusBar::update );
33 void eStatusBar::update( const eWidget* p )
35 if (p)
37 current = p;
38 setText( current->getHelpText() );
42 void eStatusBar::setFlags( int fl )
44 eLabel::setFlags(fl);
45 initialize();
48 int eStatusBar::setProperty(const eString &prop, const eString &value)
50 if (prop=="ownerDraw")
51 flags |= flagOwnerDraw;
52 else
53 return eLabel::setProperty(prop, value);
55 initialize();
57 return 0;
60 static eWidget *create_eStatusBar(eWidget *parent)
62 return new eStatusBar(parent);
65 class eStatusBarSkinInit
67 public:
68 eStatusBarSkinInit()
70 eSkin::addWidgetCreator("eStatusBar", create_eStatusBar);
72 ~eStatusBarSkinInit()
74 eSkin::removeWidgetCreator("eStatusBar", create_eStatusBar);
78 eAutoInitP0<eStatusBarSkinInit> init_eStatusBarSkinInit(eAutoInitNumbers::guiobject, "eStatusBar");