LCFM Native Containers, Cameras, CURL

by Heather Laine on September 5, 2019 No comments

We’re delighted to bring you the next version of the LCFM Native compiler today. We’ve packed a lot into a month! This release brings you a host of fixes, features and improvements making your compiler experience smoother and ensuring more apps will run better. Notable improvements include support for automatically rotating orientation on mobile, better support for non-English locales, improvements to the barcode scanner and improvements to container handling.You can get up to speed on what is and isn’t supported yet in LCFM Native in this document, freshly updated.

From the release notes, here is what we’ve done:

Tool

  • The tool no longer causes an unidentified developer warning dialog to be displayed on macOS when it is opened.
  • LCFM Native no longer allows you to deploy or test an app without specifying an app identifier.
  • LCFM Native now checks if it is being run from the DMG, and shows a dialog informing the user and quits if this is the case.

Parsing Fields

  • Incomplete field definitions in the DDR now use sensible defaults for the missing options rather than causing a parsing error.

Themes

  • Themes containing references to fonts with non-Latin names now parse correctly. Themes containing custom styles with non-Latin names now parse correctly.

Compiling Tables

  • Fields which have their index language set to something other than English, Danish, French, German, Unicode or Unicode_Raw will no longer cause compilation to fail when including initial data in the built app.

Extracting

  • Data can now be extracted from tables that contain over 997 fields or field repetitions.

Android Deployment

  • Support for setting the allowed orientations has been added to the Android settings

General Settings

  • The application identifier must now conform to the rules for android packages, namely:
  • They must have at least two segments (one or more dots).
  • Each segment must start with a letter.
  • All characters must be alphanumeric or an underscore [a-zA-Z0-9_].

Runtime Android

  • Parts of the screen no longer appear displaced after interacting with objects.
  • The barcode scanner now supports devices with less powerful cameras which only have ‘auto’ and ‘macro’ focus modes.
  • An issue where layout objects required two taps in order to function has been fixed.

Find Requests

  • Find requests against fields containing styled text no longer cause the application to exit in some cases.
  • Find requests that use value and word indices now correctly ignore uncommitted changes.

Functions EvaluationError

  • The EvaluationError function will now return the error code generated by its argument, rather than its value. FieldType
  • The FieldType function will now handle field and table names which have been escaped using ${…}. Get(PersistentID)
  • The Get(PersistentID) function is now implemented.

GetContainerAttribute

  • The filename attribute for the GetContainerAttribute function has been implemented.
  • The barcodeText attribute for the GetContainerAttribute function has been implemented.
  • The barcodeType attribute for the GetContainerAttribute function has been implemented.

GetField

  • The GetField function will now handle field and table names which have been escaped using ${…}. GetFieldName
  • The GetFieldName function now only includes the repetition if the field is a repeating field and the repetition number is greater than one.

GetLayoutObjectAttribute

  • The GetLayoutObjectAttribute function will now return the correct value for the objectType attribute when targeting web view objects.

IsValid

  • Evaluating the IsValid function will no longer affect the evaluation error.
  • The IsValid function can now be used to detect existence of a record when directly evaluating a non-global stored field (whether related or non-related).

Lookup

  • The Lookup function is now implemented.

Position

  • The Position function is now implemented when the occurrence count is less than zero.

iOS

  • Parts of the screen no longer appear displaced after interacting with objects.

Layout Objects

Button Bars

  • Button bars no longer highlight empty buttons when given an invalid active segment

Buttons

  • When executing a single step action of a button object the value of the active field is now the modified value rather than the saved value.
  • Popover buttons will now display their icon, if they have one.

Fields

  • When choosing to insert from the device’s camera via the menu presented by container fields, touches in the preview area no longer cause actions to occur on the calling layout.
  • The insert from camera, barcode and microphone menu options on container fields now include cancel buttons.

Layouts

  • Scroller no longer ceases to function when doing so over a container field.
  • Scrolling a list view or portal on mobile platforms will no longer cause the selected row to change.

Performance

  • The ExecuteSQL function is now more efficient when the WHERE clause contains references to indexed fields.

Script Steps
Commit Records/Requests

  • Committing a deletion no longer causes the application to exit when sync is enabled.

Delete Record/Request

  • Deleting a record no longer causes subsequent sync attempts to fail.

Insert From Device

  • Attempting to use the Insert From Device script step on macOS when specifying Camera or Video Camera will now use the default available video device, rather than causing the application to exit.
  • The Insert From Device script step now prevents touch events within the preview area from causing actions to occur on the calling layout.
  • The Insert From Device script step in Camera, Video Camera, Barcode and Microphone modes now includes a cancel button.

Insert From URL

  • Repeated use of the headers key in –form or -F arguments is now supported the cURL options.
  • Form field content is now included in the upload when the encoder is not base64 in the –form or -F arguments of the cURL options.
  • The Content-Type header is now set correctly when posting multipart form data.
  • Quoted values and escaped quotes are now parsed correctly from –form or -F arguments in the cURL options.
  • Error handling in the Insert From URL script step has been improved and will no longer cause the application to exit.
  • Escaped quotes \” in quoted arguments are now supported in the CURL options parameter of the Insert From URL script step.

Move/Resize Window

  • The Move/Resize Window script step no longer causes the application to exit.

Open File

  • The Open File script step will no longer cause the application to exit when being used on a file which has not been included in the compiled app.

Perform Find

  • The Perform Find script step will now return the appropriate error code if no records match the request View As
  • The View As script step no longer causes the application to exit.

Sync

  • Syncing apps no longer hang on startup when they are unable to contact the server. Once a successful initial sync is completed, the app will start up regardless of whether a connection is present. Otherwise, if the server is unavailable an error dialog will be shown on startup and the app will quit.

Tables

  • Changing a global field will no longer cause dependent non-global fields to be recalculated as if the record number were zero (and thus empty).
  • All field index languages are now implemented.
  • Fields with an auto-enter lookup option are now implemented.

Interfacing

  • The interface solution is now generated correctly when table or field names contain non-ascii characters.
Heather LaineLCFM Native Containers, Cameras, CURL

Join the conversation