Overview
Features
Download
Documentation
Community
Add-Ons & Services
The POCO C++ Libraries Blog

PocoWebWidgets – We need your help!

Filed under: News by peter at 13:18

Hi all,
A first draft of PocoWebWidgets was submitted to SVN. PocoWebWidgets is a GUI library for Web based applications and this very first version features the following GUI elements:

  • Buttons, ImageButtons, RadioButtons
  • CheckBoxes, ComboBoxes
  • Tables
  • TextArea, TextFields, PwdFields
  • Image
  • HidablePanel
  • ListView
  • To align widgets one can use a Stackpanel, a FlowPanel or a Table.

    Each widget offers a list of events to which JavaScript callbacks and standard C++ callbacks can be added. Widgets are creatable from XML files. Detailed information can be found in the doc folder.

    PocoWebWidgets is not finished. We need the help of the open-source community – your help – to let it evolve into a complete and beautiful library. A list of the open points can be found here.

    If you feel you can help, don’t hesitate! PocoWebWidgets needs your input!

    24 Comments »
    1. Will the interface to the handler be ‘push’ driven with a buffer to receive responses, or directly integrated into the web framework?

      I’d really urge the former so this can be used in a back-end via messaging middleware or delegation interfaces like CGI, SCGI, FastCGI and so on, rather than being bound onto a socket (and with a thread bound to it too).

      Comment by James Mansion on July 4, 2007, 11:19

    2. Sounds pretty
      But where is it?

      Comment by Lexa on July 7, 2007, 00:35

    3. Getting STL errors when trying to compile with gcc 3.4.5 :(

      Comment by Lexa on July 7, 2007, 13:33

    4. Is theer any intention to abstract existing web rendering mechanisms, so that the rendering and browser side events are handled by eg dojo or qooxdoo or whatever? Dojo seems to have a reasonable license.

      Comment by James Mansion on July 10, 2007, 17:52

    5. Abstraction of existing Ajax frameworks was the approach that I thought would not only make sense but probably less expensive to implement in Poco. I am sure Poco developers are equal to the task but developing and supporting a wide range of web widgets will be a huge task.
      Poco would be better off staying firmly on the backend. PocoServlets is a very good start.
      Now ddd parsers for JSON, YAML ( we already have XML ) and Poco is almost ready for the web.

      my 0.2 cents.

      Comment by Paschal on July 10, 2007, 20:07

    6. JSON is definitely planned (based on DynamicAny). Also, I’d like to move to a JavaScript framework like Prototype/Scriptaculous. Input is definitely welcome here.

      Comment by guenter on July 11, 2007, 23:20

    7. > Also, I’d like to move to a JavaScript framework

      Perhaps given where Poco starts, JavaScript could be skipped and just go for JavaFX. After all, on C++ Wt ‘does’ plain Ajax. Shame about the license though.
      http://www.webtoolkit.eu.

      Comment by James Mansion on July 12, 2007, 17:44

    8. Clearly, the GUI is the dilemma de jour. There is a good article in recent issue of SD Times titled “Is the Browser singularly Capable of Everything?”.
      Not related to the topic, but I have also noticed C++ being mentioned more in recent issues. The latest one even has Stroustrup’s photo on the front page.

      Comment by alex on July 13, 2007, 03:52

    9. Today, I have finally found some time to lay my hands on the WebWidgets. First of all, let me say that I think the basic approach is sound – integrated support for both client and server event handlers is a proper way to go.

      On the other side, I’d agree with Paschal that supporting a full-blown widget set is definitely a significant undertaking. What may be a smart way to go is hook up with an established JS GUI rendering framework. The best and most complete I was able to find is Qooxdoo. From my experience (I’ve done a few pilot screens with it some time ago), it has all one may wish for when developing a web GUI app. The downside is that it may be a bit too heavy for constrained embedded environments (I’ve experienced some performance issues in some widget combinations, but those may have been fixed by now).
      Anyway, code is worth thousand words, so here’s a small snippet:

      var d = qx.ui.core.ClientDocument.getInstance();
      function buttonExecute() { this.debug("Executed: " + this.getLabel()); };

      var btn1 = new qx.ui.form.Button("Button No #1");
      with(btn1)
      {
      setTop(48);
      setLeft(20);
      addEventListener("execute", buttonExecute);
      };

      d.add(btn1);

      Licensing seems reasonable (LGPL/EPL – from what I understand, use in conjunction with both open and closed licensed products is allowed) And, like with Poco, there is a commercial company behind it.

      Anyway, thanks AppInf for another piece of good code. And for the folks reading this blog: contributors are needed! Please consider contributing to Poco effort in any capacity.

      Comment by alex on July 13, 2007, 22:49

    10. This just in: while playing with Apollo (AIR), I discovered ExtJS – http://extjs.com . Quite impressive javascript framework as well.

      Comment by alex on July 20, 2007, 22:58

    11. There is also Yahoo! UI Library (YUI)http://developer.yahoo.com/yui/

      It does not look fancy but with a BSD license
      (http://developer.yahoo.com/yui/license.html),
      actively developed and supported by a large company can’t hurt.

      Comment by Paschal on July 21, 2007, 19:53

    12. As of recently, Ext JS allows a modular build with selection of the underlying base library. So, one can build a lib that contains only needed components (e.g., if you are space constrained and don’t care about drag’n’drop, you can leave it out). The underlying base lib choices are: YahooUI, jQuery, Prototype/Scriptaculous

      Comment by alex on July 23, 2007, 15:50

    13. Yes, extJS really looks nice.
      Basically, if we provide a JS file that allows for easy server side callbacks…

      Comment by peter on July 23, 2007, 16:09

    14. I completely agree, ext looks the most impressive. Amazing! I never knew one can do all this in JavaScript.
      The license however looks vague in places. I don’t know how LGPL applies to programs written in a scripting language.

      Comment by paschal on July 23, 2007, 18:54

    15. It is my understanding that LGPL is some sort of compromise between BSD and GPL – you can use code free of charge in any way and for any purpose as long as you are only using it (i.e. “linking” with it – that’s why ‘L’ originally stood for “Library”. If you modify the LGPL-ed code, then you have the obligation to give the modifications back to community.
      As for the scripting, if you would say take ExtJS, add your code and distribute the whole thing obfuscated, you’d be violating the license.
      At any rate, I do not see obstacles for ExtJS being used in conjunction with POCO. But, to know for sure, I guess we’d need an army of lawyers to think about it at $500/hr rate ;-).

      Comment by alex on July 23, 2007, 22:29

    16. One more thing that occurred to me – shouldn’t WebWidgets be in sandbox SVN rather than in the main trunk?

      Not that it matters that much, but it may confuse people implicitly indicating production readiness of the library.

      Comment by alex on July 24, 2007, 19:10

    17. Just looked at ExtJS, and it really looks nice. Exactly what I have been looking for. License seems to be fine, too.

      Comment by guenter on August 3, 2007, 14:20

    18. Now that Guenter has signed on the design that piggy-backs on existing Ajax frameworks, Ext JS in particular, what happens next?

      Comment by paschal on August 7, 2007, 02:03

    19. Paschal,

      The original post says it all:

      “If you feel you can help, don’t hesitate! PocoWebWidgets needs your input!”

      Comment by alex on August 8, 2007, 20:18

    20. Alex,
      You are over estimating my abilities. Believe me, you don’t want my code in Poco. You won’t be happy…

      Comment by paschal on August 8, 2007, 22:52

    21. There are tasks for every level of skill. For example, what I am currently doing is enabling Data to deal with Unicode. It’s not a rocket science, just a lot of manual work – every ODBC call that traffics in strings has to be wrapped in two versions – Unicode and ANSI. There’s abundance of examples throughout POCO on how to do it. Prior to doing this, since I do not deal with Unicode, I even didn’t know in detail what Unicode is. I had a remote idea, that’s all. So, I’ve read few docs, figured out what’s all that UTF8/UTF-16 mess about, studied existing code and now I know something. There’s no rocket science in any of this. It’s all just hard work and commitment.

      I realize people have lives and contributing is definitely a time consuming activity. We are just hoping to get more people step up and speed it a bit – there are many things we’d like to see in POCO and see it soon, Web GUI being one of them. But, given the current workforce pool, things can only move as fast as they can.

      Comment by alex on August 9, 2007, 15:02

    22. I have moved WebWidgets into the Sandbox, where it belongs ;-)

      Comment by guenter on August 11, 2007, 16:13

    23. The following project is related and might be of interest: http://ddj.com/cpp/206401952

      Comment by Boris on February 13, 2008, 02:45

    24. One thing I think we could learn from it is support for scenarios when Javascript is not available. May prove useful to keep that mode in WebWidgets.

      Alex

      Comment by alex on February 13, 2008, 12:32

    RSS RSS feed for comments on this post. TrackBack URI

    Leave a comment