diff options
Diffstat (limited to 'plugingui')
| -rw-r--r-- | plugingui/lineedit.cc | 18 | ||||
| -rw-r--r-- | plugingui/lineedit.h | 5 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/plugingui/lineedit.cc b/plugingui/lineedit.cc index 3e1f24b..9308902 100644 --- a/plugingui/lineedit.cc +++ b/plugingui/lineedit.cc @@ -30,6 +30,8 @@  #include "window.h" +#include <hugin.hpp> +  #define BORDER 10  GUI::LineEdit::LineEdit(Widget *parent) @@ -47,6 +49,14 @@ GUI::LineEdit::LineEdit(Widget *parent)    box.bottom      = new Image(":widget_b.png");    box.bottomRight = new Image(":widget_br.png");    box.center      = new Image(":widget_c.png"); + +  handler = NULL; +} + +void GUI::LineEdit::registerEnterPressedHandler(void (*handler)(void *), void *ptr) +{ +  this->handler = handler; +  this->ptr = ptr;  }  void GUI::LineEdit::setReadOnly(bool ro) @@ -62,6 +72,8 @@ bool GUI::LineEdit::readOnly()  void GUI::LineEdit::setText(std::string text)  {    _text = text; +  if(_text.size() < pos) pos = text.size(); +      repaintEvent(NULL);    textChanged();  } @@ -90,6 +102,8 @@ void GUI::LineEdit::keyEvent(GUI::KeyEvent *e)  {    if(readOnly()) return; +  DEBUG(lineedit, "Handling keyevent with text '%s'\n", _text.c_str()); +    bool change = false;    if(e->direction == -1) { @@ -108,6 +122,7 @@ void GUI::LineEdit::keyEvent(GUI::KeyEvent *e)      } else if(e->keycode == GUI::KeyEvent::KEY_DELETE) {        if(pos < _text.length()) { +        printf("AAA: %d\n", pos);          std::string t = _text.substr(0, pos);          t += _text.substr(pos + 1, std::string::npos);          _text = t; @@ -129,8 +144,9 @@ void GUI::LineEdit::keyEvent(GUI::KeyEvent *e)        _text = pre + e->text + post;        change = true;        pos++; +    } else if(e->keycode == GUI::KeyEvent::KEY_ENTER) { +      if(handler) handler(ptr);      } -      repaintEvent(NULL);    } diff --git a/plugingui/lineedit.h b/plugingui/lineedit.h index a159d75..2c37522 100644 --- a/plugingui/lineedit.h +++ b/plugingui/lineedit.h @@ -48,6 +48,8 @@ public:    void setReadOnly(bool readonly);    bool readOnly(); +  void registerEnterPressedHandler(void (*handler)(void *), void *ptr); +    //protected:    virtual void keyEvent(KeyEvent *e);    virtual void repaintEvent(RepaintEvent *e); @@ -65,6 +67,9 @@ private:    size_t pos;    bool readonly; + +  void (*handler)(void *); +  void *ptr;  };  }; | 
