void eListBoxBase::setItemHeight(int itemHeight) { if(!itemHeight)return; item_height=itemHeight; event(eWidgetEvent(eWidgetEvent::changedSize)); }
void eWidget::setText(const eString &label) { if (label != text) // ein compare ist immer weniger arbeit als ein unnoetiges redraw { text=label; event(eWidgetEvent(eWidgetEvent::changedText)); } }
void eWidget::setPixmap(gPixmap *pmap) { if ( pixmap != pmap ) { pixmap=pmap; event(eWidgetEvent(eWidgetEvent::changedPixmap)); } }
/* das ist bestimmt ne einzige race hier :) */ int eWidget::exec() { if (in_loop) eFatal("double exec"); in_loop=-1; // hey, exec hat angefangen aber noch nicht in der mainloop event(eWidgetEvent(eWidgetEvent::execBegin)); // hat jemand was dagegen einzuwenden? if (in_loop) // hatte wohl jemand. { in_loop=1; // wir betreten die mainloop eApp->enter_loop(); // oder wir machen das halt selber. in_loop=0; // nu sind wir jedenfalls draussen. } event(eWidgetEvent(eWidgetEvent::execDone)); return result; }
void eWidget::move(const ePoint& nposition) { bool b = position != nposition; position=nposition; recalcAbsolutePosition(); recalcClip(); if ( b ) event(eWidgetEvent(eWidgetEvent::changedPosition)); }
void eWidget::resize(const eSize& nsize) { bool b = size != nsize; size=nsize; recalcClientRect(); if ( b ) event(eWidgetEvent(eWidgetEvent::changedSize)); recalcClip(); }
void eWidget::setForegroundColor(const gColor& color, bool inv) { if (color != foregroundColor) { foregroundColor=color; event(eWidgetEvent(eWidgetEvent::changedForegroundColor)); if (inv) invalidate(); } }
void eWidget::setBackgroundColor(const gColor& color, bool inv) { if (color!=backgroundColor) { backgroundColor=color; event(eWidgetEvent(eWidgetEvent::changedBackgroundColor)); if (inv) invalidate(); } }
void eWidget::setFocus(eWidget *newfocus) { if (parent && parent->parent) return getTLW()->setFocus(newfocus); if (focus == newfocus) return; if (focus) focus->event(eWidgetEvent(eWidgetEvent::lostFocus)); focus=newfocus; if (focus) focus->event(eWidgetEvent(eWidgetEvent::gotFocus)); _focusList.setCurrent(focus); /* emit */ focusChanged(focus); }
void eWidget::setFont(const gFont &fnt) { font=fnt; event(eWidgetEvent(eWidgetEvent::changedFont)); }
int eWidget::eventHandler(const eWidgetEvent &evt) { switch (evt.type) { case eWidgetEvent::childChangedHelpText: /* emit */ focusChanged(focus); // faked focusChanged Signal to the Statusbar break; case eWidgetEvent::evtAction: if (evt.action == shortcut && isVisible()) (shortcutFocusWidget?shortcutFocusWidget:this)-> event(eWidgetEvent(eWidgetEvent::evtShortcut)); else if (evt.action == &i_focusActions->up) focusNext(focusDirPrev); else if (evt.action == &i_focusActions->down) focusNext(focusDirNext); else if (evt.action == &i_focusActions->left) focusNext(focusDirPrev); else if (evt.action == &i_focusActions->right) focusNext(focusDirNext); else if (evt.action == &i_cursorActions->help) { int wasvisible=state&stateShow; if (wasvisible) hide(); /* emit */ showHelp( &actionHelpList, helpID ); if (wasvisible) show(); } else return 0; return 1; case eWidgetEvent::evtKey: { eActionPrioritySet prio; findAction(prio, *evt.key, this); if (focus && (focus != this)) focus->findAction(prio, *evt.key, focus); for (actionMapList::iterator i = globalActions.begin(); i != globalActions.end(); ++i) { const std::set<eString> &styles=eActionMapList::getInstance()->getCurrentStyles(); for (std::set<eString>::const_iterator si(styles.begin()); si != styles.end(); ++si) (*i)->findAction(prio, *evt.key, 0, *si); } for (eActionPrioritySet::iterator i(prio.begin()); i != prio.end(); ++i) { if (i->first) { if (((eWidget*)i->first)->event(eWidgetEvent(eWidgetEvent::evtAction, i->second))) break; } else { (const_cast<eAction*>(i->second))->handler(); // only useful for global actions break; } } if (focus) { /* Action not found, try to use old Keyhandle */ int c = evt.key->producer->getKeyCompatibleCode(*evt.key); if (c != -1) { if (evt.key->flags & eRCKey::flagBreak) focus->keyUp(c); else focus->keyDown(c); } } return 1; break; } case eWidgetEvent::gotFocus: gotFocus(); break; case eWidgetEvent::lostFocus: lostFocus(); break; case eWidgetEvent::changedSize: case eWidgetEvent::changedFont: case eWidgetEvent::changedPosition: case eWidgetEvent::changedPixmap: invalidate(); break; case eWidgetEvent::evtShortcut: setFocus(this); break; case eWidgetEvent::wantClose: /* if (in_loop==0) eFatal("attempt to close non-execing widget");*/ if (in_loop==1) // nur wenn das ne echte loop ist { in_loop=-1; eApp->exit_loop(); } result=evt.parameter; break; default: break; } return 0; }
void eWidget::close(int res) { event(eWidgetEvent(eWidgetEvent::wantClose,res)); }
void eWidget::willHide() { event(eWidgetEvent(eWidgetEvent::willHide)); }
void eWidget::willShow() { event(eWidgetEvent(eWidgetEvent::willShow)); }