- Review handling of brushes. The non-deprecated set and get calls only take one parameter and not a list. - Update the autogen.sh script based on the newer version in GIMP. - Update the Tiny-Fu web page to mention the translation files are incomplete since the intltool-update script doesn't recognize file names which end in .sct as ones containing Scheme code. - Is tiny-fu-util-image-resize-from-layer still needed or can the built-in function 'Fit Canvas to Layers' be used instead? In tiny-fu-scripts.c - Check number of items in list for SF_ADJUSTMENT type - Check number of items in list for SF_SELECT type Replacing Script-Fu with Tiny-Fu: - Add something to autogen.sh(? or at least TF) to make it easier for TF to be reconfigured so that it steals the namespace of Script-Fu. Use --enable-script-fu-namespace? - Pull Script-Fu out of the GIMP source tree. Update Script-Fu to build as a standalone plug-in. Use Tiny-Fu as a template for this. * Sven doesn't seem to want Script-Fu as a separate module Building of Script-Fu is now optional. - Update Tiny-Fu to use the Script-Fu namespace. - Fix up the Tiny-Fu scripts to register in the right menu locations. Bugs: - Script doesn't abort when encountering an uncaught script error. Found problem in fire-logo when calling gimp-layer-resize-to-image-size on a layer that had not been added to an image. - circuit.scm doesn't work right when separate layer is turned off. The white lines are drawn with a black background which obscures the original layer. Create circuit paths on separate layer, remove the background, then merge the original layer with the one containing the pathways. Compatability errors with Script-Fu: - Image/Utils/Set Selection gives error while executing Not part of standard Script-Fu collection of scripts. - There are a number of string and substring routines in SIOD for which there is no matching compatability define in Tiny-Fu. ToDo (for CVS GIMP after branching Tiny-Fu): - Test Tiny-Fu batch mode - Test Tiny-Fu server mode - Add test scripts for server mode to CVS - Add SF-RADIO parameter type to register block Comments from joao on #gimp: It is really simple in Python. No more than a few gtk calls - all of which have C equivalents. The whole code uses less than 20 lines. Should be less then 35 lines in C. Try looking at the code for SF_SPINNER and class SpinnerEntry in gimpfu.py then look at class RadioEntry in gimpfu.py - Add SF-MULTI(?) parameter type to register block It would allow a user to choose multiple items and return a STRINGARRAY - Put the gimp-text-wrapper.sct stuff in one of the .init routines?? Or should the routines be deleted? - Change Tiny-Fu from an extension to a regular plug-in. - Finish updating the list of tests for plug-ins in pdb-test.sct - Do the re and ftx extensions need to be updated for UTF-8? - configure should test for existance of strcasecmp and if it exists use it instead of the stricmp() in TinyScheme. - Send e-mail about Tiny-Fu, its status, and how it compares to Script-Fu. - Modify script which updates scripts from GIMP 2.0 to 2.2 so that it reads an entire script in one go rather than line by line before modifying it. - Remove conversion of / to \\ in script-fu-scripts since it should be handled by other means already?? Either that or it should use the #define G_DIR_SEPARATOR - Allow the use of cons-array data types (except for string array) to be passed in the data portion of a parasite? - Add the script to update scripts from GIMP 2.0 to 2.2 to CVS? - Document the arguments used by the Image/Render/Grid script. - Add tests in set-cmap script to ensure <= 256 colours in the named palette. neo: you can't call image_set_cmap with more than 256 colors - Add check to make sure number of args in call matches number of args specified when script was registered. I added an item to the register list in test-sphere but not to the define statement and it didn't catch the discrepancy. - Create some demonstration scripts using the tsx (and re) extensions o Create thumbnails o Web gallery thumbnails + html pages to show them and link to the originals images o Create a contact sheet (DONE) - Dynamically allocate the number of data cell segments on an as needed basis. Need to modify alloc_cellseg() - Clean up the changes re: putting error messages in to a buffer. Send the code changes to TinyScheme author. - The print_flag variable should only be set to 1 for the console mode. - Test the plug-ins text console mode. - (let ((foo (cons-array 1))) (gimp-parasite-attach (list "bar" 0 foo))) gives the message "Error: not enough arguments". It should display the name of the item for which there are missing args. (This message comes from tinyscheme) - Some errors about car: argument 1 should be a pair should provide an indication of what the name of the argument is. - Check if there are other places where is_pair() is being called instead of is_list(). - Check for valid return values from mk_*() calls to TinyScheme. If they can return sc->NIL, test for it before using the pointer. - Are there other loops looking for NULL pointer when traversing that is supposed to be a list instead of testing against sc->NIL? - Use a call to scheme_define() instead of building a string which is passed to scheme_load_string() to define the stuff needed to call a C routine? - Create/update gimp-help info for Tiny-Fu plugin. - Update the information in the ftx-functions.txt file to indicate that ftx is based on the TinyScheme tsx extensions. - Reformat the source files to conform to GIMP coding standards. Partially done. - Write up information about the TinyScheme interpreter. - Document a suggested coding style for Tiny-Fu scripts. - A line beginning with a ; just before some close brackets will result in 'syntax error: illegal token 1'. Fixed in TinyScheme 1.37 with change in parsing of comments? - Add bracket counting to Scheme interpreter. It should display a message if it encounters more ')' than '('. Use the info in error messages. Already there. Look at sc->nesting_stack[sc->file_i]. - Add UTF-8 support to TinyScheme DONE? - The SIOD fread routine can not simply be redefined to use read. Mostly done. - Submit patch for updates to Script-Fu scripts so Tiny-Fu can run them. DONE?? - Add a script under the Utils menu that turns off tracing and restores undo. Done. - Scripts should live in their own namespace. This will avoid problems which might arise between scripts with the same name for a function but which have perform different tasks. See Simon Budig's rewrite of the alien-glow-arrow script in Script-Fu. Done? - Add extra tests/messages when parsing data to be passed to GIMP in the marshalling routine. DONE - The strexp() routine in TinyScheme can only read up to a maximum of 256 characters (the size of strbuff[]). DONE - Update script which updates Script-Fu scripts to the current API. DONE - Fix the creation of error messages. Don't use g_snprintf()?? Don't append to end of sc->linebuff in putchars(). If printing an error it should output to the error[] part of the sc structure. DONE - Test PDB routines which return no values. Fixed? - Add tests to ensure the right type of array was passed to marshalling code. DONE - Test passing of array data to GIMP. DONE (finally AFAICT!) - Check for UTF-8 support in the regex and file I/O run-time loadable extensions. Add the support if it isn't already there. DONE - Trying to load 96 scripts causes TinyScheme to report "No memory". Need to increase number of cells allocated on startup. DONE - Perform further testing on the support for parasites. DONE - Add "Save output" button to the console mode screen. (Enhancement) DONE (Won't be done for GIMP 2.0.3) - Add "Clear output" button to the console mode screen. DONE - A call to gimp-displays-flush results in "car: argument 1 must be: pair" Fixed by change to marshalling code which ensures a list is always returned from all PDB calls? - Reformat the scripts to conform to the suggested coding style. Mostly done. Some scripts may still need to be reformatted. - Remove the use of a pipe in console mode (see bug #139200) DONE - Update compatibility definition for rand to force argument to exact type. DONE - Determine where to place the run time loadable extensions which can be used by TinyScheme. DONE. Error handling: - If code in ts-wrapper.c detects an error condition when loading or running any of the scripts, it should generate an error message, store the message in a buffer, and return an error indication to the Scheme interpreter. - The scheme code which calls the marshalling routine in ts-wrapper.c should check for an error being returned from the called function. If the returned values indicate an error occured it should throw an error (ie. call the Scheme based error handling routine). - If a calling or execution error occurs, let the script handle it. If the script isn't set to handle it, then pop up a dialog box and abort the script. - The console mode should probably have an error handler to just display the error in the console window. Error reporting: o unknown types in register portion of a script o wrong types passed for a given argument to a script o wrong array type passed as argument where an array type was expected. o procedure being executed when an error occured o line and position in line where error was encountered when reading a file TinyScheme issues: - The printslashstring() routine in scheme.c looks very inefficient. - Use a #define instead of a hard-coded value in oblist_initial_value(). - Use a #define instead of a hard-coded value in new_frame_in_env(). - Submit additional patches and comments to TinyScheme to original author. - In marshall_db_proc_call(), why are some numbers passed to the foreign function as number rather than integer? - Why do some interface items take *sc while some do not? - store_string() should use a memcpy() or memmove() instead of strcpy() to allow it for use in storing binary data that might contain NULs This may also require a fix to the routine which returns the length of stored strings. DONE. No longer needed?