Another port from CoolViewer of the notecard floater, featuring a menu and search/replace.

This commit is contained in:
Player Dagostino
2011-08-02 20:07:55 +02:00
parent bcc541f3f2
commit f3d6931fc3
8 changed files with 386 additions and 191 deletions

View File

@@ -231,6 +231,7 @@ set(viewer_SOURCE_FILES
llfloaterproperties.cpp
llfloaterregioninfo.cpp
llfloaterreporter.cpp
llfloatersearchreplace.cpp
llfloaterscriptdebug.cpp
llfloatersellland.cpp
llfloatersettingsdebug.cpp
@@ -709,6 +710,7 @@ set(viewer_HEADER_FILES
llfloaterproperties.h
llfloaterregioninfo.h
llfloaterreporter.h
llfloatersearchreplace.h
llfloaterscriptdebug.h
llfloatersellland.h
llfloatersettingsdebug.h

View File

@@ -46,6 +46,9 @@
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "lldbstrings.h"
#include "llfloatersearchreplace.h"
#include "llpreviewnotecard.h"
#include "llpreviewscript.h"
#include "llagent.h"
#include "llvoavatar.h"
#include "llselectmgr.h"
@@ -576,6 +579,24 @@ void LLMultiPreview::tabOpen(LLFloater* opened_floater, bool from_click)
{
opened_preview->loadAsset();
}
LLFloater* search_floater = LLFloaterSearchReplace::getInstance();
if (search_floater && search_floater->getDependee() == this)
{
LLPreviewNotecard* notecard_preview; LLPreviewLSL* script_preview;
if ((notecard_preview = dynamic_cast<LLPreviewNotecard*>(opened_preview)) != NULL)
{
LLFloaterSearchReplace::show(notecard_preview->getEditor());
}
else if ((script_preview = dynamic_cast<LLPreviewLSL*>(opened_preview)) != NULL)
{
LLFloaterSearchReplace::show(script_preview->getEditor());
}
else
{
search_floater->setVisible(FALSE);
}
}
}
//static

View File

@@ -35,12 +35,14 @@
#include "llpreviewnotecard.h"
#include "llinventory.h"
#include "llmenugl.h"
#include "llagent.h"
#include "llagentcamera.h"
#include "llassetuploadresponders.h"
#include "llviewerwindow.h"
#include "llbutton.h"
#include "llfloatersearchreplace.h"
#include "llinventorymodel.h"
#include "lllineeditor.h"
#include "llnotify.h"
@@ -111,7 +113,6 @@ LLPreviewNotecard::LLPreviewNotecard(const std::string& name,
else
{
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_preview_notecard.xml");
childSetAction("Save",onClickSave,this);
// <edit>
childSetAction("Get Items", onClickGetItems, this);
// </edit>
@@ -125,6 +126,7 @@ LLPreviewNotecard::LLPreviewNotecard(const std::string& name,
}
}
}
childSetAction("Save",onClickSave,this);
// only assert shape if not hosted in a multifloater
if (!getHost())
@@ -153,6 +155,8 @@ LLPreviewNotecard::LLPreviewNotecard(const std::string& name,
editor->setHandleEditKeysDirectly(TRUE);
}
initMenu();
gAgentCamera.changeCameraToDefault();
}
@@ -222,6 +226,12 @@ BOOL LLPreviewNotecard::handleKeyHere(KEY key, MASK mask)
return TRUE;
}
if ('F' == key && (mask & MASK_CONTROL) && !(mask & (MASK_SHIFT | MASK_ALT)))
{
LLFloaterSearchReplace::show(getChild<LLViewerTextEditor>("Notecard Editor"));
return TRUE;
}
return LLPreview::handleKeyHere(key, mask);
}
@@ -775,4 +785,221 @@ LLTextEditor* LLPreviewNotecard::getEditor()
return getChild<LLViewerTextEditor>("Notecard Editor");
}
void LLPreviewNotecard::initMenu()
{
LLMenuItemCallGL* menuItem = getChild<LLMenuItemCallGL>("Undo");
menuItem->setMenuCallback(onUndoMenu, this);
menuItem->setEnabledCallback(enableUndoMenu);
menuItem = getChild<LLMenuItemCallGL>("Redo");
menuItem->setMenuCallback(onRedoMenu, this);
menuItem->setEnabledCallback(enableRedoMenu);
menuItem = getChild<LLMenuItemCallGL>("Cut");
menuItem->setMenuCallback(onCutMenu, this);
menuItem->setEnabledCallback(enableCutMenu);
menuItem = getChild<LLMenuItemCallGL>("Copy");
menuItem->setMenuCallback(onCopyMenu, this);
menuItem->setEnabledCallback(enableCopyMenu);
menuItem = getChild<LLMenuItemCallGL>("Paste");
menuItem->setMenuCallback(onPasteMenu, this);
menuItem->setEnabledCallback(enablePasteMenu);
menuItem = getChild<LLMenuItemCallGL>("Select All");
menuItem->setMenuCallback(onSelectAllMenu, this);
menuItem->setEnabledCallback(enableSelectAllMenu);
menuItem = getChild<LLMenuItemCallGL>("Deselect");
menuItem->setMenuCallback(onDeselectMenu, this);
menuItem->setEnabledCallback(enableDeselectMenu);
menuItem = getChild<LLMenuItemCallGL>("Search / Replace...");
menuItem->setMenuCallback(onSearchMenu, this);
menuItem->setEnabledCallback(NULL);
}
// static
void LLPreviewNotecard::onSearchMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
LLFloaterSearchReplace::show(editor);
}
}
}
// static
void LLPreviewNotecard::onUndoMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->undo();
}
}
}
// static
void LLPreviewNotecard::onRedoMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->redo();
}
}
}
// static
void LLPreviewNotecard::onCutMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->cut();
}
}
}
// static
void LLPreviewNotecard::onCopyMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->copy();
}
}
}
// static
void LLPreviewNotecard::onPasteMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->paste();
}
}
}
// static
void LLPreviewNotecard::onSelectAllMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->selectAll();
}
}
}
// static
void LLPreviewNotecard::onDeselectMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (self)
{
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (editor)
{
editor->deselect();
}
}
}
// static
BOOL LLPreviewNotecard::enableUndoMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canUndo();
}
// static
BOOL LLPreviewNotecard::enableRedoMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canRedo();
}
// static
BOOL LLPreviewNotecard::enableCutMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canCut();
}
// static
BOOL LLPreviewNotecard::enableCopyMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canCopy();
}
// static
BOOL LLPreviewNotecard::enablePasteMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canPaste();
}
// static
BOOL LLPreviewNotecard::enableSelectAllMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canSelectAll();
}
// static
BOOL LLPreviewNotecard::enableDeselectMenu(void* userdata)
{
LLPreviewNotecard* self = (LLPreviewNotecard*)userdata;
if (!self) return FALSE;
LLViewerTextEditor* editor = self->getChild<LLViewerTextEditor>("Notecard Editor");
if (!editor) return FALSE;
return editor->canDeselect();
}
// EOF

View File

@@ -45,6 +45,8 @@
class LLTextEditor;
class LLViewerTextEditor;
class LLTextEditor;
class LLMenuBarGL;
class LLButton;
class AIFilePicker;
@@ -117,6 +119,25 @@ protected:
virtual const char *getTitleName() const { return "Note"; }
void initMenu();
static void onSearchMenu(void* userdata);
static void onUndoMenu(void* userdata);
static void onRedoMenu(void* userdata);
static void onCutMenu(void* userdata);
static void onCopyMenu(void* userdata);
static void onPasteMenu(void* userdata);
static void onSelectAllMenu(void* userdata);
static void onDeselectMenu(void* userdata);
static BOOL enableUndoMenu(void* userdata);
static BOOL enableRedoMenu(void* userdata);
static BOOL enableCutMenu(void* userdata);
static BOOL enableCopyMenu(void* userdata);
static BOOL enablePasteMenu(void* userdata);
static BOOL enableSelectAllMenu(void* userdata);
static BOOL enableDeselectMenu(void* userdata);
protected:
LLViewerTextEditor* mEditor;
LLButton* mSaveBtn;

View File

@@ -77,6 +77,7 @@
#include "lldir.h"
#include "llcombobox.h"
//#include "llfloaterchat.h"
#include "llfloatersearchreplace.h"
#include "llviewerstats.h"
#include "llviewertexteditor.h"
#include "llviewerwindow.h"
@@ -134,10 +135,6 @@ const S32 SCRIPT_MIN_HEIGHT =
const S32 MAX_EXPORT_SIZE = 1000;
const S32 SCRIPT_SEARCH_WIDTH = 300;
const S32 SCRIPT_SEARCH_HEIGHT = 120;
const S32 SCRIPT_SEARCH_LABEL_WIDTH = 50;
const S32 SCRIPT_SEARCH_BUTTON_WIDTH = 80;
const S32 TEXT_EDIT_COLUMN_HEIGHT = 16;
const S32 MAX_HISTORY_COUNT = 10;
const F32 LIVE_HELP_REFRESH_TIME = 1.f;
@@ -148,148 +145,6 @@ static bool have_script_upload_cap(LLUUID& object_id)
return object && (! object->getRegion()->getCapability("UpdateScriptTask").empty());
}
/// ---------------------------------------------------------------------------
/// LLFloaterScriptSearch
/// ---------------------------------------------------------------------------
class LLFloaterScriptSearch : public LLFloater
{
public:
LLFloaterScriptSearch(std::string title, LLRect rect, LLScriptEdCore* editor_core);
~LLFloaterScriptSearch();
static void show(LLScriptEdCore* editor_core);
static void onBtnSearch(void* userdata);
void handleBtnSearch();
static void onBtnReplace(void* userdata);
void handleBtnReplace();
static void onBtnReplaceAll(void* userdata);
void handleBtnReplaceAll();
LLScriptEdCore* getEditorCore() { return mEditorCore; }
static LLFloaterScriptSearch* getInstance() { return sInstance; }
void open(); /*Flawfinder: ignore*/
private:
LLScriptEdCore* mEditorCore;
static LLFloaterScriptSearch* sInstance;
};
LLFloaterScriptSearch* LLFloaterScriptSearch::sInstance = NULL;
LLFloaterScriptSearch::LLFloaterScriptSearch(std::string title, LLRect rect, LLScriptEdCore* editor_core)
: LLFloater("script search",rect,title), mEditorCore(editor_core)
{
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_search.xml");
childSetAction("search_btn", onBtnSearch,this);
childSetAction("replace_btn", onBtnReplace,this);
childSetAction("replace_all_btn", onBtnReplaceAll,this);
setDefaultBtn("search_btn");
if (!getHost())
{
LLRect curRect = getRect();
translate(rect.mLeft - curRect.mLeft, rect.mTop - curRect.mTop);
}
sInstance = this;
childSetFocus("search_text", TRUE);
// find floater in which script panel is embedded
LLView* viewp = (LLView*)editor_core;
while(viewp)
{
LLFloater* floaterp = dynamic_cast<LLFloater*>(viewp);
if (floaterp)
{
floaterp->addDependentFloater(this);
break;
}
viewp = viewp->getParent();
}
}
//static
void LLFloaterScriptSearch::show(LLScriptEdCore* editor_core)
{
if (sInstance && sInstance->mEditorCore && sInstance->mEditorCore != editor_core)
{
sInstance->close();
delete sInstance;
}
if (!sInstance)
{
S32 left = 0;
S32 top = 0;
gFloaterView->getNewFloaterPosition(&left,&top);
// sInstance will be assigned in the constructor.
new LLFloaterScriptSearch("Script Search",LLRect(left,top,left + SCRIPT_SEARCH_WIDTH,top - SCRIPT_SEARCH_HEIGHT),editor_core);
}
sInstance->open(); /*Flawfinder: ignore*/
}
LLFloaterScriptSearch::~LLFloaterScriptSearch()
{
sInstance = NULL;
}
// static
void LLFloaterScriptSearch::onBtnSearch(void *userdata)
{
LLFloaterScriptSearch* self = (LLFloaterScriptSearch*)userdata;
self->handleBtnSearch();
}
void LLFloaterScriptSearch::handleBtnSearch()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
mEditorCore->mEditor->selectNext(childGetText("search_text"), caseChk->get());
}
// static
void LLFloaterScriptSearch::onBtnReplace(void *userdata)
{
LLFloaterScriptSearch* self = (LLFloaterScriptSearch*)userdata;
self->handleBtnReplace();
}
void LLFloaterScriptSearch::handleBtnReplace()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
mEditorCore->mEditor->replaceText(childGetText("search_text"), childGetText("replace_text"), caseChk->get());
}
// static
void LLFloaterScriptSearch::onBtnReplaceAll(void *userdata)
{
LLFloaterScriptSearch* self = (LLFloaterScriptSearch*)userdata;
self->handleBtnReplaceAll();
}
void LLFloaterScriptSearch::handleBtnReplaceAll()
{
LLCheckBoxCtrl* caseChk = getChild<LLCheckBoxCtrl>("case_text");
mEditorCore->mEditor->replaceTextAll(childGetText("search_text"), childGetText("replace_text"), caseChk->get());
}
void LLFloaterScriptSearch::open() /*Flawfinder: ignore*/
{
LLFloater::open(); /*Flawfinder: ignore*/
childSetFocus("search_text", TRUE);
}
/// ---------------------------------------------------------------------------
/// LLScriptEdCore
/// ---------------------------------------------------------------------------
@@ -433,14 +288,6 @@ LLScriptEdCore::LLScriptEdCore(
LLScriptEdCore::~LLScriptEdCore()
{
deleteBridges();
// If the search window is up for this editor, close it.
LLFloaterScriptSearch* script_search = LLFloaterScriptSearch::getInstance();
if (script_search && script_search->getEditorCore() == this)
{
script_search->close();
delete script_search;
}
}
BOOL LLScriptEdCore::tick()
@@ -484,6 +331,10 @@ void LLScriptEdCore::initMenu()
menuItem->setMenuCallback(onSelectAllMenu, this);
menuItem->setEnabledCallback(enableSelectAllMenu);
menuItem = getChild<LLMenuItemCallGL>("Deselect");
menuItem->setMenuCallback(onDeselectMenu, this);
menuItem->setEnabledCallback(enableDeselectMenu);
menuItem = getChild<LLMenuItemCallGL>("Search / Replace...");
menuItem->setMenuCallback(onSearchMenu, this);
menuItem->setEnabledCallback(NULL);
@@ -931,7 +782,10 @@ void LLScriptEdCore::onBtnUndoChanges( void* userdata )
void LLScriptEdCore::onSearchMenu(void* userdata)
{
LLScriptEdCore* sec = (LLScriptEdCore*)userdata;
LLFloaterScriptSearch::show(sec);
if (sec && sec->mEditor)
{
LLFloaterSearchReplace::show(sec->mEditor);
}
}
// static
@@ -1339,7 +1193,10 @@ void LLPreviewLSL::onSearchReplace(void* userdata)
{
LLPreviewLSL* self = (LLPreviewLSL*)userdata;
LLScriptEdCore* sec = self->mScriptEd;
LLFloaterScriptSearch::show(sec);
if (sec && sec->mEditor)
{
LLFloaterSearchReplace::show(sec->mEditor);
}
}
// static
@@ -2193,7 +2050,10 @@ void LLLiveLSLEditor::onSearchReplace(void* userdata)
LLLiveLSLEditor* self = (LLLiveLSLEditor*)userdata;
LLScriptEdCore* sec = self->mScriptEd;
LLFloaterScriptSearch::show(sec);
if (sec && sec->mEditor)
{
LLFloaterSearchReplace::show(sec->mEditor);
}
}
struct LLLiveLSLSaveData

View File

@@ -51,7 +51,6 @@ class LLScrollListCtrl;
class LLViewerObject;
struct LLEntryAndEdCore;
class LLMenuBarGL;
class LLFloaterScriptSearch;
class LLKeywordToken;
class AIFilePicker;
@@ -61,7 +60,6 @@ class LLScriptEdCore : public LLPanel, public LLEventTimer
friend class LLPreviewScript;
friend class LLPreviewLSL;
friend class LLLiveLSLEditor;
friend class LLFloaterScriptSearch;
public:
LLScriptEdCore(
@@ -204,6 +202,7 @@ protected:
static void onSaveBytecodeComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status);
public:
static LLPreviewLSL* getInstance(const LLUUID& uuid);
LLTextEditor* getEditor() { return mScriptEd->mEditor; }
protected:
static void* createScriptEdPanel(void* userdata);

View File

@@ -1,13 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater bottom="-762" can_close="true" can_drag_on_left="false" can_minimize="true"
can_resize="true" enabled="true" follows="left|top" height="361" left="273"
min_height="243" min_width="234" mouse_opaque="true"
can_resize="true" enabled="true" follows="left|top" height="377" left="273"
min_height="259" min_width="234" mouse_opaque="true"
name="preview notecard" title="Note:" width="400">
<button bottom="-352" enabled="false" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Save" label_selected="Save" left="9"
mouse_opaque="false" name="Save" scale_image="true" width="100" />
<button bottom="-352" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Get Items" label_selected="Get Items" left_delta="110"
<button bottom="-370" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Get Items" label_selected="Get Items" left_delta="120"
mouse_opaque="false" name="Get Items" scale_image="true" width="100" />
<!--<check_box follows="left|bottom" bottom_delta="0" left_delta="110" name="https_chk" label="Saves via HTTPS" />-->
<icon bottom="-19" color="1 1 1 1" enabled="true" follows="top|right" height="16"
@@ -24,12 +21,44 @@
handle_edit_keys_directly="false" height="19" left="93" max_length="127"
mouse_opaque="true" name="desc" select_all_on_focus_received="false"
select_on_focus="false" width="294" spell_check="true" />
<text_editor type="string" length="1" bottom="-327" embedded_items="true" enabled="true"
follows="left|top|right|bottom" font="SansSerif" height="281"
<menu_bar bottom="-56" drop_shadow="false" enabled="true" follows="left|top|right"
height="18" left="8" mouse_opaque="false" name="motecard_menu" opaque="false"
tear_off="false" width="220">
<menu bottom_delta="16" left="0" drop_shadow="true" enabled="true" height="198" width="150"
mouse_opaque="false" name="Edit" opaque="true" tear_off="false">
<menu_item_call bottom_delta="-30" enabled="false" height="20" label="Undo" left="0"
mouse_opaque="true" name="Undo" width="139" />
<menu_item_call bottom_delta="-50" enabled="false" height="20" label="Redo" left="0"
mouse_opaque="true" name="Redo" width="139" />
<menu_item_separator bottom_delta="-58" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator1" width="139" />
<menu_item_call bottom_delta="-78" enabled="false" height="20" label="Cut" left="0"
mouse_opaque="true" name="Cut" width="139" />
<menu_item_call bottom_delta="-98" enabled="false" height="20" label="Copy" left="0"
mouse_opaque="true" name="Copy" width="139" />
<menu_item_call bottom_delta="-118" enabled="false" height="20" label="Paste" left="0"
mouse_opaque="true" name="Paste" width="139" />
<menu_item_separator bottom_delta="-126" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator2" width="139" />
<menu_item_call bottom_delta="-146" enabled="true" height="20" label="Select All" left="0"
mouse_opaque="true" name="Select All" width="139" />
<menu_item_call bottom_delta="-166" enabled="false" height="20" label="Deselect" left="0"
mouse_opaque="true" name="Deselect" width="139" />
<menu_item_separator bottom_delta="-174" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator3" width="139" />
<menu_item_call bottom_delta="-194" enabled="true" height="20" label="Search / Replace..."
left="0" mouse_opaque="true" name="Search / Replace..." width="139" />
</menu>
</menu_bar>
<text_editor type="string" length="1" bottom="-344" embedded_items="true" enabled="true"
follows="left|top|right|bottom" font="SansSerif" height="285"
ignore_tab="false" left="4" max_length="65536" mouse_opaque="true"
name="Notecard Editor" width="392" word_wrap="true" spell_check="true">
Loading...
</text_editor>
<button bottom="-370" enabled="false" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Save" label_selected="Save" left="9"
mouse_opaque="false" name="Save" scale_image="true" width="100" />
<string name="no_object">
Unable to find object containing this note.
</string>

View File

@@ -1,35 +1,71 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater bottom="-484" can_close="true" can_drag_on_left="false" can_minimize="true"
can_resize="true" enabled="true" height="400" left="138" min_height="243"
min_width="234" mouse_opaque="true" name="preview_notecard" width="400">
<text_editor type="string" length="1" bottom="-366"
embedded_items="true" enabled="true" follows="left|top|right|bottom"
font="SansSerif" height="320" ignore_tab="false" left="4"
max_length="65536" mouse_opaque="true" name="Notecard Editor" width="392"
word_wrap="true">
Loading...
</text_editor>
<floater bottom="-762" can_close="true" can_drag_on_left="false" can_minimize="true"
can_resize="true" enabled="true" follows="left|top" height="377" left="273"
min_height="259" min_width="350" mouse_opaque="true"
name="preview notecard" title="Note:" width="400">
<icon bottom="-19" color="1 1 1 1" enabled="true" follows="top|right" height="16"
image_name="icon_lock.tga" left="344" mouse_opaque="true" name="lock"
width="16" />
<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="-38" drop_shadow_visible="true" enabled="true" follows="left|top"
font="SansSerif" h_pad="0" halign="left" height="19" left="13"
mouse_opaque="true" name="desc txt" v_pad="0" width="80">
Description:
</text>
<icon bottom="-19" color="1 1 1 1" enabled="true" follows="top|right" height="16"
image_name="icon_lock.tga" left="344" mouse_opaque="true" name="lock"
width="16" />
<button bottom="-391" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Keep" label_selected="Keep" left="9"
mouse_opaque="true" name="Keep" scale_image="true" width="100" />
<button bottom="-391" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Discard" label_selected="Discard"
left="114" mouse_opaque="true" name="Discard" scale_image="true"
width="100" />
<line_editor bevel_style="in" border_style="line" border_thickness="1" bottom="-38"
enabled="true" follows="left|top|right" font="SansSerif"
handle_edit_keys_directly="false" height="19" left="93" max_length="127"
mouse_opaque="true" name="desc" select_all_on_focus_received="false"
select_on_focus="false" width="294" spell_check="true" />
<string name="no_object">Unable to find object containing this note.:</string>
<string name="not_allowed">You are not allowed to view this note.</string>
<menu_bar bottom="-56" drop_shadow="false" enabled="true" follows="left|top|right"
height="18" left="8" mouse_opaque="false" name="motecard_menu" opaque="false"
tear_off="false" width="220">
<menu bottom_delta="16" left="0" drop_shadow="true" enabled="true" height="198" width="150"
mouse_opaque="false" name="Edit" opaque="true" tear_off="false">
<menu_item_call bottom_delta="-30" enabled="false" height="20" label="Undo" left="0"
mouse_opaque="true" name="Undo" width="139" />
<menu_item_call bottom_delta="-50" enabled="false" height="20" label="Redo" left="0"
mouse_opaque="true" name="Redo" width="139" />
<menu_item_separator bottom_delta="-58" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator1" width="139" />
<menu_item_call bottom_delta="-78" enabled="false" height="20" label="Cut" left="0"
mouse_opaque="true" name="Cut" width="139" />
<menu_item_call bottom_delta="-98" enabled="false" height="20" label="Copy" left="0"
mouse_opaque="true" name="Copy" width="139" />
<menu_item_call bottom_delta="-118" enabled="false" height="20" label="Paste" left="0"
mouse_opaque="true" name="Paste" width="139" />
<menu_item_separator bottom_delta="-126" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator2" width="139" />
<menu_item_call bottom_delta="-146" enabled="true" height="20" label="Select All" left="0"
mouse_opaque="true" name="Select All" width="139" />
<menu_item_call bottom_delta="-166" enabled="false" height="20" label="Deselect" left="0"
mouse_opaque="true" name="Deselect" width="139" />
<menu_item_separator bottom_delta="-174" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator3" width="139" />
<menu_item_call bottom_delta="-194" enabled="true" height="20" label="Search / Replace..."
left="0" mouse_opaque="true" name="Search / Replace..." width="139" />
</menu>
</menu_bar>
<text_editor type="string" length="1" bottom="-344" embedded_items="true" enabled="true"
follows="left|top|right|bottom" font="SansSerif" height="285"
ignore_tab="false" left="4" max_length="65536" mouse_opaque="true"
name="Notecard Editor" width="392" word_wrap="true">
Loading...
</text_editor>
<button bottom="-370" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Keep" label_selected="Keep" left="9"
mouse_opaque="true" name="Keep" scale_image="true" width="100" />
<button bottom="-370" enabled="false" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Save" label_selected="Save" left="114"
mouse_opaque="false" name="Save" scale_image="true" width="100" />
<button bottom="-370" enabled="true" follows="left|bottom" font="SansSerif"
halign="center" height="20" label="Discard" label_selected="Discard"
left="219" mouse_opaque="true" name="Discard" scale_image="true"
width="100" />
<string name="no_object">
Unable to find object containing this note.
</string>
<string name="not_allowed">
You are not allowed to view this note.
</string>
</floater>