Work on an input field.

git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@272 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2005-02-13 21:47:26 +00:00
parent aec27deaeb
commit 73b1c58f4c
19 changed files with 313 additions and 25 deletions
+79
View File
@@ -0,0 +1,79 @@
#include "config.h"
#include <ncurses.h>
#include "text_input.h"
#include <sstream>
namespace input {
bool
TextInput::pressed(int key) {
if (m_alt) {
m_alt = false;
switch (key) {
case 'p':
Base::insert(m_pos, "M^p");
break;
default:
return false;
}
} else if (key >= 0x20 && key < 0x7F) {
Base::insert(m_pos++, 1, key);
} else {
switch (key) {
case KEY_BACKSPACE:
if (m_pos != 0)
Base::erase(--m_pos, 1);
break;
case KEY_DC:
if (m_pos != size())
Base::erase(m_pos, 1);
break;
case KEY_LEFT:
case 0x10:
if (m_pos != 0)
--m_pos;
break;
case KEY_RIGHT:
case 0x0E:
if (m_pos != size())
++m_pos;
break;
default:
return false;
}
}
m_slotDirty();
return true;
// Testcode.
// if (key == KEY_ENTER || key == '\n')
// return false;
// std::stringstream str;
// str << "\\x" << std::hex << key;
// Base::insert(m_pos, str.str());
// m_pos += str.str().length();
// return true;
}
}