diff options
Diffstat (limited to 'tqtinterface/qt4/src/dialogs/tqcolordialog.cpp')
-rw-r--r-- | tqtinterface/qt4/src/dialogs/tqcolordialog.cpp | 1665 |
1 files changed, 0 insertions, 1665 deletions
diff --git a/tqtinterface/qt4/src/dialogs/tqcolordialog.cpp b/tqtinterface/qt4/src/dialogs/tqcolordialog.cpp deleted file mode 100644 index d99c63f..0000000 --- a/tqtinterface/qt4/src/dialogs/tqcolordialog.cpp +++ /dev/null @@ -1,1665 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQColorDialog class -** -** Created : 990222 -** -** Copyright (C) 1999-2008 Trolltech ASA. All rights reserved. -** -** This file is part of the dialogs module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqcolordialog.h" - -#ifndef TQT_NO_COLORDIALOG - -#include "tqpainter.h" -#include "tqlayout.h" -#include "tqlabel.h" -#include "tqpushbutton.h" -#include "tqlineedit.h" -#include "tqimage.h" -#include "tqpixmap.h" -#include "tqdrawutil.h" -#include "tqvalidator.h" -#include "tqdragobject.h" -#include "tqgridview.h" -#include "tqapplication.h" -#include "tqstyle.h" -#include "tqsettings.h" -#include "tqpopupmenu.h" - -#ifdef TQ_WS_MAC -TQRgb macGetRgba( TQRgb initial, bool *ok, TQWidget *parent, const char* name ); -TQColor macGetColor( const TQColor& initial, TQWidget *parent, const char *name ); -#endif - -//////////// TQWellArray BEGIN - -struct TQWellArrayData; - -class TQWellArray : public TQGridView -{ - Q_OBJECT - TQ_OBJECT - Q_PROPERTY( int selectedColumn READ selectedColumn ) - Q_PROPERTY( int selectedRow READ selectedRow ) - -public: - TQWellArray( TQWidget* parent=0, const char* name=0, bool popup = FALSE ); - - ~TQWellArray() {} - TQString cellContent( int row, int col ) const; - // ### Paul !!! virtual void setCellContent( int row, int col, const TQString &); - - int selectedColumn() const { return selCol; } - int selectedRow() const { return selRow; } - - virtual void setCurrent( int row, int col ); - virtual void setSelected( int row, int col ); - - TQSize tqsizeHint() const; - - virtual void setCellBrush( int row, int col, const TQBrush & ); - TQBrush cellBrush( int row, int col ); - -Q_SIGNALS: - void selected( int row, int col ); - -protected: - void dimensionChange( int oldRows, int oldCols ); - - virtual void paintCell( TQPainter *, int row, int col ); - virtual void paintCellContents( TQPainter *, int row, int col, const TQRect& ); - - void mousePressEvent( TQMouseEvent* ); - void mouseReleaseEvent( TQMouseEvent* ); - void mouseMoveEvent( TQMouseEvent* ); - void keyPressEvent( TQKeyEvent* ); - void focusInEvent( TQFocusEvent* ); - void focusOutEvent( TQFocusEvent* ); - -private: - int curRow; - int curCol; - int selRow; - int selCol; - bool smallStyle; - TQWellArrayData *d; - -private: // Disabled copy constructor and operator= -#if defined(TQ_DISABLE_COPY) - TQWellArray( const TQWellArray & ); - TQWellArray& operator=( const TQWellArray & ); -#endif -}; - - - -// non-interface ... - - - -struct TQWellArrayData { - TQBrush *brush; -}; - -/*! - \internal - \class TQWellArray qwellarray_p.h - \brief The TQWellArray class provides a well array. - - - \ingroup advanced -*/ - -TQWellArray::TQWellArray( TQWidget *parent, const char * name, bool popup ) - : TQGridView( parent, name, - (popup ? (WFlags)(WStyle_Customize|TQt::WStyle_Tool|TQt::WStyle_NoBorder) : (WFlags)0 ) ) -{ - d = 0; - setFocusPolicy( Qt::StrongFocus ); - setVScrollBarMode(AlwaysOff); - setHScrollBarMode(AlwaysOff); - viewport()->setBackgroundMode( TQt::PaletteBackground ); - setNumCols( 7 ); - setNumRows( 7 ); - setCellWidth( 24 ); - setCellHeight( 21 ); - smallStyle = popup; - - if ( popup ) { - setCellWidth( 18 ); - setCellHeight( 18 ); - setFrameStyle(TQFrame::StyledPanel | TQFrame::Raised); - setMargin( 1 ); - setLineWidth( 2 ); - } else { - setFrameStyle( TQFrame::NoFrame ); - } - curCol = 0; - curRow = 0; - selCol = -1; - selRow = -1; - - if ( smallStyle ) - setMouseTracking( TRUE ); -} - - -TQSize TQWellArray::tqsizeHint() const -{ - constPolish(); - TQSize s = gridSize().boundedTo( TQSize(640, 480 ) ); - return TQSize( s.width() + 2*frameWidth(), s.height() + 2*frameWidth() ); -} - - -void TQWellArray::paintCell( TQPainter* p, int row, int col ) -{ - int w = cellWidth(); // width of cell in pixels - int h = cellHeight(); // height of cell in pixels - int b = 1; - - if ( !smallStyle ) - b = 3; - - const TQColorGroup & g = tqcolorGroup(); - p->setPen( TQPen( Qt::black, 0, Qt::SolidLine ) ); - if ( !smallStyle && row ==selRow && col == selCol && - tqstyle().tqstyleHint(TQStyle::SH_GUIStyle) != TQt::MotifStyle) { - int n = 2; - p->drawRect( n, n, w-2*n, h-2*n ); - } - - tqstyle().tqdrawPrimitive(TQStyle::PE_Panel, p, TQRect(b, b, w-2*b, h-2*b), g, - TQStyle::Style_Enabled | TQStyle::Style_Sunken); - - int t = 0; - if (tqstyle().tqstyleHint(TQStyle::SH_GUIStyle) == TQt::MotifStyle) - t = ( row == selRow && col == selCol ) ? 2 : 0; - b += 2 + t; - - if ( (row == curRow) && (col == curCol) ) { - if ( smallStyle ) { - p->setPen ( Qt::white ); - p->drawRect( 1, 1, w-2, h-2 ); - p->setPen ( Qt::black ); - p->drawRect( 0, 0, w, h ); - p->drawRect( 2, 2, w-4, h-4 ); - b = 3; - } else if ( hasFocus() ) { - tqstyle().tqdrawPrimitive(TQStyle::PE_FocusRect, p, TQRect(0, 0, w, h), g); - } - } - paintCellContents( p, row, col, TQRect(b, b, w - 2*b, h - 2*b) ); -} - -/*! - Reimplement this function to change the contents of the well array. - */ -void TQWellArray::paintCellContents( TQPainter *p, int row, int col, const TQRect &r ) -{ - - if ( d ) { - p->fillRect( r, d->brush[row*numCols()+col] ); - } else { - p->fillRect( r, Qt::white ); - p->setPen( Qt::black ); - p->drawLine( r.topLeft(), r.bottomRight() ); - p->drawLine( r.topRight(), r.bottomLeft() ); - } -} - - -/*\reimp -*/ -void TQWellArray::mousePressEvent( TQMouseEvent* e ) -{ - // The current cell marker is set to the cell the mouse is pressed - // in. - TQPoint pos = e->pos(); - setCurrent( rowAt( pos.y() ), columnAt( pos.x() ) ); -} - -/*\reimp -*/ -void TQWellArray::mouseReleaseEvent( TQMouseEvent* ) -{ - // The current cell marker is set to the cell the mouse is clicked - // in. - setSelected( curRow, curCol ); -} - - -/*\reimp -*/ -void TQWellArray::mouseMoveEvent( TQMouseEvent* e ) -{ - // The current cell marker is set to the cell the mouse is - // clicked in. - if ( smallStyle ) { - TQPoint pos = e->pos(); - setCurrent( rowAt( pos.y() ), columnAt( pos.x() ) ); - } -} - -/* - Sets the cell currently having the focus. This is not necessarily - the same as the currently selected cell. -*/ - -void TQWellArray::setCurrent( int row, int col ) -{ - - if ( (curRow == row) && (curCol == col) ) - return; - - if ( row < 0 || col < 0 ) - row = col = -1; - - int oldRow = curRow; - int oldCol = curCol; - - curRow = row; - curCol = col; - - updateCell( oldRow, oldCol ); - updateCell( curRow, curCol ); -} - - -/*! - Sets the currently selected cell to \a row, \a col. If \a row or \a - col are less than zero, the current cell is unselected. - - Does not set the position of the focus indicator. -*/ - -void TQWellArray::setSelected( int row, int col ) -{ - if ( (selRow == row) && (selCol == col) ) - return; - - int oldRow = selRow; - int oldCol = selCol; - - if ( row < 0 || col < 0 ) - row = col = -1; - - selCol = col; - selRow = row; - - updateCell( oldRow, oldCol ); - updateCell( selRow, selCol ); - if ( row >= 0 ) - emit selected( row, col ); - - if ( isVisible() && ::tqqt_cast<TQPopupMenu*>(parentWidget()) ) - parentWidget()->close(); -} - - - -/*!\reimp -*/ -void TQWellArray::focusInEvent( TQFocusEvent* ) -{ - updateCell( curRow, curCol ); -} - - -/*! - Sets the size of the well array to be \a rows cells by \a cols. - Resets any brush information set by setCellBrush(). - */ -void TQWellArray::dimensionChange( int, int ) -{ - if ( d ) { - if ( d->brush ) - delete[] d->brush; - delete d; - d = 0; - } -} - -void TQWellArray::setCellBrush( int row, int col, const TQBrush &b ) -{ - if ( !d ) { - d = new TQWellArrayData; - int i = numRows()*numCols(); - d->brush = new TQBrush[i]; - } - if ( row >= 0 && row < numRows() && col >= 0 && col < numCols() ) - d->brush[row*numCols()+col] = b; -#ifdef TQT_CHECK_RANGE - else - qWarning( "TQWellArray::setCellBrush( %d, %d ) out of range", row, col ); -#endif -} - - - -/*! - Returns the brush set for the cell at \a row, \a col. If no brush is set, - \c NoBrush is returned. -*/ - -TQBrush TQWellArray::cellBrush( int row, int col ) -{ - if ( d && row >= 0 && row < numRows() && col >= 0 && col < numCols() ) - return d->brush[row*numCols()+col]; - return TQBrush(TQt::NoBrush); -} - - - -/*!\reimp -*/ - -void TQWellArray::focusOutEvent( TQFocusEvent* ) -{ - updateCell( curRow, curCol ); -} - -/*\reimp -*/ -void TQWellArray::keyPressEvent( TQKeyEvent* e ) -{ - switch( e->key() ) { // Look at the key code - case Qt::Key_Left: // If 'left arrow'-key, - if( curCol > 0 ) // and cr't not in leftmost col - setCurrent( curRow, curCol - 1); // set cr't to next left column - break; - case Qt::Key_Right: // Correspondingly... - if( curCol < numCols()-1 ) - setCurrent( curRow, curCol + 1); - break; - case Qt::Key_Up: - if( curRow > 0 ) - setCurrent( curRow - 1, curCol); - else if ( smallStyle ) - focusNextPrevChild( FALSE ); - break; - case Qt::Key_Down: - if( curRow < numRows()-1 ) - setCurrent( curRow + 1, curCol); - else if ( smallStyle ) - focusNextPrevChild( TRUE ); - break; - case Qt::Key_Space: - case Qt::Key_Return: - case Qt::Key_Enter: - setSelected( curRow, curCol ); - break; - default: // If not an interesting key, - e->ignore(); // we don't accept the event - return; - } - -} - -//////////// TQWellArray END - -static bool initrgb = FALSE; -static TQRgb stdrgb[6*8]; -static TQRgb cusrgb[2*8]; -static bool customSet = FALSE; - - -static void initRGB() -{ - if ( initrgb ) - return; - initrgb = TRUE; - int i = 0; - for ( int g = 0; g < 4; g++ ) - for ( int r = 0; r < 4; r++ ) - for ( int b = 0; b < 3; b++ ) - stdrgb[i++] = tqRgb( r*255/3, g*255/3, b*255/2 ); - - for ( i = 0; i < 2*8; i++ ) - cusrgb[i] = tqRgb(0xff,0xff,0xff); -} - -/*! - Returns the number of custom colors supported by TQColorDialog. All - color dialogs share the same custom colors. -*/ -int TQColorDialog::customCount() -{ - return 2*8; -} - -/*! - Returns custom color number \a i as a TQRgb. -*/ -TQRgb TQColorDialog::customColor( int i ) -{ - initRGB(); - if ( i < 0 || i >= customCount() ) { -#ifdef TQT_CHECK_RANGE - qWarning( "TQColorDialog::customColor() index %d out of range", i ); -#endif - i = 0; - } - return cusrgb[i]; -} - -/*! - Sets custom color number \a i to the TQRgb value \a c. -*/ -void TQColorDialog::setCustomColor( int i, TQRgb c ) -{ - initRGB(); - if ( i < 0 || i >= customCount() ) { -#ifdef TQT_CHECK_RANGE - qWarning( "TQColorDialog::setCustomColor() index %d out of range", i ); -#endif - return; - } - customSet = TRUE; - cusrgb[i] = c; -} - -/*! - Sets standard color number \a i to the TQRgb value \a c. -*/ - -void TQColorDialog::setStandardColor( int i, TQRgb c ) -{ - initRGB(); - if ( i < 0 || i >= 6*8 ) { -#ifdef TQT_CHECK_RANGE - qWarning( "TQColorDialog::setStandardColor() index %d out of range", i ); -#endif - return; - } - stdrgb[i] = c; -} - -static inline void rgb2hsv( TQRgb rgb, int&h, int&s, int&v ) -{ - TQColor c; - c.setRgb( rgb ); - c.tqgetHsv(h,s,v); -} - -class TQColorWell : public TQWellArray -{ -public: - TQColorWell( TQWidget *parent, int r, int c, TQRgb *vals ) - :TQWellArray( parent, "" ), values( vals ), mousePressed( FALSE ), oldCurrent( -1, -1 ) - { setNumRows(r), setNumCols(c); tqsetSizePolicy( TQSizePolicy( TQSizePolicy::Minimum, TQSizePolicy::Minimum) ); } - -protected: - void paintCellContents( TQPainter *, int row, int col, const TQRect& ); - void mousePressEvent( TQMouseEvent *e ); - void mouseMoveEvent( TQMouseEvent *e ); - void mouseReleaseEvent( TQMouseEvent *e ); -#ifndef TQT_NO_DRAGANDDROP - void dragEnterEvent( TQDragEnterEvent *e ); - void dragLeaveEvent( TQDragLeaveEvent *e ); - void dragMoveEvent( TQDragMoveEvent *e ); - void dropEvent( TQDropEvent *e ); -#endif - -private: - TQRgb *values; - bool mousePressed; - TQPoint pressPos; - TQPoint oldCurrent; - -}; - -void TQColorWell::paintCellContents( TQPainter *p, int row, int col, const TQRect &r ) -{ - int i = row + col*numRows(); - p->fillRect( r, TQColor( values[i] ) ); -} - -void TQColorWell::mousePressEvent( TQMouseEvent *e ) -{ - oldCurrent = TQPoint( selectedRow(), selectedColumn() ); - TQWellArray::mousePressEvent( e ); - mousePressed = TRUE; - pressPos = e->pos(); -} - -void TQColorWell::mouseMoveEvent( TQMouseEvent *e ) -{ - TQWellArray::mouseMoveEvent( e ); -#ifndef TQT_NO_DRAGANDDROP - if ( !mousePressed ) - return; - if ( ( pressPos - e->pos() ).manhattanLength() > TQApplication::startDragDistance() ) { - setCurrent( oldCurrent.x(), oldCurrent.y() ); - int i = rowAt(pressPos.y()) + columnAt(pressPos.x()) * numRows(); - TQColor col( values[ i ] ); - TQColorDrag *drg = new TQColorDrag( col, this ); - TQPixmap pix( cellWidth(), cellHeight() ); - pix.fill( col ); - TQPainter p( &pix ); - p.drawRect( 0, 0, pix.width(), pix.height() ); - p.end(); - drg->setPixmap( pix ); - mousePressed = FALSE; - drg->dragCopy(); - } -#endif -} - -#ifndef TQT_NO_DRAGANDDROP -void TQColorWell::dragEnterEvent( TQDragEnterEvent *e ) -{ - setFocus(); - if ( TQColorDrag::canDecode( e ) ) - e->accept(); - else - e->ignore(); -} - -void TQColorWell::dragLeaveEvent( TQDragLeaveEvent * ) -{ - if ( hasFocus() ) - parentWidget()->setFocus(); -} - -void TQColorWell::dragMoveEvent( TQDragMoveEvent *e ) -{ - if ( TQColorDrag::canDecode( e ) ) { - setCurrent( rowAt( e->pos().y() ), columnAt( e->pos().x() ) ); - e->accept(); - } else - e->ignore(); -} - -void TQColorWell::dropEvent( TQDropEvent *e ) -{ - if ( TQColorDrag::canDecode( e ) ) { - int i = rowAt( e->pos().y() ) + columnAt( e->pos().x() ) * numRows(); - TQColor col; - TQColorDrag::decode( e, col ); - values[ i ] = col.rgb(); - repaintContents( FALSE ); - e->accept(); - } else { - e->ignore(); - } -} - -#endif // TQT_NO_DRAGANDDROP - -void TQColorWell::mouseReleaseEvent( TQMouseEvent *e ) -{ - if ( !mousePressed ) - return; - TQWellArray::mouseReleaseEvent( e ); - mousePressed = FALSE; -} - -class TQColorPicker : public TQFrame -{ - Q_OBJECT - TQ_OBJECT -public: - TQColorPicker(TQWidget* parent=0, const char* name=0); - ~TQColorPicker(); - -public Q_SLOTS: - void setCol( int h, int s ); - -Q_SIGNALS: - void newCol( int h, int s ); - -protected: - TQSize tqsizeHint() const; - void drawContents(TQPainter* p); - void mouseMoveEvent( TQMouseEvent * ); - void mousePressEvent( TQMouseEvent * ); - -private: - int hue; - int sat; - - TQPoint colPt(); - int huePt( const TQPoint &pt ); - int satPt( const TQPoint &pt ); - void setCol( const TQPoint &pt ); - - TQPixmap *pix; -}; - -static int pWidth = 200; -static int pHeight = 200; - -class TQColorLuminancePicker : public TQWidget -{ - Q_OBJECT - TQ_OBJECT -public: - TQColorLuminancePicker(TQWidget* parent=0, const char* name=0); - ~TQColorLuminancePicker(); - -public Q_SLOTS: - void setCol( int h, int s, int v ); - void setCol( int h, int s ); - -Q_SIGNALS: - void newHsv( int h, int s, int v ); - -protected: - void paintEvent( TQPaintEvent*); - void mouseMoveEvent( TQMouseEvent * ); - void mousePressEvent( TQMouseEvent * ); - -private: - enum { foff = 3, coff = 4 }; //frame and contents offset - int val; - int hue; - int sat; - - int y2val( int y ); - int val2y( int val ); - void setVal( int v ); - - TQPixmap *pix; -}; - - -int TQColorLuminancePicker::y2val( int y ) -{ - int d = height() - 2*coff - 1; - return 255 - (y - coff)*255/d; -} - -int TQColorLuminancePicker::val2y( int v ) -{ - int d = height() - 2*coff - 1; - return coff + (255-v)*d/255; -} - -TQColorLuminancePicker::TQColorLuminancePicker(TQWidget* parent, - const char* name) - :TQWidget( parent, name ) -{ - hue = 100; val = 100; sat = 100; - pix = 0; - // setBackgroundMode( NoBackground ); -} - -TQColorLuminancePicker::~TQColorLuminancePicker() -{ - delete pix; -} - -void TQColorLuminancePicker::mouseMoveEvent( TQMouseEvent *m ) -{ - setVal( y2val(m->y()) ); -} -void TQColorLuminancePicker::mousePressEvent( TQMouseEvent *m ) -{ - setVal( y2val(m->y()) ); -} - -void TQColorLuminancePicker::setVal( int v ) -{ - if ( val == v ) - return; - val = TQMAX( 0, TQMIN(v,255)); - delete pix; pix=0; - tqrepaint( FALSE ); //### - emit newHsv( hue, sat, val ); -} - -//receives from a hue,sat chooser and relays. -void TQColorLuminancePicker::setCol( int h, int s ) -{ - setCol( h, s, val ); - emit newHsv( h, s, val ); -} - -void TQColorLuminancePicker::paintEvent( TQPaintEvent * ) -{ - int w = width() - 5; - - TQRect r( 0, foff, w, height() - 2*foff ); - int wi = r.width() - 2; - int hi = r.height() - 2; - if ( !pix || pix->height() != hi || pix->width() != wi ) { - delete pix; - TQImage img( wi, hi, 32 ); - int y; - for ( y = 0; y < hi; y++ ) { - TQColor c( hue, sat, y2val(y+coff), TQColor::Hsv ); - TQRgb r = c.rgb(); - int x; - for ( x = 0; x < wi; x++ ) - img.setPixel( x, y, r ); - } - pix = new TQPixmap; - pix->convertFromImage(img); - } - TQPainter p(this); - p.drawPixmap( 1, coff, *pix ); - const TQColorGroup &g = tqcolorGroup(); - qDrawShadePanel( &p, r, g, TRUE ); - p.setPen( g.foreground() ); - p.setBrush( g.foreground() ); - TQPointArray a; - int y = val2y(val); - a.setPoints( 3, w, y, w+5, y+5, w+5, y-5 ); - erase( w, 0, 5, height() ); - p.drawPolygon( a ); -} - -void TQColorLuminancePicker::setCol( int h, int s , int v ) -{ - val = v; - hue = h; - sat = s; - delete pix; pix=0; - tqrepaint( FALSE );//#### -} - -TQPoint TQColorPicker::colPt() -{ return TQPoint( (360-hue)*(pWidth-1)/360, (255-sat)*(pHeight-1)/255 ); } -int TQColorPicker::huePt( const TQPoint &pt ) -{ return 360 - pt.x()*360/(pWidth-1); } -int TQColorPicker::satPt( const TQPoint &pt ) -{ return 255 - pt.y()*255/(pHeight-1) ; } -void TQColorPicker::setCol( const TQPoint &pt ) -{ setCol( huePt(pt), satPt(pt) ); } - -TQColorPicker::TQColorPicker(TQWidget* parent, const char* name ) - : TQFrame( parent, name ) -{ - hue = 0; sat = 0; - setCol( 150, 255 ); - - TQImage img( pWidth, pHeight, 32 ); - int x,y; - for ( y = 0; y < pHeight; y++ ) - for ( x = 0; x < pWidth; x++ ) { - TQPoint p( x, y ); - img.setPixel( x, y, TQColor(huePt(p), satPt(p), - 200, TQColor::Hsv).rgb() ); - } - pix = new TQPixmap; - pix->convertFromImage(img); - setBackgroundMode( TQt::NoBackground ); - tqsetSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) ); -} - -TQColorPicker::~TQColorPicker() -{ - delete pix; -} - -TQSize TQColorPicker::tqsizeHint() const -{ - return TQSize( pWidth + 2*frameWidth(), pHeight + 2*frameWidth() ); -} - -void TQColorPicker::setCol( int h, int s ) -{ - int nhue = TQMIN( TQMAX(0,h), 360 ); - int nsat = TQMIN( TQMAX(0,s), 255); - if ( nhue == hue && nsat == sat ) - return; - TQRect r( colPt(), TQSize(20,20) ); - hue = nhue; sat = nsat; - r = r.unite( TQRect( colPt(), TQSize(20,20) ) ); - r.moveBy( contentsRect().x()-9, contentsRect().y()-9 ); - // update( r ); - tqrepaint( r, FALSE ); -} - -void TQColorPicker::mouseMoveEvent( TQMouseEvent *m ) -{ - TQPoint p = m->pos() - contentsRect().topLeft(); - setCol( p ); - emit newCol( hue, sat ); -} - -void TQColorPicker::mousePressEvent( TQMouseEvent *m ) -{ - TQPoint p = m->pos() - contentsRect().topLeft(); - setCol( p ); - emit newCol( hue, sat ); -} - -void TQColorPicker::drawContents(TQPainter* p) -{ - TQRect r = contentsRect(); - - p->drawPixmap( r.topLeft(), *pix ); - TQPoint pt = colPt() + r.topLeft(); - p->setPen( TQPen(Qt::black) ); - - p->fillRect( pt.x()-9, pt.y(), 20, 2, Qt::black ); - p->fillRect( pt.x(), pt.y()-9, 2, 20, Qt::black ); - -} - -class TQColorShowLabel; - - - -class TQColIntValidator: public TQIntValidator -{ -public: - TQColIntValidator( int bottom, int top, - TQWidget * parent, const char *name = 0 ) - :TQIntValidator( bottom, top, TQT_TQOBJECT(parent), name ) {} - - TQValidator::State validate( TQString &, int & ) const; -}; - -TQValidator::State TQColIntValidator::validate( TQString &s, int &pos ) const -{ - State state = TQIntValidator::validate(s,pos); - if ( state == Valid ) { - long int val = s.toLong(); - // This is not a general solution, assumes that top() > 0 and - // bottom >= 0 - if ( val < 0 ) { - s = "0"; - pos = 1; - } else if ( val > top() ) { - s.setNum( top() ); - pos = s.length(); - } - } - return state; -} - - - -class TQColNumLineEdit : public TQLineEdit -{ -public: - TQColNumLineEdit( TQWidget *parent, const char* name=0 ) - : TQLineEdit( parent, name ) { setMaxLength( 3 );} - TQSize tqsizeHint() const { - return TQSize( fontMetrics().width( "999" ) + 2 * ( margin() + frameWidth() ), - TQLineEdit::tqsizeHint().height() ); } - void setNum( int i ) { - TQString s; - s.setNum(i); - bool block = tqsignalsBlocked(); - blockSignals(TRUE); - setText( s ); - blockSignals(block); - } - int val() const { return text().toInt(); } -}; - - -class TQColorShower : public TQWidget -{ - Q_OBJECT - TQ_OBJECT -public: - TQColorShower( TQWidget *parent, const char *name=0 ); - - //things that don't emit Q_SIGNALS - void setHsv( int h, int s, int v ); - - int currentAlpha() const { return alphaEd->val(); } - void setCurrentAlpha( int a ) { alphaEd->setNum( a ); } - void showAlpha( bool b ); - - - TQRgb currentColor() const { return curCol; } - -public Q_SLOTS: - void setRgb( TQRgb rgb ); - -Q_SIGNALS: - void newCol( TQRgb rgb ); -private Q_SLOTS: - void rgbEd(); - void hsvEd(); -private: - void showCurrentColor(); - int hue, sat, val; - TQRgb curCol; - TQColNumLineEdit *hEd; - TQColNumLineEdit *sEd; - TQColNumLineEdit *vEd; - TQColNumLineEdit *rEd; - TQColNumLineEdit *gEd; - TQColNumLineEdit *bEd; - TQColNumLineEdit *alphaEd; - TQLabel *alphaLab; - TQColorShowLabel *lab; - bool rgbOriginal; -}; - -class TQColorShowLabel : public TQFrame -{ - Q_OBJECT - TQ_OBJECT - -public: - TQColorShowLabel( TQWidget *parent ) : TQFrame( parent, "qt_colorshow_lbl" ) { - setFrameStyle( TQFrame::Panel|TQFrame::Sunken ); - setBackgroundMode( TQt::PaletteBackground ); - setAcceptDrops( TRUE ); - mousePressed = FALSE; - } - void setColor( TQColor c ) { col = c; } - -Q_SIGNALS: - void colorDropped( TQRgb ); - -protected: - void drawContents( TQPainter *p ); - void mousePressEvent( TQMouseEvent *e ); - void mouseMoveEvent( TQMouseEvent *e ); - void mouseReleaseEvent( TQMouseEvent *e ); -#ifndef TQT_NO_DRAGANDDROP - void dragEnterEvent( TQDragEnterEvent *e ); - void dragLeaveEvent( TQDragLeaveEvent *e ); - void dropEvent( TQDropEvent *e ); -#endif - -private: - TQColor col; - bool mousePressed; - TQPoint pressPos; - -}; - -void TQColorShowLabel::drawContents( TQPainter *p ) -{ - p->fillRect( contentsRect(), col ); -} - -void TQColorShower::showAlpha( bool b ) -{ - if ( b ) { - alphaLab->show(); - alphaEd->show(); - } else { - alphaLab->hide(); - alphaEd->hide(); - } -} - -void TQColorShowLabel::mousePressEvent( TQMouseEvent *e ) -{ - mousePressed = TRUE; - pressPos = e->pos(); -} - -void TQColorShowLabel::mouseMoveEvent( TQMouseEvent *e ) -{ -#ifndef TQT_NO_DRAGANDDROP - if ( !mousePressed ) - return; - if ( ( pressPos - e->pos() ).manhattanLength() > TQApplication::startDragDistance() ) { - TQColorDrag *drg = new TQColorDrag( col, this ); - TQPixmap pix( 30, 20 ); - pix.fill( col ); - TQPainter p( &pix ); - p.drawRect( 0, 0, pix.width(), pix.height() ); - p.end(); - drg->setPixmap( pix ); - mousePressed = FALSE; - drg->dragCopy(); - } -#endif -} - -#ifndef TQT_NO_DRAGANDDROP -void TQColorShowLabel::dragEnterEvent( TQDragEnterEvent *e ) -{ - if ( TQColorDrag::canDecode( e ) ) - e->accept(); - else - e->ignore(); -} - -void TQColorShowLabel::dragLeaveEvent( TQDragLeaveEvent * ) -{ -} - -void TQColorShowLabel::dropEvent( TQDropEvent *e ) -{ - if ( TQColorDrag::canDecode( e ) ) { - TQColorDrag::decode( e, col ); - tqrepaint( FALSE ); - emit colorDropped( col.rgb() ); - e->accept(); - } else { - e->ignore(); - } -} -#endif // TQT_NO_DRAGANDDROP - -void TQColorShowLabel::mouseReleaseEvent( TQMouseEvent * ) -{ - if ( !mousePressed ) - return; - mousePressed = FALSE; -} - -TQColorShower::TQColorShower( TQWidget *parent, const char *name ) - :TQWidget( parent, name) -{ - curCol = tqRgb( -1, -1, -1 ); - TQColIntValidator *val256 = new TQColIntValidator( 0, 255, this ); - TQColIntValidator *val360 = new TQColIntValidator( 0, 360, this ); - - TQGridLayout *gl = new TQGridLayout( this, 1, 1, 6 ); - lab = new TQColorShowLabel( this ); - lab->setMinimumWidth( 60 ); //### - gl->addMultiCellWidget(lab, 0,-1,0,0); - connect( lab, TQT_SIGNAL( colorDropped(TQRgb) ), - this, TQT_SIGNAL( newCol(TQRgb) ) ); - connect( lab, TQT_SIGNAL( colorDropped(TQRgb) ), - this, TQT_SLOT( setRgb(TQRgb) ) ); - - hEd = new TQColNumLineEdit( this, "qt_hue_edit" ); - hEd->setValidator( val360 ); - TQLabel *l = new TQLabel( hEd, TQColorDialog::tr("Hu&e:"), this, "qt_hue_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 0, 1 ); - gl->addWidget( hEd, 0, 2 ); - - sEd = new TQColNumLineEdit( this, "qt_sat_edit" ); - sEd->setValidator( val256 ); - l = new TQLabel( sEd, TQColorDialog::tr("&Sat:"), this, "qt_sat_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 1, 1 ); - gl->addWidget( sEd, 1, 2 ); - - vEd = new TQColNumLineEdit( this, "qt_val_edit" ); - vEd->setValidator( val256 ); - l = new TQLabel( vEd, TQColorDialog::tr("&Val:"), this, "qt_val_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 2, 1 ); - gl->addWidget( vEd, 2, 2 ); - - rEd = new TQColNumLineEdit( this, "qt_red_edit" ); - rEd->setValidator( val256 ); - l = new TQLabel( rEd, TQColorDialog::tr("&Red:"), this, "qt_red_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 0, 3 ); - gl->addWidget( rEd, 0, 4 ); - - gEd = new TQColNumLineEdit( this, "qt_grn_edit" ); - gEd->setValidator( val256 ); - l = new TQLabel( gEd, TQColorDialog::tr("&Green:"), this, "qt_grn_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 1, 3 ); - gl->addWidget( gEd, 1, 4 ); - - bEd = new TQColNumLineEdit( this, "qt_blue_edit" ); - bEd->setValidator( val256 ); - l = new TQLabel( bEd, TQColorDialog::tr("Bl&ue:"), this, "qt_blue_lbl" ); - l->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addWidget( l, 2, 3 ); - gl->addWidget( bEd, 2, 4 ); - - alphaEd = new TQColNumLineEdit( this, "qt_aplha_edit" ); - alphaEd->setValidator( val256 ); - alphaLab = new TQLabel( alphaEd, TQColorDialog::tr("A&lpha channel:"), this, "qt_alpha_lbl" ); - alphaLab->tqsetAlignment( Qt::AlignRight|Qt::AlignVCenter ); - gl->addMultiCellWidget( alphaLab, 3, 3, 1, 3 ); - gl->addWidget( alphaEd, 3, 4 ); - alphaEd->hide(); - alphaLab->hide(); - - connect( hEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(hsvEd()) ); - connect( sEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(hsvEd()) ); - connect( vEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(hsvEd()) ); - - connect( rEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(rgbEd()) ); - connect( gEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(rgbEd()) ); - connect( bEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(rgbEd()) ); - connect( alphaEd, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(rgbEd()) ); -} - -void TQColorShower::showCurrentColor() -{ - lab->setColor( currentColor() ); - lab->tqrepaint(FALSE); //### -} - -void TQColorShower::rgbEd() -{ - rgbOriginal = TRUE; - if ( alphaEd->isVisible() ) - curCol = tqRgba( rEd->val(), gEd->val(), bEd->val(), currentAlpha() ); - else - curCol = tqRgb( rEd->val(), gEd->val(), bEd->val() ); - - rgb2hsv(currentColor(), hue, sat, val ); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - showCurrentColor(); - emit newCol( currentColor() ); -} - -void TQColorShower::hsvEd() -{ - rgbOriginal = FALSE; - hue = hEd->val(); - sat = sEd->val(); - val = vEd->val(); - - curCol = TQColor( hue, sat, val, TQColor::Hsv ).rgb(); - - rEd->setNum( tqRed(currentColor()) ); - gEd->setNum( tqGreen(currentColor()) ); - bEd->setNum( tqBlue(currentColor()) ); - - showCurrentColor(); - emit newCol( currentColor() ); -} - -void TQColorShower::setRgb( TQRgb rgb ) -{ - rgbOriginal = TRUE; - curCol = rgb; - - rgb2hsv( currentColor(), hue, sat, val ); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - rEd->setNum( tqRed(currentColor()) ); - gEd->setNum( tqGreen(currentColor()) ); - bEd->setNum( tqBlue(currentColor()) ); - - showCurrentColor(); -} - -void TQColorShower::setHsv( int h, int s, int v ) -{ - rgbOriginal = FALSE; - hue = h; val = v; sat = s; //Range check### - curCol = TQColor( hue, sat, val, TQColor::Hsv ).rgb(); - - hEd->setNum( hue ); - sEd->setNum( sat ); - vEd->setNum( val ); - - rEd->setNum( tqRed(currentColor()) ); - gEd->setNum( tqGreen(currentColor()) ); - bEd->setNum( tqBlue(currentColor()) ); - - showCurrentColor(); -} - -class TQColorDialogPrivate : public TQObject -{ - Q_OBJECT - TQ_OBJECT -public: - TQColorDialogPrivate( TQColorDialog *p ); - TQRgb currentColor() const { return cs->currentColor(); } - void setCurrentColor( TQRgb rgb ); - - int currentAlpha() const { return cs->currentAlpha(); } - void setCurrentAlpha( int a ) { cs->setCurrentAlpha( a ); } - void showAlpha( bool b ) { cs->showAlpha( b ); } - -public Q_SLOTS: - void addCustom(); - - void newHsv( int h, int s, int v ); - void newColorTypedIn( TQRgb rgb ); - void newCustom( int, int ); - void newStandard( int, int ); -public: - TQWellArray *custom; - TQWellArray *standard; - - TQColorPicker *cp; - TQColorLuminancePicker *lp; - TQColorShower *cs; - int nextCust; - bool compact; -}; - -//sets all widgets to display h,s,v -void TQColorDialogPrivate::newHsv( int h, int s, int v ) -{ - cs->setHsv( h, s, v ); - cp->setCol( h, s ); - lp->setCol( h, s, v ); -} - -//sets all widgets to display rgb -void TQColorDialogPrivate::setCurrentColor( TQRgb rgb ) -{ - cs->setRgb( rgb ); - newColorTypedIn( rgb ); -} - -//sets all widgets exept cs to display rgb -void TQColorDialogPrivate::newColorTypedIn( TQRgb rgb ) -{ - int h, s, v; - rgb2hsv(rgb, h, s, v ); - cp->setCol( h, s ); - lp->setCol( h, s, v); -} - -void TQColorDialogPrivate::newCustom( int r, int c ) -{ - int i = r+2*c; - setCurrentColor( cusrgb[i] ); - nextCust = i; - if (standard) - standard->setSelected(-1,-1); -} - -void TQColorDialogPrivate::newStandard( int r, int c ) -{ - setCurrentColor( stdrgb[r+c*6] ); - if (custom) - custom->setSelected(-1,-1); -} - -TQColorDialogPrivate::TQColorDialogPrivate( TQColorDialog *dialog ) : - TQObject(dialog) -{ - compact = FALSE; - // small displays (e.g. PDAs cannot fit the full color dialog, - // so just use the color picker. - if ( tqApp->desktop()->width() < 480 || tqApp->desktop()->height() < 350 ) - compact = TRUE; - - nextCust = 0; - const int lumSpace = 3; - int border = 12; - if ( compact ) - border = 6; - TQHBoxLayout *topLay = new TQHBoxLayout( dialog, border, 6 ); - TQVBoxLayout *leftLay = 0; - - if ( !compact ) - leftLay = new TQVBoxLayout( topLay ); - - initRGB(); - - if ( !compact ) { - standard = new TQColorWell( dialog, 6, 8, stdrgb ); - standard->setCellWidth( 28 ); - standard->setCellHeight( 24 ); - TQLabel * lab = new TQLabel( standard, - TQColorDialog::tr( "&Basic colors"), dialog, "qt_basiccolors_lbl" ); - connect( standard, TQT_SIGNAL(selected(int,int)), TQT_SLOT(newStandard(int,int))); - leftLay->addWidget( lab ); - leftLay->addWidget( standard ); - - - leftLay->addStretch(); - - custom = new TQColorWell( dialog, 2, 8, cusrgb ); - custom->setCellWidth( 28 ); - custom->setCellHeight( 24 ); - custom->setAcceptDrops( TRUE ); - - connect( custom, TQT_SIGNAL(selected(int,int)), TQT_SLOT(newCustom(int,int))); - lab = new TQLabel( custom, TQColorDialog::tr( "&Custom colors") , dialog, "qt_custcolors_lbl" ); - leftLay->addWidget( lab ); - leftLay->addWidget( custom ); - - TQPushButton *custbut = - new TQPushButton( TQColorDialog::tr("&Define Custom Colors >>"), - dialog, "qt_def_custcolors_lbl" ); - custbut->setEnabled( FALSE ); - leftLay->addWidget( custbut ); - } else { - // better color picker size for small displays - pWidth = 150; - pHeight = 100; - - custom = 0; - standard = 0; - } - - TQVBoxLayout *rightLay = new TQVBoxLayout( topLay ); - - TQHBoxLayout *pickLay = new TQHBoxLayout( rightLay ); - - - TQVBoxLayout *cLay = new TQVBoxLayout( pickLay ); - cp = new TQColorPicker( dialog, "qt_colorpicker" ); - cp->setFrameStyle( TQFrame::Panel + TQFrame::Sunken ); - cLay->addSpacing( lumSpace ); - cLay->addWidget( cp ); - cLay->addSpacing( lumSpace ); - - lp = new TQColorLuminancePicker( dialog, "qt_luminance_picker" ); - lp->setFixedWidth( 20 ); //### - pickLay->addWidget( lp ); - - connect( cp, TQT_SIGNAL(newCol(int,int)), lp, TQT_SLOT(setCol(int,int)) ); - connect( lp, TQT_SIGNAL(newHsv(int,int,int)), this, TQT_SLOT(newHsv(int,int,int)) ); - - rightLay->addStretch(); - - cs = new TQColorShower( dialog, "qt_colorshower" ); - connect( cs, TQT_SIGNAL(newCol(TQRgb)), this, TQT_SLOT(newColorTypedIn(TQRgb))); - rightLay->addWidget( cs ); - - TQHBoxLayout *buttons; - if ( compact ) - buttons = new TQHBoxLayout( rightLay ); - else - buttons = new TQHBoxLayout( leftLay ); - - TQPushButton *ok, *cancel; - ok = new TQPushButton( TQColorDialog::tr("OK"), dialog, "qt_ok_btn" ); - connect( ok, TQT_SIGNAL(clicked()), dialog, TQT_SLOT(accept()) ); - ok->setDefault(TRUE); - cancel = new TQPushButton( TQColorDialog::tr("Cancel"), dialog, "qt_cancel_btn" ); - connect( cancel, TQT_SIGNAL(clicked()), dialog, TQT_SLOT(reject()) ); - buttons->addWidget( ok ); - buttons->addWidget( cancel ); - buttons->addStretch(); - - if ( !compact ) { - TQPushButton *addCusBt = new TQPushButton( - TQColorDialog::tr("&Add to Custom Colors"), - dialog, "qt_add_btn" ); - rightLay->addWidget( addCusBt ); - connect( addCusBt, TQT_SIGNAL(clicked()), this, TQT_SLOT(addCustom()) ); - } -} - -void TQColorDialogPrivate::addCustom() -{ - cusrgb[nextCust] = cs->currentColor(); - if (custom) - custom->repaintContents( FALSE ); - nextCust = (nextCust+1) % 16; -} - - -/*! - \class TQColorDialog tqcolordialog.h - \brief The TQColorDialog class provides a dialog widget for specifying colors. - \mainclass - \ingroup dialogs - \ingroup graphics - - The color dialog's function is to allow users to choose colors. - For example, you might use this in a drawing program to allow the - user to set the brush color. - - The static functions provide modal color dialogs. - \omit - If you require a modeless dialog, use the TQColorDialog constructor. - \endomit - - The static getColor() function shows the dialog and allows the - user to specify a color. The getRgba() function does the same but - also allows the user to specify a color with an alpha channel - (transparency) value. - - The user can store customCount() different custom colors. The - custom colors are shared by all color dialogs, and remembered - during the execution of the program. Use setCustomColor() to set - the custom colors, and use customColor() to get them. - - \img qcolordlg-w.png -*/ - -/*! - Constructs a default color dialog with parent \a parent and called - \a name. If \a modal is TRUE the dialog will be modal. Use - setColor() to set an initial value. - - \sa getColor() -*/ - -TQColorDialog::TQColorDialog(TQWidget* parent, const char* name, bool modal) : - TQDialog(parent, name, modal, (WFlags)( TQt::WType_Dialog | WStyle_Customize | TQt::WStyle_Title | - TQt::WStyle_DialogBorder | TQt::WStyle_SysMenu ) ) -{ - setSizeGripEnabled( FALSE ); - d = new TQColorDialogPrivate( this ); - -#ifndef TQT_NO_SETTINGS - if ( !customSet ) { - TQSettings settings; - settings.insertSearchPath( TQSettings::Windows, "/Trolltech" ); - for ( int i = 0; i < 2*8; ++i ) { - bool ok = FALSE; - TQRgb rgb = (TQRgb)settings.readNumEntry( "/TQt/customColors/" + TQString::number( i ), 0, &ok ); - if ( ok ) - cusrgb[i] = rgb; - } - } -#endif -} - -/*! - Pops up a modal color dialog, lets the user choose a color, and - returns that color. The color is initially set to \a initial. The - dialog is a child of \a parent and is called \a name. It returns - an invalid (see TQColor::isValid()) color if the user cancels the - dialog. All colors allocated by the dialog will be deallocated - before this function returns. -*/ - -TQColor TQColorDialog::getColor( const TQColor& initial, TQWidget *parent, - const char *name ) -{ -#if defined(TQ_WS_MAC) - return macGetColor(initial, parent, name); -#endif - - int allocContext = TQColor::enterAllocContext(); - TQColorDialog *dlg = new TQColorDialog( parent, name, TRUE ); //modal -#ifndef TQT_NO_WIDGET_TOPEXTRA - dlg->setCaption( TQColorDialog::tr( "Select color" ) ); -#endif - dlg->setColor( initial ); - dlg->selectColor( initial ); - int resultCode = dlg->exec(); - TQColor::leaveAllocContext(); - TQColor result; - if ( resultCode == TQDialog::Accepted ) - result = dlg->color(); - TQColor::destroyAllocContext(allocContext); - delete dlg; - return result; -} - - -/*! - Pops up a modal color dialog to allow the user to choose a color - and an alpha channel (transparency) value. The color+alpha is - initially set to \a initial. The dialog is a child of \a parent - and called \a name. - - If \a ok is non-null, \e *\a ok is set to TRUE if the user clicked - OK, and to FALSE if the user clicked Cancel. - - If the user clicks Cancel, the \a initial value is returned. -*/ - -TQRgb TQColorDialog::getRgba( TQRgb initial, bool *ok, - TQWidget *parent, const char* name ) -{ -#if defined(TQ_WS_MAC) - return macGetRgba(initial, ok, parent, name); -#endif - - int allocContext = TQColor::enterAllocContext(); - TQColorDialog *dlg = new TQColorDialog( parent, name, TRUE ); //modal - - TQ_CHECK_PTR( dlg ); -#ifndef TQT_NO_WIDGET_TOPEXTRA - dlg->setCaption( TQColorDialog::tr( "Select color" ) ); -#endif - dlg->setColor( initial ); - dlg->selectColor( initial ); - dlg->setSelectedAlpha( tqAlpha(initial) ); - int resultCode = dlg->exec(); - TQColor::leaveAllocContext(); - TQRgb result = initial; - if ( resultCode == TQDialog::Accepted ) { - TQRgb c = dlg->color().rgb(); - int alpha = dlg->selectedAlpha(); - result = tqRgba( tqRed(c), tqGreen(c), tqBlue(c), alpha ); - } - if ( ok ) - *ok = resultCode == TQDialog::Accepted; - - TQColor::destroyAllocContext(allocContext); - delete dlg; - return result; -} - - - - - -/*! - Returns the color currently selected in the dialog. - - \sa setColor() -*/ - -TQColor TQColorDialog::color() const -{ - return TQColor(d->currentColor()); -} - - -/*! - Destroys the dialog and frees any memory it allocated. -*/ - -TQColorDialog::~TQColorDialog() -{ -#ifndef TQT_NO_SETTINGS - if ( !customSet ) { - TQSettings settings; - settings.insertSearchPath( TQSettings::Windows, "/Trolltech" ); - for ( int i = 0; i < 2*8; ++i ) - settings.writeEntry( "/TQt/customColors/" + TQString::number( i ), (int)cusrgb[i] ); - } -#endif -} - - -/*! - Sets the color shown in the dialog to \a c. - - \sa color() -*/ - -void TQColorDialog::setColor( const TQColor& c ) -{ - d->setCurrentColor( c.rgb() ); -} - - - - -/*! - Sets the initial alpha channel value to \a a, and shows the alpha - channel entry box. -*/ - -void TQColorDialog::setSelectedAlpha( int a ) -{ - d->showAlpha( TRUE ); - d->setCurrentAlpha( a ); -} - - -/*! - Returns the value selected for the alpha channel. -*/ - -int TQColorDialog::selectedAlpha() const -{ - return d->currentAlpha(); -} - -/*! - Sets focus to the corresponding button, if any. -*/ -bool TQColorDialog::selectColor( const TQColor& col ) -{ - TQRgb color = col.rgb(); - int i = 0, j = 0; - // Check standard colors - if (d->standard) { - for ( i = 0; i < 6; i++ ) { - for ( j = 0; j < 8; j++ ) { - if ( color == stdrgb[i + j*6] ) { - d->newStandard( i, j ); - d->standard->setCurrent( i, j ); - d->standard->setSelected( i, j ); - d->standard->setFocus(); - return TRUE; - } - } - } - } - // Check custom colors - if (d->custom) { - for ( i = 0; i < 2; i++ ) { - for ( j = 0; j < 8; j++ ) { - if ( color == cusrgb[i + j*2] ) { - d->newCustom( i, j ); - d->custom->setCurrent( i, j ); - d->custom->setSelected( i, j ); - d->custom->setFocus(); - return TRUE; - } - } - } - } - return FALSE; -} - -#include "tqcolordialog.tqmoc" - -#endif |