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-21 19:00:39 +0000
committerStijn Buys <ingar@osirion.org>2008-10-21 19:00:39 +0000
commitd79c0223315beaf55fcd10d6891675c4d57b5e2b (patch)
tree3ea902634192dfcffa21a4e7a8cd28da714f0daa /src/client/console.cc
parent9f2e49593639a9f1f3e5f4f7b690ff364afefd56 (diff)
moved client console into libui
Diffstat (limited to 'src/client/console.cc')
-rw-r--r--src/client/console.cc491
1 files changed, 0 insertions, 491 deletions
diff --git a/src/client/console.cc b/src/client/console.cc
deleted file mode 100644
index f4f66c1..0000000
--- a/src/client/console.cc
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- client/console.cc
- This file is part of the Osirion project and is distributed under
- the terms and conditions of the GNU General Public License version 2
-*/
-
-#include <iostream>
-#include <fstream>
-#include <cmath>
-
-#include "auxiliary/functions.h"
-#include "audio/audio.h"
-#include "client/chat.h"
-#include "client/console.h"
-#include "client/video.h"
-#include "client/keyboard.h"
-#include "core/core.h"
-#include "filesystem/filesystem.h"
-#include "render/gl.h"
-#include "ui/paint.h"
-
-namespace client {
-
-const float DEFAULT_CONSOLE_HEIGHT = 0.7f;
-const size_t DEFAULT_MAX_HISTO_LINES = 512;
-
-// the global console buffer object
-ConsoleBuffer Console::con_buffer;
-
-/* -- ConsoleBuffer ------------------------------------------------ */
-ConsoleBuffer::ConsoleBuffer() : sys::ConsoleInterface()
-{
- //con_print << "^BInitializing console..." << std::endl;
-
-}
-
-ConsoleBuffer::~ConsoleBuffer()
-{
- //con_print << "^BShutting down console..." << std::endl;
-}
-
-//--- Console -----------------------------------------------------
-
-Console::Console(ui::Widget *parent) : ui::Window(parent)
-{
- set_visible(false);
- set_border(false);
- set_background(true);
- set_label("console");
-
- history.clear();
- history.push_back("");
- history_pos = history.rbegin();
-
- console_scrollpane = new ui::ScrollPane(this, con_buffer.log());
- console_scrollpane->set_border(false);
- console_scrollpane->set_scroll(0);
-
- console_input = new ui::InputBox(this);
- console_input->set_focus();
- console_input->set_border(false);
- console_input->set_background(false);
- console_input->set_prompt("^N>");
-
- load_history();
-}
-
-Console::~Console()
-{
- save_history();
- history.clear();
-}
-
-void Console::show()
-{
- ui::Window::show();
- SDL_WM_GrabInput(SDL_GRAB_OFF);
- SDL_ShowCursor(SDL_ENABLE);
-
- console_scrollpane->set_scroll(0);
-
- history_pos = history.rbegin();
- (*history_pos).clear();
- console_input->set_text((*history_pos));
-
- audio::play("ui/console");
-}
-
-void Console::hide()
-{
- ui::Window::hide();
- SDL_WM_GrabInput(SDL_GRAB_ON);
- SDL_ShowCursor(SDL_DISABLE);
-
- audio::play("ui/console");
-}
-
-void Console::toggle()
-{
- if (visible())
- hide();
- else
- show();
-}
-
-bool Console::on_keypress(const int key, const unsigned int modifier)
-{
- // number of lines to scroll
- const size_t scroll_offset = 3;
-
- ui::Text::reverse_iterator upit;
-
- switch( key ) {
-
- case SDLK_ESCAPE:
- if (visible()) {
- hide();
- return true;
- } else {
- return false;
- }
- break;
-/*
- case SDLK_TAB:
- core::CommandBuffer::complete( (*history_pos), input_pos);
- return true;
- break;
-*/
- case SDLK_RETURN:
- if (console_input->text().size()) {
- // store input in history
- while (history.size() >= DEFAULT_MAX_HISTO_LINES) {
- history.pop_front();
- }
- core::cmd() << console_input->text() << std::endl;
- con_print << "^B>" << console_input->text() << std::endl;
- (*history.rbegin()).assign(console_input->text());
- history.push_back("");
- history_pos = history.rbegin();
- console_input->set_text((*history_pos));
- }
- return true;
- break;
-
- case SDLK_UP:
- upit = history_pos;
- ++upit;
- if (upit != history.rend()) {
- history_pos = upit;
- console_input->set_text((*history_pos));
- }
- return true;
- break;
- case SDLK_DOWN:
- if (history_pos != history.rbegin()) {
- --history_pos;
- console_input->set_text((*history_pos));
- }
- return true;
- break;
- case SDLK_PAGEUP:
- console_scrollpane->inc_scroll(scroll_offset);
- return true;
- break;
-
- case SDLK_PAGEDOWN:
- console_scrollpane->dec_scroll(scroll_offset);
- return true;
- break;
- }
-
- return false;
-}
-
-void Console::draw()
-{
- if (core::application()->connected()) {
- set_size(parent()->size().width(), parent()->size().height() * DEFAULT_CONSOLE_HEIGHT);
- } else {
- set_size(parent()->size());
- }
-
- math::Vector2f s(size());
- s.x -= 8;
- s.y -= 8;
-
- console_scrollpane->set_location(4, 4);
- console_scrollpane->set_size(s.x, s.y - font()->height());
-
- console_input->set_location(4, height() - font()->height() -4);
- console_input->set_size(s.x, font()->height());
-
- std::string version(core::name());
- version += ' ';
- version.append(core::version());
-
- render::gl::color(0.0f, 1.0f, 0.0f, 0.5f);
-
- s.assign(version.size() * font()->width(), font()->height());
- math::Vector2f l(global_location());
- l.x += width() - s.width() -4;
- l.y += height() - s.height() -4;
- ui::paint::text(l, s, font(), version);
-
-/*
- render::Text::setfont(font()->name().c_str(), font()->width(), font()->height());
- render::gl::enable(GL_TEXTURE_2D);
-
- // draw version below the bottom of the console
- std::string version(core::name());
- version += ' ';
- version.append(core::version());
- render::gl::color(0.0f, 1.0f, 0.0f, 0.5f);
- render::Text::draw(width()-font()->width()*(version.size()+1), height()-font()->height()-4, version);
-
- // draw the console log()
- if (console_scroll > log().size())
- console_scroll = log().size();
-
- int height = (size_t) (this->height() / font()->height()) -1;
- int width = (size_t) ((this->width()-8) / font()->width());
- int bottom = (int) log().size() - console_scroll;
- int current_line = 0;
-
- ui::Text lines;
- for (ui::Text::iterator it = log().begin(); it != log().end() && current_line < bottom; it++) {
- if (current_line >= bottom - height) {
- std::string linedata(*it);
- linedata += '\n';
-
- std::string word;
- size_t word_length = 0;
-
- std::string line;
- size_t line_length = 0;
-
- const char *c = linedata.c_str();
- char pen = 'N';
- char wordpen = 'N';
-
- while (*c) {
-
- // color code
- if (aux::is_color_code(c)) {
- c++;
- pen = *c;
- word += '^';
- word += pen;
- }
-
- // new word, wrap if necessary
- else if ((*c == '\n' ) || ( *c == ' ')) {
-
- if (line_length + word_length > (size_t) width) {
- if (line.size()) {
- lines.push_back(line);
- line.clear();
- line += '^';
- line += wordpen;
- line_length = 0;
- }
- }
-
- line.append(word);
- line_length += word_length;
-
- word.clear();
- word_length = 0;
- wordpen = pen;
-
- // new line
- if (*c == '\n' ) {
- lines.push_back(line);
- line.clear();
- line_length = 0;
- // new word
- } else if (*c == ' ' ) {
- line += ' ';
- line_length++;
- }
- }
-
- // new character
- else {
- word += *c;
- word_length++;
-
- if (word_length == (size_t) width) {
- if (line.size()) {
- lines.push_back(line);
- line.clear();
- line += '^';
- line += wordpen;
- line_length = 0;
- }
-
- line.append(word);
- line_length = word_length;
-
- word.clear();
- word_length = 0;
- wordpen = pen;
- }
- }
-
- c++;
- }
-
- }
- current_line++;
- }
-
- float y = this->height()-2*font()->height()-4;
- render::Text::setcolor('N');
- for (ui::Text::reverse_iterator rit = lines.rbegin(); (y >= 4) && (rit != lines.rend()); ++rit) {
- render::Text::draw(4, y, (*rit));
- y -= font()->height();
- }
-
- render::gl::disable(GL_TEXTURE_2D);
-*/
-}
-
-void Console::save_history()
-{
- if (history.size() <= 1)
- return;
-
- std::string filename(filesystem::writedir());
- filename.append("history.txt");
- std::ofstream ofs(filename.c_str());
-
- if (!ofs.is_open()) {
- con_warn << "Could not write " << filename << std::endl;
- return;
- }
- ui::Text::iterator it;
- size_t l = 1;
- for (it = history.begin(); it != history.end(); it++) {
- if (l < history.size())
- ofs << (*it) << std::endl;
- l++;
- }
-
- ofs.close();
-}
-
-void Console::load_history()
-{
- std::string filename(filesystem::writedir());
- filename.append("history.txt");
- std::ifstream ifs(filename.c_str(), std::ifstream::in);
-
- if (!ifs.is_open()) {
- con_warn << "Could not read " << filename << std::endl;
- return;
- }
-
- history.clear();
- char line[MAXCMDSIZE];
- while (ifs.getline(line, MAXCMDSIZE-1)) {
- history.push_back(line);
- }
-
- ifs.close();
-
- history.push_back("");
- history_pos = history.rbegin();
-}
-
-
-/*
-void Console::draw_notify()
-{
- // draw notifications
- size_t width = (size_t) ((width()-8) / font()->width());
- size_t n = notify_pos % MAXNOTIFYLINES;
- float h = height()/2;
- for (size_t l = 0; l < MAXNOTIFYLINES; l++) {
- if (notify_text[n].size() > 2 && notify_time[n] + 5 > core::application()->time()) {
- std::string linedata(notify_text[n]);
- linedata += '\n';
-
- std::string word;
- size_t word_length = 0;
-
- std::string line;
- size_t line_length = 0;
-
- const char *c = linedata.c_str();
- char pen = 'N';
- char wordpen = 'N';
- render::Text::setcolor('N');
-
- while (*c) {
-
- // color code
- if (aux::is_color_code(c)) {
- c++;
- pen = *c;
- word += '^';
- word += pen;
- }
-
- // new word, wrap if necessary
- else if ((*c == '\n' ) || ( *c == ' ')) {
-
- if (line_length + word_length > width) {
- if (line.size()) {
- render::Text::draw(4, h, line);
- h += font()->width();
- line.clear();
- line += '^';
- line += wordpen;
- line_length = 0;
- }
- }
-
- line.append(word);
- line_length += word_length;
-
- word.clear();
- word_length = 0;
- wordpen = pen;
-
- // new line
- if (*c == '\n' ) {
- render::Text::draw(4, h, line);
- h += font()->width();
- line.clear();
- line_length = 0;
- // new word
- } else if (*c == ' ' ) {
- line += ' ';
- line_length++;
- }
- }
-
- // new character
- else {
- word += *c;
- word_length++;
-
- if (word_length == width) {
- if (line.size()) {
- render::Text::draw(4, h, line);
- h += font()->width();
- line.clear();
- line += '^';
- line += wordpen;
- line_length = 0;
- }
-
- line.append(word);
- line_length = word_length;
-
- word.clear();
- word_length = 0;
- wordpen = pen;
- }
- }
-
- c++;
- }
-
- }
- n = (n+1) % MAXNOTIFYLINES;
- }
-}
-
-
-void Console::clear_notify()
-{
- for (size_t i=0; i < MAXNOTIFYLINES; i++) {
- notify_text[i].clear();
- notify_time[i] = 0;
- }
- notify_pos = 0;
-}
-
-void Console::notify(std::string const & message)
-{
- // save notification
- notify_text[notify_pos] = message;
- notify_time[notify_pos] = core::application()->time();
- notify_pos = (notify_pos+1) % MAXNOTIFYLINES;
-}
-*/
-
-} // namespace client
-