00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef graphicsmenu_h
00022 #define graphicsmenu_h
00023 #include <FL/Fl.H>
00024 #include <FL/Fl_Window.H>
00025 #include <FL/Fl_Box.H>
00026 #include <FL/Fl_Choice.H>
00027 #include <FL/Fl_Hold_Browser.H>
00028 #include <FL/Fl_Input.H>
00029 #include <FL/Fl_Check_Button.H>
00030 #include <FL/Fl_Button.H>
00031 #include "VMDFltkMenu.h"
00032 #include "NameList.h"
00033
00034 class GraphicsFltkRep;
00035 class SelectionBuilder;
00036 class Fl_Tabs;
00037 class Fl_Counter;
00038 class PBCControls;
00039 class isosurface_cbdata;
00040 class orbital_cbdata;
00041 class quicksurf_cbdata;
00042
00045 class GraphicsFltkMenu : public VMDFltkMenu {
00046 public:
00047 GraphicsFltkMenu(VMDApp *);
00048 ~GraphicsFltkMenu();
00049
00050 int selectmol(int molno);
00051
00052
00053 VMDApp *app;
00054 int molindex;
00055 int repindex;
00056
00057 void update_molchooser();
00058
00059 void update_repbrowser(bool remember_position=false);
00060 void update_rep();
00061 void update_repindex();
00062 void update_pbc();
00063 void set_pbc(int, int);
00064 void reset_rep();
00065
00069 void update_selection(const char *txt);
00070 const char *selectiontext() const;
00071
00073 int auto_update() const;
00074
00076 void set_autoupdate(int);
00077
00079 void set_colorupdate(int);
00080
00082 void use_colorscale_minmax();
00083
00085 void use_colorscale_auto();
00086
00087 char *create_repcmd();
00088 char *create_colorcmd();
00089 char *create_selcmd();
00090 char *create_matcmd();
00091 char *create_multiframecmd();
00092
00093 void colindex_visible();
00094 void volindex_visible();
00095 void volindex_update();
00096 void show_repcontrols();
00097
00098 void init_colorchooser();
00099 void init_materialchooser();
00100 void init_stylechooser();
00101
00102 SelectionBuilder *selbuilder;
00103
00104 private:
00105 static void molchooser_cb(Fl_Widget *, void *);
00106 static void repbrowser_cb(Fl_Widget *, void *);
00107 static void repcontrol_cb(Fl_Widget *, void *);
00108 static void colorchooser_cb(Fl_Widget *, void *);
00109 static void materialchooser_cb(Fl_Widget *, void *);
00110 static void selectioninput_cb(Fl_Widget *, void *);
00111 static void createnew_cb(Fl_Widget *, void *);
00112 static void deleterep_cb(Fl_Widget *, void *);
00113 static void apply_cb(Fl_Widget *, void *);
00114 static void default_cb(Fl_Widget *, void *);
00115 static void smooth_cb(Fl_Widget *, void *);
00116 static void pbc_cb(Fl_Widget *, void *);
00117 static void multiframeinput_cb(Fl_Widget *, void *);
00118 static void isosurfacerepcontrol_cb(Fl_Widget *, void *);
00119 static void orbitalrepcontrol_cb(Fl_Widget *, void *);
00120 static void quicksurfrepcontrol_cb(Fl_Widget *, void *);
00121
00122 public:
00123 NameList<GraphicsFltkRep *> repcontrols;
00124
00125 private:
00126 ResizeArray<int> molactiverep;
00127 int lastmolindex;
00128
00129 char colorcmdbuf[50];
00130
00131 Fl_Box *repframe;
00132 Fl_Choice *molchooser;
00133 Fl_Browser *repbrowser;
00134 Fl_Choice *colorchooser;
00135 Fl_Choice *materialchooser;
00136 Fl_Choice *stylechooser;
00137 Fl_Input *selectioninput;
00138 Fl_Choice *colindexchooser;
00139 Fl_Choice *volindexchooser;
00140 Fl_Check_Button *applyautobutton;
00141 Fl_Button *applybutton;
00142 Fl_Button *createnewbutton;
00143 Fl_Button *deleterepbutton;
00144 Fl_Button *defaultbutton;
00145 Fl_Button *autoupdatebutton;
00146 Fl_Button *colorupdatebutton;
00147 Fl_Counter *smoothcounter;
00148 PBCControls *pbcControls;
00149 Fl_Input *colorscale_min, *colorscale_max;
00150 Fl_Input *multiframeinput;
00151
00152 isosurface_cbdata * isosurfcbdata;
00153 orbital_cbdata * orbcbdata;
00154 quicksurf_cbdata * qsurfcbdata;
00155
00156 protected:
00157 int act_on_command(int, Command *);
00158 };
00159 #endif