Go to the documentation of this file.00001 #ifndef _OPTION_H_
00002 #define _OPTION_H_
00003
00004 #include <string>
00005 #include "worldfile.hh"
00006
00007 #include <FL/Fl_Menu_Bar.H>
00008 #include <FL/Fl_Menu_Item.H>
00009
00010 namespace Stg {
00011 class World;
00019 class Option {
00020 private:
00021 friend bool compare( const Option* lhs, const Option* rhs );
00022
00023 std::string optName;
00024 bool value;
00026 std::string wf_token;
00027 std::string shortcut;
00028 Fl_Menu_* menu;
00029 int menuIndex;
00030 Fl_Callback* menuCb;
00031 Fl_Widget* menuCbWidget;
00032 World* _world;
00033
00034 public:
00035 Option( const std::string& n,
00036 const std::string& tok,
00037 const std::string& key,
00038 bool v,
00039 World *world );
00040
00041 const std::string name() const { return optName; }
00042 inline bool isEnabled() const { return value; }
00043 inline bool val() const { return value; }
00044 inline operator bool() { return val(); }
00045 inline bool operator<( const Option& rhs ) const
00046 {
00047 puts( "comparing" );
00048 return optName<rhs.optName;
00049 }
00050 void set( bool val );
00051 void invert() { set( !value ); }
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 void createMenuItem( Fl_Menu_Bar* menu, std::string path );
00062 void menuCallback( Fl_Callback* cb, Fl_Widget* w );
00063 static void toggleCb( Fl_Widget* w, void* p );
00064 void Load( Worldfile* wf, int section );
00065 void Save( Worldfile* wf, int section );
00066
00067 std::string htname;
00068 };
00069 }
00070
00071 #endif