00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef MAINFLTKMENU
00011 #define MAINFLTKMENU
00012
00013 #include "FL/Fl_Menu_Item.H"
00014 #include "VMDFltkMenu.h"
00015 #include "ResizeArray.h"
00016
00017 class MolBrowser;
00018 class Fl_Menu_Bar;
00019 class Fl_Slider;
00020 class Fl_Int_Input;
00021 class Fl_Check_Button;
00022 class Fl_Counter;
00023 class Fl_Button;
00024
00025 typedef enum {MENU_ALWAYS_ON=0, MENU_NEED_SEL=1, MENU_NEED_UNIQUE_SEL=3} MenuBehavior;
00026
00029 class MainFltkMenu: public VMDFltkMenu {
00030 friend class MolBrowser;
00031
00032 private:
00033 Fl_Menu_Bar *menubar;
00034 MolBrowser *browser;
00035
00036 enum {UNDEFINED, NO_SELECTED_MOL, ONE_SELECTED_MOL, MANY_SELECTED_MOL} guistate;
00037
00038 Fl_Menu_Item *file_menuitems;
00039 Fl_Menu_Item *molecule_menuitems;
00040 Fl_Menu_Item *display_menuitems;
00041 Fl_Menu_Item *axes_menuitems;
00042 Fl_Menu_Item *backgroundmode_menuitems;
00043 Fl_Menu_Item *stage_menuitems;
00044 Fl_Menu_Item *stereo_menuitems;
00045 Fl_Menu_Item *stereoswap_menuitems;
00046 Fl_Menu_Item *cachemode_menuitems;
00047 Fl_Menu_Item *rendermode_menuitems;
00048 Fl_Menu_Item *mouse_menuitems;
00049 Fl_Menu_Item *browserpopup_menuitems;
00050
00051
00052 Fl_Menu_Item *axes_menuitems_storage;
00053 Fl_Menu_Item *backgroundmode_menuitems_storage;
00054 Fl_Menu_Item *stage_menuitems_storage;
00055 Fl_Menu_Item *stereo_menuitems_storage;
00056 Fl_Menu_Item *stereoswap_menuitems_storage;
00057 Fl_Menu_Item *rendermode_menuitems_storage;
00058 Fl_Menu_Item *cachemode_menuitems_storage;
00059 Fl_Menu_Item *mouse_menuitems_storage;
00060
00061 Fl_Slider *frameslider;
00062 Fl_Slider *speed;
00063 Fl_Int_Input *curframe;
00064 Fl_Check_Button *zoom;
00065 Fl_Choice *style;
00066
00067 Fl_Counter *step;
00068 Fl_Button *forward, *reverse;
00069
00070 void update_mousemode(Command *);
00071 void update_dispmode();
00072
00074 static void vmd_main_window_cb(Fl_Widget *, void *);
00075
00076 static void loadfile_cb(Fl_Widget *, void *);
00077 static void savefile_cb(Fl_Widget *, void *);
00078 static void frameslider_cb(Fl_Widget *, void *);
00079 static void zoom_cb(Fl_Widget *w, void *v);
00080
00086 int get_selected_molecule();
00087
00090 void update_menu_state(Fl_Menu_Item* mymenuitems, const MenuBehavior* mymenu_behavior);
00091 void update_gui_state();
00092
00093 protected:
00094 int act_on_command(int, Command *);
00095
00098 virtual void draw();
00099
00100 public:
00101 MainFltkMenu(VMDApp *);
00102 ~MainFltkMenu();
00103 };
00104
00105 #endif
00106