One thing I’ve been wanting to do for ages in BaseElements is the ability to copy ( and maybe paste ) information out of BaseElements and back into FileMaker. Imagine that you’ve got an old analysis of a solution that has an older version of a Custom Function or a Script, and you need to put it back into your solution. Just open up BE, select the CF and hit copy and paste into FMP.
Obviously this isn’t a built in function in FileMaker Pro and although it’s relatively simple on the mac using applescript, there is no easy way on Windows. There was a plugin ( since discontinued I think ) that had this feature, and the new ScriptMaster Advanced from 360Works has the ability to set and get the clipboard. We’ve built this functionality into our own BaseElements plugin which we’ll be open sourcing soon so anyone can give it a try.
So the just released beta 7 version of BaseElements 3 includes the ability to copy Custom Functions directly out of BaseElements and paste them back into FileMaker. And it has the bonus feature of including any modifications you make to the name, parameters or calculation in BaseElements into the copied version.
Hidden Features
The reason I call this a hidden feature is that it’s implemented with zero interface. If you’re looking at a Custom Function and you don’t have an active field selection, then command-c will copy that CF to the clipboard. And if you’re looking at a list or table view of CFs, then it will copy the entire found set of CFs to the clipboard. If you’ve got some text selected in BE then it will copy the selection instead.
I really like that it’s implemented this way. There are some downsides in that some people may never find out about the feature, but hopefully the more I post blogs or when I finally finish the manual, there will be lots more places to find out about these things. But it’s the fact that a feature that is really helpful, but you won’t necessarily use 100% of the time, isn’t taking up valuable screen real estate, where it would have to appear 100% of the time.
The ability to do GTRR into a new window by holding down the option key, and the ability to do GTRR using found set by holding shift are in the same arena. These, to me, are the two best features in BaseElements, but they don’t ever announce their presence. ( They announce their presence inside ScriptMaker by their 8500 lines of code though – my kingdom for a dynamic GTRR step ).
It’s always tempting to shout out these features by including them on the layout somewhere, but I think you’re making a mistake in doing that, they don’t need to be on the layout, leave that to the actual data, and the feature itself hides away and is called into action only when needed.
More to come.
For BE 3.0.0 the copy function will be limited to Custom Functions, and to copying only not pasting. I’m going to work on Fields next, and after that Tables, and then hopefully steps and scripts. The reason for that is the XML for CFs is relatively simple. We’re not storing in BaseElements the actual XML like you do in ClipManager ( great product by the way, use it a lot, saves heaps of time, will post more later ), so we need to recalculate the XML from the stored data. For CFs that’s pretty simple, some heading details and then a calc.
For fields it’s more complex, there are lots of different types with storage and validation and calc options, there is a lot to recreate. Tables obviously depends on fields, so that would be next, but it’s a relatively simple step once fields are done.
Script steps are a whole other box of hurt. There are 150 odd script step types and each one has very different coding for what data it comes with and how it’s laid out in the XML. Have a look at the XML DDR pdf document for v11 if you want to get an idea of what’s involved. The problem though with scripts is that we import into BaseElements the script text ( which isn’t the same as the XML ) and also any reference items. So lots of the settings and options aren’t included. These would need to be included in order to regenerate the XML. The reasons for that are two-fold : keeping the import time down, fewer items is faster imports, and also 99% of the time you won’t need all of the details in individual fields, but you can see all of the details in the step text.
So the options with steps are to try to turn the actual text back into XML, or import more data. I’m going to play with both over time and see how it goes. I may end up with some sort of hybrid approach.
Pasting into BaseElements
This one I haven’t worked out a full use case for just yet. It seems logical that if you can copy out of BaseElements, you should be able to paste back into BE. But where and how? Obviously if you’re looking at a CF, pasting a script doesn’t make sense. Even if you’re pasting a CF what should happen? Should it over write the current CF? What if there is more than one in the clipboard?
My opinion is that it shouldn’t alter any of the current data in BE. I don’t think that helps in maintaining a record of your solution as it was imported at the time.
So there would be need to be somewhere else that you could paste into. Maybe some sort of scratch pad or toolbox type option. I’m still considering how to go with this, including the option of tight integration with ClipManager, so that I don’t have to implement my own toolbox at all, I’d just use the ClipManager one, and reference it.
I’d love to know other’s opinions on how best to use this and if they see a use case for it. Send me email, fill in the form, or reply on twitter.