#include <PaletteTable.h>
Signals | |
| void | changed () |
Public Member Functions | |
| ColorPalette | palette () const |
| PaletteTable (QWidget *parent=0) | |
| void | setColorCount (int newNumber) |
| void | setColors (const ColorPalette &pal) |
| void | setConstant (bool c) |
| void | setValues (const ColorPalette &pal) |
| double | value (int i) const |
Protected Member Functions | |
| virtual void | resizeEvent (QResizeEvent *e) |
| SciFigs::PaletteTable::PaletteTable | ( | QWidget * | parent = 0 | ) |
References QGpGuiTools::setWidgetColor(), and TRACE.
:
QScrollArea(parent)
{
TRACE;
setWidgetColor(viewport(), Qt::gray);
setWidget(new QWidget(this) );
}
| void SciFigs::PaletteTable::changed | ( | ) | [signal] |
Referenced by setColorCount(), setColors(), and setValues().
| ColorPalette SciFigs::PaletteTable::palette | ( | ) | const |
References QGpGuiTools::ColorPalette::allocate(), QGpGuiTools::ColorPalette::setColor(), QGpGuiTools::ColorPalette::setUpperValue(), and TRACE.
Referenced by setConstant().
{
TRACE;
ColorPalette pal;
int n=_colors.count();
pal.allocate(n);
double val, lastVal=0;
bool ok;
pal.setColor(0, _colors.first()->color());
for(int i=1;i < n;i++ ) {
val=_values.at(i-1)->text().toDouble(&ok);
if( !ok) val=lastVal + 1;
pal.setUpperValue(i - 1, val);
pal.setColor(i, _colors.at(i)->color());
lastVal=val;
}
return pal;
}
| void SciFigs::PaletteTable::resizeEvent | ( | QResizeEvent * | e | ) | [protected, virtual] |
{
TRACE;
QScrollArea::resizeEvent(e);
int nCol=_colors.count();
int w=viewport() ->width();
if(w < 160) w=160;
widget() ->resize(w, nCol * 29 + 10);
nCol--;
for(int iCol=0;iCol < nCol;iCol++ ) {
_values.at(iCol) ->resize(w - 106, 23);
}
}
| void SciFigs::PaletteTable::setColorCount | ( | int | newNumber | ) |
References changed(), QGpGuiTools::ColorButton::color(), QGpGuiTools::ColorButton::setColor(), TRACE, and w.
Referenced by setColors(), and setValues().
{
TRACE;
if(newNumber < 2) newNumber=2;
int w=viewport() ->width();
if(w < 160) w=160;
widget() ->resize(w, 10 + newNumber * 29);
int colorNumber=_colors.count();
QLineEdit * lastEdit=0;
ColorButton * lastButton=0;
ColorButton * pb;
QLineEdit * le;
QString lastValue="0.0";
QColor lastColor=Qt::red;
if(colorNumber > 1) {
lastButton=_colors.last();
lastEdit=_values.last();
lastColor=lastButton->color();
lastValue=lastEdit->text();
} else {
//add first color to initialize widget list
pb=new ColorButton(widget());
pb->setGeometry(10, 10, 80, 23);
pb->setColor(Qt::red);
pb->setText( "1" );
connect(pb, SIGNAL(colorChanged(QColor)), this, SIGNAL(changed()) );
colorNumber=1;
lastButton=pb;
pb->show();
_colors.append(pb);
}
if(newNumber > colorNumber) {
// need to add (newNumber-colorNumber) colors (lineedit & pushbutton) to the viewport
for(int i=colorNumber;i < newNumber;i++ ) {
le=new QLineEdit(widget());
le->setAlignment(Qt::AlignRight);
le->setGeometry(96, i * 29 - 5, w - 106, 23);
le->setText(lastValue);
if(lastEdit) setTabOrder(lastEdit, le);
lastEdit=le;
connect(le, SIGNAL(textChanged( const QString& )), this, SIGNAL(changed()) );
le->show();
_values.append(le);
pb=new ColorButton(widget());
pb->setGeometry(10, 10 + i * 29, 80, 23);
pb->setColor(lastColor);
pb->setText(QString::number(i+1));
connect(pb, SIGNAL(colorChanged(QColor)), this, SIGNAL(changed()) );
setTabOrder(lastButton, pb);
lastButton=pb;
pb->show();
_colors.append(pb);
}
emit changed();
} else if(newNumber < colorNumber) {
// need to remove (colorNumber-newNumber) colors (lineedit & pushbutton) from the viewport
for(int i=colorNumber - 1;i >= newNumber;i-- ) {
delete _colors.at(i);
_colors.removeAt(i);
delete _values.at(i - 1);
_values.removeAt(i - 1);
}
_values.last()->setText(lastValue);
_colors.last()->setColor(lastColor);
emit changed();
}
}
| void SciFigs::PaletteTable::setColors | ( | const ColorPalette & | pal | ) |
References changed(), QGpGuiTools::ColorPalette::color(), QGpGuiTools::ColorPalette::count(), setColorCount(), and TRACE.
{
TRACE;
int ncolors=pal.count();
setColorCount(ncolors);
for(int i=0;i < ncolors;i++ )
_colors.at(i)->setColor(pal.color(i) );
emit changed();
}
| void SciFigs::PaletteTable::setConstant | ( | bool | c | ) |
Linked to properties: if c is true, the palette is the same for all palette widgets controled by this table. This is just a visual effect.
TODO: check whether it works.
References palette(), and QGpGuiTools::ColorPalette::setColor().
| void SciFigs::PaletteTable::setValues | ( | const ColorPalette & | pal | ) |
References changed(), QGpGuiTools::ColorPalette::count(), setColorCount(), TRACE, and QGpGuiTools::ColorPalette::upperValue().
{
TRACE;
int ncolors=pal.count();
setColorCount(ncolors);
for(int i=ncolors - 2;i >=0;i-- )
_values.at(i)->setText(QString::number(pal.upperValue(i) ));
emit changed();
}
| double SciFigs::PaletteTable::value | ( | int | i | ) | const |