1 /***************************************************************************
2 * *
3 * copyright : (C) 2007 The University of Toronto *
4 * netterfield@astro.utoronto.ca *
5 * *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
10 * *
11 ***************************************************************************/
12
13 #include "dialogdefaults.h"
14 #include "datasource.h"
15 #include "settings.h"
16
17 #include <QPen>
18
19
20 namespace Kst {
21
dialogDefaults()22 QSettings& dialogDefaults()
23 {
24 static QSettings& settingsObject = createSettings("dialog");
25 return settingsObject;
26 }
27
28
setDataVectorDefaults(DataVectorPtr V)29 void setDataVectorDefaults(DataVectorPtr V) {
30 dialogDefaults().setValue("vector/datasource", V->filename());
31 }
32
setGenVectorDefaults(GeneratedVectorPtr V)33 void setGenVectorDefaults(GeneratedVectorPtr V) {
34 dialogDefaults().setValue("genVector/first", V->value(V->value(0)));
35 dialogDefaults().setValue("genVector/last", V->value(V->length()-1));
36 dialogDefaults().setValue("genVector/min", V->min());
37 dialogDefaults().setValue("genVector/max", V->max());
38 dialogDefaults().setValue("genVector/length", V->length());
39
40 }
41
setDataMatrixDefaults(DataMatrixPtr M)42 void setDataMatrixDefaults(DataMatrixPtr M) {
43 //qDebug() << "M...filename: " << M->dataSource()->fileName();
44
45 // FIXME: data source filename isn't valid...
46 dialogDefaults().setValue("matrix/datasource",M->dataSource()->fileName());
47
48 dialogDefaults().setValue("matrix/xCountFromEnd",M->xCountFromEnd());
49 dialogDefaults().setValue("matrix/yCountFromEnd",M->yCountFromEnd());
50 dialogDefaults().setValue("matrix/xReadToEnd",M->xReadToEnd());
51 dialogDefaults().setValue("matrix/yReadToEnd",M->yReadToEnd());
52
53 dialogDefaults().setValue("matrix/xNumSteps",M->xNumSteps());
54 dialogDefaults().setValue("matrix/yNumSteps",M->yNumSteps());
55 dialogDefaults().setValue("matrix/reqXStart",M->reqXStart());
56 dialogDefaults().setValue("matrix/reqYStart",M->reqYStart());
57
58 dialogDefaults().setValue("matrix/frame",M->frame());
59 }
60
setHistogramDefaults(HistogramPtr H)61 void setHistogramDefaults(HistogramPtr H) {
62 dialogDefaults().setValue("histogram/realTimeAutoBin", H->realTimeAutoBin());
63 dialogDefaults().setValue("histogram/normalizationType",H->normalizationType());
64 }
65
saveDialogDefaultsLockPosToData(const QString & group_name,const bool lockPosToData)66 void saveDialogDefaultsLockPosToData(const QString &group_name, const bool lockPosToData) {
67 dialogDefaults().setValue(group_name+"/lockPosToData", QVariant(lockPosToData).toString());
68 }
69
70
saveDialogDefaultsBrush(const QString & group_name,const QBrush & b)71 void saveDialogDefaultsBrush(const QString &group_name, const QBrush &b) {
72 // Save the brush
73 dialogDefaults().setValue(group_name+"/fillBrushColor", QVariant(b.color()).toString());
74 dialogDefaults().setValue(group_name+"/fillBrushStyle", QVariant((int)b.style()).toString());
75 dialogDefaults().setValue(group_name+"/fillBrushUseGradient", QVariant(bool(b.gradient())).toString());
76 if (b.gradient()) {
77 QString stopList;
78 foreach(const QGradientStop &stop, b.gradient()->stops()) {
79 qreal point = (qreal)stop.first;
80 QColor color = (QColor)stop.second;
81
82 stopList += QString::number(point);
83 stopList += ',';
84 stopList += color.name();
85 stopList += ',';
86 }
87 dialogDefaults().setValue(group_name+"/fillBrushGradient", stopList);
88 }
89 }
90
saveDialogDefaultsPen(const QString & group_name,const QPen & p)91 void saveDialogDefaultsPen(const QString &group_name, const QPen &p) {
92 // Save stroke...
93 QBrush b = p.brush();
94
95 dialogDefaults().setValue(group_name+"/strokeStyle", QVariant((int)p.style()).toString());
96 dialogDefaults().setValue(group_name+"/strokeWidth", p.widthF());
97 dialogDefaults().setValue(group_name+"/strokeJoinStyle", QVariant(p.joinStyle()).toString());
98 dialogDefaults().setValue(group_name+"/strokeCapStyle", QVariant(p.capStyle()).toString());
99 dialogDefaults().setValue(group_name+"/strokeBrushColor", QVariant(b.color()).toString());
100 dialogDefaults().setValue(group_name+"/strokeBrushStyle", QVariant((int)b.style()).toString());
101
102 }
103
104
dialogDefaultsBrush(const QString & group_name,bool default_no_fill)105 QBrush dialogDefaultsBrush(const QString &group_name, bool default_no_fill) {
106 //set the brush
107 QBrush brush;
108 bool useGradient = dialogDefaults().value(group_name +"/fillBrushUseGradient", false).toBool();
109 if (useGradient) {
110 QStringList stopInfo =
111 dialogDefaults().value(group_name +"/fillBrushGradient", "0,#000000,1,#ffffff,").
112 toString().split(',', QString::SkipEmptyParts);
113 QLinearGradient gradient(1,0,0,0);
114 gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
115 for (int i = 0; i < stopInfo.size(); i+=2) {
116 gradient.setColorAt(stopInfo.at(i).toDouble(), QColor(stopInfo.at(i+1)));
117 }
118 brush = QBrush(gradient);
119 } else {
120 QColor color = dialogDefaults().value(group_name +"/fillBrushColor",QColor(Qt::white)).value<QColor>();
121 brush.setColor(color);
122 if (default_no_fill) {
123 brush.setStyle((Qt::BrushStyle)dialogDefaults().value(group_name +"/fillBrushStyle",0).toInt());
124 } else {
125 brush.setStyle((Qt::BrushStyle)dialogDefaults().value(group_name +"/fillBrushStyle",1).toInt());
126 }
127 }
128
129 return brush;
130 }
131
dialogDefaultsPen(const QString & group_name,bool default_no_pen)132 QPen dialogDefaultsPen(const QString &group_name, bool default_no_pen) {
133 QPen pen;
134 QColor color;
135 QBrush brush;
136 if (default_no_pen) {
137 pen.setStyle((Qt::PenStyle)dialogDefaults().value(group_name +"/strokeStyle", 0).toInt());
138 } else {
139 pen.setStyle((Qt::PenStyle)dialogDefaults().value(group_name +"/strokeStyle", 1).toInt());
140 }
141 pen.setWidthF(dialogDefaults().value(group_name +"/strokeWidth",0).toDouble());
142 pen.setJoinStyle((Qt::PenJoinStyle)dialogDefaults().value(group_name +"/strokeJoinStyle",64).toInt());
143 pen.setCapStyle((Qt::PenCapStyle)dialogDefaults().value(group_name +"/strokeCapStyle",16).toInt());
144 color = dialogDefaults().value(group_name +"/strokeBrushColor",QColor(Qt::black)).value<QColor>();
145 brush.setColor(color);
146 brush.setStyle((Qt::BrushStyle)dialogDefaults().value(group_name +"/strokeBrushStyle",1).toInt());
147 pen.setBrush(brush);
148
149 return pen;
150 }
151
dialogDefaultsLockPosToData(const QString & group_name)152 bool dialogDefaultsLockPosToData(const QString &group_name) {
153 return dialogDefaults().value(group_name+"/lockPosToData",false).toBool();
154 }
155 }
156