[01:22] Rick rolling with Ubuntu-TV was nice, thanks for all you work === zz_chihchun is now known as chihchun === chihchun is now known as zz_chihchun === zz_chihchun is now known as chihchun [15:40] bobweaver, tgm4883, checking in with you guys, how are things going? [16:49] jhodapp, things are ok (my end )there is a Log from yesterday that looks at concerns that each of us have. and what we have been working on [16:49] http://irclogs.ubuntu.com/2012/11/17/%23ubuntu-tv.html [16:50] bobweaver, perfect, I'll check that out [16:50] thanks [16:53] jhodapp, Ubuntu TV went over real well at the France Loco Party [16:53] bobweaver, sweet! [16:53] well the mock up that is [16:59] jhodapp, we are also wondering about grilo when you get the chance [16:59] me and tgm4883 [17:00] bobweaver, what about it? [17:00] Probably just something I'm misunderstanding [17:00] so if grilo is basically "unity for metadata", and unity has scopes for metadata, and scopes can pull from other scopes, why do we need grilo? [17:02] tgm4883, because the grilo plugins know how to talk to specific services [17:02] tgm4883, you don't want to rewrite all of that from scratch as unity scopes [17:02] can grilo handle translations ? [17:03] bobweaver, yeah [17:03] like if tmdb get movie in french will it be able to render to scope though scope is wrote in english [17:03] thats what i mean [17:03] hang brb [17:03] unity scopes don't need to do everything from scratch, they can still call on supporting libraries to collect their data [17:03] coffee [17:03] jhodapp, is there a list of grilo plugins somewhere? [17:03] tgm4883, yeah, the grilo website has the list [17:04] bobweaver, should be able to [17:05] Ok that was something that I run into troubles with the Ubuntu France team [17:06] once data was gathered because it was not in english it would crash the scope because it dont know what to parese [17:06] this is old dumb lens keep in mind well not dumb but at any rate [17:07] because one calls somehitng (metadata) in english it *only* going to look for that call [17:07] thus not working in any other languages [17:07] bobweaver, yeah, unity couldn't be taken seriously without considering translations [17:08] u3d.tr I can not figure it out [17:08] but tht is her nor there [17:08] here * [17:09] u2d.tr("this string should translate but wont and even test work ") [17:09] what is same in 3d ? [17:10] jhodapp, I'm assuming grilo could just be a len/scope? [17:11] tgm4883, can be used in a scope to collect metadata [17:11] tgm4883, in a similar way to how a scope might use sqlite to search a local database [17:12] jhodapp, right, but it's basically nothing that bobweaver would have to build in support for [17:12] tgm4883, I don't understand your question [17:12] jhodapp, which I think answers my question ;) [17:12] lol [17:13] jhodapp, basically, bobweaver's got to do work to get a tv form factor and layout stuff. But he doesn't have to write any unity code specifically for Grilo [17:13] since it would be up to lens/scope creators to decide if they want to use Grilo [17:14] seems like it should be wrote into nux [17:14] tgm4883, he does if he wants a lens/scope pair to search metadata sources (like TMDB) and include that data in a len's vieew [17:14] view [17:14] bobweaver, no not Nux [17:14] like [17:14] eg. A scope writer is specifically going to ask Grilo for metadata, not ask Unity for metadata which then in turn asks Grilo for metadata [17:14] grilo_layout_ = new nux::HLayout(); [17:14] it's Scope -> Grilo, not Scope -> Unity -> Grilo [17:15] tgm4883, A scope is a part of what makes Unity, so it cannot ask Unity [17:16] so Lens -> Scope -> Grilo -> Grilo Plugins [17:16] eh, kinda [17:17] don't quite get it? [17:17] No, I get how it is planned, but there could be an interface in Unity for a scope to ask for metadata [17:17] that way, if Grilo didn't take off, you could switch out that backend without changing scopes [17:17] s/changing/editing [17:17] tgm4883, there could be, but today, to my knowledge, that doesn't exist [17:18] tgm4883, but Grilo will take off, and I'm not sure at this point that another layer of abstraction adds much (I understand your line of reasoning though). [17:22] jhodapp, ok [17:23] tgm4883, though nothing would be stopping you from creating such an abstraction [17:24] jhodapp, mhall119 so on a similar but different note, I had a question about how I should deal with guide data [17:24] I've got two ways of dealing with it [17:24] which would have bobweaver do things differently as well [17:25] sorry had phone call (work) reading up [17:25] so grilo will be scope that can be added to any lens. My question then is how to control dbus name ? [17:25] tgm4883: are you asking specifically how to get it to the Dash? [17:26] so that there is not 2 of the ssame path running ? [17:26] com/canonical/unity/plugings/grilo [17:26] bobweaver: you can't have one scope for multiple lenses [17:26] you'd need multiple scopes [17:26] for each scope needs it own dbus . [17:26] bingo mhall119 [17:26] however, you can have one process that provides multiple scopes [17:27] mhall119, more what format, as well need a layout from bobweaver. Let me explain [17:27] unless dbus path changed somehow [17:27] bobweaver: we'd need separate dbus names [17:28] A) I can pass the XML directly from mythtv to the layout, then bobweaver would need to write code in the layout to parse the XML for display [17:28] correct like com.canonical.unity.plugin.grilo.video [17:28] correct like com.canonical.unity.plugin.grilo.music [17:28] the advantage of that, is I'd imaging that unity could process XML faster than python [17:28] tgm4883: the current API won't let you pass XML to the Dash [17:28] bah, I forgot I have a meeting [17:28] tgm4883, xml can be parshed in python like in qt-quick ? [17:28] back in ~1hour [17:28] so wrote into lens [17:29] tgm4883, if you need example look at the old video-lens [17:29] basically we need to pass schedule data from the Scope to a Dash Renderer [17:29] but that is where languages come into play [17:30] that is what I was talking about before [17:30] currently everything get's passed over DBus using libdee [17:31] import xml.etree.ElementTree as ET [17:31] that is element [17:31] tgm4883, http://bazaar.launchpad.net/~ubuntutv-dev-team/ubuntutv/unity-lens-video/view/head:/video/apps.py [17:31] sont know if that will help [17:31] correct mhall119 [17:32] * bobweaver needs to see grilo in action and not crashing all the time to be able to see how it works :/ [17:32] I like the idea [17:33] just confused :) [17:33] bobweaver: the thing you and tgm4883 will need to work out, and work out with the other Unity devs too, is what fields and values to use in the libdee model for scheduling data [17:33] tgm4883 will put them into the model [17:33] you'll need a "program guide" render that uses that information to display them properly [17:33] correct [17:34] so I see in most lens that you tell it what type of cover flow you want to use [17:34] now, we can do this without a strict API, just cramming stuff directly into Dee and expecting it there on the other end, or we can build a proper, explicit API for it [17:35] the first doesn't require working with the Unity devs and defining a spec, the second does [17:35] why dont I just make new cover flow (sdata) and then one can call that when modeling lens ? [17:35] bobweaver: you can, but you'll need more than just title, description and icon to display the schedule table [17:35] example [17:36] you'll need start_time, end_time at the very least [17:36] cats.append (Unity.Category.new ("cahnel1", icon, Unity.CategoryRenderer.SDATA_TILE)) [17:36] probably channel as well [17:36] you wouldn't want channels defined by category [17:36] use catagories or something to call in lens but that would be 10000's of catagories [17:36] categories are hard-coded, they don't get changed dynamically [17:37] so the TV lens might have a "Live" category, that has the schedule renderer, and a "Recorded" category that just uses coverflow [17:37] but they do receive things (Unity.Category.new) << bad example [17:38] Unity only reads category information when it loads the lens [17:38] you have to restart Unity to add or remove categories [17:38] er [17:38] good point [17:38] this is hard [17:39] much easier in 2d lol [17:39] there are a couple of things that I still must learn about unity 3d [17:40] it's not easier in 2d [17:40] they just cheated for the demo and didn't make it a proper Unity scode and renderer [17:40] in qml we use JS to make a function to make a new page render by its self [17:41] scope [17:41] ok let me try to explain where I am comming from [17:41] Myth tv has services that render xml about all data on channels and info abou thaat channel icons ect [17:42] if we can use asyncronistic sync's with that then it should be easy to make channel info and what not [17:43] getting it to play when clicked on the other hand there we have to wait upstream [17:43] rrecording and all that it can do [17:43] but getting to play live it will not [17:43] att [17:44] so maybe just making a program that reads all that and then sticking that inn the dash [17:44] hackey but would work [17:45] ideally the Dash and Renderer wouldn't know or care about Grillo [17:45] it would get a list of programs and their start and end times, and it'll build a schedule table using that data [17:45] untill I understand grilo I can not program for it [17:45] you shouldn't need to when making the Dash and renderers [17:46] correct (and it'll build a schedule table using that data) [17:46] you should only need to care about Scopes and Dee models [17:49] * bobweaver needs to study more 3d code it is confusing and hard [17:52] it is just hard because there is SO much more code [17:53] like 5 pages = 10 because of headers that menas that 10 pages to every One in Qml [17:53] just saying [17:53] yeah, I understand [17:53] also elemnts and functions and all that are much easier to read [17:53] I love Python for a reason ;) [17:54] :) [17:54] obviously not for memory usage and speed though [17:54] correct btw mhall119 here anything about lens going to vala ? [17:55] default that is ? [17:55] bobweaver: Vala or C [17:55] 50 scopes = almost 2 gigs ram python [17:55] they want to phase out python ones [17:55] yeah [17:55] idel [17:55] basically anything small and fast [17:56] canonical should hire david calle [17:56] they contracted him to write the videos lens [17:56] yeah that is what he told me. [17:56] I talked to him a bit about porting python stuff to Vala or C [17:57] we'll probably organize a big outreach campaign after the new year [17:58] the main reason that I say that canonical should hire david is because he cares about the lens and scopes he makes tons of them. maybe even more then any one else [17:59] cool about the outreach [18:00] so One the good News side of things [18:01] I have almost finished render 'feel' of dash for form.factor.tv [18:01] it is real hackey but I will push code on Thursday [18:02] feel? [18:02] liike what you see when you look at dash [18:02] I have it set so that everything runs rendercoverflow [18:03] and made different camara views [18:03] also had to make hack away a bunch @ lens bar result render ect [18:04] to make all fit to screen nice [18:04] it kinda looks like this http://www.youtube.com/watch?v=QcepB1E1lX0&feature=g-upl [18:05] no 180 though and icons are not that big [18:05] I added keybord layout but dont work and also tried to hack selected view but not working also [18:05] :/ [18:07] "Kinda looks like this" *kinda*=keyword there [18:08] but on launch of app windows do not work because of code (if force_tv) [18:08] /TODO - we should be able to pass in a monitor so that we can make the window [18:08] //the size of the monitor and position the window on the monitor correctly. [18:08] UnityStandaloneTV *standalone_runner = new UnityStandaloneTV(); [18:08] wt = nux::CreateNuxWindow("standalone-unity-tv", [18:08] display_width, display_height, [18:08] (no_window_decorations) ? nux::WINDOWSTYLE_NOBORDER : nux::WINDOWSTYLE_NORMAL, [18:08] 0, /* no parent */ [18:08] false, [18:08] &UnityStandaloneTV::InitWindowThread, [18:08] standalone_runner); [18:10] Also on good news [18:10] PPA for Mock up should be done by tonight [18:10] https://launchpad.net/~josephjamesmills/+archive/ubuntutv [18:11] I do think that this a great idea and will save time and draw maybe one or more people in [18:11] demos that community runs ect [18:21] mhall119, bobweaver sorry, back [18:22] np [18:22] bobweaver, I've already got it parsing the XML, I was just worried about how long it takes to do that in python vs C++ [18:22] not sure what you mean ? [18:22] bobweaver, My plan is to pass Channel/Title/Subtitle/StartTime/EndTime to the program guide [18:23] icon ? also would be cool [18:23] actually, a few more things [18:23] icon/programID [18:23] can you make me list of things ? when you get chance [18:23] tgm4883, think about it like this [18:23] so if Unity won't be able to parse the XML, then that answers my question [18:24] if you where making a lens for channel info but you just wanted to have in reg lens [18:24] Tile horizontal that is ^^ [18:25] all I am doing is making New coverflow that can then be called from the lens itsself [18:25] sorry ram is at max atm so hard to type things and switch windows [18:26] we are going to need a couple of lens for that if I am correct [18:26] sorry scopes [18:27] one ) time and date [18:27] I've not got any experience with lens, just scopes [18:27] two) plating times metadata ect [18:27] ahh cool tgm4883 lets look at a instance of how one can tell to render different [18:30] bobweaver: tgm4883: so the Lens says what Renderer to use for a given category, and the Scope says what category a given Result item should be placed in [18:30] ^^ [18:30] unless we're breaking channels into groups, I don't think there would be multiple catagories? [18:31] not yet at least we are going to need ... let me get code example [18:41] http://paste.ubuntu.com/1370717/ [18:42] so there will be on catagorie in channel called well channel [18:43] and Unity will know that if that render is called then use this file (Channel.cpp) [18:43] instead of say Tile horizonal [18:43] ok [18:43] or tile vertical ect [18:44] it is going to be hackey and I am sure that there is better way but heck if I know what it is [18:44] I'm looking at the lens tutorial on the wiki now [18:45] ok, so I define a channel category, then just pass it the data we've set above? [18:45] just like a real lens [18:46] so take myth scope [18:46] well yea, but I've not made a real lens before [18:46] ahh [18:46] that is ok [18:46] let me find example [18:46] yea it looks pretty simple [18:47] it seems we'll need different views if it's showing everything or if there is a search term present [18:48] http://paste.ubuntu.com/1370724/ [18:48] Unity.CategoryRenderer.HORIZONTAL_TILE [18:48] so then it would be Unity.CategoryRenderer.CHANNEL [18:48] correct [18:48] or CHANNEL_TILE [18:49] ok, so then how are you thinking we should handle it when people search? [18:49] and any lens could be then changed to that and it would just render in channnel [18:49] it will just search just like the normal dash does [18:49] there is 5 results I think [18:49] I don't think that translates well for a program guide [18:49] it is in one of the Filer.cpp files [18:50] if I search for Castle, how do you only show the relevant results from the program guide grid? [18:50] think of each item as a card [18:50] the card is so wide [18:51] in case of horizonal tile it is 52 x 52 or something like that [18:51] ok, so lets say a card is 52 wide, and it represents 30 minutes [18:51] in channel it will be real long X 52 [18:51] tgm4883: the program guide renderer can still filter based on search results [18:51] that is where I am also stuck ;/ [18:51] we'll just need a smart way of doing it [18:52] mhall119, that's what I'm getting at [18:52] but it's not necessary either [18:52] we can only send program guide results where there is no search term [18:52] we need a way to collapse the results so they are still readable and make sense in a guide [18:52] if program is 30 minutes long that is the part that I am stuck atm [18:52] mhall119, no, I think a search ability is required [18:53] going to have to pass more over libunity maybe ? [18:53] I will look more into timing of how things are going to result them selfs [18:53] bobweaver, I was thinking that each card is 30 minutes, and that an hour long show may span 2 cards [18:53] bobweaver: we're going to have to do that no matter what I think [18:53] and that a channel would have many many cards listed [18:53] so a search term of Castle [18:54] would remove the unnecessary cards from view, but then how do we collapse that into something readable [18:54] tgm4883, now switch the back to Unity.CategoryRenderer.HORIZONTAL_TILE and they are all just 1/2 cards [18:54] at 52x52 [18:54] so when you search it will be the same [18:54] as if searching using the myth.acope [18:54] scope* [18:55] can we do that if there is a search term? so no search term == renderer=CHANNEL, yes search term == renderer = HORIZONTAL_TILE? [18:55] no that is not how search works in unity [18:55] so there is a whole section two different things [18:56] you can take searchbar out when ever you like there is function for that [18:56] well we need to be able to search the program guide data [18:56] I should make a chart of how each page correspond to code [18:56] DVR makes no sense if you can't search for a program to record [18:56] yeah that will be passed that the uri ect [18:57] so if I type in "sout" I will get all the programs that have sout in there uri and also in metadata ect [18:57] just like how search is used with all lens [18:58] now time and stuff like thtat will not work at 1st [18:58] yea, I get that [18:58] maybe I am missing something ? [18:58] it's the presentation I'm worried about [18:58] how it will look to the user [18:58] eg. program guide is basically a fancy spreadsheet [18:58] the "card's" will just stack [18:59] one on top of wach other [18:59] each * [18:59] so if you remove 80% of the cells in a spreadsheet randomly, how do you collapse and show the rest of the data so it still makes sense in respect to row/column [18:59] and what is not in search will be gone [19:00] that is wrote into the search functions and elements of Unity [19:00] I suppose it's possible to not define time on the X axis, and instead define it in each show info [19:00] could be on_search : close time [19:01] would have to be massive ammounts of more code then that but you see ? [19:01] so when I type in sout all things that match that will will show but anything else will not be there [19:02] as far as time goes if there is 3 south parks [19:02] well, lets be clear, I'm not looking at this from a code point of view, as I'm just going to feed you the info we defined and let the renderer display it however you want [19:02] one at 9 am one at 9pm maybe we can pass that somehow [19:02] I see what you mean [19:03] er [19:03] I'm just trying to define how it's going to look to the user when they search for something, in an attempt to assist you in how that needs to be done [19:03] ahh [19:03] the way mythweb handles that (and IIRC, in the mythtv frontend is the same), search results don't look like a program guide at all [19:04] [ channel name and icon ][ program name ] [19:04] which makes sense, as search results don't make sense to be sorted by channel, but do make sense to be in chronological order I think [19:04] [ channel name and icon ][ program name ] [19:04] or perhaps the other way around [19:05] so if I search sout park [19:05] [ channel name and icon ][ south park ] [19:05] [ channel name and icon ][ south park ] [19:05] but that is all that shows up [19:05] bobweaver, well here is my question then [19:05] nothing more nothing less [19:06] next cycle is next cycle ;) [19:07] [ channel name and icon ][ Castle ] [19:07] [ channel name and icon ][ England's Castles ] [19:07] [ channel name and icon ][ the don castle show ] [19:07] correct [19:07] I can make maybe like that [19:07] so searching for castle lists those three results, all of different lengths [19:07] correct [19:08] with the data that TIME_STARTS or what ever it is in servies [19:08] services xml [19:08] bobweaver, so then we'll need to put the starttime/endtime in the inforamtion listed there? [19:08] nope previews [19:08] hmm [19:08] but that is just this cycle [19:08] unless if I get more time [19:09] I am running out of money so I need to go back to work :/ [19:09] so I am trying to say hey I can only get this much done this cycle [19:09] but that said tgm4883 that is def in back of head with timing [19:09] we're going to need to put the starttime/endtime in the program guide [19:09] not previews [19:10] well cycle 2 then [19:10] atm this is all the time that I have [19:10] unless, can you put the time blocks above the program guide? [19:10] could that is idea [19:10] eg. 8:00 AM, 8:30 AM, 9:00 AM, etc [19:10] and then make that disappear from search results? [19:10] and then catagories_ TIME [19:11] yes when search is renders it goes away [19:11] YES, I think that would be perfect then [19:11] as it answers both use cases (searchers vs browsers) [19:11] right click buttons for record and remind ect [19:11] yeah I thought about that and mythweb [19:11] right click to preview, where you can get more info and set the recordings [19:11] just like how I have on tv at home [19:12] but not enough time [19:12] correct about previews [19:12] and if you would like to gimp up something I will make like picture [19:12] for orpviews ^^ [19:13] previews * [19:13] so I'll pass you [19:13] ChanID, ProgramID, Starttime, Endtime, Description [19:13] I think that is all you would need right? [19:13] chan icon [19:13] chan name [19:13] but yeah that is it [19:14] Is there a way I can pass you that info at a different time? [19:14] sure [19:14] eg. Pass you chan icon, chan name, chan id [19:14] then when giving you the program data, just give you chan id [19:14] and have you match it up? [19:14] otherwise, I'm going to pass you the same chan icon/chan name for each show on a channel for 2 weeks [19:14] so several hundred times per channel [19:15] and you only need it once [19:15] yeah that is correct [19:15] lets think about that [19:16] you should think about it as a single card for this time beeing [19:16] because when passing to previews [19:17] that is Do we have chanen name and icon in previews [19:17] if not then you can pass once [19:17] well also with [19:17] bobweaver, possibly, but we can get that from the backend at preview time [19:18] sure then [19:18] I suppose I can just pass it to you for every program, and you can detect if you already got it for that program ID and just not use it if you already have it [19:18] I have to figure out how I am going to render channel ids and icons to left hand side [19:18] that might actually be easier and make more sense [19:19] keep in mind we can cache things [19:19] right, I'm just passing the URL to get the image from the backend [19:19] not that imporant [19:19] cacheing that is [19:20] yup [19:20] so if you want to just say "i've already got this, drop the URL", that sounds good [19:20] just like mythtv.scope [19:21] so I've got mythtvservicesapi.py getting the program guide now, so we can test this when you need to. I'll need to add a little work to the scope to pass just the stuff we specified [19:21] http://bazaar.launchpad.net/~mythbuntu/mythbuntu/unity-scope-mythtv/view/head:/src/mythtvservicesapi.py [19:21] as you can see, I've still got a bunch of services to implement [19:21] but it is a great start [19:22] we are moving along [19:22] I will be pushing some code on thursday unity3d I hope [19:23] ok [19:23] I have to work sometime this week so I hope that I do not get called in that much for ubuntu tv sake but for money and also cigg's I hope that I do get called in [19:23] If I understand lenses/scopes, I'll have to make another one just for program guide data [19:24] correct but you can still called shared lib of mythavi.py in includes [19:24] python can do that right ? [19:24] yea [19:25] it's a main feature, write once, use everywhere :) [19:25] a programming lang that does not do that is a programming lang that I do not want to use [19:28] I just could never get over the whole No {} in functions [19:28] or anything [19:28] heh [19:28] whitespace FTW? [19:29] but py is super duper cool fast to write also easy to read [19:31] much more clear and easy to read then say c++ or anything that has to do with nux or some assembly code [19:52] But again tgm4883 I am v.unsure as to how grilo can help with any of this. I understand what it does just not how :/ [19:53] If it is going to be scope or if it is going to be wrote into unity or if it is just passing info via dbus if there is deamon ect [19:53] Saviq, or jhodapp maybe you can explain this better ? [19:55] bobweaver, what's the question? [19:55] I am v.unsure as to how grilo can help with any of this. I understand what it does just not how :/ If it is going to be scope or if it is going to be wrote into unity or if it is just passing info via dbus if there is deamon ect [19:55] basically like how is it going to be implanted [19:55] bobweaver, my understanding of the earlier discussion, is you don't have to do anything with grilo [19:56] that is up to scopes writers [19:56] Oh so one will be able to use in there scopes if they choose to call it in just like a shared lib ? [19:56] bobweaver, in the Nux context? [19:58] jhodapp, I am just confused as to how it is going to be used : like do people call it from scope ? if so it is just a shared lib say #include grilo or will this be wrote into libuntiy ? ect [19:58] bobweaver, shared library [19:58] Oh I see [19:58] thanks [19:58] it's a C library, plus plugins, with several language bindings [19:58] bobweaver, why don't you download it and try out the grilo test-ui? [19:58] that'll help you understand it better [19:58] I must have missed that part when phone call came in earlier thanks jhodapp [19:59] np bobweaver [19:59] I tried but it gets 404 [19:59] what does? [19:59] on all plugins that I build [19:59] bobweaver, try the PPA for it then [19:59] Ok I will try === freezy3k is now known as _freezy3k