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