Re: libseed-list GSoC 2010 Ideas
- From: Alexandre Mazari <alexandre mazari gmail com>
- To: Alan Knowles <alan akbkhome com>
- Cc: libseed-list gnome org, Tim Horton <libseed-list-bounces gnome org>
- Subject: Re: libseed-list GSoC 2010 Ideas
- Date: Tue, 6 Apr 2010 09:57:07 +0200
Hi,
Brian, you might be interested in SeedKit [0]. Instead of adding a DOM
tree over Gtk hierarchy, SeedKit allows the UI definition to be made
in vanilla HTML5/CSS3/JS with acces to lower level introspected
libraries and services.
JQuery can be used to acces DOM nodes as seen in the provided
examples. There you can bind them to DOM events, DBus calls and
GObject signals and methods.
The code is still young and will evolve feature- and quality-wise. And
contributions are welcome :)
I am thinking about a XSLT sheet to convert GtkBuilder files to HTML/
CSS/JS.
Widgets types would be bound to css classes and each object div would
have an id.
GtkBuilder declared events would be transformed to JQuery anonymous
function to be manually filled by the developer.
A system-wide CSS file would provide default layout and apearance (a
clearlook lookalike would make a great default).
Hope your interest is picked and have some improvement ideas and or
bug reports,
Regards,
Alexandre
Le 6 avr. 10 à 09:04, Alan Knowles a écrit :
Hi,
There has been a tiny bit of offline discussion about 'standard' or
'common' libraries,
jQuery (IMO) is not a very good starting place, for the API really,
it was designed to solve problems with DOM and browser JS. (eg.
getElementById() / forsaking readable code for tiny code due to low
bandwidth etc.)
That said, some of the object construction Methods in Prototype/
Jquery/extjs are quite handy and very applicable to desktop
applications
The result of some of the experiments so far are in here.
http://git.gnome.org/browse/introspection-doc-generator/tree/
Object.js - for prototype/jquery type class constructors.
xnew.js - for a very rough registry based system. - very
experimental. (not really used in that project AFAIR)
File.js - for an example of how creating a wrapper around GLib / Gio
file utilties might look.
The CSS features from what I gather are very Clutter dependent
(although i've not really looked at that).
Attempting to try that for Gtk is probably trying to design a square
peg for a round hole.
Scoping is also a huge difference between the Web an Seed/Gjs - the
imports system, means that you no longer need to kludge huge trees
to solve splattering the global namespace, it works a bit closer to
the python importing idea (eg. expose what you need in from a file)
There are few key things I think a common library could solve
A) adding better classic OO constructors to the language, and
registries.
B) adding features to Gtk or Core JS to make things easier to use.
C) providing simpler classes that use those API's (eg. like File, a
xmlHttpRequest wrapper...)
for A and C) this really just means making available code in
something like gnome-common-js so it can be used.
for B) - it probably involves adding methods to GObjects like
Gio.simple_read()
Documentation also has to work for all this. to make sure someone
can use them. I need to work out a way to integrate the 'extra
wrapper code' into the documentation for the introspection API's
still.
I'm still thinking that fixing introspection so that it could wrap
any library out there, rather than hand coding bindings has some
serious benefits for documentation, maintenance etc. - If the API is
too complex, then a 'simple' class like C should be done in JS.
I've done quite a few proof of concepts with introspection. It's
perfectly feasible, although I need to find a really good working
use-case example to demonstrate to the developers of introspection.
Anyway I should be around #seed and #introspection on gimpnet for
the rest of the week (asiapacific hours mostly), after the easter
holiday ends tommorow)
Regards
Alan
--- On 06/Apr/2010, Tim Horton wrote:
On Apr 5, 2010, at 22:27, Brian McKenna wrote:
Wow! Thanks for the fast response.
On 6 April 2010 11:45, Tim Horton <hortont424 gmail com> wrote:
On 2010.04.05, at 9:33 PM, Brian McKenna wrote:
Hi everyone,
I'm just sending in a few ideas I have for Google Summer of
Code. I'd
really appreciate any feedback!
My first idea is a jQuery-like library. The library would provide
wrappers around Gnome libraries (such as GTK, GLib/Gio, Clutter)
and
make it very simple to use CSS like selectors, make AJAX-like
requests, get values of GTK widgets, do simple animations (fade
and
property tweening), etc. The purpose is to just make it extremely
simple for web developers to make Gnome-based applications.
I'm not totally clear what this would look like, but it sounds
possibly interesting.
Possibly something like this:
$ = imports.dollar;
Gtk = imports.gi.Gtk;
Gtk.init(Seed.argv);
var window = new Gtk.Window({"title": "Test"});
$(window).quit(function(event) {
Gtk.main_quit();
});
var exit_button = new Gtk.Button({"label": "Exit"});
$(window).append(exit_button);
var quit_button = new Gtk.Button({"label": "Quit"});
$(window).append(quit_button);
$(window).children().click(function(event) {
print($(event.target).attr("label"));
$(window).quit();
});
Gtk.main();
Sorry for the strange example. The $ helper might have to be changed
if it was too confusing for jQuery developers. As you can see, I'm
trying to model it very similar to using jQuery on the web.
My second idea is to provide the HTML5 API in Seed. It'd be nice
to be
able to use Canvas, WebGL, Local Storage, Web Sockets, Drag and
Drop,
Web Workers and Web Media (the video and audio element API). The
purpose for this is similar to the first idea - I want to make
desktop
development familiar to web developers.
Johan Dahlin has done a little bit of work on this front by
implementing Canvas for GJS:
http://blogs.gnome.org/johan/2010/03/30/bridging-the-development-gap-between-desktop-and-web/
Seed's had canvas semi-implemented for a while:
http://git.gnome.org/browse/seed/tree/modules/canvas/seed-canvas.c
http://git.gnome.org/browse/seed/tree/modules/canvas/run-tests.js
I must have missed that module. Thanks.
The others would be interesting, too... though I think at least
*part* of the idea with Seed was to have very little platform of
its own, providing a simple scripting language that *just* wraps
the GNOME platform.
That's not to say it's a poor idea, but it's definitely something
that the various people using Seed now should discuss and try to
come to a consensus on, since Robb and I don't have a particular
roadmap at this point (obviously).
An honest question (I'm not trying to make an argument). If Seed is
just a wrapper, why was the Canvas module created (which is just
another wrapper for Cairo, right)? Is it just that the Canvas module
is a proof of concept?
I actually had written a part about how we had ended up trending
away from that original ideal, but I deleted it before I sent the
email. So that's what I have to say to that! Over time it was hard
to keep that alive...
I've seen that GNOME Shell is using CSS and JavaScript (partly
because
of the popularity of JavaScript web developers). Do you think these
projects are more suited to GJS, then? I have asked here because I
have a bit more experience with Seed and so far have preferred using
it.
Maybe, I don't know. I know very little about GJS or their plans or
the project at all.
What do you think? What are the chances of these projects being
chosen? Would this project or Summer of Code be more suited to
GJS?
Thanks for your help,
Brian McKenna
_______________________________________________
libseed-list mailing list
libseed-list gnome org
http://mail.gnome.org/mailman/listinfo/libseed-list
_______________________________________________
libseed-list mailing list
libseed-list gnome org
http://mail.gnome.org/mailman/listinfo/libseed-list
_______________________________________________
libseed-list mailing list
libseed-list gnome org
http://mail.gnome.org/mailman/listinfo/libseed-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]