Input needed: ES theming improvements
-
Is it possible to get an alignment feature added for the carousel? It's more for the vertical mode.
-
@Syhles An alignment feature would be great. At the moment everything is center aligned, but you could put the carousel against the top of the screen and top-align the logos so the larger active one sits a bit lower than the rest. Or left-align a vertical carousel so the active one sits out to the right more. I mentioned this feature at one point during testing, but I don't know how viable it is.
-
@mattrixk
I have zero experience coding but, I feel like it should be doable. It's seems that the <text> <size> function works the same as the carousels <size> function as it makes an invisible box for said object to sit in, but this is just my guess, this may be completely wrong. -
@mattrixk I downloaded your theme but seems to have the carousel bits commented out, do you confirm?
I'm trying to get hold of a sample theme that uses the carousel features, just to make sure I'm not breaking anything during development. Doesn't need to be complete - Indent should be fine.
Thanks in advance - to you or to anyone who has something I can use!
-
@pjft
Here's a left aligned vertical carousel.<carousel name = "systemcarousel"> <type>vertical</type> <pos>0.027 0.05</pos> <size>0.33 0.835</size> <color>00000000</color> <logoScale>1.5</logoScale> <logoSize>0.20 0.15</logoSize> <maxLogoCount>5</maxLogoCount> </carousel>
-
@Syhles Thanks. I take it I just add this to the system view?
-
@pjft
Yeah, just put it under System, it does work for certain as I'm using it for the Modern theme. -
@Syhles thanks for the pointer. Unfortunately I must be doing something wrong in my end. I tried to add it to the carbon theme, in the theme.xml file but had little success, which left me confused. Tried to troubleshoot it but led me nowhere.
Would it be to much of an inconvenience if I could ask you to zip your theme folder and share it with me via any kind of file sharing service? No urgency whatsoever.
Thank you in advance.
-
@pjft
Where was the theme.xml located, in the carbon folder or in a game system folder like snes? -
@Syhles in the root folder. Maybe it's being overridden later and I didn't notice. That's a possibility.
-
@pjft I think you need to add it to carbon.xml. I don't think the theme.xml file in the root folder is actual used.
-
@pjft The Indent theme is still a major work in progress and I haven't touched the xml in a while (I'm working on the graphics at the moment).
The BaseVid theme from the ES Toolkit is the one you want to look at.
-
-
Thanks both. I figured out the problem - which can be useful for future reference (particularly for @jdrassa ).
The carousel is only correctly initialized if the first theme you have roms for has a corresponding theme folder. If not, it'll use the default.
As I have an arcade folder, that's where it was trying to get carousel info from, which was incorrect.
I suspect you may benefit from adding some more checks in the code on SystemView's::getViewElements .
All is good then - thanks all!
-
@pjft said in Input needed: ES theming improvements:
The carousel is only correctly initialized if the first theme you have roms for has a corresponding theme folder. If not, it'll use the default.
I can comment on that one. Your observation is correct, but let me rephrase it :
ES will only populate the systemview theme elements carousel and systeminfo once, and applies those for all themes. If the first system has no explicit carousel or system info elements, it will fall back to the default ones.
In my tests, the theme had a central xml file placed in root, taking care of the common elements, as well as a separate xml files for each separate system. That would be the preferred location for the carousel element.Now, if there really is a clear use case, we could consider extending the current implementation of carousels to allow multiple instances, one for each system. However other than varying the color for each system, I cannot justify the added complexity for that, at the moment at least.
-
@mattrixk I like your idea of filtering by genre. I'm probably joining in this brainstorming late, but another idea similar to this is color coding game text by some factor (genre, players, ranking, etc..)
-
I'd like the choice of having a horizontal gamelist (basically how the carousel is Default) and options to load x-amount of md_images to go with it.
-
@Zigurana Thanks for the reply.
Let me begin by saying that I am not a themer, so I will certainly not produce any valid use case here :) That being said, at least allow me to explain what I expected the behavior to be, so that it may be clearer whether there's a mishandling of the element or not. But no, I'm not advocating for multiple instances by any stretch of the imagination.
Let me give you the following example to illustrate what happened here:
Theme "bla": . bla.xml (with carousel definition) + gb folder . theme.xml (no carousel definition) . logo.png
If I only have the "GB" system here, this will load fine. If, however, I have "arcade" as the first system, this will not load the carousel.
If I create an arcade folder with its right content, the carousel will now load fine.
That is what I fail to understand. I would get that if the carousel was being defined in the individual systems' xml files (though I fail to see why that would be the case, though as I said, I am not a themer), but given that there's a central XML file that defines the carousel, why would the lack of a particular system XML file and folder, with no relation to the carousel, be messing those up? It should have no bearing on it whatsoever, I believe.
That was just my thought. If you feel that this scenario I describe should be working, then there is something we may need to look into (perhaps we're loading the systems' XML files before the main one? I haven't checked).
If you feel that it is working as intended, then it's fine by me - ultimately I just struggled to get a running example of it, but I'm now sorted :)
And just to make it clear, I don't expect people to use an incomplete theme or for it to work correctly. But in this case, this particular element I fail to see why it doesn't, so thought I'd bring it up.
Thanks for the great work here!
-
@pjft As far as EmulationStation is concerned, there isn't really a central XML file. The use of a central XML file is more of an unofficial best practice. Each individual theme xml file imports the central XML file. When there is no theme XML file for a particular system, EmulationStation does not know to import the central file.
@Zigurana I don't think we need to support multiple carousel configs, but I iterate over the themes until one is found that has a carousel element, or maybe more generically, one that has a system view defined. I would need to test, but I suspect that in this case the loaded theme is completely empty. I added a hasView type method as part of a video fix a little while back. We could just check that to see if the current system theme has system view and if not check the next one. I will try and put together a quick fix tonight to test it out.
-
@jdrassa Got it, thanks for the clarification.
Indeed, if that's the case (and I had no idea that there usually wouldn't be a central file, and only existed as an import!), then yes, definitely iterating until you find one would be ideal.
Certainly I'd see no need to support multiple carousel configs, but other than that I think you're spot in.
Thanks.
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.