/* * Copyright (c) 2005 Boudewijn Rempt * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "kis_palette_widget.h" #include "kis_resource.h" #include "kis_palette.h" #include "kis_palette_view.h" KisPaletteWidget::KisPaletteWidget( TQWidget *parent, int minWidth, int cols) : TQWidget( parent ), mMinWidth(minWidth), mCols(cols) { init = false; m_currentPalette = 0; TQVBoxLayout *layout = new TQVBoxLayout( this ); combo = new TQComboBox( false, this ); combo->setFocusPolicy( TQWidget::ClickFocus ); layout->addWidget(combo); m_view = new KisPaletteView(this, 0, minWidth, cols); layout->addWidget( m_view ); //setFixedSize(sizeHint()); connect(combo, TQ_SIGNAL(activated(const TQString &)), this, TQ_SLOT(slotSetPalette(const TQString &))); connect(m_view, TQ_SIGNAL(colorSelected(const KisColor &)), this, TQ_SIGNAL(colorSelected(const KisColor &))); connect(m_view, TQ_SIGNAL(colorSelected(const TQColor &)), this, TQ_SIGNAL(colorSelected(const TQColor &))); connect(m_view, TQ_SIGNAL(colorDoubleClicked(const KisColor &, const TQString &)), this, TQ_SIGNAL(colorDoubleClicked(const KisColor &, const TQString &))); } KisPaletteWidget::~KisPaletteWidget() { } TQString KisPaletteWidget::palette() const { return combo->currentText(); } // 2000-02-12 Espen Sand // Set the color in two steps. The setPalette() slot will not emit a signal // with the current color setting. The reason is that setPalette() is used // by the color selector dialog on startup. In the color selector dialog // we normally want to display a startup color which we specify // when the dialog is started. The slotSetPalette() slot below will // set the palette and then use the information to emit a signal with the // new color setting. It is only used by the combobox widget. // void KisPaletteWidget::slotSetPalette( const TQString &_paletteName ) { setPalette( _paletteName ); m_view->slotColorCellSelected(0); // FIXME: We need to save the current value!! } void KisPaletteWidget::setPalette( const TQString &_paletteName ) { TQString paletteName( _paletteName); m_currentPalette = m_namedPaletteMap[paletteName]; if (combo->currentText() != paletteName) { bool found = false; for(int i = 0; i < combo->count(); i++) { if (combo->text(i) == paletteName) { combo->setCurrentItem(i); found = true; break; } } if (!found) { combo->insertItem(paletteName); combo->setCurrentItem(combo->count()-1); } } m_view->setPalette(m_currentPalette); } void KisPaletteWidget::slotAddPalette(KisResource * palette) { KisPalette * p = dynamic_cast(palette); m_namedPaletteMap.insert(palette->name(), p); combo->insertItem(palette->name()); if (!init) { combo->setCurrentItem(0); setPalette(combo ->currentText()); init = true; } } #include "kis_palette_widget.moc"