added help button and dialog
[lsystem3d.git] / src / gui.h
CommitLineData
3025996b 1// Copyright (C) 2006 Erik Dahlberg
2//
891f5a54 3// This file is part of LSystem3D.
3025996b 4//
5// LSystem3D is free software; you can redistribute it and/or
6// modify it under the terms of the GNU General Public License
7// as published by the Free Software Foundation; either version 2
8// of the License, or (at your option) any later version.
9//
10// LSystem3D is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with LSystem3D; if not, write to the Free Software
17// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
20
21
22#ifndef GUI_H
23#define GUI_H
24
25#include "fx.h"
26
27#include "lindenmayersystem.h"
28#include "lsystemparameters.h"
29#include "renderingsurface.h"
30
31
32
33/**
34 * The GUI window
35 */
36class GUI : public FXMainWindow
37{
38 // macro to set up class declaration
39 FXDECLARE(GUI)
40
41public:
42
43 // message ID's
44 enum
45 {
46 ID_GENERATE = FXMainWindow::ID_LAST,
891f5a54 47 ID_HELP,
3025996b 48 ID_LAST
49 };
50
51 /**
52 * Constructor
53 * @param application the FOX application object
54 * @param renderingSurface the rendering surface
55 * @param lsystem the Lindenmayer-system
56 */
57 GUI(FXApp *application, RenderingSurface *renderingSurface, LindenmayerSystem *lsystem);
58
59 /**
60 * Create and initialize the window
61 */
62 void create();
63
64 /**
891f5a54 65 * Called by the system when the "Generate" button is pressed
3025996b 66 * @param sender the sender object
67 * @param selector message type and id
68 * @param data event related data
69 * @return
70 */
71 long onGenerateButtonPressed(FXObject *sender, FXSelector selector, void *data);
72
891f5a54 73 /**
74 * Called by the system when the "Help" button is pressed
75 * @param sender the sender object
76 * @param selector message type and id
77 * @param data event related data
78 * @return
79 */
80 long onHelpButtonPressed(FXObject *sender, FXSelector selector, void *data);
81
3025996b 82protected:
83
84 /**
85 * Constructor
86 */
87 GUI() {}
88
89private:
90
91 // GUI widgets
92
93 FXTextField *_axiomTextField; // Axiom
94 FXText *_rulesText; // Rules
95 FXRealSpinner *_angleRealSpinner; // Angle
891f5a54 96 FXSpinner *_depthSpinner; // Depth
3025996b 97
98 FXRealSpinner *_diameterRealSpinner; // Diameter
891f5a54 99 FXRealSpinner *_diameterFactorRealSpinner; // Diameter factor
100
101 FXMessageBox *_helpMessageBox; // Help dialog
3025996b 102
103
104 LindenmayerSystem *_lsystem; // The Lindenmayer-system
105 LSystemParameters _lsystemParameters; // Saves/loads l-system parameters from file
106 RenderingSurface *_renderingSurface; // The rendering surface
107};
108
109
110
111#endif