New features
This commit is contained in:
parent
55eba3087f
commit
e42b68977f
11 changed files with 735 additions and 319 deletions
|
@ -33,6 +33,7 @@ namespace Ryujinx
|
||||||
public string Version;
|
public string Version;
|
||||||
public string TimePlayed;
|
public string TimePlayed;
|
||||||
public string LastPlayed;
|
public string LastPlayed;
|
||||||
|
public string FileExt;
|
||||||
public string FileSize;
|
public string FileSize;
|
||||||
public string Path;
|
public string Path;
|
||||||
}
|
}
|
||||||
|
@ -105,54 +106,45 @@ namespace Ryujinx
|
||||||
{
|
{
|
||||||
if ((Path.GetExtension(applicationPath) == ".nsp") || (Path.GetExtension(applicationPath) == ".pfs0") || (Path.GetExtension(applicationPath) == ".xci"))
|
if ((Path.GetExtension(applicationPath) == ".nsp") || (Path.GetExtension(applicationPath) == ".pfs0") || (Path.GetExtension(applicationPath) == ".xci"))
|
||||||
{
|
{
|
||||||
IFileSystem controlFs = null;
|
|
||||||
|
|
||||||
// Store the ControlFS in variable called controlFs
|
|
||||||
if (Path.GetExtension(applicationPath) == ".xci")
|
|
||||||
{
|
|
||||||
Xci xci = new Xci(KeySet, file.AsStorage());
|
|
||||||
controlFs = GetControlFs(xci.OpenPartition(XciPartitionType.Secure));
|
|
||||||
}
|
|
||||||
else { controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); }
|
|
||||||
|
|
||||||
// Creates NACP class from the NACP file
|
|
||||||
IFile controlFile = controlFs.OpenFile("/control.nacp", OpenMode.Read);
|
|
||||||
Nacp controlData = new Nacp(controlFile.AsStream());
|
|
||||||
|
|
||||||
// Get the title name, title ID, developer name and version number from the NACP
|
|
||||||
version = controlData.DisplayVersion;
|
|
||||||
|
|
||||||
titleName = controlData.Descriptions[(int)DesiredTitleLanguage].Title;
|
|
||||||
if (string.IsNullOrWhiteSpace(titleName))
|
|
||||||
{
|
|
||||||
titleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title;
|
|
||||||
}
|
|
||||||
|
|
||||||
titleId = controlData.PresenceGroupId.ToString("x16");
|
|
||||||
if (string.IsNullOrWhiteSpace(titleId)) { titleId = controlData.SaveDataOwnerId.ToString("x16"); }
|
|
||||||
if (string.IsNullOrWhiteSpace(titleId)) { titleId = (controlData.AddOnContentBaseId - 0x1000).ToString("x16"); }
|
|
||||||
|
|
||||||
developer = controlData.Descriptions[(int)DesiredTitleLanguage].Developer;
|
|
||||||
if (string.IsNullOrWhiteSpace(developer))
|
|
||||||
{
|
|
||||||
developer = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Developer)).Developer;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the icon from the ControlFS and store it as a byte array
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IFile icon = controlFs.OpenFile($"/icon_{DesiredTitleLanguage}.dat", OpenMode.Read);
|
IFileSystem controlFs = null;
|
||||||
using (MemoryStream ms = new MemoryStream())
|
|
||||||
|
// Store the ControlFS in variable called controlFs
|
||||||
|
if (Path.GetExtension(applicationPath) == ".xci")
|
||||||
{
|
{
|
||||||
icon.AsStream().CopyTo(ms);
|
Xci xci = new Xci(KeySet, file.AsStorage());
|
||||||
applicationIcon = ms.ToArray();
|
controlFs = GetControlFs(xci.OpenPartition(XciPartitionType.Secure));
|
||||||
}
|
}
|
||||||
}
|
else { controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); }
|
||||||
catch (FileNotFoundException)
|
|
||||||
{
|
// Creates NACP class from the NACP file
|
||||||
|
IFile controlNacp = controlFs.OpenFile("/control.nacp", OpenMode.Read);
|
||||||
|
Nacp controlData = new Nacp(controlNacp.AsStream());
|
||||||
|
|
||||||
|
// Get the title name, title ID, developer name and version number from the NACP
|
||||||
|
version = controlData.DisplayVersion;
|
||||||
|
|
||||||
|
titleName = controlData.Descriptions[(int)DesiredTitleLanguage].Title;
|
||||||
|
if (string.IsNullOrWhiteSpace(titleName))
|
||||||
|
{
|
||||||
|
titleName = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Title)).Title;
|
||||||
|
}
|
||||||
|
|
||||||
|
titleId = controlData.PresenceGroupId.ToString("x16");
|
||||||
|
if (string.IsNullOrWhiteSpace(titleId)) { titleId = controlData.SaveDataOwnerId.ToString("x16"); }
|
||||||
|
if (string.IsNullOrWhiteSpace(titleId)) { titleId = (controlData.AddOnContentBaseId - 0x1000).ToString("x16"); }
|
||||||
|
|
||||||
|
developer = controlData.Descriptions[(int)DesiredTitleLanguage].Developer;
|
||||||
|
if (string.IsNullOrWhiteSpace(developer))
|
||||||
|
{
|
||||||
|
developer = controlData.Descriptions.ToList().Find(x => !string.IsNullOrWhiteSpace(x.Developer)).Developer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the icon from the ControlFS and store it as a byte array
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IFile icon = controlFs.OpenFile($"/icon_AmericanEnglish.dat", OpenMode.Read);
|
IFile icon = controlFs.OpenFile($"/icon_{DesiredTitleLanguage}.dat", OpenMode.Read);
|
||||||
using (MemoryStream ms = new MemoryStream())
|
using (MemoryStream ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
icon.AsStream().CopyTo(ms);
|
icon.AsStream().CopyTo(ms);
|
||||||
|
@ -161,10 +153,52 @@ namespace Ryujinx
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException)
|
catch (FileNotFoundException)
|
||||||
{
|
{
|
||||||
if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; }
|
IDirectory controlDir = controlFs.OpenDirectory("./", OpenDirectoryMode.All);
|
||||||
else { applicationIcon = RyujinxNspIcon; }
|
foreach (DirectoryEntry entry in controlDir.Read())
|
||||||
|
{
|
||||||
|
if (entry.Name == "control.nacp") { continue; }
|
||||||
|
|
||||||
|
IFile icon = controlFs.OpenFile(entry.FullPath, OpenMode.Read);
|
||||||
|
using (MemoryStream ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
icon.AsStream().CopyTo(ms);
|
||||||
|
applicationIcon = ms.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (applicationIcon != null) { break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (applicationIcon == null)
|
||||||
|
{
|
||||||
|
if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; }
|
||||||
|
else { applicationIcon = RyujinxNspIcon; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MissingKeyException exception)
|
||||||
|
{
|
||||||
|
titleName = "Unknown";
|
||||||
|
titleId = "Unknown";
|
||||||
|
developer = "Unknown";
|
||||||
|
version = "?";
|
||||||
|
|
||||||
|
if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; }
|
||||||
|
else { applicationIcon = RyujinxNspIcon; }
|
||||||
|
|
||||||
|
Logger.PrintError(LogClass.Application, $"Your key set is missing a key with the name: {exception.Name}");
|
||||||
|
}
|
||||||
|
catch (InvalidDataException)
|
||||||
|
{
|
||||||
|
titleName = "Unknown";
|
||||||
|
titleId = "Unknown";
|
||||||
|
developer = "Unknown";
|
||||||
|
version = "?";
|
||||||
|
|
||||||
|
if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; }
|
||||||
|
else { applicationIcon = RyujinxNspIcon; }
|
||||||
|
|
||||||
|
Logger.PrintError(LogClass.Application, $"Unable to decrypt NCA header. The header key must be incorrect. File: {applicationPath}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (Path.GetExtension(applicationPath) == ".nro")
|
else if (Path.GetExtension(applicationPath) == ".nro")
|
||||||
|
@ -250,6 +284,7 @@ namespace Ryujinx
|
||||||
Version = version,
|
Version = version,
|
||||||
TimePlayed = playedData[0],
|
TimePlayed = playedData[0],
|
||||||
LastPlayed = playedData[1],
|
LastPlayed = playedData[1],
|
||||||
|
FileExt = Path.GetExtension(applicationPath).ToUpper().Remove(0 ,1),
|
||||||
FileSize = (filesize < 1) ? (filesize * 1024).ToString("0.##") + "MB" : filesize.ToString("0.##") + "GB",
|
FileSize = (filesize < 1) ? (filesize * 1024).ToString("0.##") + "MB" : filesize.ToString("0.##") + "GB",
|
||||||
Path = applicationPath,
|
Path = applicationPath,
|
||||||
};
|
};
|
||||||
|
@ -289,42 +324,46 @@ namespace Ryujinx
|
||||||
|
|
||||||
private static string[] GetPlayedData(string TitleId, string UserId)
|
private static string[] GetPlayedData(string TitleId, string UserId)
|
||||||
{
|
{
|
||||||
string[] playedData = new string[2];
|
try
|
||||||
string appdataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
{
|
||||||
string savePath = Path.Combine(appdataPath, "RyuFs", "nand", "user", "save", "0000000000000000", UserId, TitleId);
|
string[] playedData = new string[2];
|
||||||
|
string appdataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
||||||
|
string savePath = Path.Combine(appdataPath, "RyuFs", "nand", "user", "save", "0000000000000000", UserId, TitleId);
|
||||||
|
|
||||||
if (File.Exists(Path.Combine(savePath, "TimePlayed.dat")) == false)
|
if (File.Exists(Path.Combine(savePath, "TimePlayed.dat")) == false)
|
||||||
{
|
|
||||||
Directory.CreateDirectory(savePath);
|
|
||||||
using (FileStream file = File.OpenWrite(Path.Combine(savePath, "TimePlayed.dat"))) { file.Write(Encoding.ASCII.GetBytes("0")); }
|
|
||||||
}
|
|
||||||
using (FileStream fs = File.OpenRead(Path.Combine(savePath, "TimePlayed.dat")))
|
|
||||||
{
|
|
||||||
using (StreamReader sr = new StreamReader(fs))
|
|
||||||
{
|
{
|
||||||
float timePlayed = float.Parse(sr.ReadLine());
|
Directory.CreateDirectory(savePath);
|
||||||
|
using (FileStream file = File.OpenWrite(Path.Combine(savePath, "TimePlayed.dat"))) { file.Write(Encoding.ASCII.GetBytes("0")); }
|
||||||
if (timePlayed <= 60.0) { playedData[0] = $"{timePlayed}s"; }
|
|
||||||
else if(timePlayed <= 3600.0) { playedData[0] = $"{Math.Round(timePlayed / 60 , 2, MidpointRounding.AwayFromZero)} mins"; }
|
|
||||||
else if(timePlayed <= 86400.0) { playedData[0] = $"{Math.Round(timePlayed / 3600 , 2, MidpointRounding.AwayFromZero)} hrs"; }
|
|
||||||
else { playedData[0] = $"{Math.Round(timePlayed / 86400, 2, MidpointRounding.AwayFromZero)} days"; }
|
|
||||||
}
|
}
|
||||||
}
|
using (FileStream fs = File.OpenRead(Path.Combine(savePath, "TimePlayed.dat")))
|
||||||
|
|
||||||
if (File.Exists(Path.Combine(savePath, "LastPlayed.dat")) == false)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(savePath);
|
|
||||||
using (FileStream file = File.OpenWrite(Path.Combine(savePath, "LastPlayed.dat"))) { file.Write(Encoding.ASCII.GetBytes("Never")); }
|
|
||||||
}
|
|
||||||
using (FileStream fs = File.OpenRead(Path.Combine(savePath, "LastPlayed.dat")))
|
|
||||||
{
|
|
||||||
using (StreamReader sr = new StreamReader(fs))
|
|
||||||
{
|
{
|
||||||
playedData[1] = sr.ReadLine();
|
using (StreamReader sr = new StreamReader(fs))
|
||||||
}
|
{
|
||||||
}
|
float timePlayed = float.Parse(sr.ReadLine());
|
||||||
|
|
||||||
return playedData;
|
if (timePlayed <= 60.0) { playedData[0] = $"{timePlayed}s"; }
|
||||||
|
else if (timePlayed <= 3600.0) { playedData[0] = $"{Math.Round(timePlayed / 60 , 2, MidpointRounding.AwayFromZero)} mins"; }
|
||||||
|
else if (timePlayed <= 86400.0) { playedData[0] = $"{Math.Round(timePlayed / 3600 , 2, MidpointRounding.AwayFromZero)} hrs"; }
|
||||||
|
else { playedData[0] = $"{Math.Round(timePlayed / 86400, 2, MidpointRounding.AwayFromZero)} days"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(Path.Combine(savePath, "LastPlayed.dat")) == false)
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(savePath);
|
||||||
|
using (FileStream file = File.OpenWrite(Path.Combine(savePath, "LastPlayed.dat"))) { file.Write(Encoding.ASCII.GetBytes("Never")); }
|
||||||
|
}
|
||||||
|
using (FileStream fs = File.OpenRead(Path.Combine(savePath, "LastPlayed.dat")))
|
||||||
|
{
|
||||||
|
using (StreamReader sr = new StreamReader(fs))
|
||||||
|
{
|
||||||
|
playedData[1] = sr.ReadLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return playedData;
|
||||||
|
}
|
||||||
|
catch { return new string[] { "Unknown", "Unknown" }; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -591,11 +591,11 @@ namespace Ryujinx.HLE.HOS
|
||||||
staticObject = new NxStaticObject(input);
|
staticObject = new NxStaticObject(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ContentManager.LoadEntries();
|
||||||
|
|
||||||
TitleName = CurrentTitle = metaData.TitleName;
|
TitleName = CurrentTitle = metaData.TitleName;
|
||||||
TitleID = metaData.Aci0.TitleId.ToString("x16");
|
TitleID = metaData.Aci0.TitleId.ToString("x16");
|
||||||
|
|
||||||
ContentManager.LoadEntries();
|
|
||||||
|
|
||||||
ProgramLoader.LoadStaticObjects(this, metaData, new IExecutable[] { staticObject });
|
ProgramLoader.LoadStaticObjects(this, metaData, new IExecutable[] { staticObject });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ using System.Text;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.Loaders.Npdm
|
namespace Ryujinx.HLE.Loaders.Npdm
|
||||||
{
|
{
|
||||||
// https://github.com/SciresM/hactool/blob/master/npdm.c
|
// https://github.com/SciresM/hactool/blob/master/npdm.c
|
||||||
// https://github.com/SciresM/hactool/blob/master/npdm.h
|
// https://github.com/SciresM/hactool/blob/master/npdm.h
|
||||||
// http://switchbrew.org/index.php?title=NPDM
|
// http://switchbrew.org/index.php?title=NPDM
|
||||||
class Npdm
|
class Npdm
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ namespace Ryujinx.HLE.Loaders.Npdm
|
||||||
public int PersonalMmHeapSize { get; private set; }
|
public int PersonalMmHeapSize { get; private set; }
|
||||||
public int ProcessCategory { get; private set; }
|
public int ProcessCategory { get; private set; }
|
||||||
public int MainThreadStackSize { get; private set; }
|
public int MainThreadStackSize { get; private set; }
|
||||||
public string TitleName { get; set; }
|
public string TitleName { get; set; }
|
||||||
public byte[] ProductCode { get; private set; }
|
public byte[] ProductCode { get; private set; }
|
||||||
|
|
||||||
public Aci0 Aci0 { get; private set; }
|
public Aci0 Aci0 { get; private set; }
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
"enable_legacy_jit": false,
|
"enable_legacy_jit": false,
|
||||||
"ignore_missing_services": false,
|
"ignore_missing_services": false,
|
||||||
"controller_type": "Handheld",
|
"controller_type": "Handheld",
|
||||||
|
"gui_columns": [ true, true, true, true, true, true, true, true, true ],
|
||||||
"game_dirs": [],
|
"game_dirs": [],
|
||||||
"enable_custom_theme": false,
|
"enable_custom_theme": false,
|
||||||
"custom_theme_path": "",
|
"custom_theme_path": "",
|
||||||
|
@ -55,7 +56,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"joystick_controls": {
|
"joystick_controls": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"index": 0,
|
"index": 0,
|
||||||
"deadzone": 0.05,
|
"deadzone": 0.05,
|
||||||
"trigger_threshold": 0.5,
|
"trigger_threshold": 0.5,
|
||||||
|
|
|
@ -60,17 +60,17 @@ namespace Ryujinx
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables printing guest log messages
|
/// Enables printing guest log messages
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool LoggingEnableGuest { get; private set; }
|
public bool LoggingEnableGuest { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables printing FS access log messages
|
/// Enables printing FS access log messages
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool LoggingEnableFsAccessLog { get; private set; }
|
public bool LoggingEnableFsAccessLog { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Controls which log messages are written to the log targets
|
/// Controls which log messages are written to the log targets
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LogClass[] LoggingFilteredClasses { get; private set; }
|
public LogClass[] LoggingFilteredClasses { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enables or disables logging to a file on disk
|
/// Enables or disables logging to a file on disk
|
||||||
|
@ -125,7 +125,12 @@ namespace Ryujinx
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The primary controller's type
|
/// The primary controller's type
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ControllerStatus ControllerType { get; private set; }
|
public ControllerStatus ControllerType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Used to toggle columns in the GUI
|
||||||
|
/// </summary>
|
||||||
|
public List<bool> GuiColumns { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of directories containing games to be used to load games into the games list
|
/// A list of directories containing games to be used to load games into the games list
|
||||||
|
|
|
@ -11,6 +11,7 @@ namespace Ryujinx.UI
|
||||||
{
|
{
|
||||||
#pragma warning disable 649
|
#pragma warning disable 649
|
||||||
[GUI] Window AboutWin;
|
[GUI] Window AboutWin;
|
||||||
|
[GUI] Label VersionText;
|
||||||
[GUI] Image RyujinxLogo;
|
[GUI] Image RyujinxLogo;
|
||||||
[GUI] Image PatreonLogo;
|
[GUI] Image PatreonLogo;
|
||||||
[GUI] Image GitHubLogo;
|
[GUI] Image GitHubLogo;
|
||||||
|
@ -23,12 +24,15 @@ namespace Ryujinx.UI
|
||||||
private AboutWindow(Builder builder) : base(builder.GetObject("AboutWin").Handle)
|
private AboutWindow(Builder builder) : base(builder.GetObject("AboutWin").Handle)
|
||||||
{
|
{
|
||||||
builder.Autoconnect(this);
|
builder.Autoconnect(this);
|
||||||
|
|
||||||
AboutWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png");
|
AboutWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png");
|
||||||
RyujinxLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png", 220, 220);
|
RyujinxLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png", 100, 100);
|
||||||
PatreonLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.PatreonLogo.png", 30 , 30 );
|
PatreonLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.PatreonLogo.png", 30 , 30 );
|
||||||
GitHubLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.GitHubLogo.png" , 30 , 30 );
|
GitHubLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.GitHubLogo.png" , 30 , 30 );
|
||||||
DiscordLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.DiscordLogo.png", 30 , 30 );
|
DiscordLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.DiscordLogo.png", 30 , 30 );
|
||||||
TwitterLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.TwitterLogo.png", 30 , 30 );
|
TwitterLogo.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.TwitterLogo.png", 30 , 30 );
|
||||||
|
|
||||||
|
VersionText.Text = "Version x.x.x (Commit Number)";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenUrl(string url)
|
public void OpenUrl(string url)
|
||||||
|
|
|
@ -7,47 +7,18 @@
|
||||||
<property name="resizable">False</property>
|
<property name="resizable">False</property>
|
||||||
<property name="modal">True</property>
|
<property name="modal">True</property>
|
||||||
<property name="default_width">800</property>
|
<property name="default_width">800</property>
|
||||||
<property name="default_height">400</property>
|
<property name="default_height">350</property>
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<child>
|
<child type="titlebar">
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="spacing">2</property>
|
|
||||||
<child internal-child="action_area">
|
<child internal-child="action_area">
|
||||||
<object class="GtkButtonBox">
|
<object class="GtkButtonBox">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes"> </property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkToggleButton" id="CloseToggle">
|
|
||||||
<property name="label" translatable="yes">Close</property>
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<signal name="toggled" handler="CloseToggle_Activated" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -63,98 +34,159 @@
|
||||||
<object class="GtkBox" id="leftBox">
|
<object class="GtkBox" id="leftBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">10</property>
|
||||||
|
<property name="margin_right">15</property>
|
||||||
|
<property name="margin_top">10</property>
|
||||||
|
<property name="margin_bottom">15</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage" id="RyujinxLogo">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="RyujinxLogo">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">10</property>
|
||||||
|
<property name="margin_right">10</property>
|
||||||
|
<property name="margin_top">10</property>
|
||||||
|
<property name="margin_bottom">10</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Ryujinx</property>
|
||||||
|
<property name="justify">center</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="scale" value="2.7000000000000002"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">(REE-YOU-JI-NX)</property>
|
||||||
|
<property name="justify">center</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEventBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<signal name="button-press-event" handler="RyujinxButton_Pressed" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">www.ryujinx.org</property>
|
||||||
|
<property name="justify">center</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="underline" value="True"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkLabel" id="VersionText">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="label" translatable="yes">Version x.x.x (Commit Number)</property>
|
||||||
<child>
|
<property name="justify">center</property>
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Ryujinx</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">(REE-YOU-JI-NX)</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Version x.x.x
|
|
||||||
Unlicenced</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkEventBox">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<signal name="button-press-event" handler="RyujinxButton_Pressed" swapped="no"/>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">https://ryujinx.org</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">2</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Unlicenced</property>
|
||||||
|
<property name="justify">center</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Ryujinx is not affiliated with Nintendo,
|
||||||
|
or any of its partners, in any way</property>
|
||||||
|
<property name="justify">center</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="scale" value="0.80000000000000004"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
@ -162,6 +194,7 @@ Unlicenced</property>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">25</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEventBox" id="PatreonButton">
|
<object class="GtkEventBox" id="PatreonButton">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -331,47 +364,51 @@ Unlicenced</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
|
||||||
<property name="expand">True</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">Ryujinx is not affiliated with Nintendo
|
|
||||||
or any of its partners in any way</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">False</property>
|
||||||
<property name="padding">5</property>
|
<property name="pack_type">end</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparator">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_top">10</property>
|
||||||
|
<property name="margin_bottom">10</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="rightBox">
|
<object class="GtkBox" id="rightBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">15</property>
|
||||||
|
<property name="margin_right">10</property>
|
||||||
|
<property name="margin_top">40</property>
|
||||||
|
<property name="margin_bottom">15</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="yes">Ryujinx is an emulator for the Nintendo Switch.
|
<property name="label" translatable="yes">About</property>
|
||||||
Please support us on Patreon.
|
<attributes>
|
||||||
Get all the latest news on Twitter.
|
<attribute name="weight" value="bold"/>
|
||||||
Developers interested in contributing can find out more on our discord.</property>
|
</attributes>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -381,77 +418,148 @@ Developers interested in contributing can find out more on our discord.</propert
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="orientation">vertical</property>
|
<property name="halign">start</property>
|
||||||
<child>
|
<property name="margin_left">10</property>
|
||||||
<object class="GtkLabel">
|
<property name="label" translatable="yes">Ryujinx is an emulator for the Nintendo Switch.
|
||||||
<property name="visible">True</property>
|
Please support us on Patreon.
|
||||||
<property name="can_focus">False</property>
|
Get all the latest news on our Twitter or Discord.
|
||||||
<property name="halign">start</property>
|
Developers interested in contributing can find out more on our Discord.</property>
|
||||||
<property name="label" translatable="yes">Created By:</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">[Devs go here]</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEventBox" id="ContributersButton">
|
<object class="GtkLabel">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<signal name="button-press-event" handler="ContributersButton_Pressed" swapped="no"/>
|
<property name="halign">start</property>
|
||||||
<child>
|
<property name="label" translatable="yes">Created By:</property>
|
||||||
<object class="GtkLabel">
|
<attributes>
|
||||||
<property name="visible">True</property>
|
<attribute name="weight" value="bold"/>
|
||||||
<property name="can_focus">False</property>
|
</attributes>
|
||||||
<property name="halign">end</property>
|
|
||||||
<property name="margin_right">5</property>
|
|
||||||
<property name="label" translatable="yes">All Contributers</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
<property name="position">2</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">10</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="shadow_type">in</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkViewport">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="baseline_position">top</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="label" translatable="yes">gdkchan
|
||||||
|
LDj3SNuD
|
||||||
|
Ac_K
|
||||||
|
Thog</property>
|
||||||
|
<property name="yalign">0</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="label" translatable="yes">»jD«
|
||||||
|
emmaus
|
||||||
|
Thealexbarney
|
||||||
|
Andy A (BaronKiko)</property>
|
||||||
|
<property name="yalign">0</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEventBox" id="ContributersButton">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
|
<signal name="button-press-event" handler="ContributersButton_Pressed" swapped="no"/>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="margin_right">5</property>
|
||||||
|
<property name="label" translatable="yes">All Contributors...</property>
|
||||||
|
<attributes>
|
||||||
|
<attribute name="underline" value="True"/>
|
||||||
|
</attributes>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">1</property>
|
<property name="position">2</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="padding">10</property>
|
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
|
@ -96,17 +96,18 @@ namespace Ryujinx.UI
|
||||||
|
|
||||||
//Temporary code section start, remove this section and uncomment above line when game is rendered to the glarea in the gui
|
//Temporary code section start, remove this section and uncomment above line when game is rendered to the glarea in the gui
|
||||||
Box.Remove(GlScreen);
|
Box.Remove(GlScreen);
|
||||||
Nfc.Sensitive = false;
|
Nfc.Sensitive = false;
|
||||||
ReturnMain.Sensitive = false;
|
ReturnMain.Sensitive = false;
|
||||||
GameTable.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 0);
|
if (SwitchSettings.SwitchConfig.GuiColumns[0]) { GameTable.AppendColumn("Icon" , new CellRendererPixbuf(), "pixbuf", 0); }
|
||||||
GameTable.AppendColumn("Application", new CellRendererText(), "text", 1);
|
if (SwitchSettings.SwitchConfig.GuiColumns[1]) { GameTable.AppendColumn("Application", new CellRendererText() , "text" , 1); }
|
||||||
GameTable.AppendColumn("Developer", new CellRendererText(), "text", 2);
|
if (SwitchSettings.SwitchConfig.GuiColumns[2]) { GameTable.AppendColumn("Developer" , new CellRendererText() , "text" , 2); }
|
||||||
GameTable.AppendColumn("Version", new CellRendererText(), "text", 3);
|
if (SwitchSettings.SwitchConfig.GuiColumns[3]) { GameTable.AppendColumn("Version" , new CellRendererText() , "text" , 3); }
|
||||||
GameTable.AppendColumn("Time Played", new CellRendererText(), "text", 4);
|
if (SwitchSettings.SwitchConfig.GuiColumns[4]) { GameTable.AppendColumn("Time Played", new CellRendererText() , "text" , 4); }
|
||||||
GameTable.AppendColumn("Last Played", new CellRendererText(), "text", 5);
|
if (SwitchSettings.SwitchConfig.GuiColumns[5]) { GameTable.AppendColumn("Last Played", new CellRendererText() , "text" , 5); }
|
||||||
GameTable.AppendColumn("File Size", new CellRendererText(), "text", 6);
|
if (SwitchSettings.SwitchConfig.GuiColumns[6]) { GameTable.AppendColumn("File Ext" , new CellRendererText() , "text" , 6); }
|
||||||
GameTable.AppendColumn("Path", new CellRendererText(), "text", 7);
|
if (SwitchSettings.SwitchConfig.GuiColumns[7]) { GameTable.AppendColumn("File Size" , new CellRendererText() , "text" , 7); }
|
||||||
_TableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string));
|
if (SwitchSettings.SwitchConfig.GuiColumns[8]) { GameTable.AppendColumn("Path" , new CellRendererText() , "text" , 8); }
|
||||||
|
_TableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string));
|
||||||
GameTable.Model = _TableStore;
|
GameTable.Model = _TableStore;
|
||||||
UpdateGameTable();
|
UpdateGameTable();
|
||||||
//Temporary code section end
|
//Temporary code section end
|
||||||
|
@ -120,16 +121,17 @@ namespace Ryujinx.UI
|
||||||
Nfc.Sensitive = false;
|
Nfc.Sensitive = false;
|
||||||
ReturnMain.Sensitive = false;
|
ReturnMain.Sensitive = false;
|
||||||
|
|
||||||
GameTable.AppendColumn("Icon" , new CellRendererPixbuf(), "pixbuf", 0);
|
if (SwitchSettings.SwitchConfig.GuiColumns[0]) { GameTable.AppendColumn("Icon" , new CellRendererPixbuf(), "pixbuf", 0); }
|
||||||
GameTable.AppendColumn("Application", new CellRendererText() , "text" , 1);
|
if (SwitchSettings.SwitchConfig.GuiColumns[1]) { GameTable.AppendColumn("Application", new CellRendererText() , "text" , 1); }
|
||||||
GameTable.AppendColumn("Developer" , new CellRendererText() , "text" , 2);
|
if (SwitchSettings.SwitchConfig.GuiColumns[2]) { GameTable.AppendColumn("Developer" , new CellRendererText() , "text" , 2); }
|
||||||
GameTable.AppendColumn("Version" , new CellRendererText() , "text" , 3);
|
if (SwitchSettings.SwitchConfig.GuiColumns[3]) { GameTable.AppendColumn("Version" , new CellRendererText() , "text" , 3); }
|
||||||
GameTable.AppendColumn("Time Played", new CellRendererText() , "text" , 4);
|
if (SwitchSettings.SwitchConfig.GuiColumns[4]) { GameTable.AppendColumn("Time Played", new CellRendererText() , "text" , 4); }
|
||||||
GameTable.AppendColumn("Last Played", new CellRendererText() , "text" , 5);
|
if (SwitchSettings.SwitchConfig.GuiColumns[5]) { GameTable.AppendColumn("Last Played", new CellRendererText() , "text" , 5); }
|
||||||
GameTable.AppendColumn("File Size" , new CellRendererText() , "text" , 6);
|
if (SwitchSettings.SwitchConfig.GuiColumns[6]) { GameTable.AppendColumn("File Ext" , new CellRendererText() , "text" , 6); }
|
||||||
GameTable.AppendColumn("Path" , new CellRendererText() , "text" , 7);
|
if (SwitchSettings.SwitchConfig.GuiColumns[7]) { GameTable.AppendColumn("File Size" , new CellRendererText() , "text" , 7); }
|
||||||
|
if (SwitchSettings.SwitchConfig.GuiColumns[8]) { GameTable.AppendColumn("Path" , new CellRendererText() , "text" , 8); }
|
||||||
|
|
||||||
_TableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string));
|
_TableStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string));
|
||||||
GameTable.Model = _TableStore;
|
GameTable.Model = _TableStore;
|
||||||
|
|
||||||
UpdateGameTable();
|
UpdateGameTable();
|
||||||
|
@ -143,7 +145,7 @@ namespace Ryujinx.UI
|
||||||
|
|
||||||
foreach (ApplicationLibrary.ApplicationData AppData in ApplicationLibrary.ApplicationLibraryData)
|
foreach (ApplicationLibrary.ApplicationData AppData in ApplicationLibrary.ApplicationLibraryData)
|
||||||
{
|
{
|
||||||
_TableStore.AppendValues(new Gdk.Pixbuf(AppData.Icon, 75, 75), $"{AppData.TitleName}\n{AppData.TitleId.ToUpper()}", AppData.Developer, AppData.Version, AppData.TimePlayed, AppData.LastPlayed, AppData.FileSize, AppData.Path);
|
_TableStore.AppendValues(new Gdk.Pixbuf(AppData.Icon, 75, 75), $"{AppData.TitleName}\n{AppData.TitleId.ToUpper()}", AppData.Developer, AppData.Version, AppData.TimePlayed, AppData.LastPlayed, AppData.FileExt, AppData.FileSize, AppData.Path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +182,7 @@ namespace Ryujinx.UI
|
||||||
{
|
{
|
||||||
if (_GameLoaded)
|
if (_GameLoaded)
|
||||||
{
|
{
|
||||||
MessageDialog eRrOr = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "A game has already been loaded, please unload the game and try again");
|
MessageDialog eRrOr = new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "A game has already been loaded. Please close the emulator and try again");
|
||||||
eRrOr.SetSizeRequest(100, 20);
|
eRrOr.SetSizeRequest(100, 20);
|
||||||
eRrOr.Title = "Ryujinx - Error";
|
eRrOr.Title = "Ryujinx - Error";
|
||||||
eRrOr.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png");
|
eRrOr.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.ryujinxIcon.png");
|
||||||
|
@ -352,7 +354,7 @@ namespace Ryujinx.UI
|
||||||
private void Row_Activated(object o, RowActivatedArgs args)
|
private void Row_Activated(object o, RowActivatedArgs args)
|
||||||
{
|
{
|
||||||
_TableStore.GetIter(out TreeIter treeiter, new TreePath(args.Path.ToString()));
|
_TableStore.GetIter(out TreeIter treeiter, new TreePath(args.Path.ToString()));
|
||||||
string path = (string)_TableStore.GetValue(treeiter, 7);
|
string path = (string)_TableStore.GetValue(treeiter, 8);
|
||||||
|
|
||||||
LoadApplication(path);
|
LoadApplication(path);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,15 @@ namespace Ryujinx.UI
|
||||||
|
|
||||||
#pragma warning disable 649
|
#pragma warning disable 649
|
||||||
[GUI] Window SettingsWin;
|
[GUI] Window SettingsWin;
|
||||||
|
[GUI] CheckButton IconToggle;
|
||||||
|
[GUI] CheckButton TitleToggle;
|
||||||
|
[GUI] CheckButton DeveloperToggle;
|
||||||
|
[GUI] CheckButton VersionToggle;
|
||||||
|
[GUI] CheckButton TimePlayedToggle;
|
||||||
|
[GUI] CheckButton LastPlayedToggle;
|
||||||
|
[GUI] CheckButton FileExtToggle;
|
||||||
|
[GUI] CheckButton FileSizeToggle;
|
||||||
|
[GUI] CheckButton PathToggle;
|
||||||
[GUI] CheckButton ErrorLogToggle;
|
[GUI] CheckButton ErrorLogToggle;
|
||||||
[GUI] CheckButton WarningLogToggle;
|
[GUI] CheckButton WarningLogToggle;
|
||||||
[GUI] CheckButton InfoLogToggle;
|
[GUI] CheckButton InfoLogToggle;
|
||||||
|
@ -120,6 +129,16 @@ namespace Ryujinx.UI
|
||||||
ZR1.Clicked += (o, args) => Button_Pressed(o, args, ZR1);
|
ZR1.Clicked += (o, args) => Button_Pressed(o, args, ZR1);
|
||||||
|
|
||||||
//Setup Currents
|
//Setup Currents
|
||||||
|
if (SwitchConfig.GuiColumns[0]) { IconToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[1]) { TitleToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[2]) { DeveloperToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[3]) { VersionToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[4]) { TimePlayedToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[5]) { LastPlayedToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[6]) { FileExtToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[7]) { FileSizeToggle.Click(); }
|
||||||
|
if (SwitchConfig.GuiColumns[8]) { PathToggle.Click(); }
|
||||||
|
if (SwitchConfig.EnableFileLog) { FileLogToggle.Click(); }
|
||||||
if (SwitchConfig.LoggingEnableError) { ErrorLogToggle.Click(); }
|
if (SwitchConfig.LoggingEnableError) { ErrorLogToggle.Click(); }
|
||||||
if (SwitchConfig.LoggingEnableWarn) { WarningLogToggle.Click(); }
|
if (SwitchConfig.LoggingEnableWarn) { WarningLogToggle.Click(); }
|
||||||
if (SwitchConfig.LoggingEnableInfo) { InfoLogToggle.Click(); }
|
if (SwitchConfig.LoggingEnableInfo) { InfoLogToggle.Click(); }
|
||||||
|
@ -127,7 +146,7 @@ namespace Ryujinx.UI
|
||||||
if (SwitchConfig.LoggingEnableDebug) { DebugLogToggle.Click(); }
|
if (SwitchConfig.LoggingEnableDebug) { DebugLogToggle.Click(); }
|
||||||
if (SwitchConfig.EnableFileLog) { FileLogToggle.Click(); }
|
if (SwitchConfig.EnableFileLog) { FileLogToggle.Click(); }
|
||||||
if (SwitchConfig.DockedMode) { DockedModeToggle.Click(); }
|
if (SwitchConfig.DockedMode) { DockedModeToggle.Click(); }
|
||||||
if (SwitchConfig.EnableDiscordIntergration) { DiscordToggle.Click(); }
|
if (SwitchConfig.EnableDiscordIntegration) { DiscordToggle.Click(); }
|
||||||
if (SwitchConfig.EnableVsync) { VSyncToggle.Click(); }
|
if (SwitchConfig.EnableVsync) { VSyncToggle.Click(); }
|
||||||
if (SwitchConfig.EnableMulticoreScheduling) { MultiSchedToggle.Click(); }
|
if (SwitchConfig.EnableMulticoreScheduling) { MultiSchedToggle.Click(); }
|
||||||
if (SwitchConfig.EnableFsIntegrityChecks) { FSICToggle.Click(); }
|
if (SwitchConfig.EnableFsIntegrityChecks) { FSICToggle.Click(); }
|
||||||
|
@ -272,19 +291,25 @@ namespace Ryujinx.UI
|
||||||
_GameDirsBoxStore.IterNext(ref iter);
|
_GameDirsBoxStore.IterNext(ref iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IconToggle.Active) { SwitchConfig.GuiColumns[0] = true; }
|
||||||
|
if (TitleToggle.Active) { SwitchConfig.GuiColumns[1] = true; }
|
||||||
|
if (DeveloperToggle.Active) { SwitchConfig.GuiColumns[2] = true; }
|
||||||
|
if (VersionToggle.Active) { SwitchConfig.GuiColumns[3] = true; }
|
||||||
|
if (TimePlayedToggle.Active) { SwitchConfig.GuiColumns[4] = true; }
|
||||||
|
if (LastPlayedToggle.Active) { SwitchConfig.GuiColumns[5] = true; }
|
||||||
|
if (FileExtToggle.Active) { SwitchConfig.GuiColumns[6] = true; }
|
||||||
|
if (FileSizeToggle.Active) { SwitchConfig.GuiColumns[7] = true; }
|
||||||
|
if (PathToggle.Active) { SwitchConfig.GuiColumns[8] = true; }
|
||||||
if (ErrorLogToggle.Active) { SwitchConfig.LoggingEnableError = true; }
|
if (ErrorLogToggle.Active) { SwitchConfig.LoggingEnableError = true; }
|
||||||
if (WarningLogToggle.Active) { SwitchConfig.LoggingEnableWarn = true; }
|
if (WarningLogToggle.Active) { SwitchConfig.LoggingEnableWarn = true; }
|
||||||
if (InfoLogToggle.Active) { SwitchConfig.LoggingEnableInfo = true; }
|
if (InfoLogToggle.Active) { SwitchConfig.LoggingEnableInfo = true; }
|
||||||
if (StubLogToggle.Active) { SwitchConfig.LoggingEnableStub = true; }
|
if (StubLogToggle.Active) { SwitchConfig.LoggingEnableStub = true; }
|
||||||
if (DebugLogToggle.Active) { SwitchConfig.LoggingEnableDebug = true; }
|
if (DebugLogToggle.Active) { SwitchConfig.LoggingEnableDebug = true; }
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
if (GuestLogToggle.Active) { SwitchConfig.LoggingEnableGuest = true; }
|
if (GuestLogToggle.Active) { SwitchConfig.LoggingEnableGuest = true; }
|
||||||
if (FsAccessLogToggle.Active) { SwitchConfig.LoggingEnableFsAccessLog = true; }
|
if (FsAccessLogToggle.Active) { SwitchConfig.LoggingEnableFsAccessLog = true; }
|
||||||
>>>>>>> added spin button for new option and tooltips to settings
|
|
||||||
if (FileLogToggle.Active) { SwitchConfig.EnableFileLog = true; }
|
if (FileLogToggle.Active) { SwitchConfig.EnableFileLog = true; }
|
||||||
if (DockedModeToggle.Active) { SwitchConfig.DockedMode = true; }
|
if (DockedModeToggle.Active) { SwitchConfig.DockedMode = true; }
|
||||||
if (DiscordToggle.Active) { SwitchConfig.EnableDiscordIntergration = true; }
|
if (DiscordToggle.Active) { SwitchConfig.EnableDiscordIntegration = true; }
|
||||||
if (VSyncToggle.Active) { SwitchConfig.EnableVsync = true; }
|
if (VSyncToggle.Active) { SwitchConfig.EnableVsync = true; }
|
||||||
if (MultiSchedToggle.Active) { SwitchConfig.EnableMulticoreScheduling = true; }
|
if (MultiSchedToggle.Active) { SwitchConfig.EnableMulticoreScheduling = true; }
|
||||||
if (FSICToggle.Active) { SwitchConfig.EnableFsIntegrityChecks = true; }
|
if (FSICToggle.Active) { SwitchConfig.EnableFsIntegrityChecks = true; }
|
||||||
|
@ -293,6 +318,15 @@ namespace Ryujinx.UI
|
||||||
if (DirectKeyboardAccess.Active) { SwitchConfig.EnableKeyboard = true; }
|
if (DirectKeyboardAccess.Active) { SwitchConfig.EnableKeyboard = true; }
|
||||||
if (CustThemeToggle.Active) { SwitchConfig.EnableCustomTheme = true; }
|
if (CustThemeToggle.Active) { SwitchConfig.EnableCustomTheme = true; }
|
||||||
|
|
||||||
|
if (IconToggle.Active == false) { SwitchConfig.GuiColumns[0] = false; }
|
||||||
|
if (TitleToggle.Active == false) { SwitchConfig.GuiColumns[1] = false; }
|
||||||
|
if (DeveloperToggle.Active == false) { SwitchConfig.GuiColumns[2] = false; }
|
||||||
|
if (VersionToggle.Active == false) { SwitchConfig.GuiColumns[3] = false; }
|
||||||
|
if (TimePlayedToggle.Active == false) { SwitchConfig.GuiColumns[4] = false; }
|
||||||
|
if (LastPlayedToggle.Active == false) { SwitchConfig.GuiColumns[5] = false; }
|
||||||
|
if (FileExtToggle.Active == false) { SwitchConfig.GuiColumns[6] = false; }
|
||||||
|
if (FileSizeToggle.Active == false) { SwitchConfig.GuiColumns[7] = false; }
|
||||||
|
if (PathToggle.Active == false) { SwitchConfig.GuiColumns[8] = false; }
|
||||||
if (ErrorLogToggle.Active == false) { SwitchConfig.LoggingEnableError = false; }
|
if (ErrorLogToggle.Active == false) { SwitchConfig.LoggingEnableError = false; }
|
||||||
if (WarningLogToggle.Active == false) { SwitchConfig.LoggingEnableWarn = false; }
|
if (WarningLogToggle.Active == false) { SwitchConfig.LoggingEnableWarn = false; }
|
||||||
if (InfoLogToggle.Active == false) { SwitchConfig.LoggingEnableInfo = false; }
|
if (InfoLogToggle.Active == false) { SwitchConfig.LoggingEnableInfo = false; }
|
||||||
|
@ -300,7 +334,7 @@ namespace Ryujinx.UI
|
||||||
if (DebugLogToggle.Active == false) { SwitchConfig.LoggingEnableDebug = false; }
|
if (DebugLogToggle.Active == false) { SwitchConfig.LoggingEnableDebug = false; }
|
||||||
if (FileLogToggle.Active == false) { SwitchConfig.EnableFileLog = false; }
|
if (FileLogToggle.Active == false) { SwitchConfig.EnableFileLog = false; }
|
||||||
if (DockedModeToggle.Active == false) { SwitchConfig.DockedMode = false; }
|
if (DockedModeToggle.Active == false) { SwitchConfig.DockedMode = false; }
|
||||||
if (DiscordToggle.Active == false) { SwitchConfig.EnableDiscordIntergration = false; }
|
if (DiscordToggle.Active == false) { SwitchConfig.EnableDiscordIntegration = false; }
|
||||||
if (VSyncToggle.Active == false) { SwitchConfig.EnableVsync = false; }
|
if (VSyncToggle.Active == false) { SwitchConfig.EnableVsync = false; }
|
||||||
if (MultiSchedToggle.Active == false) { SwitchConfig.EnableMulticoreScheduling = false; }
|
if (MultiSchedToggle.Active == false) { SwitchConfig.EnableMulticoreScheduling = false; }
|
||||||
if (FSICToggle.Active == false) { SwitchConfig.EnableFsIntegrityChecks = false; }
|
if (FSICToggle.Active == false) { SwitchConfig.EnableFsIntegrityChecks = false; }
|
||||||
|
@ -342,7 +376,7 @@ namespace Ryujinx.UI
|
||||||
};
|
};
|
||||||
|
|
||||||
SwitchConfig.SystemLanguage = (SystemLanguage)Enum.Parse(typeof(SystemLanguage), SystemLanguageSelect.ActiveId);
|
SwitchConfig.SystemLanguage = (SystemLanguage)Enum.Parse(typeof(SystemLanguage), SystemLanguageSelect.ActiveId);
|
||||||
SwitchConfig.ControllerType = (HidControllerType)Enum.Parse(typeof(HidControllerType), Controller1Type.ActiveId);
|
SwitchConfig.ControllerType = (ControllerStatus)Enum.Parse(typeof(ControllerStatus), Controller1Type.ActiveId);
|
||||||
SwitchConfig.CustomThemePath = CustThemeDir.Buffer.Text;
|
SwitchConfig.CustomThemePath = CustThemeDir.Buffer.Text;
|
||||||
SwitchConfig.GameDirs = gameDirs;
|
SwitchConfig.GameDirs = gameDirs;
|
||||||
SwitchConfig.FsGlobalAccessLogMode = (int)FGALMSpinAdjustment.Value;
|
SwitchConfig.FsGlobalAccessLogMode = (int)FGALMSpinAdjustment.Value;
|
||||||
|
|
|
@ -103,24 +103,64 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="box1">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="margin_left">10</property>
|
|
||||||
<property name="margin_right">5</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox" id="box1">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="margin_left">5</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkBox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="tooltip_text" translatable="yes">Change System Language</property>
|
<child>
|
||||||
<property name="halign">end</property>
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="yes">System Language:</property>
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Change System Language</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="label" translatable="yes">System Language:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBoxText" id="SystemLanguageSelect">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Change System Language</property>
|
||||||
|
<property name="margin_left">10</property>
|
||||||
|
<items>
|
||||||
|
<item id="AmericanEnglish" translatable="yes">American English</item>
|
||||||
|
<item id="BritishEnglish" translatable="yes">British English</item>
|
||||||
|
<item id="CanadianFrench" translatable="yes">Canadian French</item>
|
||||||
|
<item id="Chinese" translatable="yes">Chinese</item>
|
||||||
|
<item id="Dutch" translatable="yes">Dutch</item>
|
||||||
|
<item id="French" translatable="yes">French</item>
|
||||||
|
<item id="German" translatable="yes">German</item>
|
||||||
|
<item id="Italian" translatable="yes">Italian</item>
|
||||||
|
<item id="Japanese" translatable="yes">Japanese</item>
|
||||||
|
<item id="Korean" translatable="yes">Korean</item>
|
||||||
|
<item id="LatinAmericanSpanish" translatable="yes">Latin American Spanish</item>
|
||||||
|
<item id="Portuguese" translatable="yes">Portuguese</item>
|
||||||
|
<item id="Russian" translatable="yes">Russian</item>
|
||||||
|
<item id="SimplifiedChinese" translatable="yes">Simplified Chinese</item>
|
||||||
|
<item id="Spanish" translatable="yes">Spanish</item>
|
||||||
|
<item id="Taiwanese" translatable="yes">Taiwanese</item>
|
||||||
|
<item id="TraditionalChinese" translatable="yes">Traditional Chinese</item>
|
||||||
|
</items>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
@ -129,65 +169,241 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBoxText" id="SystemLanguageSelect">
|
<object class="GtkCheckButton" id="DiscordToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Discord Integration</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="tooltip_text" translatable="yes">Change System Language</property>
|
<property name="receives_default">False</property>
|
||||||
<property name="margin_left">5</property>
|
<property name="tooltip_text" translatable="yes">Enables or disables Discord Rich Presense</property>
|
||||||
<items>
|
<property name="halign">start</property>
|
||||||
<item id="AmericanEnglish" translatable="yes">American English</item>
|
<property name="draw_indicator">True</property>
|
||||||
<item id="BritishEnglish" translatable="yes">British English</item>
|
|
||||||
<item id="CanadianFrench" translatable="yes">Canadian French</item>
|
|
||||||
<item id="Chinese" translatable="yes">Chinese</item>
|
|
||||||
<item id="Dutch" translatable="yes">Dutch</item>
|
|
||||||
<item id="French" translatable="yes">French</item>
|
|
||||||
<item id="German" translatable="yes">German</item>
|
|
||||||
<item id="Italian" translatable="yes">Italian</item>
|
|
||||||
<item id="Japanese" translatable="yes">Japanese</item>
|
|
||||||
<item id="Korean" translatable="yes">Korean</item>
|
|
||||||
<item id="LatinAmericanSpanish" translatable="yes">Latin American Spanish</item>
|
|
||||||
<item id="Portuguese" translatable="yes">Portuguese</item>
|
|
||||||
<item id="Russian" translatable="yes">Russian</item>
|
|
||||||
<item id="SimplifiedChinese" translatable="yes">Simplified Chinese</item>
|
|
||||||
<item id="Spanish" translatable="yes">Spanish</item>
|
|
||||||
<item id="Taiwanese" translatable="yes">Taiwanese</item>
|
|
||||||
<item id="TraditionalChinese" translatable="yes">Traditional Chinese</item>
|
|
||||||
</items>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">5</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCheckButton" id="DiscordToggle">
|
<object class="GtkBox">
|
||||||
<property name="label" translatable="yes">Enable Discord Integration</property>
|
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="receives_default">False</property>
|
<child>
|
||||||
<property name="tooltip_text" translatable="yes">Enables or disables Discord Rich Presense</property>
|
<object class="GtkBox">
|
||||||
<property name="halign">start</property>
|
<property name="visible">True</property>
|
||||||
<property name="margin_left">5</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="IconToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Icon Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="DeveloperToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Developer Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="TimePlayedToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Time Played Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="TitleToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Title Name/ID Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="VersionToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Version Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="LastPlayedToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Last Played Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="FileExtToggle">
|
||||||
|
<property name="label" translatable="yes">Enable File Ext Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="FileSizeToggle">
|
||||||
|
<property name="label" translatable="yes">Enable File Size Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="PathToggle">
|
||||||
|
<property name="label" translatable="yes">Enable Path Column</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Enable or Disable aggressive CPU optimizations</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="draw_indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="padding">5</property>
|
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">True</property>
|
||||||
<property name="fill">True</property>
|
<property name="fill">True</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
|
|
|
@ -501,6 +501,13 @@
|
||||||
"description": "A list of directories containing games to be used to load games into the games list",
|
"description": "A list of directories containing games to be used to load games into the games list",
|
||||||
"default": []
|
"default": []
|
||||||
},
|
},
|
||||||
|
"gui_columns": {
|
||||||
|
"$id": "#/properties/gui_columns",
|
||||||
|
"type": "bool list",
|
||||||
|
"title": "Used to toggle columns in the GUI",
|
||||||
|
"description": "Used to toggle columns in the GUI",
|
||||||
|
"default": [ true, true, true, true, true, true, true, true, true ]
|
||||||
|
},
|
||||||
"enable_custom_theme": {
|
"enable_custom_theme": {
|
||||||
"$id": "#/properties/enable_custom_theme",
|
"$id": "#/properties/enable_custom_theme",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue