RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Pegasus theme development general

    Scheduled Pinned Locked Moved Ideas and Development
    pegasusqmltheme makingtheme help
    156 Posts 16 Posters 50.7k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      SinisterSpatula
      last edited by

      Another thing that came up was the issue of localization. If someone wants "Favourite" instead of "Favorite" for example. I don't know if that could be something that is supported in the front end also, or how best that could be supported. For now I just included a "favourites" logo and people can manually rename it.

      fluffypillowF 1 Reply Last reply Reply Quote 0
      • fluffypillowF
        fluffypillow @SinisterSpatula
        last edited by

        @SinisterSpatula that's a good question and I'm not sure yet what would be the best approach. It can't be provided by Pegasus' core, since you can use any text in a theme, so probably language setting will also need to be a theme option. The language Pegasus itself is using can be accessible to help with that.

        PlayingKarrdeP 1 Reply Last reply Reply Quote 0
        • PlayingKarrdeP
          PlayingKarrde @fluffypillow
          last edited by PlayingKarrde

          @fluffypillow While that does at first glance feel like a theme option, I feel like simply having a EN-US and EN-GB option for language would make automating that on the theme a ton easier. As it stands right now there's no way to know which version of english people will want.

          It's probably not a huge deal since Favorite/Favourite is about the only instance I can think of that we would implement but also I would hope that it was a very small change on your end too (basically just duplicate the en-us localisation and add that extra option) that maybe it's worth it?

          -edit- Also on that note, how does one actually get the language selection? Someone asked about localisation for gameOS so I thought I may as well look into it (although actually properly localising it to each of the respective languages is another story...)

          fluffypillowF 1 Reply Last reply Reply Quote 0
          • S
            SinisterSpatula
            last edited by SinisterSpatula

            When jumping to a new index of the GridView, the following code works to move to it instantly, but the strange thing is, it's only instant if the new index is further down. If the index is a previous one (up above the current) then the performance bogs down and it's a much more processor intensive task. Any ideas on that? I've tried GridView.Center, Contain, SnapPosition. Visible seems like it gives the best performance (going down but not up), none of them give good performance going up, (same for .Beginning) Wondered if there was a trick, like making it invisible and disabled before jumping, and un-do it after the jump. (Just need a way to prevent it from trying to process a scroll/flick animation, I just want it to instantly re-position the grid.) I can jump it from 0 to Z in a flash, but going from Z to 0 will move like a glacier. This also has me wondering if the grid can start over again once it get's to Z, like maybe it can just show the start of the items again. But I haven't gotten very far when searching about that.

            positionViewAtIndex(idx, GridView.Visible);
                      currentIndex = idx;
            
            1 Reply Last reply Reply Quote 0
            • PlayingKarrdeP
              PlayingKarrde
              last edited by

              @fluffypillow A long time ago I asked you about the ability to get which button is assigned to which actions (ie getting the button that is assigned to cancel). I feel like I recall you adding that but I can't seem to find that information anywhere. I suspect that info is held within api.keys but I'm not entirely sure what to query to get it. Is this possible at all?

              fluffypillowF 1 Reply Last reply Reply Quote 0
              • fluffypillowF
                fluffypillow @PlayingKarrde
                last edited by

                @PlayingKarrde Yes, see the Array column here; the elements have key and modifier fields like QML KeyEvents. At the moment they also have a name() function, but this might change in the future (ie. don't depend on it), and its output also varies depending on platform and language.

                PlayingKarrdeP 1 Reply Last reply Reply Quote 0
                • PlayingKarrdeP
                  PlayingKarrde @fluffypillow
                  last edited by PlayingKarrde

                  @fluffypillow Thanks. You say not to rely on name() but isn't this exactly what I need? I'm honestly not sure how I can use the model that it provides otherwise as I'm not sure what those values represent. For context this is for making button help.

                  1 Reply Last reply Reply Quote 0
                  • fluffypillowF
                    fluffypillow @PlayingKarrde
                    last edited by

                    @PlayingKarrde It seems there's no built-in way to get the the current locale, so I'll add something for that. In a theme that'd look something like

                    • you add a theme option (think a simple dropdown list) for selecting a language out from those that your theme supports
                    • on loading/change you set it to the one Pegasus uses or to some fallback

                    You can add support for languages not supported by Pegasus, as it'll be just a theme option. Languages have a code like "en-US" and "en-GB", so you'd be able to make a difference or use a general "English" based on that.

                    I can also add translations if someone makes them :) I was also thinking about making a translation site, just haven't had the time yet.

                    @SinisterSpatula Such slowdown is very interesting, the memory of the Pi shouldn't be that slow. This will need some more debugging. Could you record a video of it?

                    As for jumping from the last to the first element, you can use keyNavigationWraps.

                    @PlayingKarrde by don't depend, I mean it's not officially part of the Keys yet (ie. undocumented), I think I might change it from being a function to a regular property before first. But yes, that's something you'd use for for actually showing the name of the keys. One shouldn't depend on the the text either, as it may return different names on different languages/platforms (eg. Mac).

                    PlayingKarrdeP 1 Reply Last reply Reply Quote 0
                    • PlayingKarrdeP
                      PlayingKarrde @fluffypillow
                      last edited by

                      @fluffypillow said in Pegasus theme development general:

                      by don't depend, I mean it's not officially part of the Keys yet (ie. undocumented), I think I might change it from being a function to a regular property before first. But yes, that's something you'd use for for actually showing the name of the keys. One shouldn't depend on the the text either, as it may return different names on different languages/platforms (eg. Mac).

                      Gah ok how can I get something that is consistent and platform agnostic from that then?

                      1 Reply Last reply Reply Quote 0
                      • fluffypillowF
                        fluffypillow
                        last edited by

                        The key and modifier fields should be same across platforms (they are actually just numbers), it's the displayed name that's different, Like Ctrl turns into Option (I think?) on Mac. The list of possible key values is listed here (you can eg, do if (key == Qt.Key_X) //do something ), and modifiers are listed here. Gamepad keys have their own key code, I think I've listed them here somewhere but I'll also document them eventually.

                        1 Reply Last reply Reply Quote 0
                        • PlayingKarrdeP
                          PlayingKarrde
                          last edited by

                          Hmm ok. I will brute force it then. It's not ideal but also not the end of the world since there aren't THAT many controller buttons.

                          fluffypillowF 1 Reply Last reply Reply Quote 0
                          • fluffypillowF
                            fluffypillow @PlayingKarrde
                            last edited by

                            @PlayingKarrde one sec and I'll provide a list :)

                            fluffypillowF 1 Reply Last reply Reply Quote 0
                            • fluffypillowF
                              fluffypillow @fluffypillow
                              last edited by

                              @fluffypillow here's the order, the number grows by one on every button after A

                              A = 0x100000,
                              B,
                              X,
                              Y,
                              L1,
                              L2,
                              L3,
                              R1,
                              R2,
                              R3,
                              SELECT,
                              START,
                              GUIDE,
                              
                              PlayingKarrdeP 2 Replies Last reply Reply Quote 0
                              • PlayingKarrdeP
                                PlayingKarrde @fluffypillow
                                last edited by

                                @fluffypillow Oh ok that's easier than I thought. Although those aren't the results I was getting in my tests, I'll try them and see. Thanks!

                                1 Reply Last reply Reply Quote 0
                                • PlayingKarrdeP
                                  PlayingKarrde @fluffypillow
                                  last edited by

                                  For anyone else that wants to do this, this is the function I made:

                                  function processButtonArt(buttonModel) {
                                      var i;
                                      for (i = 0; buttonModel.length; i++) {
                                        if (buttonModel[i].name().includes("Gamepad")) {
                                          var buttonValue = buttonModel[i].key.toString(16)
                                          return buttonValue.substring(buttonValue.length-1, buttonValue.length);
                                        }
                                      }
                                    }
                                  

                                  Then passing in the key (ie processButtonArt(api.keys.cancel)) . This obviously isn't super ideal since it's currently relying on name() but it's the only way I could find to discern between a gamepad and key for now (if there's a better way I'm happy to change) but this is working for me for now.

                                  1 Reply Last reply Reply Quote 0
                                  • AndersHPA
                                    AndersHP
                                    last edited by

                                    How come I have perfect game audio when running the default pegasus theme, but have no audio when switching to other themes?

                                    My "Bubble Bobble" Themed Bartop Arcade
                                    My Gameboy

                                    1 Reply Last reply Reply Quote 0
                                    • fluffypillowF
                                      fluffypillow
                                      last edited by

                                      @AndersHP Interesting, so you have no audio in-game if the theme is set to something else than the default theme? Does this happen also if Pegasus was launched with the other theme already set or only after you change it in the menu? Does it happen on different devices too? Does it happen with all themes?

                                      1 Reply Last reply Reply Quote 0
                                      • AndersHPA
                                        AndersHP
                                        last edited by

                                        Just tested.
                                        I have tested GPiOS theme and GameOS theme, and there's no ingame sound in any of them. I tried changing theme and rebooting, and also shutting down+restarting, there's no sound no matter what I do.

                                        After reverting back to the standard grid theme, the sound is back instantly.

                                        My "Bubble Bobble" Themed Bartop Arcade
                                        My Gameboy

                                        PlayingKarrdeP 1 Reply Last reply Reply Quote 0
                                        • PlayingKarrdeP
                                          PlayingKarrde @AndersHP
                                          last edited by

                                          @AndersHP But do you mean no sound in the theme or no sound when playing a game?

                                          AndersHPA 1 Reply Last reply Reply Quote 0
                                          • AndersHPA
                                            AndersHP @PlayingKarrde
                                            last edited by

                                            @PlayingKarrde
                                            No sound in games at all. Haven't got any video previews so haven't considered if the sound is working in the theme.

                                            My "Bubble Bobble" Themed Bartop Arcade
                                            My Gameboy

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.