[12:01] jblack: what about gcc? [12:01] I was in favour of keeping gcc out of desktop [12:01] but, I'm against splitting the python standard library [12:01] mdz: iirc, gcc didn't come in desktop. === SteveA must go to bed now, it being 1am and all that [12:01] different issue, to my mind [12:01] I'll buy that. [12:13] i'm happy to discuss distutils again [12:33] sabdfl: it's 600k of .py files [12:33] no sensible reason to split it from the main python package that I see [12:33] it seems historical, since they had previously been distributed separately [12:33] main concern to me is its function [12:34] given that i want python to be a first class citizen on ubuntu [12:34] let's switch to -devel [12:34] mdz:^ === BradB [~bradb@modemcable165.196-131-66.mc.videotron.ca] has joined #launchpad === BradB [~bradb@modemcable165.196-131-66.mc.videotron.ca] has joined #launchpad === kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad [02:16] kiko: dude, panther ROCKS [02:16] BradB, tla speed pr0n ? [02:16] not yet [02:16] installing other stuff, but there will be much porn soon [02:16] got a new powerbook today [02:17] 15", 1.5 GHz w/ superdrive, uNF [02:17] i keep saying to myself "sheesh, it feels like i got a new computer", then i'm like "oh yeah, i did" [02:18] BradB, how much did it cost? [02:18] $4K CAD [02:18] i doubled my hardware specs [02:19] hmmm [02:19] how much is that US$? [02:19] 1.5 GHz G4, 80 G, 512 MB RAM, Panther, built-in bluetooth. [02:19] these days? $4K. :) === BradB checks [02:20] hah! [02:20] you know [02:20] about 3250 [02:20] I've been wanting to buy a powerbook for a long time now [02:20] but they are so damn expensive! [02:20] this one was worth it [02:20] I wonder [02:20] dude, this thing adjusts to ambient lighting [02:21] can you get a cheap one down there? [02:21] ack [02:21] if you turn of the lights, the screen dims [02:21] that's killer [02:21] turn em back on, goes brighter again [02:21] heh [02:21] it's insane [02:21] cheap one down where? [02:21] up in canada I guess. :) [02:22] heh [02:22] i can get one for the price i got one, that's about it [02:22] this was the souped up 15" though [02:22] the other 15" is like 600 cheaper === BradB gathers some Z3 unit test pr0n === jblack [~jblack@static-209-158-45-74.scr.east.verizon.net] has joined #launchpad === lifeless [~robertc@dsl-69.8.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad === SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad === elmo [~james@83.216.141.215] has joined #launchpad === dilys [daf@muse.19inch.net] has joined #launchpad === daf [daf@muse.19inch.net] has joined #launchpad === spiv [~andrew@fuchsia.puzzling.org] has joined #launchpad === sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad === mako [~mako@micha.hampshire.edu] has joined #launchpad [02:25] kiko: several of the apps are way, way better now too [02:25] both at the good ole unix level, and os x's apps [02:26] e.g. i hated that ls -h or df -h didn't work in jaguar. tar didn't even have --exclude [02:26] now they're all sane again [02:26] Mail.app is actually looking like a reasonable (eye-candy) replacement for mutt. [02:27] it does cool little things too, like when i make a new rule, and i choose a header on which to make that rule, it auto-fills it with the value from the email i'm looking at [02:27] and does what appears to be good threading finally [02:27] heh [02:28] neat that the unix apps are coming forward [02:28] so [02:28] how much is a cheap PB up there? [02:28] the hardware's way better too. i don't have to knock over my beer anymore trying to finagle my iPod's firewire into the back of the machine, because all the ports are along the sides. [02:28] kiko: are you trying to get the newest model? [02:28] nop [02:28] the cheapest model that is still decent [02:29] hm [02:29] that'd probably be the other pb i have. i'm not looking to sell that one though. not sure. [02:29] it can be 12-13i [02:29] k, you mean? :) [02:30] er, no [02:30] heh [02:30] i for inches :) [02:30] aye [02:30] there's only a 12, i guess [02:30] yeah. [02:30] there's a sony 13i wide-screen that runs at 1280 which rocks [02:30] you can get a brand new 12-inch for 2099 CAD [02:30] but since I need something powerpc.. [02:30] really? [02:31] http://store.apple.com/1-800-MY-APPLE/WebObjects/canadastore.woa/71303/wo/3F3HnbOzBIKq3mjqmqCHqCxYROp/0.0.9.1.0.6.21.1.1.1.1.0.0.1.0 [02:31] somehow i paid $50 less than that page advertises for my pb [02:32] "Free Shipping", heh. [02:33] heh [02:37] that's not too expensive, is it? [02:38] nope [02:38] no point getting used [02:38] hey, if used is half-price, there is :) [02:38] well, yeah :) [02:39] are there such good deals? [02:40] there might be, but none that i know of offhand, mainly because waiting until a good deal comes along was not really an option for me [02:40] (because having exactly one machine on which to work was hectic) [02:40] yeah. [02:41] BradB: drool [02:42] sounds awesome [02:42] heh heh [02:42] is the fs better in panther? [02:42] it's the same one [02:42] i'm benchmarking running z3 unit tests right now [02:42] what's the diff between hfs+ and ufs? [02:44] for a new Z3 context object, should I subclass anything other than (object)? [02:44] there are several: what you call the thing that you mount, the path separator, case sensitivity, etc. [02:45] "context object"? [02:45] context is just something; something is a fairly vague thing [02:45] you mean a content class? [02:47] -dmwaters(dmwaters@dmwaters-gentoo.staff.freenode)- {global notice} Hi all! We appologize for that uh interuption. a script was ran that accidently restarted several of the ircds. Blame alindeman :) Thank you for your patience, and thank you for using freenode! [02:48] yes, a content class [02:48] i've got a content class that works fine, except that I can't use set_schema [02:48] it doesn't work [02:48] but it works fine if i use set_attributes [02:48] it needs to implement a schema [02:48] or, maybe it doesn't [02:49] it does [02:49] what's the error? === kiko is now known as kiko-afk [02:52] forbidden attribute [02:52] 'sbizarre [02:52] are you sure the things you mention in set_schema are in the schema? [02:52] works just fine with set_attrbutes="x y z" [02:53] yes, as Attribute()'s [02:55] mm [02:56] http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Book/contentobject.html explains it in more detail. Maybe you need to inherit from IContained. [02:56] we probably want to be using set_schema consistently [02:59] but hm, SQLBase is ultimately just inheriting from SQLObject. [03:09] i think this is an egg-man bug [03:11] heh === BradB is now known as BradB|out [04:33] I'm trying to do that blasted zope3 tutorial again. I've got an import problem on the buddydemo. Any zope guys conversant with it? [05:30] Ok. figured it out. the programmer tutorial is wrong. It shouldn't go in src/buddydemo, it should go in lib/python/buddydemo === BradB|out is now known as BradB [05:31] jblack: sounds like you're using a release. perhaps it was assuming an svn checkout. [05:45] BradB: You know zope3? [05:45] I know how to do some things in Zope 3. [05:47] Possibly enough to tell me what went wrong in the programmer tutorial this time? [05:47] I'm getting a gripe in buddyemo/configure.zcml, line 6.0 "NameError: name 'zope' is not defined [05:48] I just did slides 11-20 [05:48] (and I'm more than happy to scp up the instance to your machine for you to look at [05:49] BradB: figured out a little bit of the zope3 widget machinery [05:49] sabdfl: Able to use things that inherit from object, hopefully. [05:49] (with set_schema) [05:50] jblack: it'd be easier if you just paste your buddydemo/configure.zcml at paste.husk.org [05:50] BradB: no, didn't get that right [05:51] jblack: I bought a new powerbook btw. It's shiny. [05:51] i do suspect a zope3 issue there [05:51] http://paste.husk.org/1848 [05:51] sabdfl: What things did you learn about widgets? [05:51] basically, how to subclass Text, and the TextAreaWidget, so that the bug edit form is a bit neater [05:52] it's a shitload of work for a very small bit of neater [05:52] ah, from the chapters in the Z3DG? [05:52] bradb: Yeah [05:52] but i suppose once it's done it's done [05:53] yep [05:53] i'm trying to figure out how we make the generated forms look as good as the handcrafted ones [05:53] if it can be done, then i'll buy into the autogenerated thing [05:54] sabdfl: I think it's very, very doable. Afterall, for 80-90% if the add/edit forms we haven't, there probably isn't a need for them to look really customized (uniformity and consistency are, afterall, Good Things)...it's just a matter of figuring out what visual knobs can be turned with CSS and the like. [05:54] s/we haven't/we have/ [05:55] same is probably true of the forms we haven't :-) [05:55] i've figured out the actual widget bit [05:55] heh [05:55] now need to figure out the wrapper [05:55] the bit that puts the summary etc there [05:55] the text [05:55] right now it uses the title [05:55] jblack: it's one of two problems. either your pythonpath isn't correct or you need to import that module specifically in zcml. [05:56] but the hand crafted fields look a lot better, present more info [05:56] jblack: (probably the latter) [05:56] i'm going to try to figure out the rest tomorrow [05:56] Yeah. Odds are that ubuntu has a sane importpath. [05:56] pardon. sane pythonpath. [05:56] sabdfl: sounds promising though [05:57] it would be odd that a zope instance doesn't import zope though, wouldn't it? [05:57] night all [05:57] night sabdfl [05:58] sleep well boss. [05:58] jblack: there are easy ways of testing this though [05:59] mm, no, scratch that (there are, but scratch that) [05:59] I haven't gotten the unit testing working yet either. [05:59] Ohhh, yes I have. [06:01] Though something still ain't right there. [06:01] >>> bud = Buddy('Bob', 'Smith') [06:01] >>> bud.name() [06:01] jblack: how are you starting z3? [06:02] I was trying bin/runzope [06:04] btw, before I added the interface stuff, I was able to add buddies in the web interface. [06:05] can you paste the whole traceback? i'm learning here too, because i've never seen an error like that, but it's almost surely something really straightforward, given enough context. [06:07] http://paste.husk.org/1849 [06:08] Merge to rocketfuel@canonical.com/launchpad--devel--0: a basic widget for bug summaries (patch-678) [06:11] jblack: for one, you've got a syntax error in the zcml [06:11] for ".interfaces.IBuddy" [06:12] I believe you, but that's a straight paste from the tutorial [06:13] through an = sign in there and see if that changes anything [06:13] after than, try commenting out that require and see what happens [06:13] s/than/that/ [06:13] http://paste.husk.org/1850 [06:15] (thats slide 16) [06:15] There's nothing in the name method. Maybe the slide cut it. [06:16] nope, it's an interface [06:16] but there's either a syntax error in that python code as well (indentation error), or a mix of tabs and spaces. [06:18] I did find the missing = in configure.zcml though [06:21] oh. found a missing import [06:21] and a missing import re, and it works. [06:23] Now if I could just figure out why it stopped listening on port 8081... [06:27] hehe [06:28] Thanks for the help bradb. I'm back on track [06:29] cool, no prob [06:37] WHoo! === BradB is now known as BradB|zzz === netjoined: irc.freenode.net -> sendak.freenode.net === ChanServ [ChanServ@services.] has joined #launchpad === mako [~mako@micha.hampshire.edu] has joined #launchpad === sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === spiv [~andrew@fuchsia.puzzling.org] has joined #launchpad === daf [daf@muse.19inch.net] has joined #launchpad === dilys [daf@muse.19inch.net] has joined #launchpad === elmo [~james@83.216.141.215] has joined #launchpad === SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad === lifeless [~robertc@dsl-69.8.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad === jblack [~jblack@static-209-158-45-74.scr.east.verizon.net] has joined #launchpad === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad === netjoined: irc.freenode.net -> sendak.freenode.net === ChanServ [ChanServ@services.] has joined #launchpad === mako [~mako@micha.hampshire.edu] has joined #launchpad === sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === spiv [~andrew@fuchsia.puzzling.org] has joined #launchpad === daf [daf@muse.19inch.net] has joined #launchpad === dilys [daf@muse.19inch.net] has joined #launchpad === elmo [~james@83.216.141.215] has joined #launchpad === SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad === lifeless [~robertc@dsl-69.8.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad === jblack [~jblack@static-209-158-45-74.scr.east.verizon.net] has joined #launchpad === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad === carlos_ [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad === carlos_ is now known as carlos === ddaa [~ddaa@nemesis.xlii.org] has joined #launchpad === BradB|zzz is now known as BradB === BradB [~bradb@modemcable165.196-131-66.mc.videotron.ca] has joined #launchpad [05:12] SteveA: around? === BradB is now known as BradB|out === carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad [09:01] hey sabdfl [09:01] hiya SteveA [09:02] well it's been an interesting tour of zope3 form autogeneration this weekend :-) [09:02] is it hot or not? [09:02] i'm trying to establish if i can get some of our autogenerated forms to looks as god as the hand-crafted ones [09:02] wel... [09:02] large amounts of effort for little return so far [09:02] skimpy docs, the usual [09:03] wanted to lob a few eggs in your direction but didn't want to disturb the w/e [09:03] when I used it on a project a while ago, I ended up nor using the standard "edit form" stuff, but using a custom variant on it. [09:03] seems that stub knows a bit about it and has been laying the foundations in malone [09:03] I haven't kept up with changes to it, though [09:04] you would be better placed than me to do custom variants on machinery that's a little outside my immediate ken :-) [09:04] anyhow, i'm slowly coming to grips with it [09:04] slowly [09:05] the thing I found was that is was very easy to waste a lot of time making a particular form work, if that form goes outside one of the assumptions behind the autogenerated form machinery. [09:05] if you notice these soon enough, and do them manually, it's okay [09:05] if you don't... lots of painful and non-obvious coding around things [09:06] well, limi has set the bar quite high in terms of the look we should expect from our forms [09:06] i think we are going to have to produce a set of custom field and widget classes [09:06] i want to hammer on this a while and then we can discuss a general system for the team [09:07] i am thinking at the moment that we might produce a mixin class for widget and field [09:07] because mainly i want to put the same decoration on any kind of field [09:07] but there are also potentially custom requirements for context-aware fields [09:07] not sure we'd need new fields, except where we've got a truely new kind of thing [09:08] I think pov have done a lot of work on these [09:08] certainly marius has been filing and fixing bugs in it recently [09:08] current fields allow for title, description, required [09:08] yes, found him on a couple of proposals related to this [09:09] which sounded rather sane [09:10] you have a good weekend? [09:10] not bad. more of a lazy weekend, catching up on sleep and generally hanging out [09:10] yours? [09:11] tried to sleep but had total insomnia [09:12] try more exercise? [09:13] then again, I find if I exercise too much, it stops me from sleeping [09:14] yes i think i'm the latter stage [09:14] too much to think about at the moment [09:14] ok, so i'm using the normal addform machinery [09:15] with a custom pt [09:16] there's this sort of useful-looking hook: [09:16]
[09:16]
[09:16] how do i pass information to that? [09:16] do you know about METAL ? [09:16] If not, I should explain just a little about that first. [09:17] we use two namespaces in page templates: tal: and metal: [09:17] the metal: is for "macro processing". The metal directives get processed first, and then the resulting template is treated as a whole for tal: expressions. [09:18] think of it like #includes. [09:18] yes [09:19] The div above defines a slot called "extra_info". You can fill it from your template with
[09:20] This is at the top of the pt: [09:20] metal:use-macro="context/@@malone_template/master" [09:20] where is that hook that you pasted? [09:21] about halfway into the page [09:21] in which page? [09:21] lib/canonical/launchpad/templates/default-addform.pt [09:22] i've actually copied it to bug-addform and started to use that [09:23] i'm adding some of the plone-style widget decoration [09:23] fieldset etc [09:25] also, i'll want to figure out this line: [09:25]
[09:25] where is widget_rows defined? [09:26] hey it's sunday don't boil too many eggs on my account [09:27] ok, i found widget_macros.pt [09:28] in lib/zope/app/form/browser [09:28] i'll want to customise that, how do i do that? === sabdfl can hear the hamster's wheel spinning [09:28] workrave [09:29] in the zcml directive for addforms, there's a 'template' attribute, and a 'default_template' attribute [09:33] the template is what i'm customising already [09:33] what's the default template? [09:33] oh, red-herring [09:34] :-) [09:35] as far as I can tell, the extra_info slot is for when you're using the standard zope template, and you want to be able to do certain customizations without coming up with a new template of your own. [09:35] can the view push data into the slots at all? [09:35] oh, so the standard rendering of this uses another template and fills that slot? [09:36] I think the way you're supposed to provide your own template for this is that you write a minmal template that uses macros from the default template [09:36] how about the second question, about customising widget_macros.pt [09:36] oh right [09:36] so, you don't end up copy-pasting the code from zope, but just including the bits you want [09:36] so instead of copying it [09:36] wish there were docs on this, though [09:37] just write a really small one that pushes in heading and extra info etc [09:37] ok, that's quite nice [09:37] because we can do a single master addform template for launchpad [09:37] yeah, I guess so. I think you'd need some way of specifying that you want to use macros from the standard add form [09:37] yeah, that would work [09:37] in fact, we'd need a StandardMacros object then [09:37] now, about the second questions [09:38] widget_macros [09:38] how do i override that to be something else? [09:38] that's what we did in zope3 -- rather than have to remember which template exactly has the macros you want, you have an object that collects macros from a bunch of useful "basic" template [09:38] s === SteveA looks at widget_macros.pt [09:39] i want to redefine widget_rows [09:39] in the configure.zcml of that package, I see that you can get the widget_macros.pt template as a view on anything, called widget_macros [09:40] well, there are two ways to do this [09:40] you can redefine the widget_macros view for the launchpad layer [09:41] most straightforward way is to make your own copy-paste-altered version of widget_macros.py [09:41] right, just copy it and customise it and make it available under a different name [09:41] er .pt [09:41] yes [09:41] but, make it available under the *same name* [09:41] but in the launchpad layer [09:41] o.....k.... [09:42] by using the launchpad layer, we're saying "we can override the defaults in zope in the context of the launchpad application" [09:42] rosetta and malone layers extend the launchpad layer [09:42] how do i register it for the launchpad layer? [09:43] for="*" [09:43] name="widget_macros" [09:43] layer="canonical.launchpad.layers/LaunchpadLayer" [09:43] permission="zope.Public" [09:43] template="widget_macros.pt" [09:43] /> [09:43] i'm going to put the registration into zcml/bug.zcml for the moment, because those are the add/edit forms i want to fix first [09:43] with the template in the correct place, of course [09:43] so, whatever is currently using widget_macros will get it as context/@@widget_macros [09:43] is there a more appropriate zcml file for this? [09:44] and, it will automatically get your version inside launchpad [09:44] launchpadlayer-stuff.zcml ? [09:44] launchpad-widgets.zcml ? launchpad-forms.zcml ? [09:44] the latter, I suppose [09:45] this is all about how we want forms to look in launchpad [09:46] let me get it right in the bug stuff, then we can move it [09:46] k [09:46] can i replace * with something more localised? [09:47] canonical.launchpad.layers/LaunchpadLayer [09:47] is the / intentional? [09:47] no, it is wrong [09:47] should be a . [09:47] you could replace * with IMaloneBugThing or whatever you're working on [09:47] if the change is meant only for that one thing [09:48] is it the interface of the context? [09:48] yes, exactly [09:48] or the container that has the addform? [09:48] I expect this will be looked up as context/@@widget_macros [09:48] oh, that could get a bit more complex [09:48] there's IAddings involved there -- views on views [09:48] erm -- maybe stick with "*" [09:49] I should go make food, and then watch donnie darko on dvd. [09:50] weird movie [09:52] picked up the dvd at the airport for three quid [09:52] as the director's cut was out for about 20 [09:53] and being heavily advertised === SteveA --> cooking [09:55] directors cut might be interesting [10:05] SteveA: can't seem to access my custom copy of the widget [10:05] it's not being used, the old one is [10:49] As a debugging measure, try declaring it not in the launchpad layer, but without a layer attribute, and declare it for zope.interface.Interface, not for * [10:50] that's a crappy way of getting it registered, but if it works, it shows that you're not doing anything wrong, and for some reason the layer isn't being used. [10:50] (it was too late at night to watch a full film after eating, so we've settled for an episode or two of futurama instead) [11:22] still around? [11:22] stevea: ^? [11:24] yeah, just about === SteveA pings sabdfl [11:26] yo [11:26] so i'm now crafting the actual template [11:26] the one which will fill the slots of the default_template [11:27] and i've no idea what that one's header should look like [11:27] [11:27] ? [11:27] should it refer explicitly to the launchpad-addform.pt? [11:27] or is that all handled by the machinery? [11:27] and here's where it gets interesting [11:27] the addform template itself is clearly referring to a master template [11:28] is launchpad-addform.pt registered as a view on anything? [11:28] so can these templates be layered in a stack? [11:28] yes, it works as the view on a bug add [11:28] i' now trying to generalise it [11:28] so that for new add forms we just make a tiny template [11:28] that has the appropriate document description, headings etc [11:28] provided each template is registered as a view on something, sure, you can use many of them using bits of each other [11:29] ok, so let's assume there are three of them [11:29] master [11:29] the general model is using a macro, which has slots in it [11:29] default-addform [11:29] table-addform [11:29] in the default-addform, when there is a fill-slot, that would fill a slot in the master? [11:30] and when there's a define-slot, that's something the table-addform can fill? [11:30] assuming default-addform has a use-macro refering to a macro of the master template [11:31] you're filling a slot of whatever macro you're inside of, in the code of the template the fill-slot is in [11:32] so for the table-addform do i need a use-macro? [11:33] or does the addform machinery automatically do that [11:33] given that it has default_template for the default-addform [11:34] from the code I saw, the default_template is what is used if you don't supply a "template" [11:35] erm that doesn't make sense to me [11:35] you don't need to supply a 'template' in your zcml [11:35] why have both "template" and "default_template" attributes [11:35] there is a default 'template' that is used instead [11:35] 'default_template' isn't meant to be used in zcml [11:35] ah. [11:35] it can be used if you subclass the class, I think [11:35] that's not what i understood previously [11:36] it seems as if this addform, which is copied from the zope dir, is designed to be used as an "intermediate" template [11:36] I'm still not sure I understand -- I only skimmed throught the code. [11:36] as i described above [11:36] in any event, say i want to refer to the template directly, from another template [11:36] how do i do that? [11:36] I suppose it would use the macros and slots of the master template [11:37] if you want to use macros from a template [11:37] then first you need to get to the template. usually, they are registered as views on an object. so, context/@@view_name [11:37] what would be the name? [11:38] for widget_macros.pt it was widget_macros [11:38] it is whatever it is registered in zcml as [11:38] hmm.. this is getting murky again [11:38] ok, here's what i understood [11:38] and what makes some sense [11:39] that it's pssible to define a general site-wide template [11:39] where you want to use a particular macro, you put metal:use-macro="context/@@view_name/macro_name" [11:39] and then a custom template will use that one [11:39] if you explicitly use the site-wide template's macros in your custom template, yes [11:40] the building blocks you have are metal:use-macro="context/@@view_name_of_template_with_macros/macro_name" [11:40] and filling slots in that macro inside the element you chose to use the macro from [11:40] usually, we suse the macro on the whole template (the html element) [11:41] and fill the "body" slot, (or "page" slot or "content" slot) and perhaps others [11:41] that's the most basic way to use macros [11:41] ok, this will take some fiddling [11:41] you can also use macros to include any parts of another template where you can 1. get at the template and 2. that template has defined appropriate macros around the parts of it you want to reuse elsewhere [11:41] do the attributes of the macro override the attributes of the element in the calling document? [11:42] you mean the element where you say "metal:use-macro" ? [11:42] yes [11:42] note that this isn't "calling" at all. it will become very confusing if you think of it like that. [11:42] it is "including" [11:42] ok, so they supplement them [11:42] you're building up a synthetic page template (that you'll never see) from parts of other templates plus your own [11:43] that whole template is then "executed" in terms of its tal: [11:43] in the element where you say "metal:use-macro", I think the whole element disappears [11:43] but, I may be mis-remembering [11:44] basically, the whole element disappears, except where you have slots inside it [11:44] yeah -- that must be so, because of how in the simple use of metal, you put use-macro in the html element of your template [11:44] que? [11:44] so basically, a use-macro in the html element wipes out the document? [11:44] that nukes your html element, and in fact your whole template, except where you have said "metal:fill-slot" [11:45] yeah [11:45] use-macro in an element says "I want what the other template says for this element. except where I fill its slots" [11:45] cant be [11:45] let me check [11:48] blow me down, seems true [11:48] can you have both fill-slot and define-slot elements inside a use-macro? [11:48] for layered templates? [11:52] yeah [11:52] it can get complex pretty quickly, though [11:52] especially as the exact "include" nature of macros is a bit subtle [11:55] yeah, this default-addform is fun [11:55] is has a use-macro in the html [11:55] then it fill-slot's the "main" slot [11:56] inside that, it has both define-macro ("formbody" and "addform" etc) and define-slot elements [11:56] maybe you can draw a "map" of it in dia? [11:56] might help with maintenance === SteveA -> bed [11:57] night [11:57] will try to write it up once i've got it working the way i want