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

wxPowderPattern.h

00001 /*
00002 * LibCryst++ : a Crystallographic computing library in C++
00003 *
00004 *  (c) 2000 Vincent FAVRE-NICOLIN
00005 *           Laboratoire de Cristallographie
00006 *           24, quai Ernest-Ansermet, CH-1211 Geneva 4, Switzerland
00007 *  Contact: Vincent.Favre-Nicolin@cryst.unige.ch
00008 *           Radovan.Cerny@cryst.unige.ch
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 //:TODO:
00111 #if 0 
00112 // Class to display one Background point for WXPowderPatternBackgound
00113 // It is just a RefPar, with a field inserted for the position of the Background point.
00114 // Only the value of the intensity is refinable.
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 } //namespace
00168 
00169 #endif //_VFN_WX_POWDERPATTERN_H_

Generated on Wed Nov 14 19:48:36 2001 for ObjCryst++ by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001