X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fgui.h;h=ae0e793013e75fa3678920a80ac30a80c89c66e5;hb=HEAD;hp=b5664c89c15fb0ed80060fbd0d3e39eea874d086;hpb=3025996ba17bf59f5bc64def5d55b95c4d732a8a;p=lsystem3d.git diff --git a/src/gui.h b/src/gui.h index b5664c8..ae0e793 100644 --- a/src/gui.h +++ b/src/gui.h @@ -1,6 +1,6 @@ // Copyright (C) 2006 Erik Dahlberg // -// This file is part of LSystem3d. +// This file is part of LSystem3D. // // LSystem3D is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -22,12 +22,16 @@ #ifndef GUI_H #define GUI_H +#include + #include "fx.h" #include "lindenmayersystem.h" #include "lsystemparameters.h" #include "renderingsurface.h" +using namespace std; + /** @@ -44,53 +48,127 @@ public: enum { ID_GENERATE = FXMainWindow::ID_LAST, + ID_LOAD, + ID_SAVE, + ID_QUIT, + ID_HELP_USAGE, + ID_HELP_RULES, ID_LAST }; - + + /** * Constructor - * @param application the FOX application object + * @param application the application object * @param renderingSurface the rendering surface - * @param lsystem the Lindenmayer-system + * @param lsystem the Lindenmayer system generator */ GUI(FXApp *application, RenderingSurface *renderingSurface, LindenmayerSystem *lsystem); - + + /** + * Destructor + */ + virtual ~GUI(); + + /** * Create and initialize the window */ - void create(); - + virtual void create(); + + /** - * Called by the system when the "generate"-button is pressed + * Called by the system when the "Generate" button is pressed * @param sender the sender object * @param selector message type and id * @param data event related data * @return */ - long onGenerateButtonPressed(FXObject *sender, FXSelector selector, void *data); - + long onGenerate(FXObject *sender, FXSelector selector, void *data); + + /** + * Called by the system when the File->Load menu command is selected + * @param sender the sender object + * @param selector message type and id + * @param data event related data + * @return + */ + long onLoad(FXObject *sender, FXSelector selector, void *data); + + /** + * Called by the system when the File->Save menu command is selected + * @param sender the sender object + * @param selector message type and id + * @param data event related data + * @return + */ + long onSave(FXObject *sender, FXSelector selector, void *data); + + /** + * Called by the system when the close button or the File->Quit menu command is selected + * @param sender the sender object + * @param selector message type and id + * @param data event related data + * @return + */ + long onQuit(FXObject *sender, FXSelector selector, void *data); + + /** + * Called by the system when the Help->Usage menu command is selected + * @param sender the sender object + * @param selector message type and id + * @param data event related data + * @return + */ + long onHelpUsage(FXObject *sender, FXSelector selector, void *data); + + /** + * Called by the system when the Help->Rules menu command is selected + * @param sender the sender object + * @param selector message type and id + * @param data event related data + * @return + */ + long onHelpRules(FXObject *sender, FXSelector selector, void *data); + protected: /** * Constructor */ GUI() {} + + + /** + * Put content of widgets into the L-system + */ + void widgetsToLsystem(); + + /** + * Put content of the L-system into widgets + */ + void lsystemToWidgets(); -private: // GUI widgets + FXMenuPane *_fileMenuPane; // File menu + FXMenuPane *_helpMenuPane; // Help menu + FXTextField *_axiomTextField; // Axiom FXText *_rulesText; // Rules FXRealSpinner *_angleRealSpinner; // Angle - FXSpinner *_iterationsSpinner; // Iterations + FXSpinner *_depthSpinner; // Depth FXRealSpinner *_diameterRealSpinner; // Diameter - FXRealSpinner *_diameterFactorRealSpinner; // Diameter factor //TODO: "diameter factor"? + FXRealSpinner *_diameterFactorRealSpinner; // Diameter factor + + FXMessageBox *_helpUsageMessageBox; // Usage help dialog + FXMessageBox *_helpRulesMessageBox; // Rules help dialog - LindenmayerSystem *_lsystem; // The Lindenmayer-system - LSystemParameters _lsystemParameters; // Saves/loads l-system parameters from file + LindenmayerSystem *_lsystem; // The Lindenmayer system generator + LSystemParameters _lsystemParameters; // Saver and loader for L-system parameters RenderingSurface *_renderingSurface; // The rendering surface };