#1. Swallowed objects need to communicate with its parent Edje.Object In EDC syntax, there are several useful features to provide flexible way to construct edje object. For example, for part type "GROUP", edje can send signal or make an alias name for group's sub part. However, group part is a fixed one that should be defined before compile, it is not changeable at runtime like swallow part.
I don't know the history or design exactly, but I assume that communication between swallowed object and parent edje object is not implemented because swallowed part can accept any evas object which is not edje object. However, we can check swallowed object class type with eo_isa(obj, EDJE_OBJECT_CLASS), so allowing swallowed object to communicate with parent edje object is not dangerous. Moreover, this communication should be allowed for Elm.Layout also. Elm.Layout is a wrapper of Edje.Object, but it doesn't inherits from Edje.Object, so many useful edje features don't work for it. I think that it seems good that when swallowed object's class is not EDJE_OBJECT_CLASS, edje checks "key" data or something to get eo id of Edje.Object. (like internal Edje.Object of Elm.Layout) #2. Seperate EDC for customizable part of Elementary Widgets As a matter of fact, this idea comes from customizing Elementary widget. I tried making a dropdown menu with hoversel. I wanted hoversel to have a fixed size, so swallowed it in layout's swallow part which has min size. Then I found that hoversel's items' text are aligned to the left, but hoversel's text is center-aligned, so it seems not arranged well. I just wanted change alignment of hoversel text, but I should write whole EDC for hoversel. It's too wasteful, and will become very very Big obstacle for novice developers. What about splitting default theme into main EDC and customizable parts EDC? For example, Elm.Button can have EDCs like the next: "elm/button/base/default"; "elm/button/bg/default"; "elm/button/label/default"; "elm/button/label/default" group has only one text part to define button's label area. I made a prototype and succeed in making a various buttons with simple EDC groups. (text min size, ellipsis, alignment, etc) If there is a simple way to set the string which indicates Elm.Button's label group and Elementary makes a layout with that group and swallowed label group automatically, it will not a hard work, but give big flexibility to developers. (Making layout, Setting edje group, Swallowing object ... or something should be automated, or it will cause another complains about difficulty of EFL.) However, to implement this, #1 feature should be made first. Because label group is a swallowed object of Elm.Button's edje, so we should pass elm_layout_text_set() to internal swallowed label group. (alias can be used) Also signals should be passed, because text part of label group changes its state by button's signal.) #3. Separate Elementary widgets' EDC into Function part and View Part This idea can be connected to #2 or be independent. Elementary widgets' edc files communicate with C code too much. (by sending message, emitting signal etc.). At this moment, it's impossible to modify widget's view without writing own EDC, but developers who want customize EDC should know C code totally. (When, which signal is emitted for which purpose blah blah....) This is a conceptual idea, but if view parts can be divided from function parts, developers can read edc more intuitively, and modify it easily. #4. Make (almost) all Elm.Widget inherits from Elm.Layout This idea is a little radical, why don't we make almost all widget inherits from Elm.Layout. (I used "almost" because I don't know elementary completely.) For example, we can use edje box or table for Elm.Box or Elm.Table. The advantage of doing this is that we can provide common way to set background image or color even for box or table. I think that if box or table keep their behavior same but change its internal object to edje object, they will not break ABI. #5. Edje Externals? I found edje externals not long ago. In many cases, I can make scalable and well arranged beautiful layouts easily with edje externals of elementary. I have thought that EDC is difficult for novice EFL developers, and we should allow more things with C code. Of course, that way is also necessary, but I have studied other frameworks, but they also have their own way to build their layout. (Qt which has good impression among developers has QML syntax, but it is similar to our LazEDC. I don't know the exact history but if QML comes from QEdje, their similarity is reasonable.) By improving external, and making an introduction level of using EDC (I think #2 idea can be this one, firstly developers try making simple EDC group for button label only, but finally they will be able to make a whole EDC for one widget.), we can change the paradigm of developing application with EFL. I don't know who will read this from the beginning to the end. lol Thank you for your time to read this long email. Best regards, conr2d ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel