private void ShowSpriteContextMenu(Point menuPosition)
{
_spriteNumberOnMenuActivation = -1;
ListViewItem itemAtLocation = spriteList.HitTest(menuPosition).Item;
EventHandler onClick = new EventHandler(SpriteContextMenuEventHandler);
ContextMenuStrip menu = new ContextMenuStrip();
if (itemAtLocation != null)
{
_spriteNumberOnMenuActivation = Convert.ToInt32(itemAtLocation.Name);
ToolStripMenuItem newItem;
if (_showUseThisSpriteOption)
{
// add a bold default option for Use This Sprite
newItem = new ToolStripMenuItem("Use this sprite", null, onClick, MENU_ITEM_USE_THIS_SPRITE);
}
else
{
newItem = new ToolStripMenuItem("Edit in default image editor", null, onClick, MENU_ITEM_EDIT_THIS_SPRITE);
}
newItem.Font = new System.Drawing.Font(newItem.Font.Name, newItem.Font.Size, FontStyle.Bold);
menu.Items.Add(newItem);
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Copy sprite to clipboard", null, onClick, MENU_ITEM_COPY_TO_CLIPBOARD));
menu.Items.Add(new ToolStripMenuItem("Export sprite to file...", null, onClick, MENU_ITEM_EXPORT_SPRITE));
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Replace sprite from file...", null, onClick, MENU_ITEM_REPLACE_FROM_FILE));
if (Factory.AGSEditor.CurrentGame.Settings.ColorDepth != GameColorDepth.Palette)
{
menu.Items.Add(new ToolStripMenuItem("Replace sprite from clipboard...", null, onClick, MENU_ITEM_REPLACE_FROM_CLIPBOARD));
if (!Clipboard.ContainsImage())
{
menu.Items[menu.Items.Count - 1].Enabled = false;
}
}
menu.Items.Add(new ToolStripMenuItem("Replace sprite using last sprite...", null, onClick, MENU_ITEM_REPLACE_FROM_PREVIOUS));
if (_lastImportedSprite == null)
{
menu.Items[menu.Items.Count - 1].Enabled = false;
}
if (spriteList.SelectedItems.Count > 1)
{
foreach (ToolStripItem menuItem in menu.Items)
{
menuItem.Enabled = false;
}
}
menu.Items.Add(new ToolStripMenuItem("Replace sprite(s) from source...", null, onClick, MENU_ITEM_REPLACE_FROM_SOURCE));
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Show usage...", null, onClick, MENU_ITEM_SHOW_USAGE));
menu.Items.Add(new ToolStripMenuItem("Change sprite number...", null, onClick, MENU_ITEM_CHANGE_SPRITE_NUMBER));
if (spriteList.SelectedItems.Count > 1)
{
menu.Items[menu.Items.Count - 2].Enabled = false;
menu.Items[menu.Items.Count - 1].Enabled = false;
}
menu.Items.Add(new ToolStripMenuItem("Assign to view...", null, onClick, MENU_ITEM_ASSIGN_TO_VIEW));
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Crop sprite edges", null, onClick, MENU_ITEM_CROP_ASYMMETRIC));
menu.Items.Add(new ToolStripMenuItem("Crop sprite edges (symmetric)", null, onClick, MENU_ITEM_CROP_SYMMETRIC));
menu.Items.Add(new ToolStripMenuItem("Delete", null, onClick, MENU_ITEM_DELETE_SPRITE));
if (_spriteNumberOnMenuActivation == 0)
{
// can't delete sprite number 0
menu.Items[menu.Items.Count - 1].Enabled = false;
}
menu.Items.Add(new ToolStripSeparator());
}
menu.Items.Add(new ToolStripMenuItem("Import new sprite from file...", null, onClick, MENU_ITEM_IMPORT_NEW));
if (Factory.AGSEditor.CurrentGame.Settings.ColorDepth != GameColorDepth.Palette)
{
menu.Items.Add(new ToolStripMenuItem("Paste new sprite from clipboard...", null, onClick, MENU_ITEM_PASTE_NEW));
if (!Clipboard.ContainsImage())
{
menu.Items[menu.Items.Count - 1].Enabled = false;
}
}
menu.Items.Add(new ToolStripMenuItem("New sprite using last sprite...", null, onClick, MENU_ITEM_NEW_FROM_PREVIOUS));
if (_lastImportedSprite == null)
{
menu.Items[menu.Items.Count - 1].Enabled = false;
}
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Quick import GIF frames...", null, onClick, MENU_ITEM_QUICK_IMPORT_GIF_FLC));
menu.Items.Add(new ToolStripMenuItem("Quick import sprites...", null, onClick, MENU_ITEM_QUICK_IMPORT_SPRITES));
menu.Items.Add(new ToolStripMenuItem("Export all sprites in folder...", null, onClick, MENU_ITEM_EXPORT_FOLDER));
menu.Items.Add(new ToolStripMenuItem("Sort sprites by number", null, onClick, MENU_ITEM_SORT_BY_NUMBER));
menu.Items.Add(new ToolStripSeparator());
menu.Items.Add(new ToolStripMenuItem("Find sprite by number...", null, onClick, MENU_ITEM_FIND_BY_NUMBER));
menu.Show(spriteList, menuPosition);
}