Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

MainFltkMenu.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *cr                                                                       
00003  *cr            (C) Copyright 1995-2008 The Board of Trustees of the           
00004  *cr                        University of Illinois                       
00005  *cr                         All Rights Reserved                        
00006  *cr                                                                   
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 *cachemode_menuitems;
00046   Fl_Menu_Item *rendermode_menuitems;
00047   Fl_Menu_Item *mouse_menuitems;
00048   Fl_Menu_Item *browserpopup_menuitems;
00049     
00050   // these are defined to overcome an Fltk limitation
00051   Fl_Menu_Item *axes_menuitems_storage;
00052   Fl_Menu_Item *backgroundmode_menuitems_storage;
00053   Fl_Menu_Item *stage_menuitems_storage;
00054   Fl_Menu_Item *stereo_menuitems_storage;
00055   Fl_Menu_Item *rendermode_menuitems_storage;
00056   Fl_Menu_Item *cachemode_menuitems_storage;
00057   Fl_Menu_Item *mouse_menuitems_storage;
00058         
00059   Fl_Slider *frameslider;
00060   Fl_Slider *speed;
00061   Fl_Int_Input *curframe;
00062   Fl_Check_Button *zoom;
00063   Fl_Choice *style;
00064 
00065   Fl_Counter *step;
00066   Fl_Button *forward, *reverse;
00067 
00068   void update_mousemode(Command *);
00069   void update_dispmode();
00070 
00072   static void vmd_main_window_cb(Fl_Widget *, void *);
00073 
00074   static void loadfile_cb(Fl_Widget *, void *);
00075   static void savefile_cb(Fl_Widget *, void *);
00076   static void frameslider_cb(Fl_Widget *, void *);
00077   static void zoom_cb(Fl_Widget *w, void *v);
00078 
00084   int get_selected_molecule();
00085 
00088   void update_menu_state(Fl_Menu_Item* mymenuitems, const MenuBehavior* mymenu_behavior);
00089   void update_gui_state();
00090   
00091 protected:
00092   int act_on_command(int, Command *);
00093 
00096   virtual void draw();  // override Fl_Window::draw()
00097 
00098 public:
00099   MainFltkMenu(VMDApp *);
00100   ~MainFltkMenu();
00101 };
00102 
00103 #endif
00104 

Generated on Mon Oct 6 01:26:17 2008 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002