00001 #ifndef LIGHTDIALOG_H_ 00002 #define LIGHTDIALOG_H_ 00003 00004 #include <gtk/gtkwidget.h> 00005 #include <string> 00006 #include "radiant_i18n.h" 00007 #include "gtkutil/TextPanel.h" 00008 #include "gtkutil/LeftAlignedLabel.h" 00009 #include "math/Vector3.h" 00010 00011 namespace ui 00012 { 00013 00017 class LightDialog 00018 { 00019 // Main dialog widget 00020 GtkWidget* _widget; 00021 00022 // Color selection widget 00023 GtkColorSelection* _colorSelector; 00024 00025 // Intensity widget 00026 gtkutil::TextPanel _intensityEntry; 00027 00028 Vector3 _color; 00029 00030 std::string _intensity; 00031 00032 bool _aborted; 00033 00034 private: 00035 00036 // Widget construction 00037 GtkWidget* createColorSelector (); 00038 GtkWidget* createIntensity (); 00039 GtkWidget* createButtons (); 00040 00041 /* GTK CALLBACKS */ 00042 static gboolean _onDelete (GtkWidget* w, GdkEvent* e, LightDialog* self); 00043 static void _onOK (GtkWidget*, LightDialog*); 00044 static void _onCancel (GtkWidget*, LightDialog*); 00045 00046 Vector3 getNormalizedColor (); 00047 00048 public: 00049 00053 LightDialog (); 00054 00058 ~LightDialog (); 00059 00063 void show (); 00064 00069 Vector3 getColor (); 00070 00075 std::string getIntensity (); 00076 00080 bool isAborted (); 00081 }; 00082 } 00083 00084 #endif /*LIGHTDIALOG_H_*/