X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fgui.h;h=6f809ecfcf60a80dd602f8c12767daa6ca34f280;hb=3ef0adbfd26e9398df310dc0a1afd93a90f63855;hp=b5664c89c15fb0ed80060fbd0d3e39eea874d086;hpb=3025996ba17bf59f5bc64def5d55b95c4d732a8a;p=lsystem3d.git diff --git a/src/gui.h b/src/gui.h index b5664c8..6f809ec 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,31 +48,89 @@ 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: /** @@ -76,21 +138,33 @@ protected: */ GUI() {} -private: + + /** + * Load L-system from file and sync with GUI + * @param filename path of the L-system file + */ + void loadLSystem(string filename); + // 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 };