1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/**
* @file llfloaterregiondebugconsole.h
* @author Brad Kittenbrink <brad@lindenlab.com>
* @brief Quick and dirty console for region debug settings
*
* $LicenseInfo:firstyear=2010&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llfloaterregiondebugconsole.h"
#include "llagent.h"
#include "llhttpclient.h"
#include "lllineeditor.h"
#include "lltexteditor.h"
#include "llviewerregion.h"
class Responder : public LLHTTPClient::Responder {
public:
Responder(LLTextEditor *output) : mOutput(output)
{
}
/*virtual*/
void error(U32 status, const std::string& reason)
{
}
/*virtual*/
void result(const LLSD& content)
{
std::string text = content.asString() + "\n\n> ";
mOutput->appendText(text, false);
};
LLTextEditor * mOutput;
};
LLFloaterRegionDebugConsole::LLFloaterRegionDebugConsole(LLSD const & key)
: LLFloater(key), mOutput(NULL)
{
}
BOOL LLFloaterRegionDebugConsole::postBuild()
{
LLLineEditor* input = getChild<LLLineEditor>("region_debug_console_input");
input->setEnableLineHistory(true);
input->setCommitCallback(boost::bind(&LLFloaterRegionDebugConsole::onInput, this, _1, _2));
input->setFocus(true);
input->setCommitOnFocusLost(false);
mOutput = getChild<LLTextEditor>("region_debug_console_output");
std::string url = gAgent.getRegion()->getCapability("SimConsole");
if ( url.size() == 0 )
{
mOutput->appendText("This region does not support the simulator console.\n\n> ", false);
}
else
{
mOutput->appendText("> ", false);
}
return TRUE;
}
void LLFloaterRegionDebugConsole::onInput(LLUICtrl* ctrl, const LLSD& param)
{
LLLineEditor* input = static_cast<LLLineEditor*>(ctrl);
std::string text = input->getText() + "\n";
std::string url = gAgent.getRegion()->getCapability("SimConsole");
if ( url.size() > 0 )
{
LLHTTPClient::post(url, LLSD(input->getText()), new ::Responder(mOutput));
}
else
{
text += "\nError: No console available for this region/simulator.\n\n> ";
}
mOutput->appendText(text, false);
input->clear();
}
|