Author
Topic: GUI Improvements (Read 25714 times)

With Designer, you design a designobj, to have common properties, any properties, and then you have variations which inherit from them. The changes include not only the properties of that designobj, but also the placement and display properties of its children.

Understood - but once that set of "design files" are created by HAD they are the same set used for all UIs and all devices, right? Understanding that not all the devices or UIs use the same parts of the design files, they switch and select based on the designobjs and the variations that inherit from them, specific to the particular requirements of the device and UI in question.

Alright I'll try HADesigner, I'm going to be getting an environment setup, is it possible to use it local on the LMCE box? If I remember correctly it is only a windows executable...still think that hardly makes sense, but maybe I'm missing something

I have been setting up a dev environment to start working on the GUI. We haven't exactly seen eye to eye on things and I'd like to put that behind us and move forward. The next few weeks are very busy for me so I will be putting time into this whenever I can, but you'll likely start seeing me in the channel more and more in the coming weeks. So far I have HADesigner running and connected to my LMCE box, now I'll learning how to make this all work and going through your screencasts again.

I've been reviewing your screencasts in my downtime to get my head around HADesigner a little better. It does seem a bit cumbersome to use, but maybe that will change once I'm more familiar with it. I might not have gotten far enough into the screencasts, I'm about 70% through them now, but I have a few quick questions. I do not have all of the devices that need to be designed, I do not have a Symbian phone, or a PDA so testing on those devices is not possible for me. Is there some way to emulate the UI running on the hardware within HADesigner so it can be simulated as close as possible?

currently no. it's one of the reasons I have one of each type of device. But you can do it right, so long as you understand what needs to be present on each device type... For example, the Symbian variation should have Button definitions in each child designobj for any keys you want to press. Often there is no graphic in that case (Symbian does not inherit from the standard variation, so any actions like onload etc, have to be duplicated in the cell phone variation)....

[..]I do not have all of the devices that need to be designed, I do not have a Symbian phone, or a PDA so testing on those devices is not possible for me.

Also keep in mind, that you don't NEED to build for all UIs. Start with a UI as a UI1 replacement for example, and build it. After re-building all the screens for a new design, you WILL have such a good understanding on how things work, that adding support for the other devices will be trivial for you.

@posdeAbsolutely, that's my plan. The more I'm using LMCE the more it occurs to me that UI2 is fine, I don't need to re-invent the wheel, but it needs a LOT of polish, I'm going to start with the home screen first to start learning.

@ThomI have two more quick questions...the screencasts make more sense this time through and I am confident that when I get back to my dev environment at home I'll be able to accomplish some things this time around.1. How can I submit my changes for review to be included in the trunk? I understand obviously that access to the trunk is something I must earn and prove a thorough understanding before any such access is given, but I'd like to be able to submit my changes to you before posting as a patch for critiquing (sp?) since you're the resident HADesigner expert. 2. I see in HADesigner the IsTabShow help boxes for the design object, I also see in the screencasts the D and R next to two of the four boxes there, am I correct in thinking this serves as an onup, ondown, onleft, and onright directive for navigating with keyboard arrows or arrows on a remote for instance? If not, is this a feature of HADesigner and is it covered in the screencasts as I haven't gotten all the way through yet, just thinking as I go.

PLEASE PLEASE PLEASE PLEASE PLEASE do all your work in a top level category folder, create a new one "MySkin" .... Do not modify Basic in any way.

With Skins, any designobj can serve as the basis for a skin variation, so there is no reason to modify basic, let's keep that clean for now. Take a look at the SmallUI category, those are variations for the Cisco 7970 skin. Note that under this folder are categories much like the top level folder.. they don't have to be the same, but it's that way to make things more consistent.

create a shell script, I call mine designer-checkin.sh with the following lines:

You can do a 'diff' ... to see the differences between your stuff, and the central server. You can also revert some or all of your changes here.'update' ... DO THIS FIRST before doing any designer work, so that your local database is up to date.'checkin' to check in your changes.

You should come by the chat room to work with us the first run through, and please chat with us to let us know what you're up to. We all use this database, so we need to know if major changes are going to happen, so we can brace for them.

also this first pass, you should mysqldump your pluto_main database and keep a copy, in case something buggy happens.

To answer your second question:

the tab boxes U D L R, are interesting... normally, if Is Tab Stop is selected, Orbiter will order the tab stops automatically, pressing right will go to the closest object to the right, to the left, etc.

but you can specify a designobj # here to say, when you tab left from this object, go to desigobj 5678, instead. This should be used when the normal percieved eye flow for direction keys needs to be interrupted for some reason.

Cool, I was curious about this as I navigate with the keys on my keyboard and found several buttons that don't navigate logically as represented on the screen. I'll have to play with this as I have some ideas to change the layout to improve the navigation. I'm interested to see, since I'm using a designobj # in those fields, and a designobj can be a single or group of objects/buttons, will it remember which specific button had focus last and return to that button when navigating back to that designobj. What I mean is you have two columns of buttons for example.

DesignObj 1 DesignObj 2

Button 1Button 2 Button 4Button 3

Logically you want the buttons in DesignObj 1 to be a 'group' so that if you navigate between columns starting with button 3 to button 4 then back you should focus where you left off at button 3. Likewise if you navigate from button 1 to button 4 then back it should return focus to button 1. I'm thinking this is not how it works though based on some of the navigation behavior I've seen in LMCE, but hopefully I'm wrong...I'll find out soon enough!

I finally got my development environment running and have started making a few changes to UI2 already. I don't really have anything impressive at this point, but I'd like to start a discussion on the boards about my approach and what I'm planning on doing. Please realize I do not currently have a full blown system and am working toward building a more complete system. If I am misunderstanding something or not accounting for something let's start discussing how to properly address the problem and come up with a solution.

I am working from UI2, I understand there are multiple devices that will run the UI and that it needs to be designed as such that a user navigating with a Fiire remote, arrow keys, or touch screen can easily make there way around the system.

1. The thing I don't like about the current UI when run on a TV is that it appears to have been designed for navigation with any of the three in mind, and it can safely be changed to not include the touch screen navigation.

2. The cursor on screen I do not quite understand as if things were laid out right, you could do away with it completely and navigate just fine with a gyration based remote or arrow keys. Perhaps someone can shed a little more light on this for me.

These seem to be the obstacles the design needs to overcome to have a beautifully designed UI in both function and form. It is my understanding that there are some limitations in HADesigner and LinuxMCE that require point 1. Thom, can you verify I'm understanding this correctly? My information is coming from my limited experience with HADesigner and from my interpretation of your screencasts. I think it is because anything in the Standard layout is duplicated across any other layout.

My plan is to not take away any functionality from the current UI, but to modify it in such a way that a box connected to a TV feels more like a media center that just happens to be capable of communicating and controlling your entire house, and to make things like touchpads, PDA's, etc. feel like a remote that is in sync with, and capable of controlling your entire house. The main difference I think in my plan and the current implementation is that the difference between a device connected to a TV and a touchpad is somewhat fuzzy from what I've seen. It is possible I'm missing something entirely though, is it possible to select what layout your device uses? And if not, how does LinuxMCE decide which layout to use?