Save and restore the toolbar state
The toolbar state like visibility, position and size of any toolbar can be stored and loaded. This can be used e.g. for a application or user specific toolbar setup or to transfer the setup to a different system. This macro shows how to store and load a toolbar state to a file.
Download: Toolbar.layout
   1 #!/Applications/layout.app/Contents/MacOS/layout
   2 #name=Maintain Toolbar
   3 #help=Save and restore the toolbar state
   4 
   5 
   6 /***************************************************************
   7 Name:           Toolbar.layout
   8 Rev:            1
   9 Recorded:       April 26, 2016
  10 By:                     Jim Carroll, PhotomaskPORTAL
  11 
  12 Change Log:
  13         Rev 20160427 - Added error-handling.
  14         Rev 20160426 - Initial program.
  15 
  16 Summary: 
  17         This macro saves the state of the toolbar in a text file in the user's
  18         macro directory. The toolbar can be restored to this state.
  19 
  20 Notes:
  21         1 -     Save macros with UNIX LF and Unicode (UTF-8) encoding
  22         2 -     For help with macro commands see http://www.layouteditor.net/wiki/CategoryMacroClass
  23         3 - For help with control structures see http://www.layouteditor.net/wiki/pseudoC-C%2B%2B
  24         4 - For Linux use #!/usr/bin/layout
  25 ***************************************************************/
  26 
  27 int main()
  28         {       
  29                 string desired_function = layout->getText("Question","Do you want to SAVE or RESTORE the toolbar ?","Save");
  30                         
  31                 file f;
  32                 bool b;
  33                 string s;
  34                 f.filename = "toolbar_state.txt";
  35                 
  36                         
  37                 if ((desired_function.left(1) == "s") || (desired_function.left(1) == "S")) 
  38                         {       
  39                                 b = false;
  40                                 f.open(b);
  41 
  42                                 s = layout->getToolbarState();
  43   
  44                                 f.write(s);
  45                                 f.close();
  46 
  47                                 layout->showMessage("Information","Your toolbar state has been saved as file toolbar_state.txt.");
  48                         }
  49 
  50                 else if (((desired_function.left(1) == "r") || (desired_function.left(1) == "R")) && f.exists()) 
  51                         {       
  52                                 b = true;
  53                                 f.open(b);
  54                                 s = f.read();
  55                                 f.close();
  56 
  57                                 layout->setToolbarState(s);
  58                                 layout->showMessage("Information","Your saved toolbar state has been restored.");
  59                         }
  60                         
  61                 else if (((desired_function.left(1) == "r") || (desired_function.left(1) == "R")) && (f.exists() == false)) 
  62                         {
  63                                 layout->showMessage("Info",             "********** Error **********\n" +
  64                                                                                                 "\nThe settings do not exist." +
  65                                                                                                 "\n\nPlease first save a toolbar state." +
  66                                                                                                 "\n\nProgram terminated.");
  67                                 return 1;               
  68                         }
  69                         
  70                 else
  71                         {       
  72                                 layout->showMessage("Error",    "********** Error **********\n" +
  73                                                                                                 "\nWe did not understand your response: " +     desired_function +
  74                                                                                                 "\n\nPlease answer SAVE or RESTORE." +
  75                                                                                                 "\n\nProgram terminated.");
  76                                 return 1;
  77                         }
  78                         
  79         } /* end main program */
