mirror of
https://github.com/terrymacdonald/DisplayMagician.git
synced 2024-08-30 18:32:20 +00:00
Did a fix for the SHortcutAdaptor doing exceptions for showing the form before loading all the graphics but can't really do much about it without adding background loading to the main form. This is a lot of work considering we'll be moving from WinForms to WPF UI in the future. Also fixed the 'Do you want to save' prompt detection logic so that it correctly waits until all the loading has finished before monitoring for users making changes. Should stop the form incorrectly suggesting you should save unless they've really made a change.
230 lines
8.6 KiB
C#
230 lines
8.6 KiB
C#
using HeliosPlus.GameLibraries;
|
|
using HeliosPlus.Resources;
|
|
using HeliosPlus.Shared;
|
|
using Manina.Windows.Forms;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Drawing.IconLib;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace HeliosPlus.UIForms
|
|
{
|
|
public partial class ShortcutLibraryForm : Form
|
|
{
|
|
|
|
private ShortcutAdaptor _shortcutAdaptor = new ShortcutAdaptor();
|
|
private ImageListViewItem _selectedShortcutILVItem = null;
|
|
private ShortcutItem _selectedShortcut = null;
|
|
private ShortcutRepository _shortcutRepository = new ShortcutRepository();
|
|
private ProfileRepository _profileRepository = new ProfileRepository();
|
|
|
|
public ShortcutLibraryForm()
|
|
{
|
|
InitializeComponent();
|
|
//_shortcutAdaptor = new ShortcutAdaptor();
|
|
//_shortcutRepository = new ShortcutRepository();
|
|
//_profileRepository = new ProfileRepository();
|
|
}
|
|
|
|
private void btn_new_Click(object sender, EventArgs e)
|
|
{
|
|
var shortcutForm = new ShortcutForm();
|
|
shortcutForm.ShowDialog(this);
|
|
if (shortcutForm.DialogResult == DialogResult.OK)
|
|
{
|
|
_selectedShortcut = shortcutForm.Shortcut;
|
|
RefreshShortcutLibraryUI();
|
|
}
|
|
}
|
|
|
|
private void btn_back_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void ShortcutLibraryForm_Load(object sender, EventArgs e)
|
|
{
|
|
// Refresh the Shortcut Library UI
|
|
RefreshShortcutLibraryUI();
|
|
}
|
|
|
|
private void RefreshShortcutLibraryUI()
|
|
{
|
|
|
|
if (ShortcutRepository.ShortcutCount > 0)
|
|
{
|
|
// Temporarily stop updating the saved_profiles listview
|
|
ilv_saved_shortcuts.SuspendLayout();
|
|
|
|
ImageListViewItem newItem = null;
|
|
foreach (ShortcutItem loadedShortcut in ShortcutRepository.AllShortcuts)
|
|
{
|
|
bool thisLoadedShortcutIsAlreadyHere = (from item in ilv_saved_shortcuts.Items where item.Text == loadedShortcut.Name select item.Text).Any();
|
|
if (!thisLoadedShortcutIsAlreadyHere)
|
|
{
|
|
//loadedProfile.SaveProfileImageToCache();
|
|
//newItem = new ImageListViewItem(loadedProfile.SavedProfileCacheFilename, loadedProfile.Name);
|
|
//newItem = new ImageListViewItem(loadedProfile, loadedProfile.Name);
|
|
newItem = new ImageListViewItem(loadedShortcut, loadedShortcut.Name);
|
|
//ilv_saved_profiles.Items.Add(newItem);
|
|
ilv_saved_shortcuts.Items.Add(newItem, _shortcutAdaptor);
|
|
}
|
|
}
|
|
|
|
if (_selectedShortcut != null && _selectedShortcut is ShortcutItem)
|
|
RefreshImageListView(_selectedShortcut);
|
|
|
|
// Restart updating the saved_profiles listview
|
|
ilv_saved_shortcuts.ResumeLayout();
|
|
|
|
}
|
|
|
|
// Refresh the image list view
|
|
//RefreshImageListView(_selectedShortcut);
|
|
}
|
|
|
|
private void RefreshImageListView(ShortcutItem shortcut)
|
|
{
|
|
ilv_saved_shortcuts.ClearSelection();
|
|
IEnumerable<ImageListViewItem> matchingImageListViewItems = (from item in ilv_saved_shortcuts.Items where item.Text == shortcut.Name select item);
|
|
if (matchingImageListViewItems.Any())
|
|
{
|
|
matchingImageListViewItems.First().Selected = true;
|
|
matchingImageListViewItems.First().Focused = true;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
private ShortcutItem GetShortcutFromName(string shortcutName)
|
|
{
|
|
return (from item in ShortcutRepository.AllShortcuts where item.Name == shortcutName select item).First();
|
|
}
|
|
|
|
private void btn_save_Click(object sender, EventArgs e)
|
|
{
|
|
DialogResult = DialogResult.None;
|
|
|
|
// Only do something if there is a shortcut selected
|
|
if (_selectedShortcut != null)
|
|
{
|
|
|
|
try
|
|
{
|
|
// Set the Shortcut save folder to the Desktop as that's where people will want it most likely
|
|
dialog_save.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
// Try to set up some sensible suggestions for the Shortcut name
|
|
if (_selectedShortcut.Permanence == ShortcutPermanence.Permanent)
|
|
{
|
|
|
|
dialog_save.FileName = _selectedShortcut.Name;
|
|
}
|
|
else
|
|
{
|
|
if (_selectedShortcut.Category == ShortcutCategory.Application)
|
|
{
|
|
dialog_save.FileName = String.Concat(Path.GetFileNameWithoutExtension(_selectedShortcut.ExecutableNameAndPath), @" (", _selectedShortcut.Name.ToLower(CultureInfo.InvariantCulture), @")");
|
|
}
|
|
else
|
|
{
|
|
dialog_save.FileName = String.Concat(_selectedShortcut, @" (", _selectedShortcut.Name, @")");
|
|
}
|
|
}
|
|
|
|
// Show the Save Shortcut window
|
|
if (dialog_save.ShowDialog(this) == DialogResult.OK)
|
|
{
|
|
if (_selectedShortcut.CreateShortcut(dialog_save.FileName))
|
|
{
|
|
MessageBox.Show(
|
|
Language.Shortcut_placed_successfully,
|
|
Language.Shortcut,
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(
|
|
Language.Failed_to_create_the_shortcut_Unexpected_exception_occurred,
|
|
Language.Shortcut,
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Exclamation);
|
|
}
|
|
|
|
dialog_save.FileName = string.Empty;
|
|
DialogResult = DialogResult.OK;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, Language.Shortcut, MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ilv_saved_shortcuts_ItemClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
_selectedShortcut = GetShortcutFromName(e.Item.Text);
|
|
}
|
|
|
|
private void ilv_saved_shortcuts_ItemDoubleClick(object sender, ItemClickEventArgs e)
|
|
{
|
|
_selectedShortcut = GetShortcutFromName(e.Item.Text);
|
|
|
|
if (_selectedShortcut == null)
|
|
return;
|
|
|
|
var shortcutForm = new ShortcutForm(_selectedShortcut);
|
|
shortcutForm.ShowDialog(this);
|
|
if (shortcutForm.DialogResult == DialogResult.OK)
|
|
{
|
|
_selectedShortcut = shortcutForm.Shortcut;
|
|
RefreshShortcutLibraryUI();
|
|
}
|
|
|
|
}
|
|
|
|
private void btn_edit_Click(object sender, EventArgs e)
|
|
{
|
|
if (_selectedShortcut == null)
|
|
return;
|
|
|
|
var shortcutForm = new ShortcutForm(_selectedShortcut);
|
|
shortcutForm.ShowDialog(this);
|
|
if (shortcutForm.DialogResult == DialogResult.OK)
|
|
{
|
|
_selectedShortcut = shortcutForm.Shortcut;
|
|
RefreshShortcutLibraryUI();
|
|
}
|
|
|
|
}
|
|
|
|
private void btn_delete_Click(object sender, EventArgs e)
|
|
{
|
|
if (_selectedShortcut == null)
|
|
return;
|
|
|
|
if (MessageBox.Show($"Are you sure you want to delete the '{_selectedShortcut.Name}' Shortcut?", $"Delete '{_selectedShortcut.Name}' Shortcut?", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No)
|
|
return;
|
|
|
|
// remove the profile from the imagelistview
|
|
int currentIlvIndex = ilv_saved_shortcuts.SelectedItems[0].Index;
|
|
ilv_saved_shortcuts.Items.RemoveAt(currentIlvIndex);
|
|
|
|
// Remove the shortcut
|
|
ShortcutRepository.RemoveShortcut(_selectedShortcut);
|
|
_selectedShortcut = null;
|
|
|
|
RefreshShortcutLibraryUI();
|
|
}
|
|
}
|
|
}
|