diff options
Diffstat (limited to 'twin-styles/glow/config')
-rw-r--r-- | twin-styles/glow/config/CMakeLists.txt | 28 | ||||
-rw-r--r-- | twin-styles/glow/config/Makefile.am | 17 | ||||
-rw-r--r-- | twin-styles/glow/config/bitmaps.h | 55 | ||||
-rw-r--r-- | twin-styles/glow/config/glowconfigdialog.cpp | 369 | ||||
-rw-r--r-- | twin-styles/glow/config/glowconfigdialog.h | 92 |
5 files changed, 561 insertions, 0 deletions
diff --git a/twin-styles/glow/config/CMakeLists.txt b/twin-styles/glow/config/CMakeLists.txt new file mode 100644 index 00000000..bfcc2633 --- /dev/null +++ b/twin-styles/glow/config/CMakeLists.txt @@ -0,0 +1,28 @@ +################################################# +# +# (C) 2011 Golubev Alexander +# fatzer2 (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} +) + +##### twin_glow_config (module) ################## + +tde_add_kpart( twin_glow_config AUTOMOC + SOURCES glowconfigdialog.cpp + LINK tdeui-shared + DESTINATION ${PLUGIN_INSTALL_DIR} +) diff --git a/twin-styles/glow/config/Makefile.am b/twin-styles/glow/config/Makefile.am new file mode 100644 index 00000000..bf3d334b --- /dev/null +++ b/twin-styles/glow/config/Makefile.am @@ -0,0 +1,17 @@ +INCLUDES = $(all_includes) + +kde_module_LTLIBRARIES = twin_glow_config.la + +twin_glow_config_la_SOURCES = glowconfigdialog.cpp +twin_glow_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx +twin_glow_config_la_LIBADD = $(LIB_TDEUI) + +METASOURCES = AUTO +noinst_HEADERS = glowconfigdialog.h + +lnkdir = $(kde_datadir)/twin/ + + +###KMAKE-start (don't edit or delete this block) + +###KMAKE-end diff --git a/twin-styles/glow/config/bitmaps.h b/twin-styles/glow/config/bitmaps.h new file mode 100644 index 00000000..7ecb262a --- /dev/null +++ b/twin-styles/glow/config/bitmaps.h @@ -0,0 +1,55 @@ +/*************************************************************************** + bitmaps.h - description + ------------------- + begin : Thu Sep 12 2001 + copyright : (C) 2001 by Henning Burchardt + email : h_burchardt@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef BITMAPS_H +#define BITMAPS_H + +#define BITMAP_SIZE 17 + +static unsigned char close_bits[] = { + 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0xf8,0x00,0x00,0x0c,0x10,0x10,0x60, + 0x30,0x18,0x00,0x60,0x0c,0xc8,0xc0,0x07,0x16,0x80,0x03,0x60,0xc0,0x07,0x00, + 0x60,0x0c,0x00,0x30,0x18,0xf8,0x10,0x10,0x00,0x00,0x00,0x46,0x00,0x00,0xfe, + 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x89,0xf3,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; +static unsigned char help_bits[] = { + 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x80,0x07,0xb6, + 0x40,0x0c,0x00,0x00,0x0c,0xc8,0x00,0x0c,0x16,0x00,0x06,0xb6,0x00,0x03,0x00, + 0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0xac,0x00,0x00,0xfe, + 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x24,0xc4,0x3f,0x40,0x01,0xf3,0x00,0x00, + 0x70,0xb9,0x65,0x40,0x70,0xb9,0x65,0x40 }; +static unsigned char maximizeoff_bits[] = { + 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0xf0,0x1f,0x60, + 0xf0,0x1f,0x00,0x10,0x10,0xc8,0x10,0x10,0x16,0x10,0x10,0x60,0x10,0x10,0x00, + 0x10,0x10,0x00,0x10,0x10,0x1e,0xf0,0x1f,0x00,0x00,0x00,0x50,0x00,0x00,0xfe, + 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x68,0xb9,0x65,0x40,0x01,0xf2,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0xb1,0x65,0x40 }; +static unsigned char minimize_bits[] = { + 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x00,0x00,0xb6, + 0xe0,0x0f,0x00,0x00,0x00,0xc8,0x20,0x08,0x16,0x60,0x0c,0xb6,0xc0,0x06,0x00, + 0x80,0x03,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0xb2,0x00,0x00,0xfe, + 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; +static unsigned char stickyoff_bits[] = { + 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0x50,0x15,0x60, + 0xe0,0x00,0x00,0xf0,0x11,0xc8,0xe0,0x00,0x16,0x50,0x15,0x60,0x00,0x00,0x00, + 0x10,0x11,0x00,0x00,0x00,0x1e,0x50,0x15,0x00,0x00,0x00,0x46,0x00,0x00,0xfe, + 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x08,0x31,0xf2,0x00,0x00, + 0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00 }; + +#endif + diff --git a/twin-styles/glow/config/glowconfigdialog.cpp b/twin-styles/glow/config/glowconfigdialog.cpp new file mode 100644 index 00000000..f8ff62fd --- /dev/null +++ b/twin-styles/glow/config/glowconfigdialog.cpp @@ -0,0 +1,369 @@ +/*************************************************************************** + glowconfigdialog.cpp - description + ------------------- + begin : Thu Sep 12 2001 + copyright : (C) 2001 by Henning Burchardt + email : h_burchardt@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#include <tqbitmap.h> +#include <tqbuttongroup.h> +#include <tqcheckbox.h> +#include <tqcombobox.h> +#include <tqdir.h> +#include <tqfileinfo.h> +#include <tqgroupbox.h> +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqlistview.h> +#include <tqpushbutton.h> +#include <tqsignalmapper.h> +#include <tqstringlist.h> +#include <kconfig.h> +#include <kcolorbutton.h> +#include <kdebug.h> +#include <kglobal.h> +#include <kglobalsettings.h> +#include <klocale.h> +#include <kpixmap.h> +#include <kpixmapeffect.h> +#include <kstandarddirs.h> +#include "bitmaps.h" +#include "glowconfigdialog.h" +#include "../resources.h" + +#define NUMBER_OF_BUTTONS 5 + +extern "C" +{ + KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent ) + { + return(new GlowConfigDialog(conf, parent)); + } +} + +GlowConfigDialog::GlowConfigDialog( KConfig * conf, TQWidget * parent ) + : TQObject(parent) +{ + _glowConfig = new KConfig("twinglowrc"); + KGlobal::locale()->insertCatalogue("twin_glow_config"); + + _main_group_box = new TQWidget(parent); + TQVBoxLayout *main_group_boxLayout = new TQVBoxLayout(_main_group_box); + main_group_boxLayout->tqsetAlignment(TQt::AlignTop | TQt::AlignLeft); + main_group_boxLayout->setSpacing(6); + + //------------------------------------------------------------------------- + // themes + + _theme_list_view = new TQListView (_main_group_box, "theme_list_view"); + _theme_list_view->addColumn (i18n("Theme")); + _theme_list_view->addColumn (i18n("Button Size")); + _theme_list_view->setAllColumnsShowFocus(true); + _theme_list_view->setResizeMode(TQListView::AllColumns); + + main_group_boxLayout->addWidget (_theme_list_view); + TQObject::connect (_theme_list_view, TQT_SIGNAL(selectionChanged()), + this, TQT_SLOT(slotThemeListViewSelectionChanged())); + slotLoadThemeList(); + + _button_glow_color_group_box = new TQGroupBox( + 0, Qt::Horizontal, i18n("Button Glow Colors"), _main_group_box); + TQHBoxLayout *colorHBoxLayout = + new TQHBoxLayout(_button_glow_color_group_box->tqlayout()); + + // create buttons + TQSize buttonSize(BITMAP_SIZE, BITMAP_SIZE); + TQPixmap pm(buttonSize); + pm.fill(TQt::black); + + _stickyButton = new TQPushButton(_button_glow_color_group_box); + pm.setMask(TQBitmap(buttonSize, stickyoff_bits, true)); + _stickyButton->setPixmap(pm); + colorHBoxLayout->addWidget(_stickyButton); + _titleButtonList.push_back(_stickyButton); + + _helpButton = new TQPushButton(_button_glow_color_group_box); + pm.setMask(TQBitmap(buttonSize, help_bits, true)); + _helpButton->setPixmap(pm); + colorHBoxLayout->addWidget(_helpButton); + _titleButtonList.push_back(_helpButton); + + _iconifyButton = new TQPushButton(_button_glow_color_group_box); + pm.setMask(TQBitmap(buttonSize, minimize_bits, true)); + _iconifyButton->setPixmap(pm); + colorHBoxLayout->addWidget(_iconifyButton); + _titleButtonList.push_back(_iconifyButton); + + _maximizeButton = new TQPushButton(_button_glow_color_group_box); + pm.setMask(TQBitmap(buttonSize, maximizeoff_bits, true)); + _maximizeButton->setPixmap(pm); + colorHBoxLayout->addWidget(_maximizeButton); + _titleButtonList.push_back(_maximizeButton); + + _closeButton = new TQPushButton(_button_glow_color_group_box); + pm.setMask(TQBitmap(buttonSize, close_bits, true)); + _closeButton->setPixmap(pm); + colorHBoxLayout->addWidget(_closeButton); + _titleButtonList.push_back(_closeButton); + + // create signal mapper + _titleButtonMapper = new TQSignalMapper(this); + for( uint i=0; i<_titleButtonList.size(); i++ ) { + _titleButtonMapper->setMapping(TQT_TQOBJECT(_titleButtonList[i]), i); + connect(_titleButtonList[i], TQT_SIGNAL(clicked()),_titleButtonMapper, TQT_SLOT(map())); + } + connect(_titleButtonMapper, TQT_SIGNAL(mapped(int)),this, TQT_SLOT(slotTitleButtonClicked(int))); + + _colorButton = new KColorButton(_button_glow_color_group_box); + _colorButton->setEnabled(false); + connect(_colorButton, TQT_SIGNAL(changed(const TQColor&)), + this, TQT_SLOT(slotColorButtonChanged(const TQColor&))); + + colorHBoxLayout->addItem(new TQSpacerItem( + 200, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum)); + colorHBoxLayout->addWidget(_colorButton); + + main_group_boxLayout->addWidget(_button_glow_color_group_box); + + TQHBoxLayout *titlebarGradientTypeLayout = new TQHBoxLayout(); + _titlebarGradientTypeComboBox = new TQComboBox(_main_group_box); + + KConfig *c = KGlobal::config(); + KConfigGroupSaver cgs( c, TQString::tqfromLatin1("WM") ); + TQColor activeBackground = c->readColorEntry("activeBackground"); + TQColor activeBlend = c->readColorEntry("activeBlend"); + + // If the colors are equal, change one to get a gradient effect + if (activeBackground==activeBlend) { + activeBackground = activeBackground.dark(); + } + for (int i=0; i< KPixmapEffect::EllipticGradient; i++ ) { + KPixmap gradPixmap(TQSize(196,20)); + KPixmapEffect::gradient(gradPixmap, activeBackground, + activeBlend, (KPixmapEffect::GradientType) i); + + _titlebarGradientTypeComboBox->insertItem(gradPixmap, i); + } + + connect(_titlebarGradientTypeComboBox, TQT_SIGNAL(activated(int)), + this, TQT_SLOT(slotTitlebarGradientTypeChanged(int))); + titlebarGradientTypeLayout->addWidget( + new TQLabel(i18n("Titlebar gradient:"), _main_group_box)); + titlebarGradientTypeLayout->addWidget(_titlebarGradientTypeComboBox, 0, TQt::AlignLeft); + titlebarGradientTypeLayout->addStretch(10); + main_group_boxLayout->addLayout(titlebarGradientTypeLayout); + + + _showResizeHandleCheckBox = new TQCheckBox( + i18n("Show resize handle"), _main_group_box); + connect(_showResizeHandleCheckBox, TQT_SIGNAL(clicked()), + this, TQT_SLOT(slotResizeHandleCheckBoxChanged())); + main_group_boxLayout->addWidget(_showResizeHandleCheckBox); + + // load config and update user interface + load(conf); + + _main_group_box->show(); +} + +GlowConfigDialog::~GlowConfigDialog() +{ + delete _main_group_box; + delete _glowConfig; + delete[] _buttonConfigMap; +} + +void GlowConfigDialog::load( KConfig* /* conf */ ) +{ + TQColor color; + const TQColor defaultCloseButtonColor(DEFAULT_CLOSE_BUTTON_COLOR); + const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR); + const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR); + const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR); + const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR); + + _glowConfig->setGroup("General"); + + _buttonConfigMap = new TQColor[NUMBER_OF_BUTTONS]; + color = _glowConfig->readColorEntry("stickyButtonGlowColor", + &defaultStickyButtonColor); + _buttonConfigMap[stickyButton] = color; + + color = _glowConfig->readColorEntry("helpButtonGlowColor", + &defaultHelpButtonColor); + _buttonConfigMap[helpButton] = color; + + color = _glowConfig->readColorEntry("iconifyButtonGlowColor", + &defaultIconifyButtonColor); + _buttonConfigMap[iconifyButton] = color; + + color = _glowConfig->readColorEntry("maximizeButtonGlowColor", + &defaultMaximizeButtonColor); + _buttonConfigMap[maximizeButton] = color; + + color = _glowConfig->readColorEntry("closeButtonGlowColor", + &defaultCloseButtonColor); + _buttonConfigMap[closeButton] = color; + + _showResizeHandle = _glowConfig->readBoolEntry("showResizeHandle", true); + _titlebarGradientType = static_cast<KPixmapEffect::GradientType> + (_glowConfig->readNumEntry("titlebarGradientType", + KPixmapEffect::DiagonalGradient)); + + _showResizeHandleCheckBox->setChecked(_showResizeHandle); + _titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType); + + _theme_name = _glowConfig->readEntry ("themeName", "default"); + _theme_list_view->setSelected ( + _theme_list_view->findItem (_theme_name, 0), true); + slotTitleButtonClicked(0); +} + +void GlowConfigDialog::save( KConfig* /* conf */ ) +{ + _glowConfig->setGroup("General"); + + _glowConfig->writeEntry("stickyButtonGlowColor", _buttonConfigMap[stickyButton]); + _glowConfig->writeEntry("helpButtonGlowColor", _buttonConfigMap[helpButton]); + _glowConfig->writeEntry("iconifyButtonGlowColor", _buttonConfigMap[iconifyButton]); + _glowConfig->writeEntry("maximizeButtonGlowColor", _buttonConfigMap[maximizeButton]); + _glowConfig->writeEntry("closeButtonGlowColor", _buttonConfigMap[closeButton]); + + _glowConfig->writeEntry("showResizeHandle", _showResizeHandle); + _glowConfig->writeEntry("titlebarGradientType", _titlebarGradientType); + + _glowConfig->writeEntry ("themeName", _theme_name); + + _glowConfig->sync(); +} + +void GlowConfigDialog::defaults() +{ + const TQColor defaultCloseButtonColor = DEFAULT_CLOSE_BUTTON_COLOR; + const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR); + const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR); + const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR); + const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR); + + _buttonConfigMap[stickyButton] = defaultStickyButtonColor; + _buttonConfigMap[helpButton] = defaultHelpButtonColor; + _buttonConfigMap[iconifyButton] = defaultIconifyButtonColor; + _buttonConfigMap[maximizeButton] = defaultMaximizeButtonColor; + _buttonConfigMap[closeButton] = defaultCloseButtonColor; + + _showResizeHandle = true; + _titlebarGradientType = KPixmapEffect::DiagonalGradient; + + _showResizeHandleCheckBox->setChecked(_showResizeHandle); + _titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType); + + _theme_list_view->setSelected ( + _theme_list_view->findItem("default", 0), true); +} + +void GlowConfigDialog::slotLoadThemeList () +{ + TQStringList dir_list=KGlobal::dirs()->findDirs("data", "twin/glow-themes"); + + TQStringList::ConstIterator it; + + _theme_list_view->clear(); + new TQListViewItem (_theme_list_view, "default", "17x17"); + + for (it=dir_list.begin(); it!=dir_list.end(); ++it) + { + TQDir dir (*it, TQString("*"), TQDir::Unsorted, + TQDir::Dirs | TQDir::Readable); + if (dir.exists()) + { + TQFileInfoListIterator it2(*dir.entryInfoList()); + TQFileInfo * finfo; + + while ((finfo=it2.current())) + { + if (finfo->fileName() == "." || finfo->fileName() == "..") { + ++it2; + continue; + } + + if (! _theme_list_view->findItem (finfo->fileName(), 0)) + { + KConfig conf (dir.path() + "/" + finfo->fileName() + "/" + + finfo->fileName() + ".theme"); + TQSize button_size = conf.readSizeEntry ( + "buttonSize", new TQSize (-1, -1)); + if (button_size.width() == -1) + { + ++it2; + continue; + } + TQString size_string = TQString("") + + TQString::number(button_size.width()) + + "x" + TQString::number(button_size.height()); + new TQListViewItem (_theme_list_view, + finfo->fileName(), size_string); + } + + ++it2; + } + } + } +} + +void GlowConfigDialog::slotTitlebarGradientTypeChanged(int index) +{ + _titlebarGradientType = static_cast<KPixmapEffect::GradientType>(index); + emit changed(); +} + +void GlowConfigDialog::slotResizeHandleCheckBoxChanged() +{ + _showResizeHandle = _showResizeHandleCheckBox->isChecked(); + emit changed(); +} + +void GlowConfigDialog::slotTitleButtonClicked(int index) +{ + for( int i=0; i< ((int) _titleButtonList.size()); i++ ) { + _titleButtonList[i]->setDown(i==index); + } + _colorButton->setEnabled(true); + _colorButton->setColor(_buttonConfigMap[index]); +} + +void GlowConfigDialog::slotColorButtonChanged(const TQColor& glowColor) +{ + if( _stickyButton->isDown() ) { + _buttonConfigMap[stickyButton] = glowColor; + } else if( _helpButton->isDown() ) { + _buttonConfigMap[helpButton] = glowColor; + } else if( _iconifyButton->isDown() ) { + _buttonConfigMap[iconifyButton] = glowColor; + } else if( _maximizeButton->isDown() ) { + _buttonConfigMap[maximizeButton] = glowColor; + } else { + _buttonConfigMap[closeButton] = glowColor; + } + emit changed(); +} + +void GlowConfigDialog::slotThemeListViewSelectionChanged () +{ + if( _theme_list_view->selectedItem() != 0 ) { + _theme_name = _theme_list_view->selectedItem()->text (0); + + emit changed(); + } +} + +#include "glowconfigdialog.moc" diff --git a/twin-styles/glow/config/glowconfigdialog.h b/twin-styles/glow/config/glowconfigdialog.h new file mode 100644 index 00000000..81747a4c --- /dev/null +++ b/twin-styles/glow/config/glowconfigdialog.h @@ -0,0 +1,92 @@ +/*************************************************************************** + glowconfigdialog.h - description + ------------------- + begin : Thu Sep 12 2001 + copyright : (C) 2001 by Henning Burchardt + email : h_burchardt@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef GLOW_CONFIG_DIALOG_H +#define GLOW_CONFIG_DIALOG_H + +#include <tqvaluevector.h> +#include <tqobject.h> + +class TQListView; +class TQPushButton; +class TQSignalMapper; +class TQCheckBox; +class TQComboBox; +class KConfig; +class KColorButton; + +class GlowConfigDialog : public TQObject +{ + Q_OBJECT + TQ_OBJECT + +public: + GlowConfigDialog( KConfig* conf, TQWidget* parent ); + ~GlowConfigDialog(); + +signals: + void changed(); + +public slots: + void load( KConfig* conf ); + void save( KConfig* conf ); + void defaults(); + +protected slots: + void slotTitleButtonClicked(int); + void slotColorButtonChanged(const TQColor&); + void slotTitlebarGradientTypeChanged(int); + void slotResizeHandleCheckBoxChanged(); + void slotThemeListViewSelectionChanged (); + +private slots: + void slotLoadThemeList (); + +private: + enum ButtonType{stickyButton, helpButton, iconifyButton, + maximizeButton, closeButton }; + + KConfig *_glowConfig; + + bool _showResizeHandle; + KPixmapEffect::GradientType _titlebarGradientType; + TQString _theme_name; + + TQWidget *_main_group_box; + TQGroupBox *_button_glow_color_group_box; + TQGroupBox *_theme_group_box; + + TQListView * _theme_list_view; + + TQCheckBox *_showResizeHandleCheckBox; + TQComboBox *_titlebarGradientTypeComboBox; + + TQPushButton *_stickyButton; + TQPushButton *_helpButton; + TQPushButton *_iconifyButton; + TQPushButton *_maximizeButton; + TQPushButton *_closeButton; + TQSignalMapper *_titleButtonMapper; + + TQColor* _buttonConfigMap; + TQValueVector<TQPushButton*> _titleButtonList; + + KColorButton *_colorButton; +}; + +#endif + |