@@ -172,9 +172,10 @@ class WXProfileFitting:public wxWindow
172
172
// WXPowderPattern
173
173
//
174
174
// //////////////////////////////////////////////////////////////////////
175
- static const long ID_POWDER_MENU_COMP_ADDBACKGD_BAYESIAN=WXCRYST_ID();
176
- static const long ID_POWDER_MENU_COMP_ADDBACKGD= WXCRYST_ID();
177
- static const long ID_POWDER_MENU_COMP_ADDCRYST= WXCRYST_ID();
175
+ static const long ID_POWDER_MENU_COMP_ADDBACKGD_BAYESIAN= WXCRYST_ID();
176
+ static const long ID_POWDER_MENU_COMP_ADDBACKGD= WXCRYST_ID();
177
+ static const long ID_POWDER_MENU_COMP_ADDCRYST= WXCRYST_ID();
178
+ static const long ID_POWDER_MENU_COMP_REMOVE= WXCRYST_ID();
178
179
static const long ID_POWDER_MENU_GRAPH= WXCRYST_ID();
179
180
static const long ID_POWDER_MENU_SAVETEXT= WXCRYST_ID();
180
181
static const long ID_POWDER_MENU_SIMULATE= WXCRYST_ID();
@@ -236,6 +237,7 @@ BEGIN_EVENT_TABLE(WXPowderPattern, wxWindow)
236
237
EVT_MENU (ID_POWDER_MENU_COMP_ADDBACKGD, WXPowderPattern::OnMenuAddCompBackgd)
237
238
EVT_MENU (ID_POWDER_MENU_COMP_ADDBACKGD_BAYESIAN, WXPowderPattern::OnMenuAddCompBackgdBayesian)
238
239
EVT_MENU (ID_POWDER_MENU_COMP_ADDCRYST, WXPowderPattern::OnMenuAddCompCryst)
240
+ EVT_MENU (ID_POWDER_MENU_COMP_REMOVE, WXPowderPattern::OnMenuRemoveComp)
239
241
EVT_MENU (ID_POWDER_MENU_SAVETEXT, WXPowderPattern::OnMenuSaveText)
240
242
EVT_MENU (ID_POWDER_MENU_SIMULATE, WXPowderPattern::OnMenuSimulate)
241
243
EVT_MENU (ID_POWDER_MENU_IMPORT_FULLPROF, WXPowderPattern::OnMenuImportPattern)
@@ -333,6 +335,8 @@ mChi2(0.0),mGoF(0.0),mRwp(0.0),mRp(0.0)
333
335
" Add user-supplied Background " );
334
336
mpMenuBar->AddMenuItem (ID_POWDERPATTERN_MENU_COMPONENTS,ID_POWDER_MENU_COMP_ADDCRYST,
335
337
" Add Crystalline Phase" );
338
+ mpMenuBar->AddMenuItem (ID_POWDERPATTERN_MENU_COMPONENTS,ID_POWDER_MENU_COMP_REMOVE,
339
+ " Remove background or crystalline phase" );
336
340
mpMenuBar->AddMenu (" Radiation" ,ID_POWDER_MENU_WAVELENGTH);
337
341
mpMenuBar->AddMenuItem (ID_POWDER_MENU_WAVELENGTH,
338
342
ID_POWDER_MENU_WAVELENGTH_NEUTRON,
@@ -729,6 +733,42 @@ void WXPowderPattern::OnMenuAddCompCryst(wxCommandEvent & WXUNUSED(event))
729
733
VFN_DEBUG_EXIT (" WXPowderPattern::OnMenuAddCompCryst()" ,10 )
730
734
}
731
735
736
+ void WXPowderPattern::OnMenuRemoveComp (wxCommandEvent & WXUNUSED (event))
737
+ {
738
+ VFN_DEBUG_ENTRY (" WXPowderPattern::OnMenuRemoveComp()" ,10 )
739
+ WXCrystValidateAllUserInput ();
740
+ // Update names
741
+ for (unsigned int i=0 ;i<this ->GetPowderPattern ().GetNbPowderPatternComponent ();i++)
742
+ {
743
+ PowderPatternComponent &comp=this ->GetPowderPattern ().GetPowderPatternComponent (i);
744
+ if (comp.GetClassName ()==" PowderPatternBackground" )
745
+ comp.SetName (" Background" );
746
+ else
747
+ {
748
+ PowderPatternDiffraction* pdiff=dynamic_cast <PowderPatternDiffraction*> (&comp);
749
+ if (pdiff) comp.SetName (" Crystal:" + pdiff->GetCrystal ().GetName ());
750
+ else cout<<" WXPowderPattern::OnMenuRemoveComp(): could not recognize:" <<comp.GetClassName ()<<" :" <<comp.GetName ()<<endl;
751
+ }
752
+ }
753
+ int choice;
754
+ PowderPatternComponent *comp= WXDialogChooseFromRegistry (this ->GetPowderPattern ().mPowderPatternComponentRegistry ,(wxWindow*)this ,
755
+ " Choose a component to remove:" ,choice);
756
+ if (0 ==comp)
757
+ {
758
+ VFN_DEBUG_EXIT (" WXPowderPattern::OnMenuRemoveComp(): Canceled" ,10 )
759
+ return ;
760
+ }
761
+ VFN_DEBUG_MESSAGE (" WXPowderPattern::OnMenuRemoveComp()" ,10 )
762
+ this ->GetPowderPattern ().RemovePowderPatternComponent (*comp);
763
+ VFN_DEBUG_MESSAGE (" WXPowderPattern::OnMenuRemoveComp()" ,10 )
764
+ if (mpGraph!=0 ) mpPowderPattern->Prepare ();// else this will be done when opening the graph
765
+ wxTheApp->GetTopWindow ()->Layout ();
766
+ wxTheApp->GetTopWindow ()->SendSizeEvent ();
767
+ this ->CrystUpdate ();
768
+ VFN_DEBUG_EXIT (" WXPowderPattern::OnMenuRemoveComp()" ,10 )
769
+ }
770
+
771
+
732
772
class WXPowderPatternGraphFrame :public wxFrame
733
773
{
734
774
public:
0 commit comments