private void ctxObjects_Opening(object csender, System.ComponentModel.CancelEventArgs ce)
{
// Clear all context menu items
ctxMenu.Items.Clear();
ce.Cancel = false;
ToolStripMenuItem item;
// Always add standup button if we are sitting
if (Instance.State.IsSitting)
{
item = new ToolStripMenuItem("Stand Up", null, (sender, e) =>
{
instance.State.SetSitting(false, UUID.Zero);
});
ctxMenu.Items.Add(item);
}
// Was it prim that was right clicked
if (RightclickedObject != null && RightclickedObject is RenderPrimitive)
{
RenderPrimitive prim = (RenderPrimitive)RightclickedObject;
// Sit button handling
if (!instance.State.IsSitting)
{
item = new ToolStripMenuItem("Sit", null, (sender, e) =>
{
instance.State.SetSitting(true, prim.Prim.ID);
});
if (prim.Prim.Properties != null
&& !string.IsNullOrEmpty(prim.Prim.Properties.SitName))
{
item.Text = prim.Prim.Properties.SitName;
}
ctxMenu.Items.Add(item);
}
// Is the prim touchable
if ((prim.Prim.Flags & PrimFlags.Touch) != 0)
{
item = new ToolStripMenuItem("Touch", null, (sender, e) =>
{
Client.Self.Grab(prim.Prim.LocalID, Vector3.Zero, Vector3.Zero, Vector3.Zero, RightclickedFaceID, Vector3.Zero, Vector3.Zero, Vector3.Zero);
Thread.Sleep(100);
Client.Self.DeGrab(prim.Prim.LocalID, Vector3.Zero, Vector3.Zero, RightclickedFaceID, Vector3.Zero, Vector3.Zero, Vector3.Zero);
});
if (prim.Prim.Properties != null
&& !string.IsNullOrEmpty(prim.Prim.Properties.TouchName))
{
item.Text = prim.Prim.Properties.TouchName;
}
ctxMenu.Items.Add(item);
}
// Can I delete and take this object?
if ((prim.Prim.Flags & (PrimFlags.ObjectYouOwner | PrimFlags.ObjectYouOfficer)) != 0)
{
// Take button
item = new ToolStripMenuItem("Take", null, (sender, e) =>
{
instance.MediaManager.PlayUISound(UISounds.ObjectDelete);
Client.Inventory.RequestDeRezToInventory(prim.Prim.LocalID);
});
ctxMenu.Items.Add(item);
// Delete button
item = new ToolStripMenuItem("Delete", null, (sender, e) =>
{
instance.MediaManager.PlayUISound(UISounds.ObjectDelete);
Client.Inventory.RequestDeRezToInventory(prim.Prim.LocalID, DeRezDestination.AgentInventoryTake, Client.Inventory.FindFolderForType(FolderType.Trash), UUID.Random());
});
ctxMenu.Items.Add(item);
}
// add prim context menu items
instance.ContextActionManager.AddContributions(ctxMenu, typeof(Primitive), prim.Prim);
} // We right clicked on an avatar, add some context menu items
else if (RightclickedObject != null && RightclickedObject is RenderAvatar)
{
RenderAvatar av = (RenderAvatar)RightclickedObject;
// Profile button
item = new ToolStripMenuItem("Profile", null, (sender, e) =>
{
Instance.MainForm.ShowAgentProfile("", av.avatar.ID);
});
ctxMenu.Items.Add(item);
if (av.avatar.ID != Client.Self.AgentID)
{
// IM button
item = new ToolStripMenuItem("Instant Message", null, (sender, e) =>
{
Instance.TabConsole.ShowIMTab(av.avatar.ID, Instance.Names.Get(av.avatar.ID), true);
});
ctxMenu.Items.Add(item);
// Pay button
item = new ToolStripMenuItem("Pay", null, (sender, e) =>
{
(new frmPay(Instance, av.avatar.ID, Instance.Names.Get(av.avatar.ID), false)).ShowDialog();
});
ctxMenu.Items.Add(item);
}
// add avatar context menu items
instance.ContextActionManager.AddContributions(ctxMenu, typeof(Avatar), av.avatar.ID);
}
// If we are not the sole menu item, add separator
if (ctxMenu.Items.Count > 0)
{
ctxMenu.Items.Add(new ToolStripSeparator());
}
// Dock/undock menu item
bool docked = !instance.TabConsole.Tabs["scene_window"].Detached;
if (docked)
{
item = new ToolStripMenuItem("Undock", null, (sender, e) =>
{
instance.TabConsole.SelectDefaultTab();
instance.TabConsole.Tabs["scene_window"].Detach(instance);
});
}
else
{
item = new ToolStripMenuItem("Dock", null, (sender, e) =>
{
Control p = Parent;
instance.TabConsole.Tabs["scene_window"].AttachTo(instance.TabConsole.tstTabs, instance.TabConsole.toolStripContainer1.ContentPanel);
if (p is Form)
{
((Form)p).Close();
}
});
}
ctxMenu.Items.Add(item);
item = new ToolStripMenuItem("Options", null, (sender, e) =>
{
new Floater(Instance, new GraphicsPreferences(Instance), this).Show(FindForm());
});
ctxMenu.Items.Add(item);
// Show hide debug panel
if (pnlDebug.Visible)
{
item = new ToolStripMenuItem("Hide debug panel", null, (sender, e) =>
{
pnlDebug.Visible = false;
Instance.GlobalSettings["scene_viewer_debug_panel"] = false;
});
}
else
{
item = new ToolStripMenuItem("Show debug panel", null, (sender, e) =>
{
pnlDebug.Visible = true;
Instance.GlobalSettings["scene_viewer_debug_panel"] = true;
});
}
ctxMenu.Items.Add(item);
instance.ContextActionManager.AddContributions(ctxMenu, typeof(Vector3), RightclickedPosition);
}