Skip to content
This repository has been archived by the owner on Jun 10, 2022. It is now read-only.
/ GSDumpGUI Public archive

Commit

Permalink
GSDumpGUI: Move source code from main pcsx2 repo.
Browse files Browse the repository at this point in the history
  • Loading branch information
lightningterror committed Sep 12, 2020
1 parent b676feb commit 5e423f5
Show file tree
Hide file tree
Showing 58 changed files with 9,359 additions and 0 deletions.
461 changes: 461 additions & 0 deletions Core/Program.cs

Large diffs are not rendered by default.

26 changes: 26 additions & 0 deletions Forms/Entities/GsDlls.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

namespace GSDumpGUI.Forms.Entities
{
public sealed class GsDlls : GsFiles<GsFile> { }
}
31 changes: 31 additions & 0 deletions Forms/Entities/GsDumpFile.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System.IO;

namespace GSDumpGUI.Forms.Entities
{
public sealed class GsDumpFile : GsFile
{
public FileInfo PreviewFile { get; set; }
}
}
31 changes: 31 additions & 0 deletions Forms/Entities/GsDumps.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System.IO;

namespace GSDumpGUI.Forms.Entities
{
public sealed class GsDumps : GsFiles<GsDumpFile>
{
private FileInfo GsDumpPreviewFile { get; set; }
}
}
32 changes: 32 additions & 0 deletions Forms/Entities/GsFile.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System.IO;

namespace GSDumpGUI.Forms.Entities
{
public class GsFile
{
public FileInfo File { get; set; }
public string DisplayText { get; set; }
}
}
78 changes: 78 additions & 0 deletions Forms/Entities/GsFiles.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System;
using System.ComponentModel;

namespace GSDumpGUI.Forms.Entities
{
public abstract class GsFiles<TUnderlying>
where TUnderlying : GsFile
{
private int _selectedFileIndex = -1;

public class SelectedIndexUpdatedEventArgs
{
public SelectedIndexUpdatedEventArgs(int formerIndex, int updatedIndex)
{
FormerIndex = formerIndex;
UpdatedIndex = updatedIndex;
}

public int FormerIndex { get; }
public int UpdatedIndex { get; }
}

public delegate void SelectedIndexUpdateEventHandler(object sender, SelectedIndexUpdatedEventArgs args);

public event SelectedIndexUpdateEventHandler OnIndexUpdatedEvent;
public BindingList<TUnderlying> Files { get; } = new BindingList<TUnderlying>();

public int SelectedFileIndex
{
get
{
return _selectedFileIndex;
}
set
{
var oldValue = _selectedFileIndex;
_selectedFileIndex = value;
OnIndexUpdatedEvent?.Invoke(this, new SelectedIndexUpdatedEventArgs(oldValue, value));
}
}

public bool IsSelected => SelectedFileIndex != -1 && Files.Count > SelectedFileIndex;

public TUnderlying Selected
{
get
{
return SelectedFileIndex >= 0 ? Files[SelectedFileIndex] : null;
}
set
{
SelectedFileIndex = Files.IndexOf(value);
}
}
}
}
66 changes: 66 additions & 0 deletions Forms/Helper/ExtensionMethods.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
* Copyright (C) 2009-2020 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System.Windows.Forms;

// Important ! Create the ExtensionMethods class as a "public static" class
public static class ExtensionMethods
{
public static void EnableContextMenu(this RichTextBox rtb)
{
if (rtb.ContextMenuStrip == null)
{
// Create a ContextMenuStrip without icons
ContextMenuStrip cms = new ContextMenuStrip();
cms.ShowImageMargin = false;

// Add the Copy option (copies the selected text inside the richtextbox)
ToolStripMenuItem tsmiCopy = new ToolStripMenuItem("Copy");
tsmiCopy.Click += (sender, e) => rtb.Copy();
cms.Items.Add(tsmiCopy);

// Add the Clear option (clears the text inside the richtextbox)
ToolStripMenuItem tsmiClear = new ToolStripMenuItem("Clear Log");
tsmiClear.Click += (sender, e) => rtb.Clear();
cms.Items.Add(tsmiClear);

// Add a Separator
cms.Items.Add(new ToolStripSeparator());

// Add the Select All Option (selects all the text inside the richtextbox)
ToolStripMenuItem tsmiSelectAll = new ToolStripMenuItem("Select All");
tsmiSelectAll.Click += (sender, e) => rtb.SelectAll();
cms.Items.Add(tsmiSelectAll);

// When opening the menu, check if the condition is fulfilled
// in order to enable the action
cms.Opening += (sender, e) =>
{
tsmiCopy.Enabled = rtb.SelectionLength > 0;
tsmiClear.Enabled = rtb.TextLength > 0;
tsmiSelectAll.Enabled = rtb.TextLength > 0 && rtb.SelectionLength < rtb.TextLength;
};

rtb.ContextMenuStrip = cms;
}
}
}
61 changes: 61 additions & 0 deletions Forms/Helper/FolderWithFallBackFinder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* Copyright (C) 2009-2019 PCSX2 Dev Team
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

using System;
using System.IO;
using System.Linq;

namespace GSDumpGUI.Forms.Helper
{
public class FolderWithFallBackFinder : IFolderWithFallBackFinder
{
public DirectoryInfo GetViaPatternWithFallback(string defaultDir, string filePattern, params string[] fallBackFolder)
{
if (!string.IsNullOrWhiteSpace(defaultDir))
return new DirectoryInfo(defaultDir);

DirectoryInfo gsdxDllDirectory;
if (TryGetExistingDirectory(fallBackFolder, filePattern, out gsdxDllDirectory))
return gsdxDllDirectory;
return new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
}

private static bool TryGetExistingDirectory(string[] relativePaths, string pattern, out DirectoryInfo validDirectory)
{
if (relativePaths == null)
throw new ArgumentNullException(nameof(relativePaths));
foreach (var relativePath in relativePaths)
{

var candidate = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath));
if (candidate.Exists && candidate.GetFiles(pattern).Any())
{
validDirectory = candidate;
return true;
}
}

validDirectory = null;
return false;
}
}
}
Loading

0 comments on commit 5e423f5

Please sign in to comment.