+ // help button
+ new FXButton(mainFrame, "&Help", NULL, this, GUI::ID_HELP);
+
+ // help dialog
+ stringstream helpText;
+ helpText << "Mouse:" << endl
+ << "Left button: Move model in z-plane" << endl
+ << "Middle button: Zoom in/out" << endl
+ << "Right button: Rotate around y-axis" << endl
+ << endl
+ << "Rules:" << endl
+ << "F : Walk forward, leaving a trace" << endl
+ << "A-Z : Replacement rule" << endl
+ << "A(0.33) : Probability factor 0.33 for rule \"A\"" << endl
+ << "= : Rule assignment" << endl
+ << "+ : Turn left" << endl
+ << "- : Turn right" << endl
+ << "&& : Pitch down" << endl
+ << "^ : Pitch up" << endl
+ << "\\ : Roll left" << endl
+ << "/ : Roll right" << endl
+ << "| : Turn around 180 degrees" << endl
+ << "[ : Save state to stack" << endl
+ << "] : Load state from stack" << endl
+ << "{ : Create a planar surface" << endl
+ << "} : Close a planar surface" << endl
+ << "f : One vertex in a planar surface, specified CCW" << endl
+ << "! : Decrement diameter of segment" << endl
+ << "\' : Increment current index to color table" << endl
+ << ", : Decrement current index to color table" << endl
+ << endl
+ << "Example:" << endl
+ << "F(0.33)=[+F/L]/F[-F&&L]F!" << endl
+ << "F(0.33)=F[+F+L]&&F!" << endl
+ << "F(0.34)=F[-F-L]/F!" << endl
+ << "L=,{-f++f-|-f++f-}'";
+
+ _helpMessageBox = new FXMessageBox(getApp(), "Help", helpText.str().c_str(), NULL, MBOX_OK);
+