Friday, June 26, 2009

FileMaker Wish List

I know, it's not even Christmas! But here's my wish list for FileMaker Santa to consider for inclusion in future versions(s). (Hopefully sooner rather than later.)

It's a long list, so bear with me. Feel free to leave comments, but know that I moderate my comments, so don't be surprised (or offended, please) if yours doesn't show up immediately (or at all).

NOTE: If you are not a FileMaker developer, this list will not mean anything to you, so you can feel free to skip this post. Don't worry: I'm not offended. :)

Formatting Enhancements
  1. Conditional Formatting of Number/Date/Time/Container types.

    (currently only supports conditional formatting of Text)

  2. Conditional Formatting of Line/Fill Patterns.
  3. Conditional Formatting of object'sexistence.

    (i.e. whether it even displays)

  4. Ability to specify Alpha channel (transparency/opacity) for all Fills & Colors

    (RGBA instead of RGB).

Developer Features
Manage Scripts
  1. Script Numbers
  2. Quick Find: search inside scripts also

    Currently only searches Script Names.

    Currently only available by printing script(s) to PDF and searching that.

Script Editor
  1. Script Line Numbers
  2. Colorization of Script Steps
  3. Expand/Collapse code blocks

    Specifically Loop...End Loop and If...Else If...Else...End If blocks.

    Defaults to Expanded

    State stored

    —per file?

    —per session? (i.e. until last window close)

    —per FM Instance? (like Save Layout Changes Automatically)

Calculation Editor
Most of these would be toggleable and customizable.
See Apatana or any decent IDE for example(s).
  1. Calculation Line Numbers
  2. Colorize/Format Calculation
  3. Type-Ahead Code Suggetions
  4. Automatic Code Completion

    Similar to Code Suggestions, but actually inserts other half of pairs of Parentheses and Brackets, and also inserts semicolons where it can, etc.

  5. Automatic Whitespacing (default Off)
  6. Enclosure Highlighting (parentheses/brackets)

    e.g. Click an Open Parenthesis, and it's highlighted, and the Closing Parenthesis (if any) that FM think corresponds is also highlighted.

  7. Code Collapsing

    If FM determines that you have closed a particular code block properly, it should let you collapse that code, at least until the Calculation is saved.

    The "Expand All" state would be restored when the user is finished editing the Calculation and closed the Calculation window, either by OK or Cancel.

Layouts
  1. Layout Numbers

    Display automatically to the left of the Layout Name, wherever it appears.

    This is the number that displays in the Status Area ("flip book" number).

  2. Layout Folders (like Script Folders)
New/Altered Calculation Functions
  1. Altered: TableNames becomes TableOccurrenceNames

    This more accurately reflects this function's actual feature set.

  2. Altered: TableIDs becomes TableOccurrenceIDs

    This more accurately reflects this function's actual feature set.

  3. New: TableNames

    Lists the names of the actual base tables in the file.

  4. New: TableIDs

    Lists the internal FM IDs of the actual base tables in the file.

    In case there is any confusion:

    by "base tables", I'm referring to the tables and their names, as displayed in the Tables tab of Manage Database.

  5. New: Get ( ActiveScripts )

    Lists the active scripts — the script stack.

    This is currently only available in the bottom of the Script Debugger window.

  6. New: Get ( VariableNames )

    Lists the names of the active variables, including scope indicator.

    This is currently only available in the "Current" tab of the Data Viewer.

  7. New: VariableType ( Variable )

    Returns the data type (Text, Number, Container, Date, Time, TimeStamp) of the data stored in the variable.

    Does for Variables what FieldType does for fields.

  8. Altered: Last updated to handle Lists, too.

    Equivalent to
    GetValue ( listOfValues ; ValueCount ( listOfValues ) )

  9. Altered: FilterValues updated to allow user to specify whichFilter to apply.

    Currently only does Intersection.

  10. New: CollapseValues ( listOfValues )

    De-duplicates Value List.

  11. New: ReplaceValues ( listOfValues ; start ; numberOfValues ; replacementValues )
  12. New: FilterValuesByPattern ( listOfValues ; searchText )

    Acts like FilterValues combined with PatternCount

    Iterates over values, and keeps the ones where PatternCount ( value ; searchText ) >0

  13. New: ForEach ( listOfValues ; do )

    Iterates over value list, and runs the do code block.

    Uses Self to reference current value.

  14. New: While ( condition ; do )

    As long as condition evaluates to Boolean TRUE, it evaluates the do block, and reiterates.

    Otherwise, it stops.

  15. New: Function ( {[}

    paramName1 {= defaultValue1}
    {; paramName2 ]};

    do {; {{$}$}functionName } )

    Allows custom functions to be defined on the fly.
    Can recurse.
    Scope assigned like variables.

    Example:

    I do:Set Variable [

    $create_function ;
    Function (

    myParam = 0 ;
    Case ( myParam ; "Hello World" ; 0 ) ;
    "$my_hello_world_function"

    )

    ]


    I then do:
    Set Variable [ $call_my_function ; $my_hello_world_function( TRUE ) ]
    $call_my_function is now set to the string "Hello World".

    IsValid would be used to check if a Function is defined or not, like normal.

    Scope is defined exactly like variables:

    no initial sign = calculation scope (like Let variables)
    $ = local/script scope
    $$ = global scope

    Added to the Data Viewer's Current tab. The "Value" column would show the parameters (their defaults) and the text of the do block —notthe results of evaluating the do block, since it hasn't been called specifically (that's what the Watch tab is for).

Miscellaneous
  1. ActiveX object update
    1. Allow Script Parameters
    2. Script calls return Script Result to ActiveX object for retrieval.
  2. Ability to designate Custom Function parameters as Optional.
  3. Ability to display Variables on Layouts, as Merge Data.
    1. "Merge Data" = New name for "Merge Fields".
    2. Includes Function variables of the Script and Global scopes — see above.
    3. Would cut down significantly on the number of "display" calculation fields clogging up the Schema.
  4. Ability to specify OR relationships.
  5. Ability to use Variables in relationships.
  6. Change Self when used on Buttons to refer to the underlying object, not the FM "ghost" object grouped on top of it when the button is created.
  7. New Layout Object: Calendar (details TBD)
  8. Make all Windows windows independent of main FM App window, like on Mac.
  9. Ability to programmaticaly manipulate layout objects
    1. Includes ability to hide/delete them, and create/show them.
    2. Any changes are temporaray. For how long would be TBD, but no longer than 'til the last window for the File closes.
    3. Relevant layout editing permissions would apply.
    4. Perhaps new function?: SetLayoutObjectAttribute ( objectName ; attributeName ; value )
    5. Perhaps new Script Step?: Set Layout Object [ object ; attribute ; value ]
  10. Ability to trigger Scripts from Calculations

    New function: PerformScript ( fileName ; scriptName ; parameter )
    Function returns Script Result (if any).

  11. Ability to programmatically (script steps) create/alter/delete Schema items
    • Tables
    • Table Occurrences
    • Fields
    • Relationships
    • Layouts
    • Layout Folders
    • Layout Objects (see above)
    • Scripts
    • Script Steps
    • Script Folders
    • etcetera

No comments:

Post a Comment

Hi! Feel free to comment. However, I was getting posts from different Anonymous people, and it's difficult to know who is who so I can keep the conversation straight in my head. So I'm requesting that you please bear with my weakness, and identify yourself. Even if you want to use a different name than your real name -- that's fine. But give yourself a handle for me, please. :) Thanks...