aboutsummaryrefslogblamecommitdiff
path: root/src/Ryujinx/UI/Windows/AboutWindow.Designer.cs
blob: fd912ef9aea3dd98327d4a5055954faec6bdc4d8 (plain) (tree)
1
2
3
4
5
6
7
8
9
             
                                      
                        
                            

                                             





































                                               
                                                     

                                            


                                          

                          

                              
                                                   

                                                 









                                                          

                                 








                                                          
                                                                                                                                                                
             
                                 










                                                            

                                               




                                                                       
                                                               
             
                                               















                                                                                           
                                               






                                                                                           
                              
                                               
                           

              










                                                                                                      
                                            


                                                                                             


                                                                                                                            


                                               


                                                                          


                                           
                           







                                                                                                              
                                               


                                                                             


                                                           
                                  





                                             
                                                                                                









                                                                       
                                                                                                                                                                    
             
                            





                                                
                                               





                                            
                                                                                               









                                                                     
                                                                                                                                                                  
             
                            





                                              
                                               










                                                           
                                                                                                               




                                                                       
                                                                                                                                                                    
             
                            





                                                
                                               





                                             
                                                                                                









                                                                       
                                                                                                                                                                    
             
                            





                                                
                                               





                                                            
                            





                                                        
                               





                                              
                                            











                                                                                                                                   
                                     





                                                          
                                            







                                                                                         
                                             
                                      
                               













                                                                                                                                                          

                                            






                                                                                                
                                            







                                                                                            


                                           






                                                                                    
                                             


                                                                             













                                                    
                                                    



















                                              
                                                        
                                        
                                             
                                           
                                         




















                                                              
 
using Gtk;
using Pango;
using Ryujinx.UI.Common.Configuration;
using System.Reflection;

namespace Ryujinx.UI.Windows
{
    public partial class AboutWindow : Window
    {
        private Box _mainBox;
        private Box _leftBox;
        private Box _logoBox;
        private Image _ryujinxLogo;
        private Box _logoTextBox;
        private Label _ryujinxLabel;
        private Label _ryujinxPhoneticLabel;
        private EventBox _ryujinxLink;
        private Label _ryujinxLinkLabel;
        private Label _versionLabel;
        private Label _disclaimerLabel;
        private EventBox _amiiboApiLink;
        private Label _amiiboApiLinkLabel;
        private Box _socialBox;
        private EventBox _patreonEventBox;
        private Box _patreonBox;
        private Image _patreonLogo;
        private Label _patreonLabel;
        private EventBox _githubEventBox;
        private Box _githubBox;
        private Image _githubLogo;
        private Label _githubLabel;
        private Box _discordBox;
        private EventBox _discordEventBox;
        private Image _discordLogo;
        private Label _discordLabel;
        private EventBox _twitterEventBox;
        private Box _twitterBox;
        private Image _twitterLogo;
        private Label _twitterLabel;
        private Separator _separator;
        private Box _rightBox;
        private Label _aboutLabel;
        private Label _aboutDescriptionLabel;
        private Label _createdByLabel;
        private TextView _createdByText;
        private EventBox _contributorsEventBox;
        private Label _contributorsLinkLabel;
        private Label _patreonNamesLabel;
        private ScrolledWindow _patreonNamesScrolled;
        private TextView _patreonNamesText;
        private EventBox _changelogEventBox;
        private Label _changelogLinkLabel;

        private void InitializeComponent()
        {

            //
            // AboutWindow
            //
            CanFocus = false;
            Resizable = false;
            Modal = true;
            WindowPosition = WindowPosition.Center;
            DefaultWidth = 800;
            DefaultHeight = 450;
            TypeHint = Gdk.WindowTypeHint.Dialog;

            //
            // _mainBox
            //
            _mainBox = new Box(Orientation.Horizontal, 0);

            //
            // _leftBox
            //
            _leftBox = new Box(Orientation.Vertical, 0)
            {
                Margin = 15,
                MarginStart = 30,
                MarginEnd = 0,
            };

            //
            // _logoBox
            //
            _logoBox = new Box(Orientation.Horizontal, 0);

            //
            // _ryujinxLogo
            //
            _ryujinxLogo = new Image(new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.UI.Common.Resources.Logo_Ryujinx.png", 100, 100))
            {
                Margin = 10,
                MarginStart = 15,
            };

            //
            // _logoTextBox
            //
            _logoTextBox = new Box(Orientation.Vertical, 0);

            //
            // _ryujinxLabel
            //
            _ryujinxLabel = new Label("Ryujinx")
            {
                MarginTop = 15,
                Justify = Justification.Center,
                Attributes = new AttrList(),
            };
            _ryujinxLabel.Attributes.Insert(new Pango.AttrScale(2.7f));

            //
            // _ryujinxPhoneticLabel
            //
            _ryujinxPhoneticLabel = new Label("(REE-YOU-JINX)")
            {
                Justify = Justification.Center,
            };

            //
            // _ryujinxLink
            //
            _ryujinxLink = new EventBox()
            {
                Margin = 5
            };
            _ryujinxLink.ButtonPressEvent += RyujinxButton_Pressed;

            //
            // _ryujinxLinkLabel
            //
            _ryujinxLinkLabel = new Label("www.ryujinx.org")
            {
                TooltipText = "Click to open the Ryujinx website in your default browser.",
                Justify = Justification.Center,
                Attributes = new AttrList(),
            };
            _ryujinxLinkLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _versionLabel
            //
            _versionLabel = new Label(Program.Version)
            {
                Expand = true,
                Justify = Justification.Center,
                Margin = 5,
            };

            //
            // _changelogEventBox
            //
            _changelogEventBox = new EventBox();
            _changelogEventBox.ButtonPressEvent += ChangelogButton_Pressed;

            //
            // _changelogLinkLabel
            //
            _changelogLinkLabel = new Label("View Changelog on GitHub")
            {
                TooltipText = "Click to open the changelog for this version in your default browser.",
                Justify = Justification.Center,
                Attributes = new AttrList(),
            };
            _changelogLinkLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _disclaimerLabel
            //
            _disclaimerLabel = new Label("Ryujinx is not affiliated with Nintendo™,\nor any of its partners, in any way.")
            {
                Expand = true,
                Justify = Justification.Center,
                Margin = 5,
                Attributes = new AttrList(),
            };
            _disclaimerLabel.Attributes.Insert(new Pango.AttrScale(0.8f));

            //
            // _amiiboApiLink
            //
            _amiiboApiLink = new EventBox()
            {
                Margin = 5,
            };
            _amiiboApiLink.ButtonPressEvent += AmiiboApiButton_Pressed;

            //
            // _amiiboApiLinkLabel
            //
            _amiiboApiLinkLabel = new Label("AmiiboAPI (www.amiiboapi.com) is used\nin our Amiibo emulation.")
            {
                TooltipText = "Click to open the AmiiboAPI website in your default browser.",
                Justify = Justification.Center,
                Attributes = new AttrList(),
            };
            _amiiboApiLinkLabel.Attributes.Insert(new Pango.AttrScale(0.9f));

            //
            // _socialBox
            //
            _socialBox = new Box(Orientation.Horizontal, 0)
            {
                Margin = 25,
                MarginBottom = 10,
            };

            //
            // _patreonEventBox
            //
            _patreonEventBox = new EventBox()
            {
                TooltipText = "Click to open the Ryujinx Patreon page in your default browser.",
            };
            _patreonEventBox.ButtonPressEvent += PatreonButton_Pressed;

            //
            // _patreonBox
            //
            _patreonBox = new Box(Orientation.Vertical, 0);

            //
            // _patreonLogo
            //
            _patreonLogo = new Image(new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.UI.Common.Resources.Logo_Patreon_Light.png", 30, 30))
            {
                Margin = 10,
            };

            //
            // _patreonLabel
            //
            _patreonLabel = new Label("Patreon")
            {
                Justify = Justification.Center,
            };

            //
            // _githubEventBox
            //
            _githubEventBox = new EventBox()
            {
                TooltipText = "Click to open the Ryujinx GitHub page in your default browser.",
            };
            _githubEventBox.ButtonPressEvent += GitHubButton_Pressed;

            //
            // _githubBox
            //
            _githubBox = new Box(Orientation.Vertical, 0);

            //
            // _githubLogo
            //
            _githubLogo = new Image(new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.UI.Common.Resources.Logo_GitHub_Light.png", 30, 30))
            {
                Margin = 10,
            };

            //
            // _githubLabel
            //
            _githubLabel = new Label("GitHub")
            {
                Justify = Justification.Center,
            };

            //
            // _discordBox
            //
            _discordBox = new Box(Orientation.Vertical, 0);

            //
            // _discordEventBox
            //
            _discordEventBox = new EventBox()
            {
                TooltipText = "Click to open an invite to the Ryujinx Discord server in your default browser.",
            };
            _discordEventBox.ButtonPressEvent += DiscordButton_Pressed;

            //
            // _discordLogo
            //
            _discordLogo = new Image(new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.UI.Common.Resources.Logo_Discord_Light.png", 30, 30))
            {
                Margin = 10,
            };

            //
            // _discordLabel
            //
            _discordLabel = new Label("Discord")
            {
                Justify = Justification.Center,
            };

            //
            // _twitterEventBox
            //
            _twitterEventBox = new EventBox()
            {
                TooltipText = "Click to open the Ryujinx Twitter page in your default browser.",
            };
            _twitterEventBox.ButtonPressEvent += TwitterButton_Pressed;

            //
            // _twitterBox
            //
            _twitterBox = new Box(Orientation.Vertical, 0);

            //
            // _twitterLogo
            //
            _twitterLogo = new Image(new Gdk.Pixbuf(Assembly.GetAssembly(typeof(ConfigurationState)), "Ryujinx.UI.Common.Resources.Logo_Twitter_Light.png", 30, 30))
            {
                Margin = 10,
            };

            //
            // _twitterLabel
            //
            _twitterLabel = new Label("Twitter")
            {
                Justify = Justification.Center,
            };

            //
            // _separator
            //
            _separator = new Separator(Orientation.Vertical)
            {
                Margin = 15,
            };

            //
            // _rightBox
            //
            _rightBox = new Box(Orientation.Vertical, 0)
            {
                Margin = 15,
                MarginTop = 40,
            };

            //
            // _aboutLabel
            //
            _aboutLabel = new Label("About :")
            {
                Halign = Align.Start,
                Attributes = new AttrList(),
            };
            _aboutLabel.Attributes.Insert(new Pango.AttrWeight(Weight.Bold));
            _aboutLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _aboutDescriptionLabel
            //
            _aboutDescriptionLabel = new Label("Ryujinx is an emulator for the Nintendo Switch™.\n" +
                                               "Please support us on Patreon.\n" +
                                               "Get all the latest news on our Twitter or Discord.\n" +
                                               "Developers interested in contributing can find out more on our GitHub or Discord.")
            {
                Margin = 15,
                Halign = Align.Start,
            };

            //
            // _createdByLabel
            //
            _createdByLabel = new Label("Maintained by :")
            {
                Halign = Align.Start,
                Attributes = new AttrList(),
            };
            _createdByLabel.Attributes.Insert(new Pango.AttrWeight(Weight.Bold));
            _createdByLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _createdByText
            //
            _createdByText = new TextView()
            {
                WrapMode = Gtk.WrapMode.Word,
                Editable = false,
                CursorVisible = false,
                Margin = 15,
                MarginEnd = 30,
            };
            _createdByText.Buffer.Text = "gdkchan, Ac_K, Thog, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, Xpl0itR, GoffyDude, »jD« and more...";

            //
            // _contributorsEventBox
            //
            _contributorsEventBox = new EventBox();
            _contributorsEventBox.ButtonPressEvent += ContributorsButton_Pressed;

            //
            // _contributorsLinkLabel
            //
            _contributorsLinkLabel = new Label("See All Contributors...")
            {
                TooltipText = "Click to open the Contributors page in your default browser.",
                MarginEnd = 30,
                Halign = Align.End,
                Attributes = new AttrList(),
            };
            _contributorsLinkLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _patreonNamesLabel
            //
            _patreonNamesLabel = new Label("Supported on Patreon by :")
            {
                Halign = Align.Start,
                Attributes = new AttrList(),
            };
            _patreonNamesLabel.Attributes.Insert(new Pango.AttrWeight(Weight.Bold));
            _patreonNamesLabel.Attributes.Insert(new Pango.AttrUnderline(Underline.Single));

            //
            // _patreonNamesScrolled
            //
            _patreonNamesScrolled = new ScrolledWindow()
            {
                Margin = 15,
                MarginEnd = 30,
                Expand = true,
                ShadowType = ShadowType.In,
            };
            _patreonNamesScrolled.SetPolicy(PolicyType.Never, PolicyType.Automatic);

            //
            // _patreonNamesText
            //
            _patreonNamesText = new TextView()
            {
                WrapMode = Gtk.WrapMode.Word,
            };
            _patreonNamesText.Buffer.Text = "Loading...";
            _patreonNamesText.SetProperty("editable", new GLib.Value(false));

            ShowComponent();
        }

        private void ShowComponent()
        {
            _logoBox.Add(_ryujinxLogo);

            _ryujinxLink.Add(_ryujinxLinkLabel);

            _logoTextBox.Add(_ryujinxLabel);
            _logoTextBox.Add(_ryujinxPhoneticLabel);
            _logoTextBox.Add(_ryujinxLink);

            _logoBox.Add(_logoTextBox);

            _amiiboApiLink.Add(_amiiboApiLinkLabel);

            _patreonBox.Add(_patreonLogo);
            _patreonBox.Add(_patreonLabel);
            _patreonEventBox.Add(_patreonBox);

            _githubBox.Add(_githubLogo);
            _githubBox.Add(_githubLabel);
            _githubEventBox.Add(_githubBox);

            _discordBox.Add(_discordLogo);
            _discordBox.Add(_discordLabel);
            _discordEventBox.Add(_discordBox);

            _twitterBox.Add(_twitterLogo);
            _twitterBox.Add(_twitterLabel);
            _twitterEventBox.Add(_twitterBox);

            _socialBox.Add(_patreonEventBox);
            _socialBox.Add(_githubEventBox);
            _socialBox.Add(_discordEventBox);
            _socialBox.Add(_twitterEventBox);

            _changelogEventBox.Add(_changelogLinkLabel);

            _leftBox.Add(_logoBox);
            _leftBox.Add(_versionLabel);
            _leftBox.Add(_changelogEventBox);
            _leftBox.Add(_disclaimerLabel);
            _leftBox.Add(_amiiboApiLink);
            _leftBox.Add(_socialBox);

            _contributorsEventBox.Add(_contributorsLinkLabel);
            _patreonNamesScrolled.Add(_patreonNamesText);

            _rightBox.Add(_aboutLabel);
            _rightBox.Add(_aboutDescriptionLabel);
            _rightBox.Add(_createdByLabel);
            _rightBox.Add(_createdByText);
            _rightBox.Add(_contributorsEventBox);
            _rightBox.Add(_patreonNamesLabel);
            _rightBox.Add(_patreonNamesScrolled);

            _mainBox.Add(_leftBox);
            _mainBox.Add(_separator);
            _mainBox.Add(_rightBox);

            Add(_mainBox);

            ShowAll();
        }
    }
}