New features

This commit is contained in:
Xpl0itR 2019-07-09 16:51:22 +01:00
commit e42b68977f
No known key found for this signature in database
GPG key ID: 91798184109676AD
11 changed files with 735 additions and 319 deletions

View file

@ -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;
} }
@ -104,6 +105,8 @@ namespace Ryujinx
using (FileStream file = new FileStream(applicationPath, FileMode.Open, FileAccess.Read)) using (FileStream file = new FileStream(applicationPath, FileMode.Open, FileAccess.Read))
{ {
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"))
{
try
{ {
IFileSystem controlFs = null; IFileSystem controlFs = null;
@ -116,8 +119,8 @@ namespace Ryujinx
else { controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); } else { controlFs = GetControlFs(new PartitionFileSystem(file.AsStorage())); }
// Creates NACP class from the NACP file // Creates NACP class from the NACP file
IFile controlFile = controlFs.OpenFile("/control.nacp", OpenMode.Read); IFile controlNacp = controlFs.OpenFile("/control.nacp", OpenMode.Read);
Nacp controlData = new Nacp(controlFile.AsStream()); Nacp controlData = new Nacp(controlNacp.AsStream());
// Get the title name, title ID, developer name and version number from the NACP // Get the title name, title ID, developer name and version number from the NACP
version = controlData.DisplayVersion; version = controlData.DisplayVersion;
@ -150,22 +153,53 @@ namespace Ryujinx
} }
catch (FileNotFoundException) catch (FileNotFoundException)
{ {
try IDirectory controlDir = controlFs.OpenDirectory("./", OpenDirectoryMode.All);
foreach (DirectoryEntry entry in controlDir.Read())
{ {
IFile icon = controlFs.OpenFile($"/icon_AmericanEnglish.dat", OpenMode.Read); if (entry.Name == "control.nacp") { continue; }
IFile icon = controlFs.OpenFile(entry.FullPath, OpenMode.Read);
using (MemoryStream ms = new MemoryStream()) using (MemoryStream ms = new MemoryStream())
{ {
icon.AsStream().CopyTo(ms); icon.AsStream().CopyTo(ms);
applicationIcon = ms.ToArray(); applicationIcon = ms.ToArray();
} }
if (applicationIcon != null) { break; }
} }
catch (FileNotFoundException)
if (applicationIcon == null)
{ {
if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; } if (Path.GetExtension(applicationPath) == ".xci") { applicationIcon = RyujinxXciIcon; }
else { applicationIcon = RyujinxNspIcon; } 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,
}; };
@ -288,6 +323,8 @@ namespace Ryujinx
} }
private static string[] GetPlayedData(string TitleId, string UserId) private static string[] GetPlayedData(string TitleId, string UserId)
{
try
{ {
string[] playedData = new string[2]; string[] playedData = new string[2];
string appdataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string appdataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
@ -326,5 +363,7 @@ namespace Ryujinx
return playedData; return playedData;
} }
catch { return new string[] { "Unknown", "Unknown" }; }
}
} }
} }

View file

@ -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 });
} }

View file

@ -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,

View file

@ -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

View file

@ -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)

View file

@ -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,6 +34,16 @@
<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>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -72,6 +53,10 @@
<object class="GtkImage" id="RyujinxLogo"> <object class="GtkImage" id="RyujinxLogo">
<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">10</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -83,17 +68,21 @@
<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">center</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="label" translatable="yes">Ryujinx</property> <property name="label" translatable="yes">Ryujinx</property>
<property name="justify">center</property>
<attributes>
<attribute name="scale" value="2.7000000000000002"/>
</attributes>
</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">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
@ -102,28 +91,14 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">(REE-YOU-JI-NX)</property> <property name="label" translatable="yes">(REE-YOU-JI-NX)</property>
<property name="justify">center</property>
</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>
<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> <child>
<object class="GtkEventBox"> <object class="GtkEventBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -133,7 +108,11 @@ Unlicenced</property>
<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="label" translatable="yes">https://ryujinx.org</property> <property name="label" translatable="yes">www.ryujinx.org</property>
<property name="justify">center</property>
<attributes>
<attribute name="underline" value="True"/>
</attributes>
</object> </object>
</child> </child>
</object> </object>
@ -141,7 +120,7 @@ Unlicenced</property>
<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="padding">5</property>
<property name="position">3</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -158,10 +137,64 @@ Unlicenced</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkLabel" id="VersionText">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Version x.x.x (Commit Number)</property>
<property name="justify">center</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">2</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">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>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<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="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,18 +364,86 @@ Unlicenced</property>
</packing> </packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</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="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox" id="rightBox">
<property name="visible">True</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>
<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">About</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</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="halign">start</property>
<property name="margin_left">10</property>
<property name="label" translatable="yes">Ryujinx is an emulator for the Nintendo Switch.
Please support us on Patreon.
Get all the latest news on our Twitter or Discord.
Developers interested in contributing can find out more on our Discord.</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> <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="label" translatable="yes">Ryujinx is not affiliated with Nintendo <property name="halign">start</property>
or any of its partners in any way</property> <property name="label" translatable="yes">Created By:</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -351,6 +452,36 @@ or any of its partners in any way</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> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -358,71 +489,39 @@ or any of its partners in any way</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox" id="rightBox">
<property name="visible">True</property>
<property name="can_focus">False</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">»jD«
Please support us on Patreon. emmaus
Get all the latest news on Twitter. Thealexbarney
Developers interested in contributing can find out more on our discord.</property> Andy A (BaronKiko)</property>
<property name="yalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property>
<property name="padding">5</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="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</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>
<packing>
<property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </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> <child>
<object class="GtkEventBox" id="ContributersButton"> <object class="GtkEventBox" id="ContributersButton">
<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>
<signal name="button-press-event" handler="ContributersButton_Pressed" swapped="no"/> <signal name="button-press-event" handler="ContributersButton_Pressed" swapped="no"/>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
@ -430,12 +529,29 @@ Developers interested in contributing can find out more on our discord.</propert
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="margin_right">5</property> <property name="margin_right">5</property>
<property name="label" translatable="yes">All Contributers</property> <property name="label" translatable="yes">All Contributors...</property>
<attributes>
<attribute name="underline" value="True"/>
</attributes>
</object> </object>
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <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>
<packing>
<property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
@ -448,14 +564,6 @@ Developers interested in contributing can find out more on our discord.</propert
</packing> </packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="padding">10</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child> </child>
</object> </object>
</interface> </interface>

View file

@ -98,15 +98,16 @@ namespace Ryujinx.UI
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);

View file

@ -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;

View file

@ -102,18 +102,19 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child> <child>
<object class="GtkBox" id="box1"> <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">10</property>
<property name="margin_right">5</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="margin_left">5</property>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -133,7 +134,7 @@
<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> <property name="tooltip_text" translatable="yes">Change System Language</property>
<property name="margin_left">5</property> <property name="margin_left">10</property>
<items> <items>
<item id="AmericanEnglish" translatable="yes">American English</item> <item id="AmericanEnglish" translatable="yes">American English</item>
<item id="BritishEnglish" translatable="yes">British English</item> <item id="BritishEnglish" translatable="yes">British English</item>
@ -175,7 +176,6 @@
<property name="receives_default">False</property> <property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Enables or disables Discord Rich Presense</property> <property name="tooltip_text" translatable="yes">Enables or disables Discord Rich Presense</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin_left">5</property>
<property name="draw_indicator">True</property> <property name="draw_indicator">True</property>
</object> </object>
<packing> <packing>
@ -186,9 +186,225 @@
</packing> </packing>
</child> </child>
</object> </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>
<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="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> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</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>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
</child> </child>

View file

@ -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",