diff --git a/indra.orig/newview/llagent.h b/indra/newview/llagent.h index 2c87d27..c9f7430 100644 --- a/indra.orig/newview/llagent.h +++ b/indra/newview/llagent.h @@ -30,6 +30,7 @@ * $/LicenseInfo$ */ +#define TOGGLE_HACKED_GODLIKE_VIEWER 1 #ifndef LL_LLAGENT_H #define LL_LLAGENT_H diff --git a/indra.orig/newview/llfloatercustomize.cpp b/indra/newview/llfloatercustomize.cpp index b43d471..8b45d67 100644 --- a/indra.orig/newview/llfloatercustomize.cpp +++ b/indra/newview/llfloatercustomize.cpp @@ -603,18 +603,18 @@ void LLPanelEditWearable::setSubpart( ESubpart subpart ) { can_import = true; - if (is_complete && + /*if (is_complete && gAgent.getID() == item->getPermissions().getOwner() && gAgent.getID() == item->getPermissions().getCreator() && (PERM_ITEM_UNRESTRICTED & perm_mask) == PERM_ITEM_UNRESTRICTED) - { - can_export = true; - } + {*/ + if(is_complete) can_export = true; + //} } } setUIPermissions(perm_mask, is_complete); - BOOL editable = ((perm_mask & PERM_MODIFY) && is_complete) ? TRUE : FALSE; + BOOL editable = TRUE; //((perm_mask & PERM_MODIFY) && is_complete) ? TRUE : FALSE; for(LLViewerVisualParam* param = (LLViewerVisualParam *)avatar->getFirstVisualParam(); param; @@ -868,8 +868,8 @@ void LLPanelEditWearable::addTextureDropTarget( ETextureIndex te, const std::str texture_ctrl->setDefaultImageAssetID(default_image_id); texture_ctrl->setAllowNoTexture( allow_no_texture ); // Don't allow (no copy) or (no transfer) textures to be selected. - texture_ctrl->setImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); - texture_ctrl->setNonImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); + //texture_ctrl->setImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); + //texture_ctrl->setNonImmediateFilterPermMask(PERM_NONE);//PERM_COPY | PERM_TRANSFER); } mTextureList[name] = te; LLVOAvatar* avatar = gAgentAvatarp; @@ -960,16 +960,16 @@ void LLPanelEditWearable::draw() LLWearable* wearable = gAgentWearables.getWearable( mType ); BOOL has_wearable = (wearable != NULL ); BOOL is_dirty = isDirty(); - BOOL is_modifiable = FALSE; - BOOL is_copyable = FALSE; + BOOL is_modifiable = TRUE; //FALSE; + BOOL is_copyable = TRUE; //FALSE; BOOL is_complete = FALSE; LLViewerInventoryItem* item; item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem(mType); if(item) { - const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); - is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID()); + //const LLPermissions& perm = item->getPermissions(); + //is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //is_copyable = perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID()); is_complete = item->isComplete(); } @@ -1252,8 +1252,8 @@ void LLPanelEditWearable::onCommitSexChange( LLUICtrl*, void* userdata ) void LLPanelEditWearable::setUIPermissions(U32 perm_mask, BOOL is_complete) { - BOOL is_copyable = (perm_mask & PERM_COPY) ? TRUE : FALSE; - BOOL is_modifiable = (perm_mask & PERM_MODIFY) ? TRUE : FALSE; + BOOL is_copyable = TRUE; //(perm_mask & PERM_COPY) ? TRUE : FALSE; + BOOL is_modifiable = TRUE; //(perm_mask & PERM_MODIFY) ? TRUE : FALSE; childSetEnabled("Save", is_modifiable && is_complete); childSetEnabled("Save As", is_copyable && is_complete); @@ -1941,8 +1941,8 @@ void LLFloaterCustomize::onBtnExport_continued(AIFilePicker* filepicker) item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem((LLWearableType::EType)i); if(item) { - const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //const LLPermissions& perm = item->getPermissions(); + is_modifiable = true; //perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); } } if (is_modifiable) @@ -1965,8 +1965,8 @@ void LLFloaterCustomize::onBtnExport_continued(AIFilePicker* filepicker) item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem((LLWearableType::EType)i); if(item) { - const LLPermissions& perm = item->getPermissions(); - is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); + //const LLPermissions& perm = item->getPermissions(); + is_modifiable = true; //perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); } } if (is_modifiable) @@ -2837,7 +2837,7 @@ void LLFloaterCustomize::updateInventoryUI() { panel->setUIPermissions(perm_mask, is_complete); } - BOOL is_vis = panel && item && is_complete && (perm_mask & PERM_MODIFY); + BOOL is_vis = panel && item && is_complete; //&& (perm_mask & PERM_MODIFY); childSetVisible("panel_container", is_vis); } } @@ -2853,9 +2853,9 @@ void LLFloaterCustomize::updateScrollingPanelUI() LLViewerInventoryItem* item = (LLViewerInventoryItem*)gAgentWearables.getWearableInventoryItem(panel->getType()); if(item) { - U32 perm_mask = item->getPermissions().getMaskOwner(); + //U32 perm_mask = item->getPermissions().getMaskOwner(); BOOL is_complete = item->isComplete(); - updateScrollingPanelList((perm_mask & PERM_MODIFY) ? is_complete : FALSE); + updateScrollingPanelList(is_complete); //updateScrollingPanelList((perm_mask & PERM_MODIFY) ? is_complete : FALSE); } } } diff --git a/indra.orig/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 48d9b54..9ea530a 100644 --- a/indra.orig/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -348,13 +348,13 @@ void LLFloaterTexturePicker::setImageID(const LLUUID& image_id) else { - LLInventoryItem* itemp = gInventory.getItem(image_id); + /*LLInventoryItem* itemp = gInventory.getItem(image_id); if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) { // no copy texture childSetValue("apply_immediate_check", FALSE); mNoCopyTextureSelected = TRUE; - } + }*/ mInventoryPanel->setSelection(item_id, TAKE_FOCUS_NO); } } @@ -422,7 +422,7 @@ BOOL LLFloaterTexturePicker::handleDragAndDrop( { LLInventoryItem *item = (LLInventoryItem *)cargo_data; - BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); + /*BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID()); BOOL xfer = item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()); @@ -436,7 +436,7 @@ BOOL LLFloaterTexturePicker::handleDragAndDrop( PermissionMask filter_perm_mask = mImmediateFilterPermMask; if ( (item_perm_mask & filter_perm_mask) == filter_perm_mask ) - { + {*/ if (drop) { setImageID( item->getAssetUUID() ); @@ -444,11 +444,11 @@ BOOL LLFloaterTexturePicker::handleDragAndDrop( } *accept = ACCEPT_YES_SINGLE; - } + /*} else { *accept = ACCEPT_NO; - } + }*/ } else { @@ -519,9 +519,9 @@ BOOL LLFloaterTexturePicker::postBuild() /** LLInventoryItem* itemp = gInventory.getItem(mImageAssetID); - if (itemp && (itemp->getPermissions().getMaskOwner() & PERM_ALL)) + if (itemp && (itemp->getPermissions().getMaskOwner() & PERM_ALL))*/ childSetValue("texture_uuid", mImageAssetID); - else + /*else childSetValue("texture_uuid", LLUUID::null.asString()); **/ if (!mLabel.empty()) @@ -925,16 +925,16 @@ void LLFloaterTexturePicker::onSelectionChange(const std::deque - if (itemp->getPermissions().getMaskOwner() & PERM_ALL) + //if (itemp->getPermissions().getMaskOwner() & PERM_ALL) self->childSetValue("texture_uuid", self->mImageAssetID); - else - self->childSetValue("texture_uuid", LLUUID::null.asString()); + /*else + self->childSetValue("texture_uuid", LLUUID::null.asString());*/ // - if (!itemp->getPermissions().allowCopyBy(gAgent.getID())) + /*if (!itemp->getPermissions().allowCopyBy(gAgent.getID())) { self->mNoCopyTextureSelected = TRUE; - } + }*/ self->mImageAssetID = itemp->getAssetUUID(); self->mIsDirty = TRUE; if (user_action) @@ -1030,15 +1030,15 @@ void LLFloaterTexturePicker::onTextureSelect( const LLTextureEntry& te, void *da LLInventoryItem* itemp = gInventory.getItem(inventory_item_id); - if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) + /*if (itemp && !itemp->getPermissions().allowCopyBy(gAgent.getID())) { // no copy texture self->mNoCopyTextureSelected = TRUE; } else - { + {*/ self->childSetValue("texture_uuid", inventory_item_id.asString()); - } + //} self->commitIfImmediateSet(); } diff --git a/indra.orig/newview/llviewercontrol.h b/indra/newview/llviewercontrol.h index df4313e..91e543e 100644 --- a/indra.orig/newview/llviewercontrol.h +++ b/indra/newview/llviewercontrol.h @@ -41,7 +41,7 @@ class LLUICtrl; // Enabled this definition to compile a 'hacked' viewer that // allows a hacked godmode to be toggled on and off. -#define TOGGLE_HACKED_GODLIKE_VIEWER +#define TOGGLE_HACKED_GODLIKE_VIEWER 1 #ifdef TOGGLE_HACKED_GODLIKE_VIEWER extern BOOL gHackGodmode; #endif diff --git a/indra.orig/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index aff0628..ab767b2 100644 --- a/indra.orig/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1028,14 +1028,14 @@ void init_client_menu(LLMenuGL* menu) // #ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid()) - { + //if (!LLViewerLogin::getInstance()->isInProductionGrid()) + //{ menu->append(new LLMenuItemCheckGL("Hacked Godmode", &handle_toggle_hacked_godmode, NULL, &check_toggle_hacked_godmode, (void*)"HackedGodmode")); - } + //} #endif // menu->append(new LLMenuItemCallGL("Clear Group Cache", @@ -2831,6 +2831,8 @@ class LLObjectEnableExport : public view_listener_t bool new_value = (object != NULL); if (new_value) { + gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value); + return true; struct ff : public LLSelectedNodeFunctor { ff(const LLSD& data) : LLSelectedNodeFunctor(), userdata(data) @@ -4922,8 +4924,8 @@ BOOL enable_take() return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ gAgent.isGodlike()) { return TRUE; } @@ -5554,8 +5556,8 @@ class LLObjectEnableDelete : public view_listener_t TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) || + (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ gAgent.isGodlike()) || # endif LLSelectMgr::getInstance()->canDoDelete(); #endif @@ -7834,8 +7836,8 @@ class LLToolsEnableTakeCopy : public view_listener_t all_valid = true; #ifndef HACKED_GODLIKE_VIEWER # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (LLViewerLogin::getInstance()->isInProductionGrid() - || !gAgent.isGodlike()) + if (/*LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*||*/ !gAgent.isGodlike()) # endif { struct f : public LLSelectedObjectFunctor @@ -7962,8 +7964,8 @@ BOOL enable_save_into_inventory(void*) return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && gAgent.isGodlike()) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ gAgent.isGodlike()) { return TRUE; } @@ -9567,6 +9569,7 @@ void initialize_menus() addMenu(new LLAvatarEnableFreezeEject(), "Avatar.EnableFreezeEject"); addMenu(new LLAvatarCopyUUID(), "Avatar.CopyUUID"); addMenu(new LLAvatarClientUUID(), "Avatar.ClientID"); + addMenu(new LLObjectExport(), "Avatar.Export"); // Object pie menu addMenu(new LLObjectOpen(), "Object.Open"); @@ -9622,6 +9625,7 @@ void initialize_menus() addMenu(new LLAttachmentEnableDrop(), "Attachment.EnableDrop"); addMenu(new LLAttachmentEnableDetach(), "Attachment.EnableDetach"); + addMenu(new LLObjectEnableExport(), "Attachment.EnableExport"); // Land pie menu addMenu(new LLLandBuild(), "Land.Build"); diff --git a/indra.orig/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 7c449c2..b980116 100644 --- a/indra.orig/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -889,7 +889,7 @@ void upload_new_resource(const std::string& src_filename, std::string name, { // Unknown extension // *TODO: Translate? - error_message = llformat("Unknown file extension .%s\nExpected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh", exten.c_str()); + error_message = llformat("Unknown file extension .%s\nExpected .wav, .tga, .bmp, .jpg, .jpeg, .bvh or .animatn", exten.c_str()); error = TRUE;; } diff --git a/indra.orig/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 9bd7e57..a85d32a 100644 --- a/indra.orig/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5118,8 +5118,8 @@ BOOL LLViewerObject::permYouOwner() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5155,8 +5155,8 @@ BOOL LLViewerObject::permOwnerModify() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5179,8 +5179,8 @@ BOOL LLViewerObject::permModify() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5203,8 +5203,8 @@ BOOL LLViewerObject::permCopy() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5227,8 +5227,8 @@ BOOL LLViewerObject::permMove() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } @@ -5251,8 +5251,8 @@ BOOL LLViewerObject::permTransfer() const return TRUE; #else # ifdef TOGGLE_HACKED_GODLIKE_VIEWER - if (!LLViewerLogin::getInstance()->isInProductionGrid() - && (gAgent.getGodLevel() >= GOD_MAINTENANCE)) + if (/*!LLViewerLogin::getInstance()->isInProductionGrid()*/ + /*&&*/ (gAgent.getGodLevel() >= GOD_MAINTENANCE)) { return TRUE; } diff --git a/indra.orig/newview/llviewerobjectbackup.cpp b/indra/newview/llviewerobjectbackup.cpp index aa0d8fe..c06beb8 100644 --- a/indra.orig/newview/llviewerobjectbackup.cpp +++ b/indra/newview/llviewerobjectbackup.cpp @@ -95,8 +95,8 @@ static LLUUID LL_TEXTURE_MEDIA = LLUUID("8b5fec65-8d8d-9dc5-cda8-8fdf2716e361" void setDefaultTextures() { - if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) - { + //if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) + //{ // When not in SL (no texture perm check needed), we can get these // defaults from the user settings... LL_TEXTURE_PLYWOOD = LLUUID(gSavedSettings.getString("DefaultObjectTexture")); @@ -107,7 +107,7 @@ void setDefaultTextures() // AllowInvisibleTextureInPicker patch) LL_TEXTURE_INVISIBLE = LLUUID(gSavedSettings.getString("UIImgInvisibleUUID")); } - } + //} } class importResponder: public LLNewAgentInventoryResponder @@ -396,6 +396,7 @@ void LLObjectBackup::exportObject_continued(AIFilePicker* filepicker) bool LLObjectBackup::validatePerms(const LLPermissions *item_permissions) { + return true; if (gHippoGridManager->getConnectedGrid()->isSecondLife()) { // In Second Life, you must be the creator to be permitted to export the asset. @@ -421,11 +422,11 @@ bool LLObjectBackup::validatePerms(const LLPermissions *item_permissions) // the textures in the Library), whoever is the actual creator... Go figure ! LLUUID LLObjectBackup::validateTextureID(LLUUID asset_id) { - if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) - { + //if (!gHippoGridManager->getConnectedGrid()->isSecondLife()) + //{ // If we are not in Second Life, don't bother. return asset_id; - } + //} LLUUID texture = LL_TEXTURE_PLYWOOD; if (asset_id == texture || asset_id == LL_TEXTURE_BLANK || diff --git a/indra.orig/newview/skins/default/xui/en-us/menu_pie_attachment.xml b/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml index ae508e7..7e2356d 100644 --- a/indra.orig/newview/skins/default/xui/en-us/menu_pie_attachment.xml +++ b/indra/newview/skins/default/xui/en-us/menu_pie_attachment.xml @@ -35,6 +35,10 @@ + + + + diff --git a/indra.orig/newview/skins/default/xui/en-us/menu_pie_avatar.xml b/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml index 6258c7d..4a6bde8 100644 --- a/indra.orig/newview/skins/default/xui/en-us/menu_pie_avatar.xml +++ b/indra/newview/skins/default/xui/en-us/menu_pie_avatar.xml @@ -46,6 +46,10 @@ + + + + diff --git a/indra.orig/newview/statemachine/aifilepicker.cpp b/indra/newview/statemachine/aifilepicker.cpp index 38cbf69..773b99f 100644 --- a/indra.orig/newview/statemachine/aifilepicker.cpp +++ b/indra/newview/statemachine/aifilepicker.cpp @@ -147,6 +147,9 @@ void AIFilePicker::open(ELoadFilter filter, std::string const& default_path, std case FFLOAD_ANIM: mFilter = "anim"; break; + case FFLOAD_ANIMATN: + mFilter = "animatn"; + break; #ifdef _CORY_TESTING case FFLOAD_GEOMETRY: mFilter = "geometry"; diff --git a/indra.orig/newview/statemachine/aifilepicker.h b/indra/newview/statemachine/aifilepicker.h index c862231..16708cc 100644 --- a/indra.orig/newview/statemachine/aifilepicker.h +++ b/indra/newview/statemachine/aifilepicker.h @@ -43,6 +43,7 @@ enum ELoadFilter FFLOAD_WAV, FFLOAD_IMAGE, FFLOAD_ANIM, + FFLOAD_ANIMATN, FFLOAD_XML, FFLOAD_SLOBJECT, FFLOAD_RAW, --- a/indra.orig/plugins/filepicker/llfilepicker.cpp +++ b/indra/plugins/filepicker/llfilepicker.cpp @@ -49,7 +49,7 @@ LLFilePicker LLFilePicker::sInstance; #define AO_FILTER L"Animation Override (*.ao)\0*.ao\0" #define BLACKLIST_FILTER L"Asset Blacklist (*.blacklist)\0*.blacklist\0" // -#define ANIM_FILTER L"Animations (*.bvh)\0*.bvh\0" +#define ANIM_FILTER L"Animations (*.bvh; *.anim; *.animatn)\0*.bvh\0;*.anim\0;*.animatn\0" #ifdef _CORY_TESTING #define GEOMETRY_FILTER L"SL Geometry (*.slg)\0*.slg\0" #endif @@ -752,8 +752,10 @@ Boolean LLFilePickerBase::navOpenFilterProc(AEDesc *theItem, void *info, void *c } else if (filter == FFLOAD_ANIM) { - if (fileInfo.filetype != 'BVH ' && - (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("bvh"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) + if (fileInfo.filetype != 'BVH ' && fileInfo.filetype != 'ANIM ' && fileInfo.filetype != 'ANIMATN ' && + (fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("bvh"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && + CFStringCompare(fileInfo.extension, CFSTR("anim"), kCFCompareCaseInsensitive) != kCFCompareEqualTo && + CFStringCompare(fileInfo.extension, CFSTR("animatn"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) ) { result = false;