Saul,

Just a couple of quick additional comments on your feedback:

I would like to refer you to
http://docs.gimp.org/2.8/en/gimp-using-script-fu-tutorial-identifier.htmland
the examples in sections 3.2.1 and 3.2.6 with respect to your
stylistic
comments #2 and #4 about parenthesis placement.  The coding style in these
sections looks more like mine.

You made a comment about the script-fu-register block "... For this reason
it has been decided that this description should be limited to a single
line of text[2]. ..." . The site
http://www.gimp.org/tutorials/Basic_Scheme/section 5 would have been a
much more effective place to reflect that
decision.

I did try again and was able to get the web site you mentioned to come up
and found a long 7 year old discussion thread about blurbs.  The thing is,
no one would think to read through this to see if a decision or standard
was ever reached.  If the decision is important enough to matter, it needs
to be documented on a web site that people are likely to find based on
getting there with a search engine.

Thanks,

Stephen



On Tue, Feb 25, 2014 at 5:40 AM, Saul Goode <s...@crazyauntgail.com> wrote:

> On Mon, Feb 24, 2014 at 9:36 PM, Pat David <patdavid gmail com> wrote:
> Could someone with a better grasp of the material chime in to help iron
> this out so that we can possibly include it as either a tutorial or wiki
> material?
> >
>
> I should like to offer some comments on the Script-fu material presented
> in the AutomatedJpgToXcf tutorial on wgo[1].
>
>
> The first requirement ("The script needs to be available and run when
> there is no image open" is only half correct. While it is true that the
> script needs to be available when no image is open, there is no need -- or
> benefit -- to prevent the script from running when an image is open.
>
>
> The script could be simplified by using the Script-fu constant
> DIR-SEPARATOR when constructing the pathnames. There is no need to
> determine the host operating system.
>
> The script uses 'file-glob' to build a list of the names of pre-existing
> files in the target directory, then checks whether the filename of the file
> being saved is in that list before saving. Since GIMP 2.4 there has been a
> 'file-exists?' procedure available that obviates the need for this code.
>
> With regard to the description supplied in the 'script-fu-register' block,
>  while it is true that this description appears in the Procedural DataBase
> browser, more importantly it appears in the status line and infobox popup
> when the mouse is hovered over the menu command. For this reason it has
> been decided that this description should be limited to a single line of
> text[2]. By convention, this text should describe what the command will do
> when executed ("Copy all JPEG files in a directory as XCF files").
>
> The remainder of my critique addresses the issue of stylistic choices and
> some areas where the example script deviates from conventional Scheme
> programming style.
>
> 1) Boolean procedures and variables should end with a question mark (e.g.,
> "linux?", not "isLinux").
>
>
> 2) As a general rule, white spaces should not appear after an open
> parethesis or before a closing one.
>
>
> 3) The first part of a compound expression should rarely be followed by a
> newline; when it is, the remainder of the expression should be indented
> from the start of that compound expression.
>
>   For example:
>     (if (zero? (length string))
>   or:
>     (if (zero?
>           (length string))
>
>   but not:
>     (if (zero?
>       (length string))
>
>
> 4) The closing parenthesis of a multi-line expression should appear either
> on the same line as the last subexpression or nested to the same level as
> the subexpressions. It should never appear directly beneath the opening
> parenthesis of the expression.
>
>
>   For example:
>     (begin
>       (display "Hello, world")
>       (newline))
>   or:
>
>     (begin
>       (display "Hello, world")
>       (newline)
>       )
>   not:
>
>     (begin
>       (display "Hello, world")
>       (newline)
>     )
>
> 5) The convention in Scheme is to use hyphens to separate words within the
> names of constants and variables, as opposed to CamelCase or the use of
> under_scores. This practice is re-enforced in Script-fu by virtue of all
> Script-fu constants and PDB procedures following this naming convention
> (despite the actual names in the database employing underscores).
>
>
>
> While all of these points might to some degree be considered mere
> stylistic preferences, following the idiomatic conventions of a particular
> programming language makes the program easier to read and understand. While
> some of the scripts that ship with GIMP may deviate from some of these
> conventions, official GIMP tutorials should avoid making the same mistake.
> To quote Kernighan and Pike, "The purpose of style is to make the code
> easy to read for yourself and others, and good style is crucial to good
> programming."
>
> I apologize if this all seems overly negative and critical. It just seems
> to me that in order to address a lack of good documentation about scripting
> in GIMP, it is necessary for the documentation that is provided itself be
> of a high caliber.
>
>
>
> Finally, I am inclosing my own version of the same procedure (I omitted
> the registration block), incorporating some of the above commentary:
>
> (define (script-fu-example-jpg-to-xcf source-directory target-directory)
>   (let ((pattern (string-append source-directory
>                                 DIR-SEPARATOR
>                                 "*.[jJ][pP][gG]" )))
>     (let loop ((source-files (cadr (file-glob pattern 1))))
>       (unless (null? source-files)
>         (let* ((source-name (car source-files))
>                (basename (car (last (strbreakup source-name
> DIR-SEPARATOR))))
>                (basename-without-extension
>                  (unbreakupstr (butlast (strbreakup basename "."))
>                                "." ))
>                (target-name (string-append target-directory
>                                            DIR-SEPARATOR
>                                            basename-without-extension
>                                            ".xcf")) )
>           (unless (file-exists? target-name)
>             (let ((image (catch #f (car (file-jpeg-load RUN-NONINTERACTIVE
>                                                         source-name
>                                                         source-name )))))
>               (if image
>                 (begin
>                   (gimp-xcf-save RUN-NONINTERACTIVE image -1 target-name
> target-name)
>                   (gimp-image-delete image) ))))
>           (loop (cdr source-files))))))
>
>
>
>
> [1] http://www.gimp.org/tutorials/AutomatedJpgToXcf/
>
> [2]
> http://www.gimpusers.com/forums/gimp-developer/5624-script-fu-procedure-blurb-review
>
> _______________________________________________
> gimp-web-list mailing list
> gimp-web-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gimp-web-list
>



-- 
Stephen Kiel
26602 Strafford
Mission Viejo, CA 92692
*Mobile/SMS (949) 702-1993*
Home (949) 367-2915
snick.k...@gmail.com
http://stephenkiel.blogspot.com/
_______________________________________________
gimp-web-list mailing list
gimp-web-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gimp-web-list

Reply via email to