BaseElements 18 introduces a new ThemeBuilder report that lets you more easily transition from either the Classic theme from an old solution, or from a new solution that has a theme, but where the layout objects aren't set to styles and each object has individual styling.
This report works by reviewing every layout object in your solution, and building a new theme based on the styling used everywhere. You can then paste this new Theme into your solution, and replace existing objects with newly styled objects.
The workflow for this report and how you use it is a little complex, so read through this before trying to use this report.
The starting point for this report is that you've got a solution that either uses the Classic theme from an old version of FileMaker Pro, or has a new theme, but styling has never been used, so each individual object has custom styling.
To start with, run the Database Design Report in XML format and import this into BaseElements :
Run the ThemeBuilder Report
Then run the new ThemeBuilder report and select both the Analysis, and the File you want to produce a Theme for :
This report will process all the layout Objects, and find all the common styling, and generate a new Theme with only one "Style" for each version of an object in your solution.
Once the report is complete, enter a new name for the report, replacing the "New Theme" default:
Add the new Theme to your solution
Once you've given the Theme a name, click the "Copy Theme" button, which puts a copy of the Theme onto the clipboard. You can then switch to your solution file, and open "Manage Themes" and paste the new theme in :
There is no "Paste" button in the Manage Themes dialog, but using Command/Ctrl - V will still work. At first it will show 0 layouts in use, but we can then start to change layouts.
Changing a layout from old to new Theme
There unfortunately is no easy way to change a layout without reverting to the defaults for the theme, so this is a multi step process. But still, it's simpler than individually styling every element.
The basic steps are :
- Enter layout mode.
- Cut the layout objects.
- Switch to BaseElements.
- Click the "Style Clipboard Objects" button to alter the clipboard.
- Switch back to your solution.
- Change the layout Theme to the new Theme.
- Paste the newly styled objects.
You can then work through each layout individually.
So in this screenshot, you can see the original layout has the "Classic" Theme applied, and there is a field object selected. It's the "default" style with an asterix to show that custom styling has been applied.
I then Cut the objects, change the theme for this layout to my new one, switch to BaseElements and click the "Style Clipboard Objects" button, switch back and paste.
The end result, when I select the button now is that it hasn't changed it's formatting and it has picked up a named style, with no custom changes.
Once you've made changes to all the layouts that you think you'll need to change, then you can consider renaming the styles. Give them clear names that make sense using your own naming convention.
There will also quite likely be two styles that are very similar, that differ only in minor presentation details that you'd like to consolidate, or perhaps you'd like to have multiple themes, one for each "type" of layout in your solution.
Make sure you import a DDR into BaseElements after the conversion or after any consolidation, to make sure you haven't missed anything.
There isn't a way ( at the moment ) to automate this. However the FileMaker roadmap sounds promising that there could be methods coming in the future where you could read an entire file, and bulk replace layouts. That would be the obvious next step.
This version assumes you're doing the change for a whole file, but it could potentially be a partial file, so only certain layouts, or layouts with a certain theme. If that's a feature you'd like, submit a request above for it.
There's also currently no logic to name the styles other than to make them TextEdit_1, TextEdit_2 etc. I know lots of developers have different ideas on how to name styles, so choosing from the CSS only would be difficult and probably not for everyone, but it's definitely an option we could try.
Anything else you'd like to see, please contact us.