X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2FguiChatConsole.cpp;h=d8881dbd1a77304ab257a73ef7afe486338ca4a4;hb=56195dc2e45b85b7177cfa97aade77e92cff8805;hp=d11a50e20280c0bc7459774e3d07394963872069;hpb=967f25461bbde28dbc0247fa1c491e9d9938a5b2;p=oweals%2Fminetest.git diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index d11a50e20..d8881dbd1 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -1,18 +1,18 @@ /* -Minetest-c55 -Copyright (C) 2011 celeron55, Perttu Ahola +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -32,6 +32,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gettext.h" +#if USE_FREETYPE +#include "xCGUITTFont.h" +#endif + inline u32 clamp_u8(s32 value) { return (u32) MYMIN(MYMAX(value, 0), 255); @@ -90,8 +94,18 @@ GUIChatConsole::GUIChatConsole( // load the font // FIXME should a custom texture_path be searched too? - std::string font_name = "fontdejavusansmono.png"; - m_font = env->getFont(getTexturePath(font_name).c_str()); + std::string font_name = g_settings->get("mono_font_path"); + #if USE_FREETYPE + m_use_freetype = g_settings->getBool("freetype"); + if (m_use_freetype) { + u16 font_size = g_settings->getU16("mono_font_size"); + m_font = gui::CGUITTFont::createTTFont(env, font_name.c_str(), font_size); + } else { + m_font = env->getFont(font_name.c_str()); + } + #else + m_font = env->getFont(font_name.c_str()); + #endif if (m_font == NULL) { dstream << "Unable to load font: " << font_name << std::endl; @@ -111,6 +125,10 @@ GUIChatConsole::GUIChatConsole( GUIChatConsole::~GUIChatConsole() { +#if USE_FREETYPE + if (m_use_freetype) + m_font->drop(); +#endif } void GUIChatConsole::openConsole(f32 height) @@ -121,6 +139,11 @@ void GUIChatConsole::openConsole(f32 height) reformatConsole(); } +bool GUIChatConsole::isOpen() const +{ + return m_open; +} + bool GUIChatConsole::isOpenInhibited() const { return m_open_inhibited > 0; @@ -525,14 +548,20 @@ bool GUIChatConsole::OnEvent(const SEvent& event) { // Tab or Shift-Tab pressed // Nick completion - core::list names = m_client->getConnectedPlayerNames(); + std::list names = m_client->getConnectedPlayerNames(); bool backwards = event.KeyInput.Shift; m_chat_backend->getPrompt().nickCompletion(names, backwards); return true; } else if(event.KeyInput.Char != 0 && !event.KeyInput.Control) { - m_chat_backend->getPrompt().input(event.KeyInput.Char); + #if (defined(linux) || defined(__linux)) + wchar_t wc = L'_'; + mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) ); + m_chat_backend->getPrompt().input(wc); + #else + m_chat_backend->getPrompt().input(event.KeyInput.Char); + #endif return true; } }