00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _VFN_WX_POWDERPATTERN_H_
00013 #define _VFN_WX_POWDERPATTERN_H_
00014
00015 #include "wxCryst/wxRefinableObj.h"
00016 #include "ObjCryst/PowderPattern.h"
00017 namespace ObjCryst
00018 {
00020 class WXRadiation: public WXCrystObjBasic
00021 {
00022 public:
00023 WXRadiation(wxWindow *parent, Radiation*);
00024 virtual void CrystUpdate();
00025 private:
00026 Radiation *mpRadiation;
00027 WXFieldOption *mpFieldRadType;
00028 WXFieldRefPar *mpFieldWavelength;
00029 wxBoxSizer *mpSizer;
00030 DECLARE_EVENT_TABLE()
00031 };
00032 class WXPowderPatternGraph;
00033
00035 class WXPowderPattern: public WXRefinableObj
00036 {
00037 public:
00038 WXPowderPattern(wxWindow *parent, PowderPattern*);
00039 virtual void CrystUpdate();
00040 void OnMenuAddCompBackgd(wxCommandEvent & WXUNUSED(event));
00041 void OnMenuAddCompCryst(wxCommandEvent & WXUNUSED(event));
00042 void OnMenuShowGraph(wxCommandEvent & WXUNUSED(event));
00043 void OnMenuSaveText(wxCommandEvent & WXUNUSED(event));
00044 void OnMenuSimulate(wxCommandEvent & WXUNUSED(event));
00045 void OnMenuImportFullProf(wxCommandEvent & WXUNUSED(event));
00046 void OnMenuImportPSI(wxCommandEvent & WXUNUSED(event));
00047 void OnMenuImportILL(wxCommandEvent & WXUNUSED(event));
00048 void OnMenuImportXdd(wxCommandEvent & WXUNUSED(event));
00049 void OnMenuImportCPI(wxCommandEvent & WXUNUSED(event));
00050 void OnMenuImport2ThetaObsSigma(wxCommandEvent & WXUNUSED(event));
00051 void OnMenuImport2ThetaObs(wxCommandEvent & WXUNUSED(event));
00052 void OnMenuFitScaleForR(wxCommandEvent & WXUNUSED(event));
00053 void OnMenuFitScaleForRw(wxCommandEvent & WXUNUSED(event));
00054 void OnMenuSavePattern(wxCommandEvent & WXUNUSED(event));
00055 void OnMenuSetWavelength(wxCommandEvent &event);
00056 void OnMenuAdd2ThetaExclude(wxCommandEvent & WXUNUSED(event));
00057 void NotifyDeleteGraph();
00058 private:
00059 PowderPattern *mpPowderPattern;
00060 WXRegistry<PowderPatternComponent> *mpWXComponent;
00061 WXPowderPatternGraph *mpGraph;
00062 DECLARE_EVENT_TABLE()
00063 };
00070 class WXPowderPatternGraph: public wxWindow
00071 {
00072 public:
00074 WXPowderPatternGraph(wxFrame *frame, WXPowderPattern* parent);
00075 ~WXPowderPatternGraph();
00077 void OnPaint(wxPaintEvent& WXUNUSED(event));
00079 void OnMouse(wxMouseEvent &event);
00082 void OnUpdate(wxCommandEvent & WXUNUSED(event));
00084 void SetPattern(const CrystVector_double &obs,
00085 const CrystVector_double &calc,
00086 const double tthetaMin,const double tthetaStep);
00088 void OnRedrawNewPattern(wxUpdateUIEvent& WXUNUSED(event));
00089 private:
00091 void ResetAxisLimits();
00092 WXPowderPattern *mpPattern;
00093 CrystVector_double mObs,mCalc,m2theta;
00094 const long mMargin;
00095 const double mDiffPercentShift;
00096 double mMaxIntensity,mMinIntensity,mMin2Theta,mMax2Theta;
00097 wxFrame *mpParentFrame;
00098 bool mCalcPatternIsLocked;
00100 wxMenu* mpPopUpMenu;
00102 bool mIsDragging;
00104 double mDragging2Theta0,mDraggingIntensity0;
00106 mutable long mFirst,mLast;
00107 DECLARE_EVENT_TABLE()
00108 };
00109
00110
00111 #if 0
00112
00113
00114
00115 class WXFieldRefParBackground:public WXFieldRefPar
00116 {
00117 public:
00118 WXFieldRefParBackground(wxWindow *parent,RefinablePar *refpar,
00119 CrystVector_double *backgd2Theta, const int numPt);
00120 private:
00121 wxTextCtrl *mpField2Theta;
00123 CrystVector_double* mpBackgd2Theta;
00124 const int mBackgdPointNum;
00125 }
00126 #endif
00127
00135 class WXPowderPatternBackground: public WXRefinableObj
00136 {
00137 public:
00138 WXPowderPatternBackground(wxWindow *parent, PowderPatternBackground*);
00139 void OnMenuImportUserBackground(wxCommandEvent & WXUNUSED(event));
00140 private:
00141 PowderPatternBackground *mpPowderPatternBackground;
00142 DECLARE_EVENT_TABLE()
00143 };
00144
00150 class WXPowderPatternDiffraction: public WXRefinableObj
00151 {
00152 public:
00153 WXPowderPatternDiffraction(wxWindow *parent, PowderPatternDiffraction*);
00154 void CrystUpdate();
00155 void OnChangeCrystal(wxCommandEvent & WXUNUSED(event));
00156 private:
00157 PowderPatternDiffraction *mpPowderPatternDiffraction;
00158 WXFieldChoice* mpFieldCrystal;
00159 WXFieldRefPar* mpFieldCagliotiU;
00160 WXFieldRefPar* mpFieldCagliotiV;
00161 WXFieldRefPar* mpFieldCagliotiW;
00162 WXFieldRefPar* mpFieldEta0;
00163 WXFieldRefPar* mpFieldEta1;
00164 DECLARE_EVENT_TABLE()
00165 };
00166
00167 }
00168
00169 #endif