Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-16 16:34:15 +0000
committerStijn Buys <ingar@osirion.org>2008-10-16 16:34:15 +0000
commit1a28393dabf4f4696bf433ddde52e7a25253c955 (patch)
tree4d4fa4034f30fc882a78ab6ea148a32e83b9e88c /src/ui/input.cc
parent1e0df536c2fae85c317ce9c3cc17603d5f98c911 (diff)
various user interface related updates
Diffstat (limited to 'src/ui/input.cc')
-rw-r--r--src/ui/input.cc184
1 files changed, 0 insertions, 184 deletions
diff --git a/src/ui/input.cc b/src/ui/input.cc
deleted file mode 100644
index 8113354..0000000
--- a/src/ui/input.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- ui/input.cc
- This file is part of the Osirion project and is distributed under
- the terms of the GNU General Public License version 2
-*/
-
-#include "ui/input.h"
-#include "ui/paint.h"
-#include "auxiliary/functions.h"
-#include "core/core.h"
-
-namespace ui
-{
-
-Input::Input(Widget *parent) : Widget(parent)
-{
- input_text.clear();
- input_pos = 0;
-
- set_label("input");
- set_background(false);
- set_border(false);
-}
-
-Input::~Input()
-{
-}
-
-void Input::clear()
-{
- input_text.clear();
- input_pos = 0;
-}
-void Input::set_text(std::string const &text)
-{
- input_text.assign(text);
- input_pos = input_text.size();
-}
-
-void Input::set_text(const char *text)
-{
- if (text)
- input_text.assign(text);
- else
- input_text.clear();
- input_pos = input_text.size();
-}
-
-void Input::draw()
-{
- draw_background();
- draw_border();
-
- size_t text_width = (size_t) floorf(width() / font()->width());
- math::Vector2f v(global_location());
- paint::color(palette()->foreground());
-
- // draw the part before the cursor
- std::string firstpart(input_text.substr(0, input_pos));
- size_t draw_width = 0;
- const char *c = firstpart.c_str();
-
- while (*c) {
- if (aux::is_color_code(c)) {
- c++;
- } else {
- draw_width++;
- }
- c++;
- }
-
- c = firstpart.c_str();
- while (*c && draw_width > text_width - 2) {
- if (aux::is_color_code(c)) {
- c++;
- paint::color_code(*c);
- } else {
- draw_width--;
- }
- c++;
- }
-
- if (*c) {
- paint::text(v, size(), font(), std::string(c), AlignLeft | AlignVCenter);
- }
-
- // draw the part behind the cursor
- v.x += draw_width * font()->width();
- if (input_pos < input_text.size()) {
- if (input_pos > 1 && aux::is_color_code(input_text.c_str() + input_pos -1)) {
- paint::color_code(input_text[input_pos]);
- }
- // limit to width
- std::string secondpart;
- c = &input_text.c_str()[input_pos];
- while (*c && (draw_width <= (text_width - 2))) {
- if (aux::is_color_code(c)) {
- c++;
- } else {
- draw_width++;
- secondpart += *c;
- }
- c++;
- }
-
- paint::text(v, size(), font(), secondpart, AlignLeft | AlignVCenter);
- }
-
- // draw the cursor
- if (has_input_focus() && (core::application()->time() - ::floorf(core::application()->time())) < 0.5f) {
- std::string cursor("^B");
- cursor += (char) 11;
- paint::text(v, size(), font(), cursor, AlignLeft | AlignVCenter);
- }
-}
-
-bool Input::on_keypress(const int key, const unsigned int modifier)
-{
- switch (key) {
- case SDLK_TAB:
- // FIXME should not be here
- core::CommandBuffer::complete(input_text, input_pos);
- return true;
- break;
-
- case SDLK_HOME:
- input_pos = 0;
- return true;
- break;
-
- case SDLK_END:
- input_pos = input_text.size();
- return true;
- break;
-
- case SDLK_LEFT:
- if (input_pos > 0)
- input_pos--;
- return true;
- break;
-
- case SDLK_RIGHT:
- if (input_pos < input_text.size())
- input_pos++;
- return true;
- break;
-
- case SDLK_DELETE:
- if (input_text.size() && input_pos < input_text.size()) {
- input_text.erase(input_pos, 1);
- }
- return true;
- break;
-
- case SDLK_BACKSPACE:
- if (input_text.size() && input_pos) {
- input_text.erase(input_pos-1, 1);
- input_pos--;
- }
- return true;
- break;
-
- default:
- if ((key >= 32) && (key <175)) {
- if (input_pos == input_text.size())
- input_text += (char)key;
- else
- input_text.insert(input_pos, 1, (char)key);
- input_pos++;
- return true;
- }
- break;
- }
-
- return false;
-}
-bool Input::on_keyrelease(const int key, const unsigned int modifier)
-{
- return false;
-}
-
-}
-
-