SageTV Community  

Go Back   SageTV Community > SageTV Development and Customizations > SageTV Studio
Forum Rules FAQs Community Downloads Today's Posts Search

Notices

SageTV Studio Discussion related to the SageTV Studio application produced by SageTV. Questions, issues, problems, suggestions, etc. relating to the Studio software application should be posted here.

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 12-19-2007, 02:31 PM
MeInMaui's Avatar
MeInMaui MeInMaui is offline
SageTVaholic
 
Join Date: Feb 2005
Location: Maui. HI
Posts: 4,203
Question Navigation wrapping and scrolling tables

I'm trying to enable navigation wrapping for the new icon based main menu in teh latest SageMC release. The wrapping works fine either horizontally or vertically as long as there is no scrolling in that dimenion.

However, if the table scrolls vertically (for example), then when I reach the last row and press down it doesn't wrap to the top of the table anymore. It just jumps to the next logical focusable element on the screen. I hope that was clear.

So my question is, am I missing something? Is this the intended behavior? And lastly, might there be a simple way to work around it?

I started to try testing for the last row/column on the last vertical/horizontal page and then using SetFocusForVariable() to send focus to the proper cell to simulate wrapping. Unfortunately this became way too complicated very quickly.

Also, I don't want to enable wrapping of the table, because if the last row is not full, then the cell locations get messed up as cells are shifted to fill in the blanks as the table wraps.

Thanks for any help or insight you may be able to provide.

Aloha,
Mike
Reply With Quote
  #2  
Old 12-19-2007, 11:09 PM
Opus4's Avatar
Opus4 Opus4 is offline
Administrator
 
Join Date: Sep 2003
Location: NJ
Posts: 19,624
Several months ago, I was told "SageTV doesn't wrap navigation if you're inside a scrolling table that scrolls in the direction you're navigating."

There are probably a few things you could try...

How about a Down listener on the panel above the table? If the table doesn't use the command, I think it will pass it up, so then you may know that is the point when you should set focus back to the first item.

Why not use a wrapping table? You mentioned having cell locations get messed up if the last row is not full, so I think you are referring to 2-dimensional tables. Since you know the number of items in the table and the table's col x row size, just add a couple blank items to the list fed to the table to fill out the last row. Draw the blank items as empty panels w/o an item widget. Or, feed the items to the table in groups by row, so the entire row is the table's item; when that 'item' is drawn, it actually draws all the menu items in that group in order to build the row. Either way, the blank items might mess with focus (unless you make them focusable blanks), but it should wrap w/o throwing the items into new locations.

That's all I can come up with at the moment.

- Andy
__________________
SageTV Open Source v9 is available.
- Read the SageTV FAQ. Older PDF User's Guides mostly still apply: SageTV V7.0 & SageTV Studio v7.1.
- Hauppauge remote help: 1) Basics/Extending it 2) Replace it 3) Use it w/o needing focus
- HD Extenders: A) FAQs B) URC MX-700 remote setup
Note: This is a users' forum; see the Rules. For official tech support fill out a Support Request.
Reply With Quote
  #3  
Old 12-20-2007, 01:34 PM
Crashless's Avatar
Crashless Crashless is offline
Sage Icon
 
Join Date: Oct 2003
Location: Los Angeles, CA
Posts: 1,224
I may not be fully understanding what you're trying to accomplish, but couldn't you put an item next to your table so it becomes the next focusable item after the last row and have a FocusGained() hook revert focus back to the first table item with SetFocusForVariable()? It could be a completely themeless item widget so it doesn't draw - a kind of ghost widget.
__________________
Give the Meekell STV a try!
Reply With Quote
  #4  
Old 12-21-2007, 04:55 AM
MeInMaui's Avatar
MeInMaui MeInMaui is offline
SageTVaholic
 
Join Date: Feb 2005
Location: Maui. HI
Posts: 4,203
I got wrapping to work by placing left, right, up, and down listeners in the table cell that just call PassiveListen unless you are at a border of the table where navigation wrapping should occur. It then uses SetFocusForVariable to set the focus to the appropriate cell. This works fine except that the focus transition to the new cell is not animated in any way.

I would like to have the table scroll and/or the focused icon slide to the new location, but I don't know how to duplicate the automatic animation behavior using the animation API calls. Would this be something that is even possible? Thanks.

Aloha,
Mike
Reply With Quote
  #5  
Old 12-21-2007, 09:40 AM
Opus4's Avatar
Opus4 Opus4 is offline
Administrator
 
Join Date: Sep 2003
Location: NJ
Posts: 19,624
Quote:
Originally Posted by MeInMaui View Post
I got wrapping to work by placing left, right, up, and down listeners in the table cell that just call PassiveListen unless you are at a border of the table where navigation wrapping should occur. It then uses SetFocusForVariable to set the focus to the appropriate cell. This works fine except that the focus transition to the new cell is not animated in any way.
(I haven't tried these calls.) Have you tried using EnsureVisibilityForVariable() too? The docs for both say that they cause the table to scroll when needed... but maybe it doesn't really mean scroll in the sense you want. Maybe try sending that question to SageTV in case it is supposed to animate the scroll.

- Andy
__________________
SageTV Open Source v9 is available.
- Read the SageTV FAQ. Older PDF User's Guides mostly still apply: SageTV V7.0 & SageTV Studio v7.1.
- Hauppauge remote help: 1) Basics/Extending it 2) Replace it 3) Use it w/o needing focus
- HD Extenders: A) FAQs B) URC MX-700 remote setup
Note: This is a users' forum; see the Rules. For official tech support fill out a Support Request.
Reply With Quote
  #6  
Old 12-21-2007, 11:09 AM
MeInMaui's Avatar
MeInMaui MeInMaui is offline
SageTVaholic
 
Join Date: Feb 2005
Location: Maui. HI
Posts: 4,203
Quote:
Originally Posted by Opus4 View Post
(I haven't tried these calls.) Have you tried using EnsureVisibilityForVariable() too? The docs for both say that they cause the table to scroll when needed... but maybe it doesn't really mean scroll in the sense you want. Maybe try sending that question to SageTV in case it is supposed to animate the scroll.

- Andy
Hi Andy. Thanks.

Yes, adding EnsureVisibilityForVariable() was the first thing I tried after seeing this issue. It behaves the same way. The table jumps to make the appropriate cell visible, but there is no animation. I'll contact SageTV as you suggest. Thanks again.

Aloha,
Mike
Reply With Quote
  #7  
Old 12-21-2007, 11:44 AM
Crashless's Avatar
Crashless Crashless is offline
Sage Icon
 
Join Date: Oct 2003
Location: Los Angeles, CA
Posts: 1,224
You might be able to use:
Code:
AnimateTransition("HighlightElement",TableCellDestination,"Focus","Smooth",150,0)
after your SetFocusForVariable() to fake a normal animation.
__________________
Give the Meekell STV a try!
Reply With Quote
  #8  
Old 12-21-2007, 01:25 PM
MeInMaui's Avatar
MeInMaui MeInMaui is offline
SageTVaholic
 
Join Date: Feb 2005
Location: Maui. HI
Posts: 4,203
Quote:
Originally Posted by Crashless View Post
You might be able to use:
Code:
AnimateTransition("HighlightElement",TableCellDestination,"Focus","Smooth",150,0)
after your SetFocusForVariable() to fake a normal animation.
Thanks for the suggestion Vince. I'll give it a shot.

BTW, I looked around and I couldn't find the API specification for AnimateTransition(). Do you know where I can find it?

Aloha,
Mike
Reply With Quote
  #9  
Old 12-21-2007, 02:40 PM
Crashless's Avatar
Crashless Crashless is offline
Sage Icon
 
Join Date: Oct 2003
Location: Los Angeles, CA
Posts: 1,224
I couldn't find it either. I figured it out via trial and error. It appears that it can visually transform a widget from one container to another if you pass the variables along to the target place then Refresh().

IE:

ContainerA on the left side of the screen it's properties are defined by FooA.
ContainerB is on the right side with it's properties defined by FooB.

Code:
AnimateTransition("ContainerA","ContainerB","Foreground","Smooth",150,0)
   |->FooB=FooA
      |->FooA=null
         |->Refresh()
Should make ContainerA animate a slide to take the place and shape of ContainerB.

I don't know if that helps, but it's how it appears to work in the example I emailed you.

As far as available transition animation properties, some of the Animate() ones work, and some don't...trial and error appears to be in effect.
__________________
Give the Meekell STV a try!
Reply With Quote
  #10  
Old 12-21-2007, 02:53 PM
MeInMaui's Avatar
MeInMaui MeInMaui is offline
SageTVaholic
 
Join Date: Feb 2005
Location: Maui. HI
Posts: 4,203
Quote:
Originally Posted by Crashless View Post
I couldn't find it either. I figured it out via trial and error. It appears that it can visually transform a widget from one container to another if you pass the variables along to the target place then Refresh().
Hi Vince,

Thanks for doing the leg work on this. It should come in very handy.

Aloha,
Mike
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
beta 11 - Scrolling Recordings now confusing kmac SageTV Beta Test Software 5 01-31-2004 04:55 AM


All times are GMT -6. The time now is 06:15 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.