private void scriptEditorToolStripMenuItem_Click(object sender, EventArgs e) { ScriptEditor se = new ScriptEditor(instance); se.Dock = DockStyle.Fill; se.ShowDetached(); }
void UpdateItemInfo(InventoryItem item) { foreach (Control c in pnlDetail.Controls) { c.Dispose(); } pnlDetail.Controls.Clear(); pnlItemProperties.Tag = item; if (item == null) { pnlItemProperties.Visible = false; return; } pnlItemProperties.Visible = true; btnProfile.Enabled = true; txtItemName.Text = item.Name; txtItemDescription.Text = item.Description; txtCreator.AgentID = item.CreatorID; txtCreator.Tag = item.CreatorID; txtCreated.Text = item.CreationDate.ToString(); if (item.AssetUUID != UUID.Zero) { txtAssetID.Text = item.AssetUUID.ToString(); } else { txtAssetID.Text = String.Empty; } Permissions p = item.Permissions; cbOwnerModify.Checked = (p.OwnerMask & PermissionMask.Modify) != 0; cbOwnerCopy.Checked = (p.OwnerMask & PermissionMask.Copy) != 0; cbOwnerTransfer.Checked = (p.OwnerMask & PermissionMask.Transfer) != 0; cbNextOwnModify.CheckedChanged -= cbNextOwnerUpdate_CheckedChanged; cbNextOwnCopy.CheckedChanged -= cbNextOwnerUpdate_CheckedChanged; cbNextOwnTransfer.CheckedChanged -= cbNextOwnerUpdate_CheckedChanged; cbNextOwnModify.Checked = (p.NextOwnerMask & PermissionMask.Modify) != 0; cbNextOwnCopy.Checked = (p.NextOwnerMask & PermissionMask.Copy) != 0; cbNextOwnTransfer.Checked = (p.NextOwnerMask & PermissionMask.Transfer) != 0; cbNextOwnModify.CheckedChanged += cbNextOwnerUpdate_CheckedChanged; cbNextOwnCopy.CheckedChanged += cbNextOwnerUpdate_CheckedChanged; cbNextOwnTransfer.CheckedChanged += cbNextOwnerUpdate_CheckedChanged; switch (item.AssetType) { case AssetType.Texture: SLImageHandler image = new SLImageHandler(instance, item.AssetUUID, item.Name, IsFullPerm(item)); image.Dock = DockStyle.Fill; pnlDetail.Controls.Add(image); break; case AssetType.Notecard: Notecard note = new Notecard(instance, (InventoryNotecard)item); note.Dock = DockStyle.Fill; note.TabIndex = 3; note.TabStop = true; pnlDetail.Controls.Add(note); note.rtbContent.Focus(); break; case AssetType.Landmark: Landmark landmark = new Landmark(instance, (InventoryLandmark)item); landmark.Dock = DockStyle.Fill; pnlDetail.Controls.Add(landmark); break; case AssetType.LSLText: ScriptEditor script = new ScriptEditor(instance, (InventoryLSL)item); script.Dock = DockStyle.Fill; script.TabIndex = 3; script.TabStop = true; pnlDetail.Controls.Add(script); break; case AssetType.Gesture: Guesture gesture = new Guesture(instance, (InventoryGesture)item); gesture.Dock = DockStyle.Fill; pnlDetail.Controls.Add(gesture); break; } tabsInventory.SelectedTab = tabDetail; }
void invTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (invTree.SelectedNode.Tag is InventoryItem) { InventoryItem item = invTree.SelectedNode.Tag as InventoryItem; switch (item.AssetType) { case AssetType.Landmark: instance.TabConsole.DisplayNotificationInChat("Teleporting to " + item.Name); client.Self.RequestTeleport(item.AssetUUID); break; case AssetType.Gesture: client.Self.PlayGesture(item.AssetUUID); break; case AssetType.Notecard: Notecard note = new Notecard(instance, (InventoryNotecard)item); note.Dock = DockStyle.Fill; note.ShowDetached(); break; case AssetType.LSLText: ScriptEditor script = new ScriptEditor(instance, (InventoryLSL)item); script.Dock = DockStyle.Fill; script.ShowDetached(); break; } } }
private void OnInvContextClick(object sender, EventArgs e) { if (invTree.SelectedNode == null || !(invTree.SelectedNode.Tag is InventoryBase)) { return; } string cmd = ((ToolStripMenuItem)sender).Name; if (invTree.SelectedNode.Tag is InventoryFolder) { #region Folder actions InventoryFolder f = (InventoryFolder)invTree.SelectedNode.Tag; switch (cmd) { case "refresh": foreach (TreeNode old in invTree.SelectedNode.Nodes) { if (!(old.Tag is InventoryFolder)) { removeNode(old); } } fetchFolder(f.UUID, f.OwnerID, true); break; case "expand": invTree.SelectedNode.Expand(); break; case "expand_all": invTree.SelectedNode.ExpandAll(); break; case "collapse": invTree.SelectedNode.Collapse(); break; case "new_folder": newItemName = "New folder"; client.Inventory.CreateFolder(f.UUID, "New folder"); break; case "fix_type": client.Inventory.UpdateFolderProperties(f.UUID, f.ParentUUID, f.Name, AssetType.Unknown); invTree.Sort(); break; case "new_notecard": client.Inventory.RequestCreateItem(f.UUID, "New Note", "Radegast note: " + DateTime.Now.ToString(), AssetType.Notecard, UUID.Zero, InventoryType.Notecard, PermissionMask.All, NotecardCreated); break; case "new_script": client.Inventory.RequestCreateItem(f.UUID, "New script", "Radegast script: " + DateTime.Now.ToString(), AssetType.LSLText, UUID.Zero, InventoryType.LSL, PermissionMask.All, ScriptCreated); break; case "cut_folder": instance.InventoryClipboard = new InventoryClipboard(ClipboardOperation.Cut, f); break; case "copy_folder": instance.InventoryClipboard = new InventoryClipboard(ClipboardOperation.Copy, f); break; case "paste_folder": PerformClipboardOperation(invTree.SelectedNode.Tag as InventoryFolder); break; case "paste_folder_link": PerformLinkOperation(invTree.SelectedNode.Tag as InventoryFolder); break; case "delete_folder": client.Inventory.MoveFolder(f.UUID, client.Inventory.FindFolderForType(AssetType.TrashFolder), f.Name); break; case "empty_trash": { DialogResult res = MessageBox.Show("Are you sure you want to empty your trash?", "Confirmation", MessageBoxButtons.OKCancel); if (res == DialogResult.OK) { client.Inventory.EmptyTrash(); } } break; case "empty_lost_found": { DialogResult res = MessageBox.Show("Are you sure you want to empty your lost and found folder?", "Confirmation", MessageBoxButtons.OKCancel); if (res == DialogResult.OK) { client.Inventory.EmptyLostAndFound(); } } break; case "rename_folder": invTree.SelectedNode.BeginEdit(); break; case "outfit_replace": List<InventoryItem> newOutfit = new List<InventoryItem>(); foreach (InventoryBase item in Inventory.GetContents(f)) { if (item is InventoryItem) newOutfit.Add((InventoryItem)item); } appearnceWasBusy = client.Appearance.ManagerBusy; client.Appearance.ReplaceOutfit(newOutfit); client.Appearance.RequestSetAppearance(true); UpdateWornLabels(); break; case "outfit_add": List<InventoryItem> addToOutfit = new List<InventoryItem>(); foreach (InventoryBase item in Inventory.GetContents(f)) { if (item is InventoryItem) addToOutfit.Add((InventoryItem)item); } appearnceWasBusy = client.Appearance.ManagerBusy; client.Appearance.AddToOutfit(addToOutfit); UpdateWornLabels(); break; case "outfit_take_off": List<InventoryItem> removeFromOutfit = new List<InventoryItem>(); foreach (InventoryBase item in Inventory.GetContents(f)) { if (item is InventoryItem) removeFromOutfit.Add((InventoryItem)item); } appearnceWasBusy = client.Appearance.ManagerBusy; client.Appearance.RemoveFromOutfit(removeFromOutfit); UpdateWornLabels(); break; } #endregion } else if (invTree.SelectedNode.Tag is InventoryItem) { #region Item actions InventoryItem item = (InventoryItem)invTree.SelectedNode.Tag; switch (cmd) { case "copy_item": instance.InventoryClipboard = new InventoryClipboard(ClipboardOperation.Copy, item); break; case "cut_item": instance.InventoryClipboard = new InventoryClipboard(ClipboardOperation.Cut, item); break; case "paste_item": PerformClipboardOperation(invTree.SelectedNode.Parent.Tag as InventoryFolder); break; case "paste_item_link": PerformLinkOperation(invTree.SelectedNode.Parent.Tag as InventoryFolder); break; case "delete_item": client.Inventory.MoveItem(item.UUID, client.Inventory.FindFolderForType(AssetType.TrashFolder), item.Name); break; case "rename_item": invTree.SelectedNode.BeginEdit(); break; case "detach": instance.COF.Detach(item); lock (attachments) attachments.Remove(item.UUID); invTree.SelectedNode.Text = ItemLabel(item, false); break; case "wear_attachment": instance.COF.Attach(item, AttachmentPoint.Default, true); break; case "wear_attachment_add": instance.COF.Attach(item, AttachmentPoint.Default, false); break; case "attach_to": AttachmentPoint pt = (AttachmentPoint)((ToolStripMenuItem)sender).Tag; instance.COF.Attach(item, pt, true); break; case "edit_script": ScriptEditor se = new ScriptEditor(instance, (InventoryLSL)item); se.Detached = true; return; case "view_image": UpdateItemInfo(item); break; case "item_take_off": appearnceWasBusy = client.Appearance.ManagerBusy; client.Appearance.RemoveFromOutfit(item); invTree.SelectedNode.Text = ItemLabel(item, false); lock (WornItems) { if (WornItems.Contains(item.UUID)) { WornItems.Remove(item.UUID); } } break; case "item_wear": appearnceWasBusy = client.Appearance.ManagerBusy; client.Appearance.AddToOutfit(item); invTree.SelectedNode.Text = ItemLabel(item, false); break; case "lm_teleport": instance.TabConsole.DisplayNotificationInChat("Teleporting to " + item.Name); client.Self.RequestTeleport(item.AssetUUID); break; case "lm_info": UpdateItemInfo(item); break; case "notecard_open": UpdateItemInfo(item); break; case "gesture_info": UpdateItemInfo(item); break; case "gesture_play": client.Self.PlayGesture(item.AssetUUID); break; case "animation_play": Dictionary<UUID, bool> anim = new Dictionary<UUID, bool>(); anim.Add(item.AssetUUID, true); client.Self.Animate(anim, true); break; case "animation_stop": Dictionary<UUID, bool> animStop = new Dictionary<UUID, bool>(); animStop.Add(item.AssetUUID, false); client.Self.Animate(animStop, true); break; case "rez_inworld": instance.MediaManager.PlayUISound(UISounds.ObjectRez); Vector3 rezpos = new Vector3(2, 0, 0); rezpos = client.Self.SimPosition + rezpos * client.Self.Movement.BodyRotation; client.Inventory.RequestRezFromInventory(client.Network.CurrentSim, Quaternion.Identity, rezpos, item); break; } #endregion } }
void invTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (invTree.SelectedNode.Tag is InventoryItem) { InventoryItem item = invTree.SelectedNode.Tag as InventoryItem; item = instance.COF.RealInventoryItem(item); switch (item.AssetType) { case AssetType.Landmark: instance.TabConsole.DisplayNotificationInChat("Teleporting to " + item.Name); client.Self.RequestTeleport(item.AssetUUID); break; case AssetType.Gesture: client.Self.PlayGesture(item.AssetUUID); break; case AssetType.Notecard: Notecard note = new Notecard(instance, (InventoryNotecard)item); note.Dock = DockStyle.Fill; note.ShowDetached(); break; case AssetType.LSLText: ScriptEditor script = new ScriptEditor(instance, (InventoryLSL)item); script.Dock = DockStyle.Fill; script.ShowDetached(); break; case AssetType.Object: if (IsAttached(item)) { instance.COF.Detach(item); } else { instance.COF.Attach(item, AttachmentPoint.Default, true); } break; case AssetType.Bodypart: case AssetType.Clothing: if (IsWorn(item)) { if (item.AssetType == AssetType.Clothing) { instance.COF.RemoveFromOutfit(item); } } else { instance.COF.AddToOutfit(item, true); } break; } } }