18 #include "ObjCryst/wxCryst/wxTrackerGraph.h"
23 WXTrackerGraph::WXTrackerGraph(wxFrame *frame, MainTracker *tracker):
24 WXMultiGraph(frame),mpMainTracker(tracker)
26 this->UpdateDisplay();
29 WXTrackerGraph::~WXTrackerGraph()
31 if(mpMainTracker!=0) mpMainTracker->WXNotifyDelete();
34 void WXTrackerGraph::UpdateDisplay()
36 VFN_DEBUG_ENTRY(
"WXTrackerGraph::UpdateDisplay()",4)
37 const std::set<Tracker*> *pList=&(mpMainTracker->GetTrackerList());
38 std::set<Tracker*>::const_iterator pos;
41 if(mClockGraphList<mpMainTracker->GetClockTrackerList())
43 std::map<Tracker*,long>::iterator pos1;
44 std::map<Tracker*,long>
id=mvId;
45 for(pos1=
id.begin();pos1!=
id.end();pos1++)
46 if(pList->find(pos1->first)==pList->end())
48 this->DeleteGraph(pos1->second);
49 mClockGraphList.Click();
52 unsigned long nbxMax=0;
54 if( (mClockGraphList <mpMainTracker->GetClockTrackerList())
55 ||(mClockGraphValues<mpMainTracker->GetClockValues()))
57 for(pos=pList->begin();pos!=pList->end();pos++)
59 if(mvId.find(*pos)==mvId.end())
61 mvId[*pos]=this->AddGraph((*pos)->GetName());
62 mClockGraphList.Click();
64 const unsigned long nb=(*pos)->GetValues().size();
65 std::map<long,REAL>::const_iterator pos2;
66 valarray<float> vx(nb),vy(nb);
69 for(pos2=(*pos)->GetValues().begin();pos2!=(*pos)->GetValues().end();pos2++)
73 if(pos2->second!=0) allnull=
false;
78 this->SetGraphData(mvId[*pos],vx,vy);
79 mClockGraphValues.Click();
80 if(nbxMax<vx.size()) nbxMax=vx.size();
83 if(nbxMax==1) this->AutoScale(-1);
84 else this->AutoScale(-1,
false,
true,
false,
false);
86 this->WXMultiGraph::UpdateDisplay();
87 VFN_DEBUG_EXIT(
"WXTrackerGraph::UpdateDisplay()",4)
90 void WXTrackerGraph::DeleteGraph(
const unsigned long id)
93 std::map<Tracker*,long>::iterator pos;
94 for(pos=mvId.begin();pos!=mvId.end();pos++)
96 if((
long)
id==pos->second)
102 this->WXMultiGraph::DeleteGraph(
id);
The namespace which includes all objects (crystallographic and algorithmic) in ObjCryst++.