From: Brian M. <bri...@gm...> - 2006-02-09 15:40:56
|
For those seeing the recent commits mentioning "gadcon", here's a quick overview of what this is and why it exists. Gadcon stands for Gadget Controller, and is a replacement for the current Gadman (Gadget Manager). First a bit of clarification on terminology. Module - a 'plugin' or bit of code that is loaded into E at run time. Gadget - a self contained "applet" / "desklet" / "widget" / whatever else you want to call it. We generally want to draw directly onto one of E's internal canvases, so Gadgets are created from inside Modules. With Gadman, a module had to find all of the various canvases it wanted to draw on to, create its objects and then create a Gadman_Client. The Gadman_Client was simply a box that could be dragged around and resized when in 'Edit Mode'. The module would have to add a callback for changes in size/stacking/etc of the Gadman_Client, and then updates its objects as required. All of this resulted in large duplication of messy complicated code. I did a first pass attempt at cleaning this up by creating E_Gadget, which basically just wrapped up the duplicated code in a central location, but the overall structure was the same. Enter Gadcon. A module that draws gadgets simply registers a set of create and delete functions by name. The create function then creates a Gadcon_Client, which contains a SINGLE evas object. This object is then automatically moved / resized by the gadcon. This single object may of course be a smart object (like an edje object that swallows several other objects). This allows various containers with differing layout styles to be written, without the gadget itself having to know about them. E.g. the current free layout on the desktop, or a 'Panel' layout mode (fixed height gadgets that don't overlap and flip positions when moved past eachother, etc). These containers can also be embedded into other locations (such as window borders or other gadgets, etc). Once the base gadcon code is in place, all the current gadget modules will need to be ported to use it. However, gadgets will be much simpler to create, cleaner and easier to maintain, while automatically inheriting added layout functionality at the gadcon level. -- rephorm |