Re: Perl Gtk3 Tutorial
by zentara (Archbishop) on Aug 31, 2012 at 15:59 UTC
|
Your code examples look nice to my eyes. You might want to post this on the gtk-perl maillist as other people are also working on tutorials and examples for Gtk3.Before anyone gets too excited, Perl/Gtk3 is far from ready for use. The automatic documentaion generation of Gtk2, is no longer there. So there are NO docs for Perl. How are you going to expect people to work on something with no docs?
From Torsten Schoenfeld, the Perl Gtk3 leader:
There's indeed no Perl-specific documentation yet, and I'm not inclined
to write it. All the necessary information is available on
<http://developer.gnome.org/gtk3/stable/> and in the file
"<prefix>/share/gir-1.0/Gtk-3.0.gir". A nice little project might be to
write a viewer for all the information in the *.gir files (which include
the actual documentation that ends up on developer.gnome.org). It could
use Perl-specific syntax so people don't have to do the translation in
their head.
I definitely do not consider Gtk3 "finished" yet. We no doubt still
miss quite a few overrides, and there are one or two low-level problems
left.
You'd have to add Perl support. From the looks of it, you'd have to
extend
<http://git.gnome.org/browse/gobject-introspection/tree/giscanner/mallardwriter.py>
to include a MallardFormatterPerl class and add mallard-Perl-*.tmpl
files. You could most likely borrow heavily from the existing Python stuff.
> Does this mean for Perl, we would have to make an xml
> parser, and convert Gtk-3.0.gir to a hash, then make a viewer
> for it?
That would be another option. Note that you don't have to write an XML
parser yourself; there are lots on CPAN.
| [reply] [Watch: Dir/Any] |
|
| [reply] [Watch: Dir/Any] |
|
| [reply] [Watch: Dir/Any] |
|
By the way there never was any real Gtk2 perl documentation, either. I've had to extrapolate from the C docs and books...
| [reply] [Watch: Dir/Any] |
|
| [reply] [Watch: Dir/Any] |
|
|
Re: Perl Gtk3 Tutorial
by Anonymous Monk on Sep 10, 2012 at 21:16 UTC
|
I have previous Gtk2.pm experience, and skimmed through your tutorial. It actually looks exactly like Gtk2 except perhaps for a few new widgets.
The code examples have perhaps a bit too much boilerplate; I'd remove use diagnostics and use feature ':5.14' when not needed (you appear to be using only say anyway so use 5.010; should work as well.) Maybe even remove the ~6 lines you use for window creation from the later examples in the document (of course, they should stay intact in the .pl files).
I'd perhaps visualise how packing with containers works a bit more thoroughly early on. (Such as drawing the containers' outlines and variable names over the UI.) It's one of the most important points to understand about Gtk. (I notice you've got a pack-style visualisation later on in the document; that one's at a good spot.)
I have a little bit of an issue with how you use the same callback to do three different things depending on $userdata in examples 5 and 6a, but I'll let that slide since it's not a bad way to demonstrate the use of that variable.
You are missing one important example about $userdata: How to pass multiple values. (either pass an arrayref or use a closure/anon sub to wrap around it)
The progress bar example seems to be missing how to stop it. (returning FALSE from the idle callback, or deleting the callback) (not to mention that proper utilisation of a progress bar is quite a bit more difficult. perhaps a note somewhere that your callbacks shouldn't take much time or the UI will freeze?)
There's one more thing I'd like to see, but it may not be for the level of Perl user you aim your tutorial for. You keep all the UI variables as global. Let's take example 6d. Instead of sub update accessing the global variable $label to do its thing. It would be nicer if you passed $label as an argument to your function. This allows you to compartmentalise your UI code and let variables you don't use fall out of scope. (I generally set up the whole UI in a single sub.)
| [reply] [Watch: Dir/Any] [d/l] [select] |
|
Thanks, some helpful comments and I will inlcude them.
Gtk3 is very like gtk2, but my experience is that you can rarely just change gtk2 to gtk3 and expect it to work. Small changes that are minor issues for veteran coders become complete major roadblocks for beginners.
The tutorial was really aimed at beginners, particularly my 15 year old son and his friends. I included "use diagnostics" to give new users some more feedback, although I often find it more verbose than helpful myself.
I am debating about whether to include complete programs in tutorial. On the downside it makes it repetitive and excessively long; on the plus side everything is in one place. I think at this stage I will continue getting the examples written and base text down and ponder the formatting a little longer.
I will include an example of passing an array ref back as $userdata and include examples avoiding using globals when not necessary.
| [reply] [Watch: Dir/Any] |
|
I am debating about whether to include complete programs in tutorial. At the very least include them at the end, made from the exact code from tutorial, and make sure they run, and provide Devel::VersionDump output in a =head1 PREREQUISITES section as an example of a configuration know to work
Its frustrating to try tutorials, and when you piece the code together, then find the author omitted something crucial or made a typo -- esp for beginners
| [reply] [Watch: Dir/Any] [d/l] |
Re: Perl Gtk3 Tutorial
by gatmaster (Initiate) on Mar 04, 2013 at 01:24 UTC
|
Can perl-Gtk3 use appmenu?
I'm not sure that it is possible. If it is, then please include an example in your tutorial - which is the best documentation that I found. I have been perusing Gtk3.pm, but didn't find anything that looked like appmenu.
I'm appreciative of your examples! | [reply] [Watch: Dir/Any] |