Working Game selection window

Also correctly extracts icons from icon
files and game exes as best it can.
This commit is contained in:
Terry MacDonald 2021-05-18 22:03:02 +12:00
parent 36c085d918
commit 5b99c3ac7a
4 changed files with 51 additions and 105 deletions

View File

@ -154,42 +154,6 @@ namespace DisplayMagician
Bitmap bm = null; Bitmap bm = null;
Bitmap bmToReturn = new Bitmap(1, 1); Bitmap bmToReturn = new Bitmap(1, 1);
try {
List<Icon> myExtractedIcons = MintPlayer.IconUtils.IconExtractor.Split(fileNameAndPath);
Size largeSize = new Size(256, 256);
foreach (Icon myExtractedIcon in myExtractedIcons)
{
try
{
myIcon = (Icon)IconUtil.TryGetIcon(myExtractedIcon, largeSize, 32, true, true);
}
catch (ArgumentNullException nullex)
{
logger.Debug(nullex, $"ShortcutItem/GetMeABitmapFromFile: There was a faulty icon image within this icon that we couldn't test, so skipping it.");
continue;
}
if (myIcon != null)
{
bm = myIcon.ToBitmap();
if (bm.Width > bmToReturn.Width && bm.Height > bmToReturn.Height)
{
bmToReturn = bm;
logger.Trace($"ShortcutItem/GetMeABitmapFromFile: This new bitmap from the icon file {fileNameAndPath} is larger than the previous one at {bm.Width} x {bm.Height}, so using that instead.");
}
}
}
}
catch (Exception ex)
{
logger.Warn(ex, $"ShortcutItem/GetMeABitmapFromFile: Exception while trying to Split the icon using MintPlayer IconExtractor! ");
}
if (fileNameAndPath.EndsWith(".ico")) if (fileNameAndPath.EndsWith(".ico"))
{ {
@ -244,7 +208,7 @@ namespace DisplayMagician
else else
{ {
try /*try
{ {
List<Icon> myIcons = ImageUtils.ExtractIconsFromExe(fileNameAndPath, true); List<Icon> myIcons = ImageUtils.ExtractIconsFromExe(fileNameAndPath, true);
if (myIcons != null && myIcons.Count > 0) if (myIcons != null && myIcons.Count > 0)
@ -264,7 +228,7 @@ namespace DisplayMagician
catch (Exception ex) catch (Exception ex)
{ {
logger.Warn(ex, $"ShortcutItem/GetMeABitmapFromFile: Exception while trying to extract the icon from an *.exe or *.dll using ImageUtils.ExtractIconsFromExe."); logger.Warn(ex, $"ShortcutItem/GetMeABitmapFromFile: Exception while trying to extract the icon from an *.exe or *.dll using ImageUtils.ExtractIconsFromExe.");
} }*/
try try
{ {
@ -288,6 +252,43 @@ namespace DisplayMagician
} }
try
{
List<Icon> myExtractedIcons = MintPlayer.IconUtils.IconExtractor.Split(fileNameAndPath);
Size largeSize = new Size(256, 256);
foreach (Icon myExtractedIcon in myExtractedIcons)
{
try
{
myIcon = (Icon)IconUtil.TryGetIcon(myExtractedIcon, largeSize, 32, true, true);
}
catch (ArgumentNullException nullex)
{
logger.Debug(nullex, $"ShortcutItem/GetMeABitmapFromFile: There was a faulty icon image within this icon that we couldn't test, so skipping it.");
continue;
}
if (myIcon != null)
{
bm = myIcon.ToBitmap();
if (bm.Width > bmToReturn.Width && bm.Height > bmToReturn.Height)
{
bmToReturn = bm;
logger.Trace($"ShortcutItem/GetMeABitmapFromFile: This new bitmap from the icon file {fileNameAndPath} is larger than the previous one at {bm.Width} x {bm.Height}, so using that instead.");
}
}
}
}
catch (Exception ex)
{
logger.Warn(ex, $"ShortcutItem/GetMeABitmapFromFile: Exception while trying to Split the icon using MintPlayer IconExtractor! ");
}
if (bmToReturn == null) if (bmToReturn == null)
{ {
// If we couldn't get any bitmaps at all // If we couldn't get any bitmaps at all

View File

@ -881,16 +881,17 @@ namespace DisplayMagician {
Bitmap bm = null; Bitmap bm = null;
try try
{ {
ArrayList filesToSearchForIcon = new ArrayList(); /*ArrayList filesToSearchForIcon = new ArrayList();
filesToSearchForIcon.Add(game.ExePath); filesToSearchForIcon.Add(game.ExePath);
if (game.IconPath != game.ExePath) if (game.IconPath != game.ExePath)
filesToSearchForIcon.Add(game.IconPath); filesToSearchForIcon.Add(game.IconPath);
bm = ImageUtils.GetMeABitmapFromFile(filesToSearchForIcon); bm = ImageUtils.GetMeABitmapFromFile(filesToSearchForIcon);*/
//bm = ImageUtils.GetMeABitmapFromFile(game.IconPath);
// We only want the icon location that the GameLibrary told us to use
// Note: This may be an icon file, or an exe file.
// This function tries to get a 256x256 Vista sized bitmap from the file
bm = ImageUtils.GetMeABitmapFromFile(game.IconPath);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -205,7 +205,7 @@ namespace DisplayMagician.UIForms
this.tabc_shortcut.ShowToolTips = true; this.tabc_shortcut.ShowToolTips = true;
this.tabc_shortcut.Size = new System.Drawing.Size(1090, 654); this.tabc_shortcut.Size = new System.Drawing.Size(1090, 654);
this.tabc_shortcut.TabIndex = 28; this.tabc_shortcut.TabIndex = 28;
//this.tabc_shortcut.VisibleChanged += new System.EventHandler(this.tabc_shortcut_VisibleChanged); this.tabc_shortcut.Click += new System.EventHandler(this.tabc_shortcut_VisibleChanged);
// //
// tabp_display // tabp_display
// //

View File

@ -702,7 +702,7 @@ namespace DisplayMagician.UIForms
itemToSelect.Focused = true; itemToSelect.Focused = true;
itemToSelect.Enabled = true; itemToSelect.Enabled = true;
ilv_games.EnsureVisible(itemToSelect.Index); ilv_games.EnsureVisible(itemToSelect.Index);
ilv_games.Refresh(); //ilv_games.Refresh();
} }
} }
@ -931,8 +931,6 @@ namespace DisplayMagician.UIForms
ilv_games.Items.Add(newItem, _gameAdaptor); ilv_games.Items.Add(newItem, _gameAdaptor);
} }
SelectGameInImageListView();
if (_shortcutToEdit != null) if (_shortcutToEdit != null)
{ {
if (ProfileRepository.ContainsProfile(_shortcutToEdit.ProfileUUID)) if (ProfileRepository.ContainsProfile(_shortcutToEdit.ProfileUUID))
@ -1070,17 +1068,7 @@ namespace DisplayMagician.UIForms
{ {
cb_args_game.Checked = true; cb_args_game.Checked = true;
} }
//select the loaded Game item if it is there }
/*foreach (ImageListViewItem gameItem in ilv_games.Items)
{
if (gameItem.Text.Equals(_shortcutToEdit.GameName))
{
gameItem.Selected = true;
ilv_games.EnsureVisible(gameItem.Index);
break;
}
}
*/ }
cb_autosuggest.Checked = _shortcutToEdit.AutoName; cb_autosuggest.Checked = _shortcutToEdit.AutoName;
@ -1375,44 +1363,6 @@ namespace DisplayMagician.UIForms
ilv_saved_profiles.ResumeLayout(); ilv_saved_profiles.ResumeLayout();
} }
/*if (DisplayMagician.GameLibraries.GameLibrary.AllInstalledGamesInAllLibraries.Count > 0)
{
// Temporarily stop updating the saved_profiles listview
ilv_games.SuspendLayout();
ImageListViewItem ilvItem = null;
foreach (Game loadedGame in DisplayMagician.GameLibraries.GameLibrary.AllInstalledGamesInAllLibraries)
{
bool thisLoadedProfileIsAlreadyHere = (from item in ilv_games.Items where item.Text == loadedGame.Name orderby item.Text select item.Text).Any();
if (!thisLoadedProfileIsAlreadyHere)
{
ilvItem = new ImageListViewItem(loadedGame, loadedGame.Name);
//ilv_saved_profiles.Items.Add(newItem);
ilv_games.Items.Add(ilvItem, _gameAdaptor);
}
}
// If a game has been selected
if (!String.IsNullOrEmpty(_shortcutToEdit.GameName))
{
foreach (ImageListViewItem gameItem in ilv_games.Items)
{
if (gameItem.Text == _shortcutToEdit.GameName)
{
gameItem.Selected = true;
ilv_games.EnsureVisible(gameItem.Index);
}
}
}
// Restart updating the saved_profiles listview
ilv_games.ResumeLayout();
}
*/
UpdateHotkeyLabel(_shortcutToEdit.Hotkey); UpdateHotkeyLabel(_shortcutToEdit.Hotkey);
EnableSaveButtonIfValid(); EnableSaveButtonIfValid();
} }
@ -2199,16 +2149,10 @@ namespace DisplayMagician.UIForms
EnableSaveButtonIfValid(); EnableSaveButtonIfValid();
} }
/*private void tabc_shortcut_VisibleChanged(object sender, EventArgs e) private void tabc_shortcut_VisibleChanged(object sender, EventArgs e)
{ {
if (tabc_shortcut.Visible == true) if (tabc_shortcut.Visible == true)
SelectGameInImageListView(); SelectGameInImageListView();
}*/ }
/*private void ilv_games_VisibleChanged(object sender, EventArgs e)
{
if (ilv_games.SelectedItems.Count > 0)
ilv_games.EnsureVisible(ilv_games.SelectedItems[0].Index);
}*/
} }
} }