CHUI_310 make NearbyChat a singletone

master
AlexanderP ProductEngine 2012-08-22 18:27:29 +03:00
parent 31d69a6bc5
commit 14708a3ace
41 changed files with 125 additions and 121 deletions

View File

@ -1911,7 +1911,7 @@ void LLAgent::startTyping()
{
sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_START);
}
LLNearbyChat::getInstance()->sendChatFromViewer("", CHAT_TYPE_START, FALSE);
(LLNearbyChat::instance()).sendChatFromViewer("", CHAT_TYPE_START, FALSE);
}
//-----------------------------------------------------------------------------
@ -1923,7 +1923,7 @@ void LLAgent::stopTyping()
{
clearRenderState(AGENT_STATE_TYPING);
sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_STOP);
LLNearbyChat::getInstance()->sendChatFromViewer("", CHAT_TYPE_STOP, FALSE);
(LLNearbyChat::instance()).sendChatFromViewer("", CHAT_TYPE_STOP, FALSE);
}
}

View File

@ -323,12 +323,12 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
return TRUE;
else
{
LLNearbyChat::getInstance()->showHistory();
LLNearbyChat::instance().showHistory();
return FALSE;
}
}
LLNearbyChat::getInstance()->showHistory();
LLNearbyChat::instance().showHistory();
return LLPanel::handleMouseUp(x,y,mask);
}

View File

@ -74,7 +74,7 @@ void LLFirstUse::resetFirstUse()
// static
void LLFirstUse::otherAvatarChatFirst(bool enable)
{
firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "chat_bar").with("direction", "top_right").with("distance", 24));
firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "nearby_chat").with("direction", "top_right").with("distance", 24));
}
// static

View File

@ -293,6 +293,6 @@ void LLFloaterTranslationSettings::onBtnOK()
gSavedSettings.setString("TranslationService", getSelectedService());
gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
LLNearbyChat::getInstance()->showTranslationCheckbox(LLTranslate::isTranslationConfigured());
LLNearbyChat::instance().showTranslationCheckbox(LLTranslate::isTranslationConfigured());
closeFloater(false);
}

View File

@ -997,7 +997,7 @@ void LLGestureMgr::runStep(LLMultiGesture* gesture, LLGestureStep* step)
const BOOL animate = FALSE;
LLNearbyChat::getInstance()->sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate);
LLNearbyChat::instance().sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate);
gesture->mCurrentStep++;
break;

View File

@ -81,13 +81,35 @@ LLIMConversation::~LLIMConversation()
//static
LLIMConversation* LLIMConversation::findConversation(const LLUUID& uuid)
{
return LLFloaterReg::findTypedInstance<LLIMConversation>(uuid.isNull()? "chat_bar" : "impanel", LLSD(uuid));
LLIMConversation* conv;
if (uuid.isNull())
{
conv = LLFloaterReg::findTypedInstance<LLIMConversation>("nearby_chat");
}
else
{
conv = LLFloaterReg::findTypedInstance<LLIMConversation>("impanel", LLSD(uuid));
}
return conv;
};
//static
LLIMConversation* LLIMConversation::getConversation(const LLUUID& uuid)
{
return LLFloaterReg::getTypedInstance<LLIMConversation>(uuid.isNull()? "chat_bar" : "impanel", LLSD(uuid));
LLIMConversation* conv;
if (uuid.isNull())
{
conv = LLFloaterReg::getTypedInstance<LLIMConversation>("nearby_chat");
}
else
{
conv = LLFloaterReg::getTypedInstance<LLIMConversation>("impanel", LLSD(uuid));
}
return conv;
};
@ -336,15 +358,15 @@ void LLIMConversation::processChatHistoryStyleUpdate()
}
}
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat)
if (LLNearbyChat::instanceExists())
{
nearby_chat->reloadMessages();
LLNearbyChat::instance().reloadMessages();
}
}
void LLIMConversation::updateCallBtnState(bool callIsActive)
{
llwarns<<(this->getName())<<llendl;
getChild<LLButton>("voice_call_btn")->setImageOverlay(
callIsActive? getString("call_btn_stop") : getString("call_btn_start"));
enableDisableCallBtn();

View File

@ -315,13 +315,13 @@ void LLIMFloaterContainer::setVisible(BOOL visible)
if (visible)
{
// Make sure we have the Nearby Chat present when showing the conversation container
LLIMConversation* nearby_chat = LLIMConversation::findConversation(LLUUID::null);
LLIMConversation* nearby_chat = LLFloaterReg::findTypedInstance<LLIMConversation>("nearby_chat");
if (nearby_chat == NULL)
{
// If not found, force the creation of the nearby chat conversation panel
// *TODO: find a way to move this to XML as a default panel or something like that
LLSD name("chat_bar");
LLFloaterReg::toggleInstanceOrBringToFront(name, LLSD(LLUUID::null));
LLSD name("nearby_chat");
LLFloaterReg::toggleInstanceOrBringToFront(name);
}
}

View File

@ -2486,12 +2486,9 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLChat chat(message);
chat.mSourceType = CHAT_SOURCE_SYSTEM;
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
if (LLNearbyChat::instanceExists())
{
nearby_chat->addMessage(chat);
LLNearbyChat::instance().addMessage(chat);
}
}
else // going to IM session

View File

@ -123,8 +123,8 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
};
LLNearbyChat::LLNearbyChat(const LLSD& key)
: LLIMConversation(key),
LLNearbyChat::LLNearbyChat(const LLSD& llsd)
: LLIMConversation(LLSD()),
//mOutputMonitor(NULL),
mSpeakerMgr(NULL),
mExpandedHeight(COLLAPSED_HEIGHT + EXPANDED_HEIGHT)
@ -133,6 +133,7 @@ LLNearbyChat::LLNearbyChat(const LLSD& key)
setIsChrome(TRUE);
mKey = LLSD();
mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
setName("nearby_chat");
}
//virtual
@ -379,11 +380,6 @@ void LLNearbyChat::onChatFontChange(LLFontGL* fontp)
}
}
//static
LLNearbyChat* LLNearbyChat::getInstance()
{
return LLFloaterReg::getTypedInstance<LLNearbyChat>("chat_bar", LLSD(LLUUID::null));
}
void LLNearbyChat::show()
{
@ -646,7 +642,10 @@ void LLNearbyChat::appendMessage(const LLChat& chat, const LLSD &args)
chat_args["show_time"] = gSavedSettings.getBOOL("IMShowTime");
chat_args["show_names_for_p2p_conv"] = true;
mChatHistory->appendMessage(chat, chat_args);
if (mChatHistory)
{
mChatHistory->appendMessage(chat, chat_args);
}
}
}
@ -781,22 +780,20 @@ void LLNearbyChat::sendChatFromViewer(const LLWString &wtext, EChatType type, BO
// static
void LLNearbyChat::startChat(const char* line)
{
LLNearbyChat* cb = LLNearbyChat::getInstance();
if (cb )
if (LLNearbyChat::instanceExists())
{
cb->show();
cb->setVisible(TRUE);
cb->setFocus(TRUE);
cb->mInputEditor->setFocus(TRUE);
(LLNearbyChat::instance()).show();
(LLNearbyChat::instance()).setVisible(TRUE);
(LLNearbyChat::instance()).setFocus(TRUE);
(LLNearbyChat::instance().mInputEditor)->setFocus(TRUE);
if (line)
{
std::string line_string(line);
cb->mInputEditor->setText(line_string);
(LLNearbyChat::instance().mInputEditor)->setText(line_string);
}
cb->mInputEditor->endOfDoc();
(LLNearbyChat::instance().mInputEditor)->endOfDoc();
}
}
@ -804,14 +801,10 @@ void LLNearbyChat::startChat(const char* line)
// static
void LLNearbyChat::stopChat()
{
LLNearbyChat* cb = LLNearbyChat::getInstance();
if (cb)
if (LLNearbyChat::instanceExists())
{
cb->mInputEditor->setFocus(FALSE);
// stop typing animation
gAgent.stopTyping();
(LLNearbyChat::instance().mInputEditor)->setFocus(FALSE);
gAgent.stopTyping();
}
}

View File

@ -35,17 +35,19 @@
#include "lloutputmonitorctrl.h"
#include "llspeakers.h"
#include "llscrollbar.h"
#include "llsingleton.h"
#include "llviewerchat.h"
#include "llpanel.h"
class LLResizeBar;
class LLNearbyChat
: public LLIMConversation
: public LLIMConversation,
public LLSingleton<LLNearbyChat>
{
public:
// constructor for inline chat-bars (e.g. hosted in chat history window)
LLNearbyChat(const LLSD& key);
LLNearbyChat(const LLSD& key = LLSD());
~LLNearbyChat() {}
/*virtual*/ BOOL postBuild();
@ -61,8 +63,6 @@ public:
void reloadMessages();
void removeScreenChat();
static LLNearbyChat* getInstance();
void addToHost();
void show();
bool isChatVisible() const;

View File

@ -487,8 +487,6 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
if(chat_msg.mText.empty())
return;//don't process empty messages
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
// Build notification data
LLSD chat;
chat["message"] = chat_msg.mText;
@ -539,7 +537,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
}
}
nearby_chat->addMessage(chat_msg, true, args);
LLNearbyChat::instance().addMessage(chat_msg, true, args);
if(chat_msg.mSourceType == CHAT_SOURCE_AGENT
&& chat_msg.mFromID.notNull()
@ -555,7 +553,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
// Send event on to LLEventStream
sChatWatcher->post(chat);
if( nearby_chat->isInVisibleChain()
if( LLNearbyChat::instance().isInVisibleChain()
|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
&& gSavedSettings.getBOOL("UseChatBubbles") )
|| mChannel.isDead()

View File

@ -181,14 +181,13 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
// static
void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
{
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
if (LLNearbyChat::instanceExists())
{
LLChat chat_msg(notification->getMessage());
chat_msg.mSourceType = type;
chat_msg.mFromName = SYSTEM_FROM;
chat_msg.mFromID = LLUUID::null;
nearby_chat->addMessage(chat_msg);
LLNearbyChat::instance().addMessage(chat_msg);
}
}

View File

@ -85,8 +85,7 @@ bool LLTipHandler::processNotification(const LLNotificationPtr& notification)
LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
// don't show toast if Nearby Chat is opened
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if (nearby_chat->isChatVisible())
if (LLNearbyChat::instance().isChatVisible())
{
return false;
}

View File

@ -64,6 +64,7 @@
#include "llmessageconfig.h"
#include "llmoveview.h"
#include "llimfloatercontainer.h"
#include "llnearbychat.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llteleporthistory.h"

View File

@ -192,7 +192,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
LLFloaterReg::add("chat_bar", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
LLFloaterReg::add("nearby_chat", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
LLFloaterReg::add("conversation", "floater_conversation_log.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterConversationLog>);

View File

@ -130,7 +130,7 @@ void LLViewerGesture::doTrigger( BOOL send_chat )
{
// Don't play nodding animation, since that might not blend
// with the gesture animation.
LLNearbyChat::getInstance()->sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE);
LLNearbyChat::instance().sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE);
}
}

View File

@ -543,7 +543,7 @@ void start_gesture( EKeystate s )
if (KEYSTATE_UP == s &&
! (focus_ctrlp && focus_ctrlp->acceptsTextInput()))
{
if (LLNearbyChat::getInstance()->getCurrentChat().empty())
if (LLNearbyChat::instance().getCurrentChat().empty())
{
// No existing chat in chat editor, insert '/'
LLNearbyChat::startChat("/");

View File

@ -2297,12 +2297,10 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
// Treat like a system message and put in chat history.
chat.mText = av_name.getCompleteName() + ": " + message;
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(nearby_chat)
if (LLNearbyChat::instanceExists())
{
nearby_chat->addMessage(chat);
LLNearbyChat::instance().addMessage(chat);
}
}
void process_improved_im(LLMessageSystem *msg, void **user_data)
@ -2897,8 +2895,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
// IMs from obejcts don't open IM sessions.
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
if(!chat_from_system && nearby_chat)
if(!chat_from_system && LLNearbyChat::instanceExists())
{
chat.mOwnerID = from_id;
LLSD args;

View File

@ -198,7 +198,6 @@
#include "llfloaternotificationsconsole.h"
#include "llnearbychat.h"
#include "llwindowlistener.h"
#include "llviewerwindowlistener.h"
#include "llpaneltopinfobar.h"
@ -2497,43 +2496,42 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// Traverses up the hierarchy
if( keyboard_focus )
{
LLNearbyChat* nearby_chat = LLFloaterReg::findTypedInstance<LLNearbyChat>("chat_bar");
if (LLNearbyChat::instanceExists())
{
LLChatEntry* chat_editor = LLNearbyChat::instance().getChatBox();
if (nearby_chat)
{
LLChatEntry* chat_editor = nearby_chat->getChatBox();
// arrow keys move avatar while chatting hack
if (chat_editor && chat_editor->hasFocus())
{
// If text field is empty, there's no point in trying to move
// cursor with arrow keys, so allow movement
if (chat_editor->getText().empty()
|| gSavedSettings.getBOOL("ArrowKeysAlwaysMove"))
// arrow keys move avatar while chatting hack
if (chat_editor && chat_editor->hasFocus())
{
// let Control-Up and Control-Down through for chat line history,
if (!(key == KEY_UP && mask == MASK_CONTROL)
&& !(key == KEY_DOWN && mask == MASK_CONTROL))
// If text field is empty, there's no point in trying to move
// cursor with arrow keys, so allow movement
if (chat_editor->getText().empty()
|| gSavedSettings.getBOOL("ArrowKeysAlwaysMove"))
{
switch(key)
// let Control-Up and Control-Down through for chat line history,
if (!(key == KEY_UP && mask == MASK_CONTROL)
&& !(key == KEY_DOWN && mask == MASK_CONTROL))
{
case KEY_LEFT:
case KEY_RIGHT:
case KEY_UP:
case KEY_DOWN:
case KEY_PAGE_UP:
case KEY_PAGE_DOWN:
case KEY_HOME:
// when chatbar is empty or ArrowKeysAlwaysMove set,
// pass arrow keys on to avatar...
return FALSE;
default:
break;
switch(key)
{
case KEY_LEFT:
case KEY_RIGHT:
case KEY_UP:
case KEY_DOWN:
case KEY_PAGE_UP:
case KEY_PAGE_DOWN:
case KEY_HOME:
// when chatbar is empty or ArrowKeysAlwaysMove set,
// pass arrow keys on to avatar...
return FALSE;
default:
break;
}
}
}
}
}
}
if (keyboard_focus->handleKey(key, mask, FALSE))
{
return TRUE;
@ -2564,11 +2562,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() &&
!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
{
LLChatEntry* chat_editor = LLNearbyChat::getInstance()->getChatBox();
LLChatEntry* chat_editor = LLNearbyChat::instance().getChatBox();
if (chat_editor)
{
// passing NULL here, character will be added later when it is handled by character handler.
LLNearbyChat::getInstance()->startChat(NULL);
LLNearbyChat::instance().startChat(NULL);
return TRUE;
}
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Klik her for at chatte." name="chat_box" tool_tip="Tryk på enter for at tale, Ctrl-Enter for at råbe."/>
<button name="show_nearby_chat" tool_tip="Viser/skjuler log for chat nærved"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="CHAT IN DER NÄHE">
<floater name="nearby_chat" title="CHAT IN DER NÄHE">
<panel name="bottom_panel">
<line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabetaste zum Sprechen, Strg+Eingabe zum Rufen"/>
<button name="show_nearby_chat" tool_tip="Chatprotokoll in der Nähe ein-/ausblenden"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabe drücken, um zu sprechen, Strg-Eingabe drücken, um zu Rufen."/>
<button name="show_nearby_chat" tool_tip="Protokoll des Chats in der Nähe anzeigen/ausblenden"/>
</panel>

View File

@ -225,10 +225,10 @@
use_mac_ctrl="true">
<menu_item_check.on_check
function="Floater.Visible"
parameter="chat_bar" />
parameter="nearby_chat" />
<menu_item_check.on_click
function="Floater.Toggle"
parameter="chat_bar" />
parameter="nearby_chat" />
</menu_item_check>
<menu_item_check
label="Speak"

View File

@ -46,7 +46,7 @@
follows="left|right"
top="4"
width="310"
name="chat_bar"
name="nearby_chat"
mouse_opaque="false"/>
</layout_panel>
<layout_panel

View File

@ -5,7 +5,7 @@
height="25"
layout="topleft"
left="0"
name="chat_bar"
name="nearby_chat"
top="21"
width="308">
<line_editor

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="CHAT">
<floater name="nearby_chat" title="CHAT">
<panel name="bottom_panel">
<line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
<button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
<button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="CHAT PRÈS DE MOI">
<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
<panel name="bottom_panel">
<line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl+Entrée pour crier"/>
<button name="show_nearby_chat" tool_tip="Afficher/masquer le journal de chat près de vous."/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/>
<button name="show_nearby_chat" tool_tip="Affiche/Masque le journal de chats près de vous"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="CHAT NEI DINTORNI">
<floater name="nearby_chat" title="CHAT NEI DINTORNI">
<panel name="bottom_panel">
<line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per parlare, Ctrl+Invio per gridare"/>
<button name="show_nearby_chat" tool_tip="Mostra/Nasconde il registro della chat nei dintorni"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<string name="min_width">
192
</string>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="近くのチャット">
<floater name="nearby_chat" title="近くのチャット">
<panel name="bottom_panel">
<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して話し、Ctrl + Enter キーで叫びます。"/>
<button name="show_nearby_chat" tool_tip="近くのチャットログを表示/非表示"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して発言し、Ctrl + Enter キーで叫びます。"/>
<button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<string name="min_width">
192
</string>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="BATE-PAPO LOCAL">
<floater name="nearby_chat" title="BATE-PAPO LOCAL">
<panel name="bottom_panel">
<line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/>
<button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/>
<button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="ЛОКАЛЬНЫЙ ЧАТ">
<floater name="nearby_chat" title="ЛОКАЛЬНЫЙ ЧАТ">
<panel name="bottom_panel">
<line_editor label="Щелкните здесь для общения." name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Щелкните здесь для общения" name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="chat_bar" title="YAKINDAKİ SOHBET">
<floater name="nearby_chat" title="YAKINDAKİ SOHBET">
<panel name="bottom_panel">
<line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
<button name="show_nearby_chat" tool_tip="Yakın sohbet günlüğünü gösterir/gizler"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
<button name="show_nearby_chat" tool_tip="yakın sohbet günlüğünü gösterir/gizler"/>
</panel>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="chat_bar">
<panel name="nearby_chat">
<line_editor label="點擊此處開始聊天。" name="chat_box" tool_tip="按下 Enter 鍵來說或按下 Ctrl+Enter 來喊叫"/>
<button name="show_nearby_chat" tool_tip="顯示 / 隱藏 附近的聊天紀錄"/>
</panel>