The following screenshot shows a toy example to illustrate what I want to accomplish:
The above mimics the structure a type of notebook that I want to deploy for both Mathematica and PlayerPro environments. In actual use, an accompanying package handles the heavy work load.
What I need to do -- I need to make deploying these notebooks as simple as possible. Especially, I don't want to have to manually configure a bunch of settings on each computer where they will run.
Examples of the kind of settings that I want to accompany the deployment include:
Notebook Options, Evaluation Options, InitializationCellEvaluation -> True
Notebook Options, Evaluation Options, InitializationCellWarning -> False
Notebook Options, Notebook Properties, CellGrouping -> Manual
Notebook Options, File Options, Editable -> False
Notebook Options, File Options, Saveable -> False
Notebook Options, File Options, ClosingSaveDialog -> False
Cell Options, Display Options, ShowGroupOpener -> True
Don't forget the groups - In addition to the above, on my development machine I set specific groups of text cells. I would like these groups preserved when I deploy the notebooks.
Some of the problems
Some things seem inconsistent. I can create an initialization cell, but if the target platform hasn't had the following set:
Notebook Options, Evaluation Options, InitializationCellEvaluation -> True
the cell won't run on opening the notebook. I haven't found a way to do this programmatically from the deploying notebook.
Grouping of text cells (maybe all grouping) disappears when I've tested deployment.
Questions
So, can a notebook deployed to a Mathematica environment, different from the one on which one created it or similarly to a PlayerPro environment, encapsulate all such configurable FrontEnd options (including the grouping of cells)?
To clarify, if I make an application and configure all these options on my development machine, how can I distribute the application such that it will carry ALL such settings to different machines, platforms, or even operating systems?
An explanation for how the developers think about this might better help me/everyone understand how to do this.
How do I go about doing this? Can one configure such FrontEnd options programmatically from an initialization cell? This seems unlikely given the chicken and egg problem.
Can some lower level call do this? Can some accompanying stylesheet do this? Can some other configuration means do this?