Files
rtorrent/src/input/text_input.cc
T
rakshasa ce4c09c143 Various minor fixes to the 0.0.1 release.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@277 e378c898-3ddf-0310-93e7-cc216c733640
2005-02-15 01:00:53 +00:00

90 lines
1.2 KiB
C++

#include "config.h"
#include <ncurses.h>
#include "text_input.h"
#include <sstream>
namespace input {
bool
TextInput::pressed(int key) {
//std::stringstream str;
if (m_alt) {
m_alt = false;
switch (key) {
// case 'b':
// Base::insert(m_pos, "M^b");
// break;
// case 'f':
// Base::insert(m_pos, "M^f");
// 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 0x02:
case KEY_LEFT:
if (m_pos != 0)
--m_pos;
break;
case 0x06:
case KEY_RIGHT:
if (m_pos != size())
++m_pos;
break;
case 0x1B:
m_alt = true;
break;
default:
return false;
// Testcode.
// if (key == KEY_ENTER || key == '\n')
// return false;
// str << "\\x" << std::hex << key;
// Base::insert(m_pos, str.str());
// m_pos += str.str().length();
// return true;
}
}
m_slotDirty();
return true;
}
}