1 #include "PlotCtrl.h"
2 
PlotStyleDlg(PlotCtrl & parent,int index)3 PlotStyleDlg::PlotStyleDlg(PlotCtrl& parent,int index):p(parent){
4 	CtrlLayout(*this);
5 	for(int i=0; i<p.data.GetCount(); i++){
6 		series.Add(p.data[i].GetTitle());
7 	}
8 	series.SetIndex(index);
9 
10 	for(int i = 0; i < PlotSymbol::GetCount(); i++){
11 		symbol.Add(PlotSymbol::TypeName(i));
12 	}
13 	symbol.SetIndex(0);
14 	UpdateFields();
15 	series<<=THISBACK(UpdateFields);
16 	symbol<<=THISBACK(Change);
17 	scol<<=THISBACK(Change);
18 	frame<<=THISBACK(Change);
19 	sthick<<=THISBACK(Change);
20 	sizex<<=THISBACK(Change);
21 	sizey<<=THISBACK(Change);
22 	col<<=THISBACK(Change);
23 	vis<<=THISBACK(Change);
24 	dash<<=THISBACK(Change);
25 	thick<<=THISBACK(Change);
26 	rename<<=THISBACK(Rename);
27 	btn<<=THISBACK(Close);
28 	series.SetFocus();
29 }
Rename()30 void PlotStyleDlg::Rename(){
31 	int idx=series.GetIndex();
32 	RenameDlg(p,idx).Run();
33 	series.SetValue(idx,p.data[idx].GetTitle());
34 }
Change()35 void PlotStyleDlg::Change(){
36 	p.data[series.GetIndex()].SetColor(Color(~col))
37 	                          .Visible(~vis)
38 	                          .SetDash(~dash)
39 	                          .SetThickness(~thick)
40 	                          .SetSymbol(~symbol,Sizef(~sizex,~sizey),Color(~scol),Color(~frame),~sthick);
41 	//DUMP(~vis);DUMP(Color(~scol));DUMP(Color(~frame));DUMP(~sthick);
42 	p.SetModify();
43 	p.Refresh();
44 	p.Sync();
45 }
46 
UpdateFields()47 void PlotStyleDlg::UpdateFields(){
48 	PlotData& sel=p.data[series.GetIndex()];
49 	PlotSymbol* symb=sel.GetSymbol();
50 	symbol.SetIndex(symb->GetType());
51 	scol<<=Color(symb->GetColor());
52 	frame<<=Color(symb->GetFrameColor());
53 	sthick<<=symb->GetThickness()>0?symb->GetThickness():1;
54 	sizex<<=symb->GetSize().cx;
55 	sizey<<=symb->GetSize().cy;
56 	col<<=Color(sel.GetColor());
57 	vis<<=sel.IsVisible();
58 	dash<<=sel.GetDash();
59 	thick<<=sel.GetThickness()>0?sel.GetThickness():1;
60 }
61 
RenameDlg(PlotCtrl & plot,int index)62 PlotStyleDlg::RenameDlg::RenameDlg(PlotCtrl& plot,int index):p(plot),idx(index){
63 	CtrlLayout(*this);
64 	name<<=p.data[idx].GetTitle();
65 	name.SetSelection();
66 	name<<=THISBACK(Update);
67 	ok<<=THISBACK(Close);
68 }
69 
Update()70 void PlotStyleDlg::RenameDlg::Update(){
71 	p.data[idx].SetTitle(~name);
72 	p.SetModify();
73 	p.Refresh();
74 }
75 
76