[Voice Update] LLFloaterVoiceEffect (Lives in File->Show Voice Morpher for now)
This commit is contained in:
@@ -260,6 +260,7 @@ set(viewer_SOURCE_FILES
|
|||||||
llfloatertos.cpp
|
llfloatertos.cpp
|
||||||
llfloaterurldisplay.cpp
|
llfloaterurldisplay.cpp
|
||||||
llfloaterurlentry.cpp
|
llfloaterurlentry.cpp
|
||||||
|
llfloatervoiceeffect.cpp
|
||||||
llfloaterwater.cpp
|
llfloaterwater.cpp
|
||||||
llfloaterwebcontent.cpp
|
llfloaterwebcontent.cpp
|
||||||
llfloaterwindlight.cpp
|
llfloaterwindlight.cpp
|
||||||
@@ -765,6 +766,7 @@ set(viewer_HEADER_FILES
|
|||||||
llfloatertos.h
|
llfloatertos.h
|
||||||
llfloaterurldisplay.h
|
llfloaterurldisplay.h
|
||||||
llfloaterurlentry.h
|
llfloaterurlentry.h
|
||||||
|
llfloatervoiceeffect.h
|
||||||
llfloaterwater.h
|
llfloaterwater.h
|
||||||
llfloaterwebcontent.h
|
llfloaterwebcontent.h
|
||||||
llfloaterwindlight.h
|
llfloaterwindlight.h
|
||||||
|
|||||||
@@ -7427,6 +7427,22 @@ This should be as low as possible, but too low may break functionality</string>
|
|||||||
<key>Value</key>
|
<key>Value</key>
|
||||||
<integer>-1</integer>
|
<integer>-1</integer>
|
||||||
</map>
|
</map>
|
||||||
|
<key>FloaterVoiceEffectRect</key>
|
||||||
|
<map>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Rectangle for voice morpher floater</string>
|
||||||
|
<key>Persist</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>Rect</string>
|
||||||
|
<key>Value</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>300</integer>
|
||||||
|
<integer>360</integer>
|
||||||
|
<integer>0</integer>
|
||||||
|
</array>
|
||||||
|
</map>
|
||||||
<key>FloaterWorldMapRect2</key>
|
<key>FloaterWorldMapRect2</key>
|
||||||
<map>
|
<map>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
|
|||||||
318
indra/newview/llfloatervoiceeffect.cpp
Normal file
318
indra/newview/llfloatervoiceeffect.cpp
Normal file
@@ -0,0 +1,318 @@
|
|||||||
|
/**
|
||||||
|
* @file llfloatervoiceeffect.cpp
|
||||||
|
* @author Aimee
|
||||||
|
* @brief Selection and preview of voice effect.
|
||||||
|
*
|
||||||
|
* $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 "llfloatervoiceeffect.h"
|
||||||
|
|
||||||
|
#include "llscrolllistctrl.h"
|
||||||
|
#include "lltexteditor.h" // For linked text hack
|
||||||
|
#include "lltrans.h"
|
||||||
|
#include "lluictrlfactory.h"
|
||||||
|
#include "llweb.h"
|
||||||
|
|
||||||
|
LLFloaterVoiceEffect::LLFloaterVoiceEffect(const LLSD& key)
|
||||||
|
: LLFloater(/*key*/)
|
||||||
|
{
|
||||||
|
mCommitCallbackRegistrar.add("VoiceEffect.Record", boost::bind(&LLFloaterVoiceEffect::onClickRecord, this));
|
||||||
|
mCommitCallbackRegistrar.add("VoiceEffect.Play", boost::bind(&LLFloaterVoiceEffect::onClickPlay, this));
|
||||||
|
mCommitCallbackRegistrar.add("VoiceEffect.Stop", boost::bind(&LLFloaterVoiceEffect::onClickStop, this));
|
||||||
|
mCommitCallbackRegistrar.add("VoiceEffect.Activate", boost::bind(&LLFloaterVoiceEffect::onClickActivate, this));
|
||||||
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_voice_effect.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
LLFloaterVoiceEffect::~LLFloaterVoiceEffect()
|
||||||
|
{
|
||||||
|
if(LLVoiceClient::instanceExists())
|
||||||
|
{
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->removeObserver(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
BOOL LLFloaterVoiceEffect::postBuild()
|
||||||
|
{
|
||||||
|
setDefaultBtn("record_btn");
|
||||||
|
getChild<LLButton>("record_btn")->setFocus(true);
|
||||||
|
|
||||||
|
// Singu Note: Here we must hack together a linked piece of text
|
||||||
|
if (LLTextEditor* editor = getChild<LLTextEditor>("voice_morphing_link"))
|
||||||
|
{
|
||||||
|
editor->setParseHTML(true); // For some reason, adding style doesn't work unless this is true.
|
||||||
|
const std::string text = editor->getValue();
|
||||||
|
editor->clear();
|
||||||
|
LLStyleSP link(new LLStyle);
|
||||||
|
link->setLinkHREF(LLTrans::getString("voice_morphing_url"));
|
||||||
|
link->setColor(gSavedSettings.getColor4("HTMLLinkColor"));
|
||||||
|
editor->appendStyledText(text, false, false, link);
|
||||||
|
}
|
||||||
|
|
||||||
|
mVoiceEffectList = getChild<LLScrollListCtrl>("voice_effect_list");
|
||||||
|
if (mVoiceEffectList)
|
||||||
|
{
|
||||||
|
mVoiceEffectList->setCommitCallback(boost::bind(&LLFloaterVoiceEffect::onClickPlay, this));
|
||||||
|
// mVoiceEffectList->setDoubleClickCallback(boost::bind(&LLFloaterVoiceEffect::onClickActivate, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
void LLFloaterVoiceEffect::onOpen()
|
||||||
|
{
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->addObserver(this);
|
||||||
|
|
||||||
|
// Disconnect from the current voice channel ready to record a voice sample for previewing
|
||||||
|
effect_interface->enablePreviewBuffer(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshEffectList();
|
||||||
|
updateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
void LLFloaterVoiceEffect::onClose(bool app_quitting)
|
||||||
|
{
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->enablePreviewBuffer(false);
|
||||||
|
}
|
||||||
|
setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::refreshEffectList()
|
||||||
|
{
|
||||||
|
if (!mVoiceEffectList)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (!effect_interface)
|
||||||
|
{
|
||||||
|
mVoiceEffectList->setEnabled(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LL_DEBUGS("Voice")<< "Rebuilding Voice Morph list."<< LL_ENDL;
|
||||||
|
|
||||||
|
// Preserve selected items and scroll position
|
||||||
|
S32 scroll_pos = mVoiceEffectList->getScrollPos();
|
||||||
|
uuid_vec_t selected_items;
|
||||||
|
std::vector<LLScrollListItem*> items = mVoiceEffectList->getAllSelected();
|
||||||
|
for(std::vector<LLScrollListItem*>::const_iterator it = items.begin(); it != items.end(); it++)
|
||||||
|
{
|
||||||
|
selected_items.push_back((*it)->getUUID());
|
||||||
|
}
|
||||||
|
|
||||||
|
mVoiceEffectList->deleteAllItems();
|
||||||
|
|
||||||
|
{
|
||||||
|
// Add the "No Voice Morph" entry
|
||||||
|
LLSD element;
|
||||||
|
|
||||||
|
element["id"] = LLUUID::null;
|
||||||
|
element["columns"][NAME_COLUMN]["column"] = "name";
|
||||||
|
element["columns"][NAME_COLUMN]["value"] = getString("no_voice_effect");
|
||||||
|
element["columns"][NAME_COLUMN]["font"] = "SANSSERIF";
|
||||||
|
element["columns"][NAME_COLUMN]["font-style"] = "BOLD";
|
||||||
|
|
||||||
|
/*LLScrollListItem* sl_item =*/ mVoiceEffectList->addElement(element, ADD_BOTTOM);
|
||||||
|
/* Singu Note: Ours works
|
||||||
|
// *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :(
|
||||||
|
if(sl_item)
|
||||||
|
{
|
||||||
|
((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(LLFontGL::BOLD);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add each Voice Morph template, if there are any (template list includes all usable effects)
|
||||||
|
const voice_effect_list_t& template_list = effect_interface->getVoiceEffectTemplateList();
|
||||||
|
if (!template_list.empty())
|
||||||
|
{
|
||||||
|
for (voice_effect_list_t::const_iterator it = template_list.begin(); it != template_list.end(); ++it)
|
||||||
|
{
|
||||||
|
const LLUUID& effect_id = it->second;
|
||||||
|
|
||||||
|
std::string localized_effect = "effect_" + it->first;
|
||||||
|
std::string effect_name = hasString(localized_effect) ? getString(localized_effect) : it->first; // XML contains localized effects names
|
||||||
|
|
||||||
|
LLSD effect_properties = effect_interface->getVoiceEffectProperties(effect_id);
|
||||||
|
|
||||||
|
// Tag the active effect.
|
||||||
|
if (effect_id == LLVoiceClient::instance().getVoiceEffectDefault())
|
||||||
|
{
|
||||||
|
effect_name += " " + getString("active_voice_effect");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tag available effects that are new this session
|
||||||
|
if (effect_properties["is_new"].asBoolean())
|
||||||
|
{
|
||||||
|
effect_name += " " + getString("new_voice_effect");
|
||||||
|
}
|
||||||
|
|
||||||
|
LLDate expiry_date = effect_properties["expiry_date"].asDate();
|
||||||
|
bool is_template_only = effect_properties["template_only"].asBoolean();
|
||||||
|
|
||||||
|
std::string font_style = "NORMAL";
|
||||||
|
if (!is_template_only)
|
||||||
|
{
|
||||||
|
font_style = "BOLD";
|
||||||
|
}
|
||||||
|
|
||||||
|
LLSD element;
|
||||||
|
element["id"] = effect_id;
|
||||||
|
|
||||||
|
element["columns"][NAME_COLUMN]["column"] = "name";
|
||||||
|
element["columns"][NAME_COLUMN]["value"] = effect_name;
|
||||||
|
element["columns"][NAME_COLUMN]["font"] = "SANSSERIF";
|
||||||
|
element["columns"][NAME_COLUMN]["font-style"] = font_style;
|
||||||
|
|
||||||
|
element["columns"][1]["column"] = "expires";
|
||||||
|
if (!is_template_only)
|
||||||
|
{
|
||||||
|
element["columns"][DATE_COLUMN]["value"] = expiry_date;
|
||||||
|
element["columns"][DATE_COLUMN]["type"] = "date";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
element["columns"][DATE_COLUMN]["value"] = getString("unsubscribed_voice_effect");
|
||||||
|
}
|
||||||
|
element["columns"][DATE_COLUMN]["font"] = "SANSSERIF";
|
||||||
|
element["columns"][DATE_COLUMN]["font-style"] = "NORMAL";
|
||||||
|
|
||||||
|
/*LLScrollListItem* sl_item =*/ mVoiceEffectList->addElement(element, ADD_BOTTOM);
|
||||||
|
/* Singu Note: Ours works
|
||||||
|
// *HACK: Copied from llfloatergesture.cpp : ["font"]["style"] does not affect font style :(
|
||||||
|
if(sl_item)
|
||||||
|
{
|
||||||
|
LLFontGL::StyleFlags style = is_template_only ? LLFontGL::NORMAL : LLFontGL::BOLD;
|
||||||
|
LLScrollListText* slt = dynamic_cast<LLScrollListText*>(sl_item->getColumn(0));
|
||||||
|
llassert(slt);
|
||||||
|
if (slt)
|
||||||
|
{
|
||||||
|
slt->setFontStyle(style);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Re-select items that were selected before, and restore the scroll position
|
||||||
|
for(uuid_vec_t::iterator it = selected_items.begin(); it != selected_items.end(); it++)
|
||||||
|
{
|
||||||
|
mVoiceEffectList->selectByID(*it);
|
||||||
|
}
|
||||||
|
mVoiceEffectList->setScrollPos(scroll_pos);
|
||||||
|
mVoiceEffectList->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::updateControls()
|
||||||
|
{
|
||||||
|
bool recording = false;
|
||||||
|
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
recording = effect_interface->isPreviewRecording();
|
||||||
|
}
|
||||||
|
|
||||||
|
getChild<LLButton>("record_btn")->setVisible(!recording);
|
||||||
|
getChild<LLButton>("record_stop_btn")->setVisible(recording);
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
void LLFloaterVoiceEffect::onVoiceEffectChanged(bool effect_list_updated)
|
||||||
|
{
|
||||||
|
if (effect_list_updated)
|
||||||
|
{
|
||||||
|
refreshEffectList();
|
||||||
|
}
|
||||||
|
updateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::onClickRecord()
|
||||||
|
{
|
||||||
|
LL_DEBUGS("Voice") << "Record clicked" << LL_ENDL;
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->recordPreviewBuffer();
|
||||||
|
}
|
||||||
|
updateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::onClickPlay()
|
||||||
|
{
|
||||||
|
LL_DEBUGS("Voice") << "Play clicked" << LL_ENDL;
|
||||||
|
if (!mVoiceEffectList)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const LLUUID& effect_id = mVoiceEffectList->getCurrentID();
|
||||||
|
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->playPreviewBuffer(effect_id);
|
||||||
|
}
|
||||||
|
updateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::onClickStop()
|
||||||
|
{
|
||||||
|
LL_DEBUGS("Voice") << "Stop clicked" << LL_ENDL;
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface)
|
||||||
|
{
|
||||||
|
effect_interface->stopPreviewBuffer();
|
||||||
|
}
|
||||||
|
updateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLFloaterVoiceEffect::onClickActivate()
|
||||||
|
{
|
||||||
|
LL_DEBUGS("Voice") << "Activate clicked" << LL_ENDL;
|
||||||
|
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||||
|
if (effect_interface && mVoiceEffectList)
|
||||||
|
{
|
||||||
|
//effect_interface->setVoiceEffect(mVoiceEffectList->getCurrentID()); // Singu Note: This would return early, since we're disconnected from voice, just set the string and refresh list
|
||||||
|
gSavedPerAccountSettings.setString("VoiceEffectDefault", mVoiceEffectList->getCurrentID().asString());
|
||||||
|
refreshEffectList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
74
indra/newview/llfloatervoiceeffect.h
Normal file
74
indra/newview/llfloatervoiceeffect.h
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/**
|
||||||
|
* @file llfloatervoiceeffect.h
|
||||||
|
* @author Aimee
|
||||||
|
* @brief Selection and preview of voice effects.
|
||||||
|
*
|
||||||
|
* $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$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LL_LLFLOATERVOICEEFFECT_H
|
||||||
|
#define LL_LLFLOATERVOICEEFFECT_H
|
||||||
|
|
||||||
|
#include "llfloater.h"
|
||||||
|
#include "llvoiceclient.h"
|
||||||
|
|
||||||
|
class LLButton;
|
||||||
|
class LLScrollListCtrl;
|
||||||
|
|
||||||
|
class LLFloaterVoiceEffect
|
||||||
|
: public LLFloater
|
||||||
|
, public LLVoiceEffectObserver
|
||||||
|
, public LLFloaterSingleton<LLFloaterVoiceEffect>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LOG_CLASS(LLFloaterVoiceEffect);
|
||||||
|
|
||||||
|
LLFloaterVoiceEffect(const LLSD& key);
|
||||||
|
virtual ~LLFloaterVoiceEffect();
|
||||||
|
|
||||||
|
virtual BOOL postBuild();
|
||||||
|
virtual void onOpen();
|
||||||
|
virtual void onClose(bool app_quitting);
|
||||||
|
|
||||||
|
private:
|
||||||
|
enum ColumnIndex
|
||||||
|
{
|
||||||
|
NAME_COLUMN = 0,
|
||||||
|
DATE_COLUMN = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
void refreshEffectList();
|
||||||
|
void updateControls();
|
||||||
|
|
||||||
|
/// Called by voice effect provider when voice effect list is changed.
|
||||||
|
virtual void onVoiceEffectChanged(bool effect_list_updated);
|
||||||
|
|
||||||
|
void onClickRecord();
|
||||||
|
void onClickPlay();
|
||||||
|
void onClickStop();
|
||||||
|
void onClickActivate();
|
||||||
|
|
||||||
|
LLUUID mSelectedID;
|
||||||
|
LLScrollListCtrl* mVoiceEffectList;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -109,6 +109,7 @@
|
|||||||
#include "llfloaterteleporthistory.h"
|
#include "llfloaterteleporthistory.h"
|
||||||
#include "llfloatertest.h"
|
#include "llfloatertest.h"
|
||||||
#include "llfloatertools.h"
|
#include "llfloatertools.h"
|
||||||
|
#include "llfloatervoiceeffect.h"
|
||||||
#include "llfloaterwater.h"
|
#include "llfloaterwater.h"
|
||||||
#include "llfloaterwebcontent.h"
|
#include "llfloaterwebcontent.h"
|
||||||
#include "llfloaterwindlight.h"
|
#include "llfloaterwindlight.h"
|
||||||
@@ -6383,6 +6384,7 @@ struct MenuFloaterDict : public LLSingleton<MenuFloaterDict>
|
|||||||
registerFloater<LLFloaterScriptLimits> ("script info");
|
registerFloater<LLFloaterScriptLimits> ("script info");
|
||||||
registerFloater<LLFloaterStats> ("stat bar");
|
registerFloater<LLFloaterStats> ("stat bar");
|
||||||
registerFloater<LLFloaterTeleportHistory> ("teleport history");
|
registerFloater<LLFloaterTeleportHistory> ("teleport history");
|
||||||
|
registerFloater<LLFloaterVoiceEffect> ("voice effect");
|
||||||
registerFloater<LLFloaterPathfindingCharacters> ("pathfinding_characters");
|
registerFloater<LLFloaterPathfindingCharacters> ("pathfinding_characters");
|
||||||
registerFloater<LLFloaterPathfindingLinksets> ("pathfinding_linksets");
|
registerFloater<LLFloaterPathfindingLinksets> ("pathfinding_linksets");
|
||||||
|
|
||||||
|
|||||||
180
indra/newview/skins/default/xui/en-us/floater_voice_effect.xml
Normal file
180
indra/newview/skins/default/xui/en-us/floater_voice_effect.xml
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<floater
|
||||||
|
legacy_header_height="27"
|
||||||
|
can_resize="true"
|
||||||
|
can_close="true"
|
||||||
|
can_minimize="true"
|
||||||
|
height="500"
|
||||||
|
name="voice_effects"
|
||||||
|
help_topic="voice_effects"
|
||||||
|
title="Voice Morphing"
|
||||||
|
background_visible="true"
|
||||||
|
layout="topleft"
|
||||||
|
rect_control="FloaterVoiceEffectRect"
|
||||||
|
min_height="360"
|
||||||
|
min_width="300"
|
||||||
|
width="300">
|
||||||
|
<string name="no_voice_effect">
|
||||||
|
(No Voice Morph)
|
||||||
|
</string>
|
||||||
|
<string name="active_voice_effect">
|
||||||
|
(Active)
|
||||||
|
</string>
|
||||||
|
<string name="unsubscribed_voice_effect">
|
||||||
|
(Unsubscribed)
|
||||||
|
</string>
|
||||||
|
<string name="new_voice_effect">
|
||||||
|
(New!)
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<!-- effect names begin -->
|
||||||
|
<string name="effect_Arena">Arena</string>
|
||||||
|
<string name="effect_Beast">Beast</string>
|
||||||
|
<string name="effect_Buff">Buff</string>
|
||||||
|
<string name="effect_Buzz">Buzz</string>
|
||||||
|
<string name="effect_Camille">Camille</string>
|
||||||
|
<string name="effect_Creepy">Creepy</string>
|
||||||
|
<string name="effect_CreepyBot">CreepyBot</string>
|
||||||
|
<string name="effect_Cyber">Cyber</string>
|
||||||
|
<string name="effect_DeepBot">DeepBot</string>
|
||||||
|
<string name="effect_Demon">Demon</string>
|
||||||
|
<string name="effect_Female Elf">Female Elf</string>
|
||||||
|
<string name="effect_Flirty">Flirty</string>
|
||||||
|
<string name="effect_Foxy">Foxy</string>
|
||||||
|
<string name="effect_Halloween 2010 Bonus">Halloween_2010_Bonus</string>
|
||||||
|
<string name="effect_Helium">Helium</string>
|
||||||
|
<string name="effect_Husky">Husky</string>
|
||||||
|
<string name="effect_Husky Whisper">Husky Whisper</string>
|
||||||
|
<string name="effect_Intercom">Intercom</string>
|
||||||
|
<string name="effect_Julia">Julia</string>
|
||||||
|
<string name="effect_Lo Lilt">Lo Lilt</string>
|
||||||
|
<string name="effect_Macho">Macho</string>
|
||||||
|
<string name="effect_Micro">Micro</string>
|
||||||
|
<string name="effect_Mini">Mini</string>
|
||||||
|
<string name="effect_Model">Model</string>
|
||||||
|
<string name="effect_Nano">Nano</string>
|
||||||
|
<string name="effect_Nightmare">Nightmare</string>
|
||||||
|
<string name="effect_PopBot">PopBot</string>
|
||||||
|
<string name="effect_Rachel">Rachel</string>
|
||||||
|
<string name="effect_Radio">Radio</string>
|
||||||
|
<string name="effect_Robot">Robot</string>
|
||||||
|
<string name="effect_Roxanne">Roxanne</string>
|
||||||
|
<string name="effect_Rumble">Rumble</string>
|
||||||
|
<string name="effect_Sabrina">Sabrina</string>
|
||||||
|
<string name="effect_Samantha">Samantha</string>
|
||||||
|
<string name="effect_Sexy">Sexy</string>
|
||||||
|
<string name="effect_Shorty">Shorty</string>
|
||||||
|
<string name="effect_Smaller">Smaller</string>
|
||||||
|
<string name="effect_Sneaky">Sneaky</string>
|
||||||
|
<string name="effect_Stallion">Stallion</string>
|
||||||
|
<string name="effect_Sultry">Sultry</string>
|
||||||
|
<string name="effect_Thunder">Thunder</string>
|
||||||
|
<string name="effect_Vixen">Vixen</string>
|
||||||
|
<string name="effect_WhinyBot">WhinyBot</string>
|
||||||
|
<!-- effect names end -->
|
||||||
|
|
||||||
|
<text
|
||||||
|
height="16"
|
||||||
|
word_wrap="true"
|
||||||
|
use_ellipses="true"
|
||||||
|
type="string"
|
||||||
|
follows="left|top|right"
|
||||||
|
layout="topleft"
|
||||||
|
font="SansSerifBold"
|
||||||
|
color="White"
|
||||||
|
left="10"
|
||||||
|
name="preview_text"
|
||||||
|
right="-10"
|
||||||
|
bottom="-35">To Preview
|
||||||
|
</text>
|
||||||
|
<text
|
||||||
|
height="23"
|
||||||
|
word_wrap="true"
|
||||||
|
use_ellipses="true"
|
||||||
|
type="string"
|
||||||
|
follows="left|top|right"
|
||||||
|
layout="topleft"
|
||||||
|
left="10"
|
||||||
|
name="status_text"
|
||||||
|
right="-5"
|
||||||
|
top_pad="0">
|
||||||
|
Record a sample, then click on a voice to hear how it will sound.
|
||||||
|
</text>
|
||||||
|
<button
|
||||||
|
follows="left|top"
|
||||||
|
height="23"
|
||||||
|
label="Record"
|
||||||
|
layout="topleft"
|
||||||
|
left="10"
|
||||||
|
name="record_btn"
|
||||||
|
tool_tip="Record a sample of your voice."
|
||||||
|
top_pad="5"
|
||||||
|
width="100">
|
||||||
|
<button.commit_callback
|
||||||
|
function="VoiceEffect.Record" />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
follows="left|top"
|
||||||
|
height="23"
|
||||||
|
label="Stop"
|
||||||
|
layout="topleft"
|
||||||
|
left_delta="0"
|
||||||
|
name="record_stop_btn"
|
||||||
|
bottom_delta="0"
|
||||||
|
width="100">
|
||||||
|
<button.commit_callback
|
||||||
|
function="VoiceEffect.Stop" />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
follows="left|top"
|
||||||
|
height="23"
|
||||||
|
label="Activate"
|
||||||
|
layout="topleft"
|
||||||
|
left_delta="100"
|
||||||
|
name="activate_btn"
|
||||||
|
bottom_delta="0"
|
||||||
|
width="100">
|
||||||
|
<button.commit_callback
|
||||||
|
function="VoiceEffect.Activate" />
|
||||||
|
</button>
|
||||||
|
<text_editor
|
||||||
|
enabled="false"
|
||||||
|
bg_readonly_color="0 0 0 0"
|
||||||
|
hide_border="true"
|
||||||
|
hide_scrollbar="true"
|
||||||
|
font="SansSerifSmall"
|
||||||
|
height="23"
|
||||||
|
halign="right"
|
||||||
|
left_delta="104"
|
||||||
|
use_ellipses="true"
|
||||||
|
type="string"
|
||||||
|
follows="top|right"
|
||||||
|
layout="topleft"
|
||||||
|
bottom_delta="0"
|
||||||
|
name="voice_morphing_link"
|
||||||
|
right="-10">
|
||||||
|
Subscribe Now
|
||||||
|
</text_editor>
|
||||||
|
<scroll_list
|
||||||
|
bottom="10"
|
||||||
|
draw_heading="true"
|
||||||
|
follows="all"
|
||||||
|
layout="topleft"
|
||||||
|
left="10"
|
||||||
|
multi_select="false"
|
||||||
|
name="voice_effect_list"
|
||||||
|
right="-10"
|
||||||
|
tool_tip="Record a sample of your voice, then click an effect to preview."
|
||||||
|
top="-95">
|
||||||
|
<column
|
||||||
|
label="Voice Name"
|
||||||
|
name="name"
|
||||||
|
width="160" />
|
||||||
|
<column
|
||||||
|
dynamic_width="true"
|
||||||
|
label="Expires"
|
||||||
|
name="expires"
|
||||||
|
width="140" />
|
||||||
|
</scroll_list>
|
||||||
|
|
||||||
|
</floater>
|
||||||
@@ -45,6 +45,10 @@
|
|||||||
mouse_opaque="true" name="perm prefs" >
|
mouse_opaque="true" name="perm prefs" >
|
||||||
<on_click function="ShowFloater" userdata="perm prefs" />
|
<on_click function="ShowFloater" userdata="perm prefs" />
|
||||||
</menu_item_call>
|
</menu_item_call>
|
||||||
|
<menu_item_check mouse_opaque="true" label="Show Voice Morpher" name="voice effect">
|
||||||
|
<on_click function="ShowFloater" userdata="voice effect"/>
|
||||||
|
<on_check function="FloaterVisible" userdata="voice effect"/>
|
||||||
|
</menu_item_check>
|
||||||
<menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0"
|
<menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0"
|
||||||
mouse_opaque="true" name="separator" width="243" />
|
mouse_opaque="true" name="separator" width="243" />
|
||||||
<menu_item_call label="Minimize All Windows" mouse_opaque="true" name="Minimize All Windows">
|
<menu_item_call label="Minimize All Windows" mouse_opaque="true" name="Minimize All Windows">
|
||||||
|
|||||||
138
indra/newview/skins/default/xui/es/floater_voice_effect.xml
Normal file
138
indra/newview/skins/default/xui/es/floater_voice_effect.xml
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
|
<floater label="Lugares" name="voice_effects" title="TRANSFORMACIÓN DE VOZ">
|
||||||
|
<string name="no_voice_effect">
|
||||||
|
(Sin transformación de voz)
|
||||||
|
</string>
|
||||||
|
<string name="active_voice_effect">
|
||||||
|
(Activo)
|
||||||
|
</string>
|
||||||
|
<string name="unsubscribed_voice_effect">
|
||||||
|
(Suscripción cancelada)
|
||||||
|
</string>
|
||||||
|
<string name="new_voice_effect">
|
||||||
|
(¡Nuevo!)
|
||||||
|
</string>
|
||||||
|
<string name="effect_Arena">
|
||||||
|
Campo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Beast">
|
||||||
|
Bestia
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buff">
|
||||||
|
Musculoso
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buzz">
|
||||||
|
Murmullo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Camille">
|
||||||
|
Camila
|
||||||
|
</string>
|
||||||
|
<string name="effect_Creepy">
|
||||||
|
Aterrador
|
||||||
|
</string>
|
||||||
|
<string name="effect_CreepyBot">
|
||||||
|
Robot aterrador
|
||||||
|
</string>
|
||||||
|
<string name="effect_Cyber">
|
||||||
|
Cyber
|
||||||
|
</string>
|
||||||
|
<string name="effect_DeepBot">
|
||||||
|
Robot profundo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Demon">
|
||||||
|
Diablo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Flirty">
|
||||||
|
Coqueta
|
||||||
|
</string>
|
||||||
|
<string name="effect_Foxy">
|
||||||
|
Astuto
|
||||||
|
</string>
|
||||||
|
<string name="effect_Halloween_2010_Bonus">
|
||||||
|
Halloween_2010_Bonus
|
||||||
|
</string>
|
||||||
|
<string name="effect_Helium">
|
||||||
|
Helio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Husky">
|
||||||
|
Corpulento
|
||||||
|
</string>
|
||||||
|
<string name="effect_Intercom">
|
||||||
|
Intercom
|
||||||
|
</string>
|
||||||
|
<string name="effect_Macho">
|
||||||
|
Macho
|
||||||
|
</string>
|
||||||
|
<string name="effect_Micro">
|
||||||
|
Micro
|
||||||
|
</string>
|
||||||
|
<string name="effect_Mini">
|
||||||
|
Mini
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nano">
|
||||||
|
Nano
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nightmare">
|
||||||
|
Pesadilla
|
||||||
|
</string>
|
||||||
|
<string name="effect_PopBot">
|
||||||
|
Robot pop
|
||||||
|
</string>
|
||||||
|
<string name="effect_Rachel">
|
||||||
|
Raquel
|
||||||
|
</string>
|
||||||
|
<string name="effect_Radio">
|
||||||
|
Radio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Robot">
|
||||||
|
Robot
|
||||||
|
</string>
|
||||||
|
<string name="effect_Roxanne">
|
||||||
|
Roxana
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sabrina">
|
||||||
|
Sabrina
|
||||||
|
</string>
|
||||||
|
<string name="effect_Samantha">
|
||||||
|
Samanta
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sexy">
|
||||||
|
Sexy
|
||||||
|
</string>
|
||||||
|
<string name="effect_Shorty">
|
||||||
|
Bajito
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sneaky">
|
||||||
|
Furtivo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Stallion">
|
||||||
|
Mujeriego
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sultry">
|
||||||
|
Sensual
|
||||||
|
</string>
|
||||||
|
<string name="effect_Thunder">
|
||||||
|
Trueno
|
||||||
|
</string>
|
||||||
|
<string name="effect_Vixen">
|
||||||
|
Tigresa
|
||||||
|
</string>
|
||||||
|
<string name="effect_WhinyBot">
|
||||||
|
Robot llorica
|
||||||
|
</string>
|
||||||
|
<text name="preview_text">
|
||||||
|
Para probarla
|
||||||
|
</text>
|
||||||
|
<text name="status_text">
|
||||||
|
Graba una muestra y pulsa en una voz para escuchar cómo suena.
|
||||||
|
</text>
|
||||||
|
<button label="Grabar" name="record_btn" tool_tip="Graba una muestra de tu voz."/>
|
||||||
|
<button label="Parar" name="record_stop_btn"/>
|
||||||
|
<text name="voice_morphing_link">
|
||||||
|
Suscríbete ahora
|
||||||
|
</text>
|
||||||
|
<scroll_list name="voice_effect_list" tool_tip="Graba una muestra de tu voz y pulsa en un efecto para ver cómo suena.">
|
||||||
|
<scroll_list.columns label="Nombre de la voz" name="name"/>
|
||||||
|
<scroll_list.columns label="Caduca" name="expires"/>
|
||||||
|
</scroll_list>
|
||||||
|
</floater>
|
||||||
159
indra/newview/skins/default/xui/fr/floater_voice_effect.xml
Normal file
159
indra/newview/skins/default/xui/fr/floater_voice_effect.xml
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
|
<floater label="Endroits" name="voice_effects" title="EFFET DE VOIX">
|
||||||
|
<string name="no_voice_effect">
|
||||||
|
(Aucun effet de voix)
|
||||||
|
</string>
|
||||||
|
<string name="active_voice_effect">
|
||||||
|
(Actif)
|
||||||
|
</string>
|
||||||
|
<string name="unsubscribed_voice_effect">
|
||||||
|
(Pas d'abonnement)
|
||||||
|
</string>
|
||||||
|
<string name="new_voice_effect">
|
||||||
|
(Nouveau !)
|
||||||
|
</string>
|
||||||
|
<string name="effect_Arena">
|
||||||
|
Stade
|
||||||
|
</string>
|
||||||
|
<string name="effect_Beast">
|
||||||
|
Brute
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buff">
|
||||||
|
Nasal
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buzz">
|
||||||
|
Friture
|
||||||
|
</string>
|
||||||
|
<string name="effect_Camille">
|
||||||
|
Camille
|
||||||
|
</string>
|
||||||
|
<string name="effect_Creepy">
|
||||||
|
Effrayant
|
||||||
|
</string>
|
||||||
|
<string name="effect_CreepyBot">
|
||||||
|
BotEffrayant
|
||||||
|
</string>
|
||||||
|
<string name="effect_Cyber">
|
||||||
|
Cyber
|
||||||
|
</string>
|
||||||
|
<string name="effect_DeepBot">
|
||||||
|
BotGrave
|
||||||
|
</string>
|
||||||
|
<string name="effect_Demon">
|
||||||
|
Démon
|
||||||
|
</string>
|
||||||
|
<string name="effect_Female Elf">
|
||||||
|
Femme elfe
|
||||||
|
</string>
|
||||||
|
<string name="effect_Flirty">
|
||||||
|
Flirt
|
||||||
|
</string>
|
||||||
|
<string name="effect_Foxy">
|
||||||
|
Séduction
|
||||||
|
</string>
|
||||||
|
<string name="effect_Halloween 2010 Bonus">
|
||||||
|
Halloween_2010_Bonus
|
||||||
|
</string>
|
||||||
|
<string name="effect_Helium">
|
||||||
|
Hélium
|
||||||
|
</string>
|
||||||
|
<string name="effect_Husky">
|
||||||
|
Rauque
|
||||||
|
</string>
|
||||||
|
<string name="effect_Husky Whisper">
|
||||||
|
Murmure rauque
|
||||||
|
</string>
|
||||||
|
<string name="effect_Intercom">
|
||||||
|
Interphone
|
||||||
|
</string>
|
||||||
|
<string name="effect_Julia">
|
||||||
|
Julia
|
||||||
|
</string>
|
||||||
|
<string name="effect_Lo Lilt">
|
||||||
|
Mélodieux
|
||||||
|
</string>
|
||||||
|
<string name="effect_Macho">
|
||||||
|
Macho
|
||||||
|
</string>
|
||||||
|
<string name="effect_Micro">
|
||||||
|
Micro
|
||||||
|
</string>
|
||||||
|
<string name="effect_Mini">
|
||||||
|
Mini
|
||||||
|
</string>
|
||||||
|
<string name="effect_Model">
|
||||||
|
Modèle
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nano">
|
||||||
|
Nano
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nightmare">
|
||||||
|
Cauchemar
|
||||||
|
</string>
|
||||||
|
<string name="effect_PopBot">
|
||||||
|
BotPop
|
||||||
|
</string>
|
||||||
|
<string name="effect_Rachel">
|
||||||
|
Rachel
|
||||||
|
</string>
|
||||||
|
<string name="effect_Radio">
|
||||||
|
Radio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Robot">
|
||||||
|
Robot
|
||||||
|
</string>
|
||||||
|
<string name="effect_Roxanne">
|
||||||
|
Roxanne
|
||||||
|
</string>
|
||||||
|
<string name="effect_Rumble">
|
||||||
|
Grondement
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sabrina">
|
||||||
|
Sabrina
|
||||||
|
</string>
|
||||||
|
<string name="effect_Samantha">
|
||||||
|
Samantha
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sexy">
|
||||||
|
Sexy
|
||||||
|
</string>
|
||||||
|
<string name="effect_Shorty">
|
||||||
|
Petite voix
|
||||||
|
</string>
|
||||||
|
<string name="effect_Smaller">
|
||||||
|
Plus faible
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sneaky">
|
||||||
|
Sournois
|
||||||
|
</string>
|
||||||
|
<string name="effect_Stallion">
|
||||||
|
Étalon
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sultry">
|
||||||
|
Sensuel
|
||||||
|
</string>
|
||||||
|
<string name="effect_Thunder">
|
||||||
|
Tonnerre
|
||||||
|
</string>
|
||||||
|
<string name="effect_Vixen">
|
||||||
|
Mégère
|
||||||
|
</string>
|
||||||
|
<string name="effect_WhinyBot">
|
||||||
|
BotPleurnichard
|
||||||
|
</string>
|
||||||
|
<text name="preview_text">
|
||||||
|
Aperçu
|
||||||
|
</text>
|
||||||
|
<text name="status_text">
|
||||||
|
Enregistrez un extrait et cliquez sur un effet pour obtenir un aperçu.
|
||||||
|
</text>
|
||||||
|
<button label="Enregistrer" name="record_btn" tool_tip="Enregistrez un extrait de votre voix."/>
|
||||||
|
<button label="Arrêter" name="record_stop_btn"/>
|
||||||
|
<text name="voice_morphing_link">
|
||||||
|
S'abonner
|
||||||
|
</text>
|
||||||
|
<scroll_list name="voice_effect_list" tool_tip="Enregistrez un extrait de votre voix, puis cliquez sur un effet pour obtenir un aperçu.">
|
||||||
|
<scroll_list.columns label="Nom de l'effet" name="name"/>
|
||||||
|
<scroll_list.columns label="Date d'expiration" name="expires"/>
|
||||||
|
</scroll_list>
|
||||||
|
</floater>
|
||||||
159
indra/newview/skins/default/xui/pt/floater_voice_effect.xml
Normal file
159
indra/newview/skins/default/xui/pt/floater_voice_effect.xml
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
|
<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ">
|
||||||
|
<string name="no_voice_effect">
|
||||||
|
(Não distorcer voz)
|
||||||
|
</string>
|
||||||
|
<string name="active_voice_effect">
|
||||||
|
(Ativo)
|
||||||
|
</string>
|
||||||
|
<string name="unsubscribed_voice_effect">
|
||||||
|
(Cancelou)
|
||||||
|
</string>
|
||||||
|
<string name="new_voice_effect">
|
||||||
|
(Novo!)
|
||||||
|
</string>
|
||||||
|
<string name="effect_Arena">
|
||||||
|
Arena
|
||||||
|
</string>
|
||||||
|
<string name="effect_Beast">
|
||||||
|
Fera
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buff">
|
||||||
|
Entusiasmado
|
||||||
|
</string>
|
||||||
|
<string name="effect_Buzz">
|
||||||
|
Zumbido
|
||||||
|
</string>
|
||||||
|
<string name="effect_Camille">
|
||||||
|
Camille
|
||||||
|
</string>
|
||||||
|
<string name="effect_Creepy">
|
||||||
|
Assustador
|
||||||
|
</string>
|
||||||
|
<string name="effect_CreepyBot">
|
||||||
|
RobôAssustador
|
||||||
|
</string>
|
||||||
|
<string name="effect_Cyber">
|
||||||
|
Cyber
|
||||||
|
</string>
|
||||||
|
<string name="effect_DeepBot">
|
||||||
|
RobôVozGrossa
|
||||||
|
</string>
|
||||||
|
<string name="effect_Demon">
|
||||||
|
Demônio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Female Elf">
|
||||||
|
Elfa
|
||||||
|
</string>
|
||||||
|
<string name="effect_Flirty">
|
||||||
|
Paquerador
|
||||||
|
</string>
|
||||||
|
<string name="effect_Foxy">
|
||||||
|
Sensual
|
||||||
|
</string>
|
||||||
|
<string name="effect_Halloween 2010 Bonus">
|
||||||
|
Bônus_Halloween_2010
|
||||||
|
</string>
|
||||||
|
<string name="effect_Helium">
|
||||||
|
Hélio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Husky">
|
||||||
|
Rouco
|
||||||
|
</string>
|
||||||
|
<string name="effect_Husky Whisper">
|
||||||
|
Sussurro rouco
|
||||||
|
</string>
|
||||||
|
<string name="effect_Intercom">
|
||||||
|
Interfone
|
||||||
|
</string>
|
||||||
|
<string name="effect_Julia">
|
||||||
|
Julia
|
||||||
|
</string>
|
||||||
|
<string name="effect_Lo Lilt">
|
||||||
|
Cantarolado baixo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Macho">
|
||||||
|
Macho
|
||||||
|
</string>
|
||||||
|
<string name="effect_Micro">
|
||||||
|
Micro
|
||||||
|
</string>
|
||||||
|
<string name="effect_Mini">
|
||||||
|
Mini
|
||||||
|
</string>
|
||||||
|
<string name="effect_Model">
|
||||||
|
Modelo
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nano">
|
||||||
|
Nano
|
||||||
|
</string>
|
||||||
|
<string name="effect_Nightmare">
|
||||||
|
Pesadelo
|
||||||
|
</string>
|
||||||
|
<string name="effect_PopBot">
|
||||||
|
RobôPop
|
||||||
|
</string>
|
||||||
|
<string name="effect_Rachel">
|
||||||
|
Rachel
|
||||||
|
</string>
|
||||||
|
<string name="effect_Radio">
|
||||||
|
Rádio
|
||||||
|
</string>
|
||||||
|
<string name="effect_Robot">
|
||||||
|
Robô
|
||||||
|
</string>
|
||||||
|
<string name="effect_Roxanne">
|
||||||
|
Roxanne
|
||||||
|
</string>
|
||||||
|
<string name="effect_Rumble">
|
||||||
|
Ronco
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sabrina">
|
||||||
|
Sabrina
|
||||||
|
</string>
|
||||||
|
<string name="effect_Samantha">
|
||||||
|
Samantha
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sexy">
|
||||||
|
Sexy
|
||||||
|
</string>
|
||||||
|
<string name="effect_Shorty">
|
||||||
|
Baixinho
|
||||||
|
</string>
|
||||||
|
<string name="effect_Smaller">
|
||||||
|
Menor
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sneaky">
|
||||||
|
Sorrateiro
|
||||||
|
</string>
|
||||||
|
<string name="effect_Stallion">
|
||||||
|
Garanhão
|
||||||
|
</string>
|
||||||
|
<string name="effect_Sultry">
|
||||||
|
Ardente
|
||||||
|
</string>
|
||||||
|
<string name="effect_Thunder">
|
||||||
|
Trovão
|
||||||
|
</string>
|
||||||
|
<string name="effect_Vixen">
|
||||||
|
Maliciosa
|
||||||
|
</string>
|
||||||
|
<string name="effect_WhinyBot">
|
||||||
|
RobôReclamão
|
||||||
|
</string>
|
||||||
|
<text name="preview_text">
|
||||||
|
Visualizar
|
||||||
|
</text>
|
||||||
|
<text name="status_text">
|
||||||
|
Grave uma amostra da sua voz, depois clique em um efeito para ouvir o resultado.
|
||||||
|
</text>
|
||||||
|
<button label="Gravar" name="record_btn" tool_tip="Grave uma amostra da sua voz."/>
|
||||||
|
<button label="Parar" name="record_stop_btn"/>
|
||||||
|
<text name="voice_morphing_link">
|
||||||
|
Assine agora
|
||||||
|
</text>
|
||||||
|
<scroll_list name="voice_effect_list" tool_tip="Grave sua voz por alguns instantes, depois clique num efeito para ouvir a distorção.">
|
||||||
|
<scroll_list.columns label="Nome da voz" name="name"/>
|
||||||
|
<scroll_list.columns label="Vence em" name="expires"/>
|
||||||
|
</scroll_list>
|
||||||
|
</floater>
|
||||||
Reference in New Issue
Block a user