@@ -172,9 +172,10 @@ class WXProfileFitting:public wxWindow
172172// WXPowderPattern
173173//
174174// //////////////////////////////////////////////////////////////////////
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();
178179static const long ID_POWDER_MENU_GRAPH= WXCRYST_ID();
179180static const long ID_POWDER_MENU_SAVETEXT= WXCRYST_ID();
180181static const long ID_POWDER_MENU_SIMULATE= WXCRYST_ID();
@@ -236,6 +237,7 @@ BEGIN_EVENT_TABLE(WXPowderPattern, wxWindow)
236237 EVT_MENU (ID_POWDER_MENU_COMP_ADDBACKGD, WXPowderPattern::OnMenuAddCompBackgd)
237238 EVT_MENU (ID_POWDER_MENU_COMP_ADDBACKGD_BAYESIAN, WXPowderPattern::OnMenuAddCompBackgdBayesian)
238239 EVT_MENU (ID_POWDER_MENU_COMP_ADDCRYST, WXPowderPattern::OnMenuAddCompCryst)
240+ EVT_MENU (ID_POWDER_MENU_COMP_REMOVE, WXPowderPattern::OnMenuRemoveComp)
239241 EVT_MENU (ID_POWDER_MENU_SAVETEXT, WXPowderPattern::OnMenuSaveText)
240242 EVT_MENU (ID_POWDER_MENU_SIMULATE, WXPowderPattern::OnMenuSimulate)
241243 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)
333335 " Add user-supplied Background " );
334336 mpMenuBar->AddMenuItem (ID_POWDERPATTERN_MENU_COMPONENTS,ID_POWDER_MENU_COMP_ADDCRYST,
335337 " Add Crystalline Phase" );
338+ mpMenuBar->AddMenuItem (ID_POWDERPATTERN_MENU_COMPONENTS,ID_POWDER_MENU_COMP_REMOVE,
339+ " Remove background or crystalline phase" );
336340 mpMenuBar->AddMenu (" Radiation" ,ID_POWDER_MENU_WAVELENGTH);
337341 mpMenuBar->AddMenuItem (ID_POWDER_MENU_WAVELENGTH,
338342 ID_POWDER_MENU_WAVELENGTH_NEUTRON,
@@ -729,6 +733,42 @@ void WXPowderPattern::OnMenuAddCompCryst(wxCommandEvent & WXUNUSED(event))
729733 VFN_DEBUG_EXIT (" WXPowderPattern::OnMenuAddCompCryst()" ,10 )
730734}
731735
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+
732772class WXPowderPatternGraphFrame :public wxFrame
733773{
734774public:
0 commit comments