#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 |