This is sortof a question (or a few) I've had in mind now and again. First off, what exactly is a wharf? I'm assuming a box is a floating window to which you can attach other modules' windows as child windows. Is a wharf the same? I've heard of modules made "for wharfs".
Given that bit, which is secondary to this bit, I was under the impression that Litestep was supposed to be a minimal program that loads and, on a very basic level, manages the interactions between any set of modules. It is the intent of the developers that none of the modules are "part of" litestep, they are just things that can be used. This philosophy creates a wide variety of options for users. Now, given that, when I see boxes and wharfs I get confused. It seems to me that there is some "preferential treatment" given to these modules. If you make one wharf, and someone makes a shortcut that attaches to that type, someone using a different wharf has to use a different shortcut module. Same with boxes. Unless, as I suspect, there is some sort of general way boxes and wharfs operate such that any hookable module can hook onto any wharf or box. Or is it somewhere in between?
There is a big difference between boxes and wharfs. If you look at the front page of the site you will find a "Wharf Theme". The LiteStep Wharf is very similar to the AfterStep wharf or the Blackbox Slit. You can attach modules to it, that are written for it, and provide shortcuts to applications and such. A Box, or LSBox, is an area that most modules can be hooked to and dragged about. Wharfs are 64x64 squares where LSBoxes can be of any shape and size, shape done via MagicPink. A good example of a box theme would be 21 by darkfyre. The wharf has been a "dead" module for some time now because of its lack of flexability and overall classic form.
Ok, given your explanation there I thought of a given theme I had downloaded, and sure enough it used a wharf. And all this time I thought the theme makers were just showing/hiding an ungodly ammount of shortcuts. It seems almost like a menu to me. It seems rather useful, why did they get rid of it? It could have been expanded to allow for different sizes, etc. Its like an easy way to make a bunch of shortcuts. So modules had to be written for it specifically? Why can't they allow for "hooks"?
Also, the question in my second paragraph still stands.
I have always liked the wharf but people did leave it because it was big and clunky. It takes a lot of guts to say that you are willing to have a 64 pixel wide bar somewhere. Most themes now-a-days are around 20...so 3 times that is def. out of the question.
The wharf never was a "hookable" module. Applets needed to be written to exist specifically in a 64x64 square and many were. There are probably over 100 modules that were written to exist in a wharf alone. We had remote controls and tvs and everything you could ever want.
And your second question is still mute because a wharf can't hook anything. You are grouping Wharfs and LSBoxes into a group that doesn't exist. They are two completely different modules with completely different intents.
well... you can load wharf modules into lsboxes now, so thats one of the main reasons wharf isnt used anymore - lsbox is so much more versatile.
Well, based on my second question, I am glad to know that wharfs have given way to the LSBox, because based on your explanation wharfs caused too much module interdependence.
So about Boxes then: would you say that they encourage module interdependence? I'm waiting for someone to affirm to me that the hook command isn't just a Box thing. I think I saw a module hook onto a lable before. Is hooking something that the box module supplies, or something that the modules that hook to said box supply?
both... the modules have to provide a hook in the form of a bang, like !labellsboxhook. then, in your .box files that define individual boxes, you have a line *modulehook !labellsboxhook, which hooks the module into the lsbox. also, you can put *wharfmodule $modulesdir$module.dll to put a wharf module in the box... this stuff is all lsbox specific, there arent any other modules that allow this as far as i know (skinbox maybe?)
The !hook is pretty much lsbox specific, though other modules (containers) are free to implement it as well. It doesn't really add any dependency, all modules with !hook work fine without lsbox, you just have a few unused bytes for the !bang implementation.
So I guess my only question is, if someone were to make their own box module, would the existing hook commands in the modules out there work on it, or are they designed to only work with LSBox? If the latter is true, I see that as a bit of module interdependence. I suppose I'm not in the position to be judgemental about this, I didn't program all of this, I just want to get a straight understanding.
The lsbox hook functions can be used to hook modules into skinboxes, and I don't think I even had that in mind when I wrote it. (despite the "box" in the name, it was never intended to work like lsbox)