Introducing the new FlexBox control

AppStudio 7.0.4 introduces the FlexBox control. It makes it much easier to design a flexible responsive layout structure without using float or positioning.

Start by putting all the controls you want to position into a container. The new Flexbox properties allow you to control how the contents of the container are positioned.

These properties are part of the new FlexBox control. They have also been added to Container, Header, GridColumn and GridRow. To use them in these controls, you also need to set the display property to ‘flex’.

Here’s what each of the new properties does. Complete information is in the Wiki page about FlexBox.
Continue reading “Introducing the new FlexBox control”

AS7: Validation

AppStudio 7 brings Validation to your projects. Now it’s easy to check the validity of fields on your form.

If a field is invalid, a message in red appears next to the field.

Validation doesn’t kick in until you ask it to validate the form. This lets the operator input data undisturbed. As fields are corrected, the error messages disappear.

Validation should work on controls from all frameworks.

Here is the link to a new Tech Note to get you started using the Validation library, plus some additional reading:

AS7: Make your app work in different languages (i18n)

Want to get a wider audience for your app? Make it work in multiple languages!

AppStudio 7 introduces a library to make this much easier. You write your code once. You supply some translation tables. Your app then runs in multiple languages using the same version of the code.

(Aside: this is often called i18n, because there are 18 letters in “Internationalization”, and who wants to type that out?)

Controls

AppStudio Common and Bootstrap 4 controls already have translation built in. Any text which is in the Translation Table will be automatically converted. You don’t have to do anything except include the i18n library and the table in your project.

Text values at Runtime

If you’re setting a text value at runtime which needs to be translated, use the $.i18n() function:

Input1.placeholder = $.i18n("Monday")

The $.i18n() function looks up what the app’s language is set to. If it is “en”, nothing happens and “Monday” is assigned. If it is set to “de”, the function returns “Montag”.

Translation Table
You’ll need to set up a translation table and include it in your project. Here’s a sample with German days of the week:

{
  "Monday": "Montag",
  "Tuesday": "Dienstag",
  "Wednesday": "Mittwoch",
  "Thursday": "Donnerstag",
  "Friday": "Freitag",
  "Saturday": "Samstag",
  "Sunday": "Sontag",
  "Day": "Tag"
}

You can add as many strings as you like.

More Info

Each set of controls seems have its own method of handing i18n. For example, jqxWidgets has its own scheme. We go into the detail in this and other information in this Tech Note on Internationalization.

There is also a sample included in AppStudio called i18n. It shows the effect on lots of controls.

AS7: New options in the Project Explorer

With AppStudio 7, it is much easier to move controls around on your form. If you right click in the Project Explorer, you’ll see new options to Cut, Copy and Paste controls.

You can use them to move controls from one container to another, or to paste multiple copies of a control into a specific container.

They also work between projects: you can copy a control from one project and paste it into another.

They even work on containers: you can cut, copy and paste entire groups of controls.

Complex projects are now much easier to manipulate!

AS7: The new Snackbar message

Ever want to give your user a quick message about what he is doing? The Snackbar message is an easy way to do so.

It displays a message with an optional action. The message stays on the screen for a few seconds, then fades away.

It’s only available if you are using Bootstrap 4.

The concept of a Snackbar message originated in Google’s Material Design.

It’s easy to code.

BASIC:

Function Button1_onclick()
  Snackbar("This is a warning about something.", "more?", snackBarDismiss)
End Function

Function snackBarDismiss()
  MsgBox "Closed!"
End Function

JavaScript:

Button1.onclick = function() {
  NSB.Snackbar("This is a warning about something." , "more?" , snackBarDismiss);
};

function snackBarDismiss() {
  NSB.MsgBox("Closed!");
}

False Detection from Kaspersky

We are getting reports of Kaspersky blocking installations of AppStudio. Users get a message like this:

It’s a False Detection: there is no problem with AppStudio. Kaspersky is misinterpreting something in our installer as a threat.

The procedure when this happens is for us to upload a copy of our software to their site so they can examine it. I’m not sure why it has to be our problem to fix, but we have done so a couple of times. There has been no response from Kaspersky.

This is complicated by the fact that we update AppStudio frequently, especially after a new release. They may mark a build as good, but we issue a new one a few days later.

Until we hear something, we recommend you turn off Kaspersky when installing AppStudio, or use another anti virus app.

AS7: Syntax checking for JavaScript

Ever make a change to your app, run it, and have it die on a simple syntax error?

Wouldn’t it be great to catch it while still in the Code Window?

AppStudio 7 has a sophisticated JavaScript syntax checker built into the Code Window. It does more than just check for coding errors: it also encourages you to code using good style. It will give dozens of suggestions on ways to make your code follow the latest best practice standards for JavaScript.

Here’s how to use it: Right click in the Code Window, click on Check syntax using Eslint. A window will pop up with a list of errors and warnings.

Checking is done using the well known eslint utility. Eslint uses a set of customizable rules. For rules, we use the widely accepted AirBnB Style Guide.

If you’re a JavaScript programmer, you should read this document: it’s full of simple examples, good and bad. You’ll be a better programmer as a result.

If you have a team of developers working on a project, it will also help enforce a consistent programming style for all members of the team: they will be able to read and fix each other’s code much more easily.

AS7: Auto Open Chrome Debugger

The Chrome Developer Tools are incredibly useful for debugging your app. If you’re working on an app, you almost always want to have them open to check for errors, examine variables, look at your controls and do many more things.

But if you want to use them on Windows, you have always had to hit F12 after the page loads to open the Developer Tools.

AppStudio 7 opens them for you automatically. There are two things that are needed for this to happen.

  1. You need to be on Windows.
  2. You can’t already have any windows open in your Chrome browser.

AS7: What’s new in Frameworks?

Frameworks are the collections of controls in AppStudio. Each is a major product in itself: AppStudio has definition files which make it easy to drag and drop the controls onto the Design Screen. Since each one is developed by a different group, they have important differences. This blog post should get you up to date on the status of each one.

AppStudio Controls

In the Toolbox, these 30 controls are mostly light purple in color. Headings include Common, Date and Time, MultiMedia and Finance & Social Media. They are developed and maintained by us.

There are no major changes in AppStudio 7. Where needed, they have been updated and modified for consistency with other controls.

These controls play well with the other Frameworks.

Bootstrap 3

Bootstrap 3 was introduced in AppStudio 6. Originally developed by Twitter, they have been spun off into their own development group. It’s one of the most popular frameworks on the web, used by millions of websites.

The 27 controls are clean, powerful and nice to work with. New development on Bootstrap 3 has stopped, but the controls are still being maintained by the group. There’s a strong community as well.

AppStudio 7 has a number of bug fixes and refinements to the controls, but no major changes. We will continue to maintain them.

Bootstrap 4

Bootstrap 4 was released just a few months ago by the same development group as Bootstrap 3. They cleaned up a lot of the Bootstrap 3 code and made many improvements. We expect it to be one of the most popular frameworks in the years to come.

Unfortunately, it’s not a simple upgrade. There are significant changes to all of the controls. AppStudio minimizes these differences: Bootstrap 4 works pretty much the same as Bootstrap 3, but there was a lot of work under the covers to make this happen.

You can’t use Bootstrap 3 and 4 in the same project: the CSS definitions conflict.

We recommend using Bootstrap 4 for new projects.

jQuery Mobile

Another year has gone by without a new version of jQuery Mobile. For those keeping count, the last update was in 2014. It’s developed by the jQuery Foundation.

It continues to work fine with modern browsers. We don’t see any reason to drop support for it or tell you to stop using it, but it’s probably not good to use for new projects. It does not support the current version of jQuery (!), which could cause problems.

We’ve only made minor changes to its 16 controls.

jQWidgets

The jQWidgets team continues to improve this massive set of powerful controls. They work well, look good and have any feature you can imagine.

In AppStudio 7, we’ve added some new ones to the list of 29 controls. The jQWidgets controls play well with others: you can use them in your projects along with controls from the other frameworks.

Reflecting the amount of work and scope of these controls, they are the only ones which cost extra – you’ll need a license from JQWidgets to use them in a commercial project.

AS7: Easily select nested controls

AppStudio makes it easy to nest controls inside of other controls. Want a group of Buttons to be inside a Container? Drag and drop them into the Container.

But if a control is buried deep inside several layers of Containers, it can be difficult to select in the Design Screen. AppStudio 7 makes it easy.

Right click at any point in the Design Screen, and AppStudio will display the hierarchy of controls at that point, so you can select the one you need.

In this example, the right click was done on top of the Button. The context menu shows that Label1, Container2 and Button1 are there. If you click on Button1 in the menu, it is selected.