You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1854 lines
70 KiB
1854 lines
70 KiB
/*
|
|
QtCurve (C) Craig Drummond, 2003 - 2010 craig.p.drummond@gmail.com
|
|
|
|
----
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
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; see the file COPYING. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "qtcurveconfig.h"
|
|
#ifdef QTC_STYLE_SUPPORT
|
|
#include "exportthemedialog.h"
|
|
#endif
|
|
#include <tqcheckbox.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqgroupbox.h>
|
|
#include <tqradiobutton.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqframe.h>
|
|
#include <tqtabwidget.h>
|
|
#include <tqpopupmenu.h>
|
|
#include <tqfileinfo.h>
|
|
#include <tqlistview.h>
|
|
#include <tqpainter.h>
|
|
#include <tqregexp.h>
|
|
#include <tqsettings.h>
|
|
#include <tqwidgetstack.h>
|
|
#include <klocale.h>
|
|
#include <kcolorbutton.h>
|
|
#include <kconfig.h>
|
|
#include <kfiledialog.h>
|
|
#include <kmessagebox.h>
|
|
#include <kpushbutton.h>
|
|
#include <kcharselect.h>
|
|
#include <kdialogbase.h>
|
|
#include <knuminput.h>
|
|
#include <kguiitem.h>
|
|
#include <kinputdialog.h>
|
|
#include <knuminput.h>
|
|
#include <kglobal.h>
|
|
#include <kstandarddirs.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
#include "config.h"
|
|
#define CONFIG_READ
|
|
#define CONFIG_WRITE
|
|
#include "config_file.c"
|
|
|
|
#define EXTENSION ".qtcurve"
|
|
|
|
extern "C"
|
|
{
|
|
QWidget * allocate_kstyle_config(QWidget *parent)
|
|
{
|
|
KGlobal::locale()->insertCatalogue("qtcurve");
|
|
return new QtCurveConfig(parent);
|
|
}
|
|
}
|
|
|
|
static void drawGradient(const QColor &top, const QColor &bot, bool increase,
|
|
QPainter *p, QRect const &r, bool horiz)
|
|
{
|
|
if(r.width()>0 && r.height()>0)
|
|
{
|
|
if(top==bot)
|
|
p->fillRect(r, top);
|
|
else
|
|
{
|
|
int rh(r.height()), rw(r.width()),
|
|
rTop(top.red()), gTop(top.green()), bTop(top.blue()),
|
|
rx, ry, rx2, ry2,
|
|
size(horiz ? rh : rw);
|
|
|
|
r.coords(&rx, &ry, &rx2, &ry2);
|
|
|
|
register int rl(rTop << 16);
|
|
register int gl(gTop << 16);
|
|
register int bl(bTop << 16);
|
|
register int i;
|
|
|
|
int dr(((1<<16) * (bot.red() - rTop)) / size),
|
|
dg(((1<<16) * (bot.green() - gTop)) / size),
|
|
db(((1<<16) * (bot.blue() - bTop)) / size);
|
|
|
|
if(increase)
|
|
if(horiz)
|
|
{
|
|
for (i=0; i < size; i++)
|
|
{
|
|
p->setPen(QColor(rl>>16, gl>>16, bl>>16));
|
|
p->drawLine(rx, ry+i, rx2, ry+i);
|
|
rl += dr;
|
|
gl += dg;
|
|
bl += db;
|
|
}
|
|
}
|
|
else
|
|
for(i=0; i < size; i++)
|
|
{
|
|
p->setPen(QColor(rl>>16, gl>>16, bl>>16));
|
|
p->drawLine(rx+i, ry, rx+i, ry2);
|
|
rl += dr;
|
|
gl += dg;
|
|
bl += db;
|
|
}
|
|
else
|
|
if(horiz)
|
|
{
|
|
for(i=size-1; i>=0; i--)
|
|
{
|
|
p->setPen(QColor(rl>>16, gl>>16, bl>>16));
|
|
p->drawLine(rx, ry+i, rx2, ry+i);
|
|
rl += dr;
|
|
gl += dg;
|
|
bl += db;
|
|
}
|
|
}
|
|
else
|
|
for(i=size-1; i>=0; i--)
|
|
{
|
|
p->setPen(QColor(rl>>16, gl>>16, bl>>16));
|
|
p->drawLine(rx+i, ry, rx+i, ry2);
|
|
rl += dr;
|
|
gl += dg;
|
|
bl += db;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
class CharSelectDialog : public KDialogBase
|
|
{
|
|
public:
|
|
|
|
CharSelectDialog(QWidget *parent, int v)
|
|
: KDialogBase(Plain, i18n("Select Password Character"), Ok|Cancel, Cancel, parent)
|
|
{
|
|
QFrame *page=plainPage();
|
|
|
|
QVBoxLayout *layout=new QVBoxLayout(page, 0, KDialog::spacingHint());
|
|
|
|
itsSelector=new KCharSelect(page, 0L);
|
|
itsSelector->setChar(QChar(v));
|
|
layout->addWidget(itsSelector);
|
|
}
|
|
|
|
int currentChar() const { return itsSelector->chr().unicode(); }
|
|
|
|
private:
|
|
|
|
KCharSelect *itsSelector;
|
|
};
|
|
|
|
class CStackItem : public QListViewItem
|
|
{
|
|
public:
|
|
|
|
CStackItem(QListView *p, const QString &text, int s)
|
|
: QListViewItem(p, text),
|
|
stackId(s)
|
|
{
|
|
}
|
|
|
|
int compare(QListViewItem *i, int, bool) const
|
|
{
|
|
int b=((CStackItem *)i)->stackId;
|
|
|
|
return stackId==b
|
|
? 0
|
|
: stackId<b
|
|
? -1
|
|
: 1;
|
|
}
|
|
|
|
int stack() { return stackId; }
|
|
|
|
private:
|
|
|
|
int stackId;
|
|
};
|
|
|
|
//
|
|
// QString.toDouble returns ok=true for "xx" ???
|
|
static double toDouble(const QString &str, bool *ok)
|
|
{
|
|
if(ok)
|
|
{
|
|
QString stripped(str.stripWhiteSpace());
|
|
int size(stripped.length());
|
|
|
|
for(int i=0; i<size; ++i)
|
|
if(!stripped[i].isNumber() && stripped[i]!='.')
|
|
{
|
|
*ok=false;
|
|
return 0.0;
|
|
}
|
|
}
|
|
|
|
return str.toDouble(ok);
|
|
}
|
|
|
|
class CGradItem : public QListViewItem
|
|
{
|
|
public:
|
|
|
|
CGradItem(QListView *p, const QString &a, const QString &b)
|
|
: QListViewItem(p, a, b)
|
|
{
|
|
setRenameEnabled(0, true);
|
|
setRenameEnabled(1, true);
|
|
}
|
|
|
|
virtual ~CGradItem() { }
|
|
|
|
void okRename(int col)
|
|
{
|
|
QString prevStr(text(col));
|
|
|
|
prev=prevStr.toDouble();
|
|
QListViewItem::okRename(col);
|
|
|
|
bool ok(false);
|
|
double val=toDouble(text(col), &ok)/100.0;
|
|
|
|
if(!ok || (0==col && (val<0.0 || val>1.0)) || (1==col && (val<0.0 || val>2.0)))
|
|
{
|
|
setText(col, prevStr);
|
|
startRename(col);
|
|
}
|
|
}
|
|
|
|
int compare(QListViewItem *i, int col, bool) const
|
|
{
|
|
double a(text(col).toDouble()),
|
|
b(i->text(col).toDouble());
|
|
|
|
return equal(a, b)
|
|
? 0
|
|
: a<b
|
|
? -1
|
|
: 1;
|
|
}
|
|
|
|
double prevVal() const { return prev; }
|
|
|
|
private:
|
|
|
|
double prev;
|
|
};
|
|
|
|
CGradientPreview::CGradientPreview(QtCurveConfig *c, QWidget *p)
|
|
: QWidget(p),
|
|
cfg(c)
|
|
{
|
|
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
|
}
|
|
|
|
QSize CGradientPreview::sizeHint() const
|
|
{
|
|
return QSize(64, 64);
|
|
}
|
|
|
|
QSize CGradientPreview::minimumSizeHint() const
|
|
{
|
|
return sizeHint();
|
|
}
|
|
|
|
void CGradientPreview::paintEvent(QPaintEvent *)
|
|
{
|
|
QRect r(rect());
|
|
QPainter p(this);
|
|
|
|
if(stops.size())
|
|
{
|
|
GradientStopCont st(stops.fix());
|
|
GradientStopCont::const_iterator it(st.begin()),
|
|
end(st.end());
|
|
QColor bot;
|
|
bool horiz(true);
|
|
int lastPos(horiz ? r.y() : r.x()),
|
|
size(horiz ? r.height() : r.width());
|
|
Options opts;
|
|
|
|
opts.shading=cfg->currentShading();
|
|
|
|
for(int i=0; it!=end; ++it, ++i)
|
|
{
|
|
if(0==i)
|
|
{
|
|
lastPos=(int)(((*it).pos*size)+0.5);
|
|
shade(&opts, color, &bot, (*it).val);
|
|
}
|
|
else
|
|
{
|
|
QColor top(bot);
|
|
int pos((int)(((*it).pos*size)+0.5));
|
|
|
|
shade(&opts, color, &bot, (*it).val);
|
|
drawGradient(top, bot, true, &p,
|
|
horiz
|
|
? QRect(r.x(), lastPos, r.width(), pos-lastPos)
|
|
: QRect(lastPos, r.y(), pos-lastPos, r.height()),
|
|
horiz);
|
|
lastPos=pos;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
p.fillRect(r, color);
|
|
p.end();
|
|
}
|
|
|
|
void CGradientPreview::setGrad(const GradientStopCont &s)
|
|
{
|
|
stops=s;
|
|
repaint();
|
|
}
|
|
|
|
void CGradientPreview::setColor(const QColor &col)
|
|
{
|
|
if(col!=color)
|
|
{
|
|
color=col;
|
|
repaint();
|
|
}
|
|
}
|
|
|
|
static int toInt(const QString &str)
|
|
{
|
|
return str.length()>1 ? str[0].unicode() : 0;
|
|
}
|
|
|
|
enum ShadeWidget
|
|
{
|
|
SW_MENUBAR,
|
|
SW_SLIDER,
|
|
SW_CHECK_RADIO,
|
|
SW_MENU_STRIPE,
|
|
SW_COMBO,
|
|
SW_LV_HEADER
|
|
};
|
|
|
|
static void insertShadeEntries(QComboBox *combo, ShadeWidget sw)
|
|
{
|
|
switch(sw)
|
|
{
|
|
case SW_MENUBAR:
|
|
combo->insertItem(i18n("Background"));
|
|
break;
|
|
case SW_COMBO:
|
|
case SW_SLIDER:
|
|
combo->insertItem(i18n("Button"));
|
|
break;
|
|
case SW_CHECK_RADIO:
|
|
combo->insertItem(i18n("Text"));
|
|
break;
|
|
case SW_LV_HEADER:
|
|
case SW_MENU_STRIPE:
|
|
combo->insertItem(i18n("None"));
|
|
break;
|
|
}
|
|
|
|
combo->insertItem(i18n("Custom:"));
|
|
combo->insertItem(i18n("Selected background"));
|
|
if(SW_CHECK_RADIO!=sw) // For check/radio, we dont blend, and dont allow darken
|
|
{
|
|
combo->insertItem(i18n("Blended selected background"));
|
|
combo->insertItem(SW_MENU_STRIPE==sw ? i18n("Menu background") : i18n("Darken"));
|
|
}
|
|
|
|
if(SW_MENUBAR==sw)
|
|
combo->insertItem(i18n("Titlebar border"));
|
|
}
|
|
|
|
static void insertAppearanceEntries(QComboBox *combo, bool split=true, bool bev=true, bool fade=false, bool striped=false)
|
|
{
|
|
for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
|
|
combo->insertItem(i18n("Custom gradient %1").arg((i-APPEARANCE_CUSTOM1)+1));
|
|
|
|
combo->insertItem(i18n("Flat"));
|
|
combo->insertItem(i18n("Raised"));
|
|
combo->insertItem(i18n("Dull glass"));
|
|
combo->insertItem(i18n("Shiny glass"));
|
|
combo->insertItem(i18n("Agua"));
|
|
combo->insertItem(i18n("Soft gradient"));
|
|
combo->insertItem(i18n("Standard gradient"));
|
|
combo->insertItem(i18n("Harsh gradient"));
|
|
combo->insertItem(i18n("Inverted gradient"));
|
|
combo->insertItem(i18n("Dark inverted gradient"));
|
|
if(split)
|
|
{
|
|
combo->insertItem(i18n("Split gradient"));
|
|
if(bev)
|
|
{
|
|
combo->insertItem(i18n("Bevelled"));
|
|
if(fade)
|
|
combo->insertItem(i18n("Fade out (popup menuitems)"));
|
|
else if(striped)
|
|
combo->insertItem(i18n("Striped"));
|
|
}
|
|
}
|
|
}
|
|
|
|
static void insertLineEntries(QComboBox *combo, bool singleDot, bool dashes)
|
|
{
|
|
combo->insertItem(i18n("None"));
|
|
combo->insertItem(i18n("Sunken lines"));
|
|
combo->insertItem(i18n("Flat lines"));
|
|
combo->insertItem(i18n("Dots"));
|
|
if(singleDot)
|
|
{
|
|
combo->insertItem(i18n("Single dot (KDE4 & Gtk2 Only)"));
|
|
if(dashes)
|
|
combo->insertItem(i18n("Dashes"));
|
|
}
|
|
}
|
|
|
|
static void insertDefBtnEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Corner indicator"));
|
|
combo->insertItem(i18n("Font color thin border"));
|
|
combo->insertItem(i18n("Selected background thick border"));
|
|
combo->insertItem(i18n("Selected background tinting"));
|
|
combo->insertItem(i18n("A slight glow"));
|
|
combo->insertItem(i18n("Darken"));
|
|
combo->insertItem(i18n("Use selected background color"));
|
|
combo->insertItem(i18n("No indicator"));
|
|
}
|
|
|
|
static void insertScrollbarEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("KDE"));
|
|
combo->insertItem(i18n("MS Windows"));
|
|
combo->insertItem(i18n("Platinum"));
|
|
combo->insertItem(i18n("NeXT"));
|
|
combo->insertItem(i18n("No buttons"));
|
|
}
|
|
|
|
static void insertRoundEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Square"));
|
|
combo->insertItem(i18n("Slightly rounded"));
|
|
combo->insertItem(i18n("Fully rounded"));
|
|
combo->insertItem(i18n("Extra rounded (KDE4 & Gtk2)"));
|
|
combo->insertItem(i18n("Max rounded (KDE4 & Gtk2)"));
|
|
}
|
|
|
|
static void insertMouseOverEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("No coloration"));
|
|
combo->insertItem(i18n("Color border"));
|
|
combo->insertItem(i18n("Thick color border"));
|
|
combo->insertItem(i18n("Plastik style"));
|
|
combo->insertItem(i18n("Glow"));
|
|
}
|
|
|
|
static void insertToolbarBorderEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("None"));
|
|
combo->insertItem(i18n("Light"));
|
|
combo->insertItem(i18n("Dark"));
|
|
combo->insertItem(i18n("Light (all sides)"));
|
|
combo->insertItem(i18n("Dark (all sides)"));
|
|
}
|
|
|
|
static void insertEffectEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Plain"));
|
|
combo->insertItem(i18n("Etched"));
|
|
combo->insertItem(i18n("Shadowed"));
|
|
}
|
|
|
|
static void insertShadingEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Simple"));
|
|
combo->insertItem(i18n("Use HSL color space"));
|
|
combo->insertItem(i18n("Use HSV color space"));
|
|
combo->insertItem(i18n("Use HCY color space"));
|
|
}
|
|
|
|
static void insertStripeEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Plain"));
|
|
combo->insertItem(i18n("Stripes"));
|
|
combo->insertItem(i18n("Diagonal stripes"));
|
|
combo->insertItem(i18n("Faded stripes"));
|
|
}
|
|
|
|
static void insertSliderStyleEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Plain"));
|
|
combo->insertItem(i18n("Round"));
|
|
combo->insertItem(i18n("Plain - rotated"));
|
|
combo->insertItem(i18n("Round - rotated"));
|
|
combo->insertItem(i18n("Triangular"));
|
|
combo->insertItem(i18n("Circular"));
|
|
}
|
|
|
|
static void insertEColorEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Base color"));
|
|
combo->insertItem(i18n("Background color"));
|
|
combo->insertItem(i18n("Darkened background color"));
|
|
}
|
|
|
|
static void insertFocusEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Standard (dotted)"));
|
|
combo->insertItem(i18n("Highlight color"));
|
|
combo->insertItem(i18n("Highlight color (full size)"));
|
|
combo->insertItem(i18n("Highlight color, full, and fill (Gtk2 & KDE4 only)"));
|
|
combo->insertItem(i18n("Line drawn with highlight color"));
|
|
}
|
|
|
|
static void insertGradBorderEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("No border"));
|
|
combo->insertItem(i18n("Light border"));
|
|
combo->insertItem(i18n("3D border (light only)"));
|
|
combo->insertItem(i18n("3D border (dark and light)"));
|
|
combo->insertItem(i18n("Shine"));
|
|
}
|
|
|
|
static void insertAlignEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Left"));
|
|
combo->insertItem(i18n("Center (between controls)"));
|
|
combo->insertItem(i18n("Center (full width)"));
|
|
combo->insertItem(i18n("Right"));
|
|
}
|
|
|
|
static void insertTabMoEntriess(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Highlight on top"));
|
|
combo->insertItem(i18n("Highlight on bottom"));
|
|
combo->insertItem(i18n("Add a slight glow"));
|
|
}
|
|
|
|
static void insertGradTypeEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("Top to bottom"));
|
|
combo->insertItem(i18n("Left to right"));
|
|
}
|
|
|
|
static void insertLvLinesEntries(QComboBox *combo)
|
|
{
|
|
combo->insertItem(i18n("None"));
|
|
combo->insertItem(i18n("New style (KDE and Gtk2 similar)"));
|
|
combo->insertItem(i18n("Old style (KDE and Gtk2 different)"));
|
|
}
|
|
|
|
QtCurveConfig::QtCurveConfig(QWidget *parent)
|
|
: QtCurveConfigBase(parent),
|
|
#ifdef QTC_STYLE_SUPPORT
|
|
exportDialog(NULL),
|
|
#endif
|
|
gradPreview(NULL),
|
|
lastCategory(NULL)
|
|
{
|
|
titleLabel->setText("QtCurve " VERSION " - (C) Craig Drummond, 2003-2009");
|
|
insertShadeEntries(shadeSliders, SW_SLIDER);
|
|
insertShadeEntries(shadeMenubars, SW_MENUBAR);
|
|
insertShadeEntries(shadeCheckRadio, SW_CHECK_RADIO);
|
|
insertShadeEntries(menuStripe, SW_MENU_STRIPE);
|
|
insertShadeEntries(comboBtn, SW_COMBO);
|
|
insertShadeEntries(sortedLv, SW_LV_HEADER);
|
|
insertAppearanceEntries(appearance);
|
|
insertAppearanceEntries(menubarAppearance);
|
|
insertAppearanceEntries(toolbarAppearance);
|
|
insertAppearanceEntries(lvAppearance);
|
|
insertAppearanceEntries(sliderAppearance);
|
|
insertAppearanceEntries(tabAppearance, false, false);
|
|
insertAppearanceEntries(activeTabAppearance, false, false);
|
|
insertAppearanceEntries(progressAppearance);
|
|
insertAppearanceEntries(progressGrooveAppearance);
|
|
insertAppearanceEntries(grooveAppearance);
|
|
insertAppearanceEntries(sunkenAppearance);
|
|
insertAppearanceEntries(menuitemAppearance, true, true, true);
|
|
insertAppearanceEntries(titlebarAppearance, true, false);
|
|
insertAppearanceEntries(inactiveTitlebarAppearance, true, false);
|
|
insertAppearanceEntries(titlebarButtonAppearance);
|
|
insertAppearanceEntries(selectionAppearance, true, false);
|
|
insertAppearanceEntries(menuStripeAppearance, true, false);
|
|
insertAppearanceEntries(sbarBgndAppearance);
|
|
insertAppearanceEntries(sliderFill);
|
|
insertAppearanceEntries(menuBgndAppearance, true, true, false, true);
|
|
insertAppearanceEntries(dwtAppearance);
|
|
insertLineEntries(handles, true, true);
|
|
insertLineEntries(sliderThumbs, true, false);
|
|
insertLineEntries(toolbarSeparators, false, false);
|
|
insertLineEntries(splitters, true, true);
|
|
insertDefBtnEntries(defBtnIndicator);
|
|
insertScrollbarEntries(scrollbarType);
|
|
insertRoundEntries(round);
|
|
insertMouseOverEntries(coloredMouseOver);
|
|
insertToolbarBorderEntries(toolbarBorders);
|
|
insertEffectEntries(buttonEffect);
|
|
insertShadingEntries(shading);
|
|
insertStripeEntries(stripedProgress);
|
|
insertSliderStyleEntries(sliderStyle);
|
|
insertEColorEntries(progressGrooveColor);
|
|
insertFocusEntries(focus);
|
|
insertGradBorderEntries(gradBorder);
|
|
insertAlignEntries(titlebarAlignment);
|
|
insertTabMoEntriess(tabMouseOver);
|
|
insertGradTypeEntries(menuBgndGrad);
|
|
insertLvLinesEntries(lvLines);
|
|
|
|
highlightFactor->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
|
|
highlightFactor->setValue(DEFAULT_HIGHLIGHT_FACTOR);
|
|
|
|
crHighlight->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
|
|
crHighlight->setValue(DEFAULT_CR_HIGHLIGHT_FACTOR);
|
|
|
|
splitterHighlight->setRange(MIN_HIGHLIGHT_FACTOR, MAX_HIGHLIGHT_FACTOR);
|
|
splitterHighlight->setValue(DEFAULT_SPLITTER_HIGHLIGHT_FACTOR);
|
|
|
|
lighterPopupMenuBgnd->setRange(MIN_LIGHTER_POPUP_MENU, MAX_LIGHTER_POPUP_MENU, 1, false);
|
|
lighterPopupMenuBgnd->setValue(DEF_POPUPMENU_LIGHT_FACTOR);
|
|
|
|
menuDelay->setRange(MIN_MENU_DELAY, MAX_MENU_DELAY, 1, false);
|
|
menuDelay->setValue(DEFAULT_MENU_DELAY);
|
|
|
|
sliderWidth->setRange(MIN_SLIDER_WIDTH, MAX_SLIDER_WIDTH, 2, false);
|
|
sliderWidth->setValue(DEFAULT_SLIDER_WIDTH);
|
|
sliderWidth->setSuffix(i18n(" pixels"));
|
|
|
|
tabBgnd->setRange(MIN_TAB_BGND, MAX_TAB_BGND, 1, false);
|
|
tabBgnd->setValue(DEF_TAB_BGND);
|
|
|
|
colorSelTab->setRange(MIN_COLOR_SEL_TAB_FACTOR, MAX_COLOR_SEL_TAB_FACTOR, 5, false);
|
|
colorSelTab->setValue(DEF_COLOR_SEL_TAB_FACTOR);
|
|
|
|
connect(lighterPopupMenuBgnd, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(tabBgnd, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(menuDelay, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(sliderWidth, SIGNAL(valueChanged(int)), SLOT(sliderWidthChanged()));
|
|
connect(menuStripe, SIGNAL(activated(int)), SLOT(menuStripeChanged()));
|
|
connect(customMenuStripeColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(menuStripeAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(menuBgndAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(menuBgndGrad, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(round, SIGNAL(activated(int)), SLOT(roundChanged()));
|
|
connect(toolbarBorders, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(sliderThumbs, SIGNAL(activated(int)), SLOT(sliderThumbChanged()));
|
|
connect(handles, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(appearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(customMenuTextColor, SIGNAL(toggled(bool)), SLOT(customMenuTextColorChanged()));
|
|
connect(stripedProgress, SIGNAL(activated(int)), SLOT(stripedProgressChanged()));
|
|
connect(animatedProgress, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(embolden, SIGNAL(toggled(bool)), SLOT(emboldenToggled()));
|
|
connect(defBtnIndicator, SIGNAL(activated(int)), SLOT(defBtnIndicatorChanged()));
|
|
connect(highlightTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(menubarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(toolbarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(lvAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(sliderAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(tabAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(activeTabAppearance, SIGNAL(activated(int)), SLOT(activeTabAppearanceChanged()));
|
|
connect(toolbarSeparators, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(splitters, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(fixParentlessDialogs, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(fillSlider, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(sliderStyle, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(roundMbTopOnly, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(fillProgress, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(darkerBorders, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(comboSplitter, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(comboBtn, SIGNAL(activated(int)), SLOT(comboBtnChanged()));
|
|
connect(sortedLv, SIGNAL(activated(int)), SLOT(sortedLvChanged()));
|
|
connect(customComboBtnColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(customSortedLvColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(unifySpinBtns, SIGNAL(toggled(bool)), SLOT(unifySpinBtnsToggled()));
|
|
connect(unifySpin, SIGNAL(toggled(bool)), SLOT(unifySpinToggled()));
|
|
connect(unifyCombo, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(vArrows, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(xCheck, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(crHighlight, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(crButton, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(colorSelTab, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(roundAllTabs, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(borderTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(borderInactiveTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(invertBotTab, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(doubleGtkComboArrow, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(tabMouseOver, SIGNAL(activated(int)), SLOT(tabMoChanged()));
|
|
connect(stdSidebarButtons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(borderMenuitems, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(popupBorder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(progressAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(progressGrooveAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(grooveAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(sunkenAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(progressGrooveColor, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(menuitemAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(titlebarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(inactiveTitlebarAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(titlebarButtonAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(colorTitlebarOnly, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(selectionAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(shadeCheckRadio, SIGNAL(activated(int)), SLOT(shadeCheckRadioChanged()));
|
|
connect(customCheckRadioColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(focus, SIGNAL(activated(int)), SLOT(focusChanged()));
|
|
connect(lvLines, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(lvButton, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(drawStatusBarFrames, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(buttonEffect, SIGNAL(activated(int)), SLOT(buttonEffectChanged()));
|
|
connect(coloredMouseOver, SIGNAL(activated(int)), SLOT(coloredMouseOverChanged()));
|
|
connect(menubarMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(shadeMenubarOnlyWhenActive, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(thinnerMenuItems, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(thinnerBtns, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(customSlidersColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(customMenubarsColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(customMenuSelTextColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(customMenuNormTextColor, SIGNAL(changed(const QColor &)), SLOT(updateChanged()));
|
|
connect(shadeSliders, SIGNAL(activated(int)), SLOT(shadeSlidersChanged()));
|
|
connect(shadeMenubars, SIGNAL(activated(int)), SLOT(shadeMenubarsChanged()));
|
|
connect(highlightFactor, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(scrollbarType, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(shading, SIGNAL(activated(int)), SLOT(shadingChanged()));
|
|
connect(gtkScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(squareScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(highlightScrollViews, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(etchEntry, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(flatSbarButtons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(thinSbarGroove, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(colorSliderMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(titlebarBorder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(sbarBgndAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(sliderFill, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(dwtAppearance, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
connect(crColor, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(smallRadio, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(splitterHighlight, SIGNAL(valueChanged(int)), SLOT(updateChanged()));
|
|
connect(gtkComboMenus, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(gtkButtonOrder, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(mapKdeIcons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(passwordChar, SIGNAL(clicked()), SLOT(passwordCharClicked()));
|
|
connect(framelessGroupBoxes, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(colorMenubarMouseOver, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(useHighlightForMenu, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(groupBoxLine, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(fadeLines, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(menuIcons, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(stdBtnSizes, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(forceAlternateLvCols, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(squareLvSelection, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
connect(titlebarAlignment, SIGNAL(activated(int)), SLOT(updateChanged()));
|
|
|
|
defaultSettings(&defaultStyle);
|
|
if(!readConfig(NULL, ¤tStyle, &defaultStyle))
|
|
currentStyle=defaultStyle;
|
|
|
|
setupShadesTab();
|
|
setWidgetOptions(currentStyle);
|
|
|
|
QPopupMenu *menu=new QPopupMenu(this),
|
|
*subMenu=new QPopupMenu(this);
|
|
|
|
optionBtn->setPopup(menu);
|
|
|
|
menu->insertItem(i18n("Predefined Style"), subMenu);
|
|
menu->insertSeparator();
|
|
menu->insertItem(i18n("Import..."), this, SLOT(importStyle()));
|
|
menu->insertItem(i18n("Export..."), this, SLOT(exportStyle()));
|
|
#ifdef QTC_STYLE_SUPPORT
|
|
menu->insertSeparator();
|
|
menu->insertItem(i18n("Export Theme..."), this, SLOT(exportTheme()));
|
|
#endif
|
|
|
|
loadStyles(subMenu);
|
|
setupGradientsTab();
|
|
setupStack();
|
|
resize(600, 400);
|
|
}
|
|
|
|
QtCurveConfig::~QtCurveConfig()
|
|
{
|
|
}
|
|
|
|
void QtCurveConfig::loadStyles(QPopupMenu *menu)
|
|
{
|
|
QStringList files(KGlobal::dirs()->findAllResources("data", "QtCurve/*"EXTENSION, false, true));
|
|
|
|
files.sort();
|
|
|
|
QStringList::Iterator it(files.begin()),
|
|
end(files.end());
|
|
Options opts;
|
|
|
|
for(; it!=end; ++it)
|
|
if(readConfig(*it, &opts, &defaultStyle))
|
|
styles[menu->insertItem(QFileInfo(*it).fileName().remove(EXTENSION).replace('_', ' '),
|
|
this, SLOT(setStyle(int)))]=*it;
|
|
}
|
|
|
|
void QtCurveConfig::save()
|
|
{
|
|
Options opts=currentStyle;
|
|
|
|
setOptions(opts);
|
|
writeConfig(NULL, opts, defaultStyle);
|
|
|
|
KSharedConfig *cfg=KGlobal::sharedConfig();
|
|
QString grp(cfg->group());
|
|
bool useGlobals(cfg->forceGlobal());
|
|
|
|
cfg->setForceGlobal(true);
|
|
cfg->setGroup("KDE");
|
|
|
|
if(opts.gtkButtonOrder)
|
|
cfg->writeEntry("ButtonLayout", 2);
|
|
else
|
|
cfg->deleteEntry("ButtonLayout");
|
|
cfg->setGroup(grp);
|
|
cfg->sync();
|
|
cfg->setForceGlobal(useGlobals);
|
|
}
|
|
|
|
void QtCurveConfig::defaults()
|
|
{
|
|
setWidgetOptions(defaultStyle);
|
|
if (settingsChanged())
|
|
emit changed(true);
|
|
}
|
|
|
|
void QtCurveConfig::setStyle(int s)
|
|
{
|
|
loadStyle(styles[s]);
|
|
}
|
|
|
|
void QtCurveConfig::emboldenToggled()
|
|
{
|
|
if(!embolden->isChecked() && IND_NONE==defBtnIndicator->currentItem())
|
|
defBtnIndicator->setCurrentItem(IND_TINT);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::defBtnIndicatorChanged()
|
|
{
|
|
if(IND_NONE==defBtnIndicator->currentItem() && !embolden->isChecked())
|
|
embolden->setChecked(true);
|
|
else if(IND_GLOW==defBtnIndicator->currentItem() && EFFECT_NONE==buttonEffect->currentItem())
|
|
buttonEffect->setCurrentItem(EFFECT_SHADOW);
|
|
|
|
if(IND_COLORED==defBtnIndicator->currentItem() && round->currentItem()>ROUND_FULL)
|
|
round->setCurrentItem(ROUND_FULL);
|
|
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::buttonEffectChanged()
|
|
{
|
|
if(EFFECT_NONE==buttonEffect->currentItem())
|
|
{
|
|
if(IND_GLOW==defBtnIndicator->currentItem())
|
|
defBtnIndicator->setCurrentItem(IND_TINT);
|
|
if(MO_GLOW==coloredMouseOver->currentItem())
|
|
coloredMouseOver->setCurrentItem(MO_PLASTIK);
|
|
}
|
|
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::coloredMouseOverChanged()
|
|
{
|
|
if(MO_GLOW==coloredMouseOver->currentItem() &&
|
|
EFFECT_NONE==buttonEffect->currentItem())
|
|
buttonEffect->setCurrentItem(EFFECT_SHADOW);
|
|
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::shadeSlidersChanged()
|
|
{
|
|
customSlidersColor->setEnabled(SHADE_CUSTOM==shadeSliders->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::shadeMenubarsChanged()
|
|
{
|
|
customMenubarsColor->setEnabled(SHADE_CUSTOM==shadeMenubars->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::shadeCheckRadioChanged()
|
|
{
|
|
customCheckRadioColor->setEnabled(SHADE_CUSTOM==shadeCheckRadio->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::customMenuTextColorChanged()
|
|
{
|
|
customMenuNormTextColor->setEnabled(customMenuTextColor->isChecked());
|
|
customMenuSelTextColor->setEnabled(customMenuTextColor->isChecked());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::menuStripeChanged()
|
|
{
|
|
customMenuStripeColor->setEnabled(SHADE_CUSTOM==menuStripe->currentItem());
|
|
menuStripeAppearance->setEnabled(SHADE_NONE!=menuStripe->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::comboBtnChanged()
|
|
{
|
|
customComboBtnColor->setEnabled(SHADE_CUSTOM==comboBtn->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::sortedLvChanged()
|
|
{
|
|
customSortedLvColor->setEnabled(SHADE_CUSTOM==sortedLv->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::stripedProgressChanged()
|
|
{
|
|
bool allowAnimation=STRIPE_NONE!=stripedProgress->currentItem() &&
|
|
STRIPE_FADE!=stripedProgress->currentItem();
|
|
|
|
animatedProgress->setEnabled(allowAnimation);
|
|
if(animatedProgress->isChecked() && !allowAnimation)
|
|
animatedProgress->setChecked(false);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::activeTabAppearanceChanged()
|
|
{
|
|
int current(activeTabAppearance->currentItem());
|
|
bool disableCol(APPEARANCE_FLAT==current && APPEARANCE_RAISED==current);
|
|
|
|
if(colorSelTab->value() && disableCol)
|
|
colorSelTab->setValue(MIN_COLOR_SEL_TAB_FACTOR);
|
|
colorSelTab->setEnabled(!disableCol);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::tabMoChanged()
|
|
{
|
|
if(TAB_MO_GLOW==tabMouseOver->currentItem())
|
|
roundAllTabs->setChecked(true);
|
|
roundAllTabs->setEnabled(TAB_MO_GLOW!=tabMouseOver->currentItem());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::shadingChanged()
|
|
{
|
|
updateChanged();
|
|
if(gradPreview)
|
|
gradPreview->repaint();
|
|
}
|
|
|
|
void QtCurveConfig::passwordCharClicked()
|
|
{
|
|
int cur(toInt(passwordChar->text()));
|
|
CharSelectDialog dlg(this, cur);
|
|
|
|
if(QDialog::Accepted==dlg.exec() && dlg.currentChar()!=cur)
|
|
{
|
|
setPasswordChar(dlg.currentChar());
|
|
updateChanged();
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::unifySpinBtnsToggled()
|
|
{
|
|
if(unifySpinBtns->isChecked())
|
|
unifySpin->setChecked(false);
|
|
unifySpin->setDisabled(unifySpinBtns->isChecked());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::unifySpinToggled()
|
|
{
|
|
if(unifySpin->isChecked())
|
|
unifySpinBtns->setChecked(false);
|
|
unifySpinBtns->setDisabled(unifySpin->isChecked());
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::sliderThumbChanged()
|
|
{
|
|
if(LINE_NONE!=sliderThumbs->currentItem() && sliderWidth->value()<DEFAULT_SLIDER_WIDTH)
|
|
sliderWidth->setValue(DEFAULT_SLIDER_WIDTH);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::sliderWidthChanged()
|
|
{
|
|
if(0==sliderWidth->value()%2)
|
|
sliderWidth->setValue(sliderWidth->value()+1);
|
|
|
|
if(LINE_NONE!=sliderThumbs->currentItem() && sliderWidth->value()<DEFAULT_SLIDER_WIDTH)
|
|
sliderThumbs->setCurrentItem(LINE_NONE);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::setupStack()
|
|
{
|
|
int i=0;
|
|
lastCategory=new CStackItem(stackList, i18n("General"), i++);
|
|
new CStackItem(stackList, i18n("Combos"), i++);
|
|
new CStackItem(stackList, i18n("Spin Buttons"), i++);
|
|
new CStackItem(stackList, i18n("Splitters"), i++);
|
|
new CStackItem(stackList, i18n("Sliders and Scrollbars"), i++);
|
|
new CStackItem(stackList, i18n("Progressbars"), i++);
|
|
new CStackItem(stackList, i18n("Default Button"),i++);
|
|
new CStackItem(stackList, i18n("Mouse-over"), i++);
|
|
new CStackItem(stackList, i18n("Listviews"), i++);
|
|
new CStackItem(stackList, i18n("Scrollviews"), i++);
|
|
new CStackItem(stackList, i18n("Tabs"), i++);
|
|
new CStackItem(stackList, i18n("Checks and Radios"), i++);
|
|
new CStackItem(stackList, i18n("Windows"), i++);
|
|
new CStackItem(stackList, i18n("Menus and Toolbars"), i++);
|
|
new CStackItem(stackList, i18n("Dock windows"), i++);
|
|
new CStackItem(stackList, i18n("Advanced Settings"), i++);
|
|
new CStackItem(stackList, i18n("Custom Gradients"), i++);
|
|
new CStackItem(stackList, i18n("Custom Shades"), i++);
|
|
|
|
stackList->setSelected(lastCategory, true);
|
|
stackList->setCurrentItem(lastCategory);
|
|
stackList->setResizeMode(QListView::LastColumn);
|
|
connect(stackList, SIGNAL(selectionChanged()), SLOT(changeStack()));
|
|
}
|
|
|
|
void QtCurveConfig::changeStack()
|
|
{
|
|
CStackItem *item=(CStackItem *)(stackList->selectedItem());
|
|
|
|
if(item)
|
|
lastCategory=item;
|
|
else
|
|
{
|
|
item=lastCategory;
|
|
if(item)
|
|
{
|
|
stackList->setSelected(item, true);
|
|
stackList->setCurrentItem(item);
|
|
}
|
|
}
|
|
|
|
if(item)
|
|
stack->raiseWidget(item->stack());
|
|
}
|
|
|
|
void QtCurveConfig::gradChanged(int i)
|
|
{
|
|
GradientCont::const_iterator it(customGradient.find((EAppearance)i));
|
|
|
|
gradStops->clear();
|
|
|
|
if(it!=customGradient.end())
|
|
{
|
|
gradPreview->setGrad((*it).second.stops);
|
|
gradBorder->setCurrentItem((*it).second.border);
|
|
|
|
GradientStopCont::const_iterator git((*it).second.stops.begin()),
|
|
gend((*it).second.stops.end());
|
|
|
|
for(; git!=gend; ++git)
|
|
new CGradItem(gradStops, QString().setNum((*git).pos*100.0),
|
|
QString().setNum((*git).val*100.0));
|
|
}
|
|
else
|
|
{
|
|
gradPreview->setGrad(GradientStopCont());
|
|
gradBorder->setCurrentItem(GB_3D);
|
|
}
|
|
|
|
gradBorder->setEnabled(NUM_CUSTOM_GRAD!=i);
|
|
}
|
|
|
|
void QtCurveConfig::itemChanged(QListViewItem *i, int col)
|
|
{
|
|
GradientCont::iterator it=customGradient.find((EAppearance)gradCombo->currentItem());
|
|
|
|
if(it!=customGradient.end())
|
|
{
|
|
bool ok;
|
|
double newVal=toDouble(i->text(col), &ok)/100.0;
|
|
|
|
if(ok && ((0==col && (newVal>=0.0 && newVal<=1.0)) ||
|
|
(1==col && newVal>=0.0 && newVal<=2.0)) )
|
|
{
|
|
double pos=0==(col ? newVal : i->text(0).toDouble())/100.0,
|
|
val=1==(col ? newVal : i->text(1).toDouble())/100.0,
|
|
prev=((CGradItem *)i)->prevVal();
|
|
|
|
(*it).second.stops.erase(GradientStop(col ? pos : prev, col ? prev : val));
|
|
(*it).second.stops.insert(GradientStop(pos, val));
|
|
gradPreview->setGrad((*it).second.stops);
|
|
i->setText(col, QString().setNum(val));
|
|
emit changed(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::addGradStop()
|
|
{
|
|
GradientCont::iterator cg=customGradient.find((EAppearance)gradCombo->currentItem());
|
|
|
|
if(cg==customGradient.end())
|
|
{
|
|
Gradient cust;
|
|
|
|
cust.border=(EGradientBorder)gradBorder->currentItem();
|
|
cust.stops.insert(GradientStop(stopPosition->value()/100.0, stopValue->value()/100.0));
|
|
customGradient[(EAppearance)gradCombo->currentItem()]=cust;
|
|
gradChanged(gradCombo->currentItem());
|
|
emit changed(true);
|
|
}
|
|
else
|
|
{
|
|
GradientStopCont::const_iterator it((*cg).second.stops.begin()),
|
|
end((*cg).second.stops.end());
|
|
double pos(stopPosition->value()/100.0),
|
|
val(stopValue->value()/100.0);
|
|
|
|
for(; it!=end; ++it)
|
|
if(equal(pos, (*it).pos))
|
|
if(equal(val, (*it).val))
|
|
return;
|
|
else
|
|
{
|
|
(*cg).second.stops.erase(it);
|
|
break;
|
|
}
|
|
|
|
unsigned int b4=(*cg).second.stops.size();
|
|
(*cg).second.stops.insert(GradientStop(pos, val));
|
|
|
|
if((*cg).second.stops.size()!=b4)
|
|
{
|
|
gradPreview->setGrad((*cg).second.stops);
|
|
|
|
QListViewItem *prev=gradStops->selectedItem();
|
|
|
|
if(prev)
|
|
gradStops->setSelected(prev, false);
|
|
|
|
CGradItem *i=new CGradItem(gradStops, QString().setNum(pos*100.0),
|
|
QString().setNum(val*100.0));
|
|
|
|
gradStops->setSelected(i, true);
|
|
emit changed(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::removeGradStop()
|
|
{
|
|
QListViewItem *cur=gradStops->selectedItem();
|
|
|
|
if(cur)
|
|
{
|
|
QListViewItem *next=cur->itemBelow();
|
|
|
|
if(!next)
|
|
next=cur->itemAbove();
|
|
|
|
GradientCont::iterator it=customGradient.find((EAppearance)gradCombo->currentItem());
|
|
|
|
if(it!=customGradient.end())
|
|
{
|
|
double pos=cur->text(0).toDouble()/100.0,
|
|
val=cur->text(1).toDouble()/100.0;
|
|
|
|
(*it).second.stops.erase(GradientStop(pos, val));
|
|
gradPreview->setGrad((*it).second.stops);
|
|
emit changed(true);
|
|
|
|
delete cur;
|
|
if(next)
|
|
gradStops->setCurrentItem(next);
|
|
}
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::updateGradStop()
|
|
{
|
|
QListViewItem *i=gradStops->selectedItem();
|
|
|
|
GradientCont::iterator cg=customGradient.find((EAppearance)gradCombo->currentItem());
|
|
|
|
if(i)
|
|
{
|
|
double curPos=i->text(0).toDouble()/100.0,
|
|
curVal=i->text(1).toDouble()/100.0,
|
|
newPos(stopPosition->value()/100.0),
|
|
newVal(stopValue->value()/100.0);
|
|
|
|
if(!equal(newPos, curPos) || !equal(newVal, curVal))
|
|
{
|
|
(*cg).second.stops.erase(GradientStop(curPos, curVal));
|
|
(*cg).second.stops.insert(GradientStop(newPos, newVal));
|
|
|
|
i->setText(0, QString().setNum(stopPosition->value()));
|
|
i->setText(1, QString().setNum(stopValue->value()));
|
|
gradPreview->setGrad((*cg).second.stops);
|
|
emit changed(true);
|
|
}
|
|
}
|
|
else
|
|
addGradStop();
|
|
}
|
|
|
|
void QtCurveConfig::stopSelected()
|
|
{
|
|
QListViewItem *i=gradStops->selectedItem();
|
|
|
|
removeButton->setEnabled(i);
|
|
updateButton->setEnabled(i);
|
|
|
|
if(i)
|
|
{
|
|
stopPosition->setValue(i->text(0).toInt());
|
|
stopValue->setValue(i->text(1).toInt());
|
|
}
|
|
else
|
|
{
|
|
stopPosition->setValue(0);
|
|
stopValue->setValue(0);
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::setupGradientsTab()
|
|
{
|
|
for(int i=APPEARANCE_CUSTOM1; i<(APPEARANCE_CUSTOM1+NUM_CUSTOM_GRAD); ++i)
|
|
gradCombo->insertItem(i18n("Custom gradient %1").arg((i-APPEARANCE_CUSTOM1)+1));
|
|
|
|
gradCombo->setCurrentItem(APPEARANCE_CUSTOM1);
|
|
|
|
gradPreview=new CGradientPreview(this, previewWidgetContainer);
|
|
QVBoxLayout *layout=new QVBoxLayout(previewWidgetContainer);
|
|
layout->addWidget(gradPreview);
|
|
layout->setMargin(0);
|
|
layout->setSpacing(0);
|
|
QColor col(palette().color(QPalette::Active, QColorGroup::Button));
|
|
previewColor->setColor(col);
|
|
gradPreview->setColor(col);
|
|
gradChanged(APPEARANCE_CUSTOM1);
|
|
addButton->setGuiItem(KGuiItem(i18n("Add"), "add"));
|
|
removeButton->setGuiItem(KGuiItem(i18n("Remove"), "remove"));
|
|
updateButton->setGuiItem(KGuiItem(i18n("Update"), "button_ok"));
|
|
|
|
gradStops->setDefaultRenameAction(QListView::Reject);
|
|
gradStops->setAllColumnsShowFocus(true);
|
|
gradStops->setSortColumn(0);
|
|
stopPosition->setRange(0, 100, 5);
|
|
stopValue->setRange(0, 200, 5);
|
|
removeButton->setEnabled(false);
|
|
updateButton->setEnabled(false);
|
|
gradStops->setResizeMode(QListView::AllColumns);
|
|
connect(gradCombo, SIGNAL(activated(int)), SLOT(gradChanged(int)));
|
|
connect(previewColor, SIGNAL(changed(const QColor &)), gradPreview, SLOT(setColor(const QColor &)));
|
|
connect(gradStops, SIGNAL(itemRenamed(QListViewItem *, int)), SLOT(itemChanged(QListViewItem *, int)));
|
|
connect(addButton, SIGNAL(clicked()), SLOT(addGradStop()));
|
|
connect(removeButton, SIGNAL(clicked()), SLOT(removeGradStop()));
|
|
connect(updateButton, SIGNAL(clicked()), SLOT(updateGradStop()));
|
|
connect(gradStops, SIGNAL(selectionChanged()), SLOT(stopSelected()));
|
|
}
|
|
|
|
void QtCurveConfig::setupShadesTab()
|
|
{
|
|
int shade(0);
|
|
|
|
setupShade(shade0, shade++);
|
|
setupShade(shade1, shade++);
|
|
setupShade(shade2, shade++);
|
|
setupShade(shade3, shade++);
|
|
setupShade(shade4, shade++);
|
|
setupShade(shade5, shade++);
|
|
connect(customShading, SIGNAL(toggled(bool)), SLOT(updateChanged()));
|
|
}
|
|
|
|
void QtCurveConfig::setupShade(KDoubleNumInput *w, int shade)
|
|
{
|
|
w->setRange(0.0, 2.0, 0.05, false);
|
|
connect(w, SIGNAL(valueChanged(double)), SLOT(updateChanged()));
|
|
shadeVals[shade]=w;
|
|
}
|
|
|
|
void QtCurveConfig::populateShades(const Options &opts)
|
|
{
|
|
SHADES
|
|
int contrast=QSettings().readNumEntry("/Qt/KDE/contrast", 7);
|
|
|
|
if(contrast<0 || contrast>10)
|
|
contrast=7;
|
|
|
|
customShading->setChecked(USE_CUSTOM_SHADES(opts));
|
|
|
|
for(int i=0; i<NUM_STD_SHADES; ++i)
|
|
shadeVals[i]->setValue(USE_CUSTOM_SHADES(opts)
|
|
? opts.customShades[i]
|
|
: shades[SHADING_SIMPLE==shading->currentItem()
|
|
? 1 : 0]
|
|
[contrast]
|
|
[i]);
|
|
}
|
|
|
|
bool QtCurveConfig::diffShades(const Options &opts)
|
|
{
|
|
if( (!USE_CUSTOM_SHADES(opts) && customShading->isChecked()) ||
|
|
(USE_CUSTOM_SHADES(opts) && !customShading->isChecked()) )
|
|
return true;
|
|
|
|
if(customShading->isChecked())
|
|
{
|
|
for(int i=0; i<NUM_STD_SHADES; ++i)
|
|
if(!equal(shadeVals[i]->value(), opts.customShades[i]))
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void QtCurveConfig::setPasswordChar(int ch)
|
|
{
|
|
QString str;
|
|
QTextOStream s(&str);
|
|
|
|
s.setf(QTextStream::hex);
|
|
s << QChar(ch) << " (" << ch << ')';
|
|
passwordChar->setText(str);
|
|
}
|
|
|
|
void QtCurveConfig::updateChanged()
|
|
{
|
|
if (settingsChanged())
|
|
emit changed(true);
|
|
}
|
|
|
|
void QtCurveConfig::focusChanged()
|
|
{
|
|
if(ROUND_MAX==round->currentItem() && FOCUS_LINE!=focus->currentItem())
|
|
round->setCurrentItem(ROUND_EXTRA);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::roundChanged()
|
|
{
|
|
if(ROUND_MAX==round->currentItem() && FOCUS_LINE!=focus->currentItem())
|
|
focus->setCurrentItem(FOCUS_LINE);
|
|
|
|
if(round->currentItem()>ROUND_FULL && IND_COLORED==defBtnIndicator->currentItem())
|
|
defBtnIndicator->setCurrentItem(IND_TINT);
|
|
updateChanged();
|
|
}
|
|
|
|
void QtCurveConfig::importStyle()
|
|
{
|
|
QString file(KFileDialog::getOpenFileName(QString::null,
|
|
i18n("*"EXTENSION"|QtCurve Settings Files\n"
|
|
THEME_PREFIX"*"THEME_SUFFIX"|QtCurve KDE Theme Files"),
|
|
this));
|
|
|
|
if(!file.isEmpty())
|
|
loadStyle(file);
|
|
}
|
|
|
|
void QtCurveConfig::exportStyle()
|
|
{
|
|
QString file(KFileDialog::getSaveFileName(QString::null, i18n("*"EXTENSION"|QtCurve Settings Files"), this));
|
|
|
|
if(!file.isEmpty())
|
|
{
|
|
KConfig cfg(file, false, false);
|
|
bool rv(!cfg.isReadOnly());
|
|
|
|
if(rv)
|
|
{
|
|
Options opts;
|
|
|
|
setOptions(opts);
|
|
rv=writeConfig(&cfg, opts, defaultStyle, true);
|
|
}
|
|
|
|
if(!rv)
|
|
KMessageBox::error(this, i18n("Could not write to file:\n%1").arg(file));
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::exportTheme()
|
|
{
|
|
#ifdef QTC_STYLE_SUPPORT
|
|
if(!exportDialog)
|
|
exportDialog=new CExportThemeDialog(this);
|
|
|
|
Options opts;
|
|
|
|
setOptions(opts);
|
|
exportDialog->run(opts);
|
|
#endif
|
|
}
|
|
|
|
void QtCurveConfig::loadStyle(const QString &file)
|
|
{
|
|
Options opts;
|
|
|
|
if(readConfig(file, &opts, &defaultStyle))
|
|
{
|
|
setWidgetOptions(opts);
|
|
if (settingsChanged())
|
|
emit changed(true);
|
|
}
|
|
}
|
|
|
|
void QtCurveConfig::setOptions(Options &opts)
|
|
{
|
|
opts.round=(ERound)round->currentItem();
|
|
opts.toolbarBorders=(ETBarBorder)toolbarBorders->currentItem();
|
|
opts.appearance=(EAppearance)appearance->currentItem();
|
|
opts.focus=(EFocus)focus->currentItem();
|
|
opts.lvLines=(ELvLines)lvLines->currentItem();
|
|
opts.lvButton=lvButton->isChecked();
|
|
opts.drawStatusBarFrames=drawStatusBarFrames->isChecked();
|
|
opts.buttonEffect=(EEffect)buttonEffect->currentItem();
|
|
opts.coloredMouseOver=(EMouseOver)coloredMouseOver->currentItem();
|
|
opts.menubarMouseOver=menubarMouseOver->isChecked();
|
|
opts.shadeMenubarOnlyWhenActive=shadeMenubarOnlyWhenActive->isChecked();
|
|
opts.thinnerMenuItems=thinnerMenuItems->isChecked();
|
|
opts.thinnerBtns=thinnerBtns->isChecked();
|
|
opts.fixParentlessDialogs=fixParentlessDialogs->isChecked();
|
|
opts.animatedProgress=animatedProgress->isChecked();
|
|
opts.stripedProgress=(EStripe)stripedProgress->currentItem();
|
|
opts.lighterPopupMenuBgnd=lighterPopupMenuBgnd->value();
|
|
opts.tabBgnd=tabBgnd->value();
|
|
opts.menuDelay=menuDelay->value();
|
|
opts.sliderWidth=sliderWidth->value();
|
|
opts.menuStripe=(EShade)menuStripe->currentItem();
|
|
opts.customMenuStripeColor=customMenuStripeColor->color();
|
|
opts.menuStripeAppearance=(EAppearance)menuStripeAppearance->currentItem();
|
|
opts.menuBgndAppearance=(EAppearance)menuBgndAppearance->currentItem();
|
|
opts.menuBgndGrad=(EGradType)menuBgndGrad->currentItem();
|
|
opts.embolden=embolden->isChecked();
|
|
opts.scrollbarType=(EScrollbar)scrollbarType->currentItem();
|
|
opts.defBtnIndicator=(EDefBtnIndicator)defBtnIndicator->currentItem();
|
|
opts.sliderThumbs=(ELine)sliderThumbs->currentItem();
|
|
opts.handles=(ELine)handles->currentItem();
|
|
opts.highlightTab=highlightTab->isChecked();
|
|
opts.shadeSliders=(EShade)shadeSliders->currentItem();
|
|
opts.shadeMenubars=(EShade)shadeMenubars->currentItem();
|
|
opts.menubarAppearance=(EAppearance)menubarAppearance->currentItem();
|
|
opts.toolbarAppearance=(EAppearance)toolbarAppearance->currentItem();
|
|
opts.lvAppearance=(EAppearance)lvAppearance->currentItem();
|
|
opts.sliderAppearance=(EAppearance)sliderAppearance->currentItem();
|
|
opts.tabAppearance=(EAppearance)tabAppearance->currentItem();
|
|
opts.activeTabAppearance=(EAppearance)activeTabAppearance->currentItem();
|
|
opts.toolbarSeparators=(ELine)toolbarSeparators->currentItem();
|
|
opts.splitters=(ELine)splitters->currentItem();
|
|
opts.customSlidersColor=customSlidersColor->color();
|
|
opts.customMenubarsColor=customMenubarsColor->color();
|
|
opts.highlightFactor=highlightFactor->value();
|
|
opts.customMenuNormTextColor=customMenuNormTextColor->color();
|
|
opts.customMenuSelTextColor=customMenuSelTextColor->color();
|
|
opts.customMenuTextColor=customMenuTextColor->isChecked();
|
|
opts.fillSlider=fillSlider->isChecked();
|
|
opts.sliderStyle=(ESliderStyle)sliderStyle->currentItem();
|
|
opts.roundMbTopOnly=roundMbTopOnly->isChecked();
|
|
opts.fillProgress=fillProgress->isChecked();
|
|
opts.darkerBorders=darkerBorders->isChecked();
|
|
opts.comboSplitter=comboSplitter->isChecked();
|
|
opts.comboBtn=(EShade)comboBtn->currentItem();
|
|
opts.customComboBtnColor=customComboBtnColor->color();
|
|
opts.sortedLv=(EShade)sortedLv->currentItem();
|
|
opts.customSortedLvColor=customSortedLvColor->color();
|
|
opts.unifySpinBtns=unifySpinBtns->isChecked();
|
|
opts.unifySpin=unifySpin->isChecked();
|
|
opts.unifyCombo=unifyCombo->isChecked();
|
|
opts.vArrows=vArrows->isChecked();
|
|
opts.xCheck=xCheck->isChecked();
|
|
opts.crHighlight=crHighlight->value();
|
|
opts.crButton=crButton->isChecked();
|
|
opts.colorSelTab=colorSelTab->value();
|
|
opts.roundAllTabs=roundAllTabs->isChecked();
|
|
opts.borderTab=borderTab->isChecked();
|
|
opts.doubleGtkComboArrow=doubleGtkComboArrow->isChecked();
|
|
opts.borderInactiveTab=borderInactiveTab->isChecked();
|
|
opts.invertBotTab=invertBotTab->isChecked();
|
|
opts.tabMouseOver=(ETabMo)tabMouseOver->currentItem();
|
|
opts.stdSidebarButtons=stdSidebarButtons->isChecked();
|
|
opts.borderMenuitems=borderMenuitems->isChecked();
|
|
opts.popupBorder=popupBorder->isChecked();
|
|
opts.progressAppearance=(EAppearance)progressAppearance->currentItem();
|
|
opts.progressGrooveAppearance=(EAppearance)progressGrooveAppearance->currentItem();
|
|
opts.grooveAppearance=(EAppearance)grooveAppearance->currentItem();
|
|
opts.sunkenAppearance=(EAppearance)sunkenAppearance->currentItem();
|
|
opts.progressGrooveColor=(EColor)progressGrooveColor->currentItem();
|
|
opts.menuitemAppearance=(EAppearance)menuitemAppearance->currentItem();
|
|
opts.titlebarAppearance=(EAppearance)titlebarAppearance->currentItem();
|
|
opts.inactiveTitlebarAppearance=(EAppearance)inactiveTitlebarAppearance->currentItem();
|
|
opts.titlebarButtonAppearance=(EAppearance)titlebarButtonAppearance->currentItem();
|
|
opts.selectionAppearance=(EAppearance)selectionAppearance->currentItem();
|
|
opts.shadeCheckRadio=(EShade)shadeCheckRadio->currentItem();
|
|
opts.customCheckRadioColor=customCheckRadioColor->color();
|
|
opts.shading=(EShading)shading->currentItem();
|
|
opts.gtkScrollViews=gtkScrollViews->isChecked();
|
|
opts.highlightScrollViews=highlightScrollViews->isChecked();
|
|
opts.etchEntry=etchEntry->isChecked();
|
|
opts.flatSbarButtons=flatSbarButtons->isChecked();
|
|
opts.thinSbarGroove=thinSbarGroove->isChecked();
|
|
opts.colorSliderMouseOver=colorSliderMouseOver->isChecked();
|
|
opts.sbarBgndAppearance=(EAppearance)sbarBgndAppearance->currentItem();
|
|
opts.sliderFill=(EAppearance)sliderFill->currentItem();
|
|
opts.dwtAppearance=(EAppearance)dwtAppearance->currentItem();
|
|
opts.crColor=crColor->isChecked() ? SHADE_BLEND_SELECTED : SHADE_NONE;
|
|
opts.smallRadio=smallRadio->isChecked();
|
|
opts.splitterHighlight=splitterHighlight->value();
|
|
opts.gtkComboMenus=gtkComboMenus->isChecked();
|
|
opts.gtkButtonOrder=gtkButtonOrder->isChecked();
|
|
opts.mapKdeIcons=mapKdeIcons->isChecked();
|
|
opts.passwordChar=toInt(passwordChar->text());
|
|
opts.framelessGroupBoxes=framelessGroupBoxes->isChecked();
|
|
opts.customGradient=customGradient;
|
|
opts.colorMenubarMouseOver=colorMenubarMouseOver->isChecked();
|
|
opts.useHighlightForMenu=useHighlightForMenu->isChecked();
|
|
opts.groupBoxLine=groupBoxLine->isChecked();
|
|
opts.fadeLines=fadeLines->isChecked();
|
|
opts.menuIcons=menuIcons->isChecked();
|
|
opts.stdBtnSizes=stdBtnSizes->isChecked();
|
|
opts.forceAlternateLvCols=forceAlternateLvCols->isChecked();
|
|
opts.titlebarAlignment=(EAlign)titlebarAlignment->currentItem();
|
|
opts.square=getSquareFlags();
|
|
opts.windowBorder=getWindowBorderFlags();
|
|
|
|
if(customShading->isChecked())
|
|
{
|
|
for(int i=0; i<NUM_STD_SHADES; ++i)
|
|
opts.customShades[i]=shadeVals[i]->value();
|
|
}
|
|
else
|
|
opts.customShades[0]=0;
|
|
}
|
|
|
|
void QtCurveConfig::setWidgetOptions(const Options &opts)
|
|
{
|
|
round->setCurrentItem(opts.round);
|
|
scrollbarType->setCurrentItem(opts.scrollbarType);
|
|
lighterPopupMenuBgnd->setValue(opts.lighterPopupMenuBgnd);
|
|
tabBgnd->setValue(opts.tabBgnd);
|
|
menuDelay->setValue(opts.menuDelay);
|
|
sliderWidth->setValue(opts.sliderWidth);
|
|
menuStripe->setCurrentItem(opts.menuStripe);
|
|
customMenuStripeColor->setColor(opts.customMenuStripeColor);
|
|
menuStripeAppearance->setCurrentItem(opts.menuStripeAppearance);
|
|
menuBgndAppearance->setCurrentItem(opts.menuBgndAppearance);
|
|
menuBgndGrad->setCurrentItem(opts.menuBgndGrad);
|
|
toolbarBorders->setCurrentItem(opts.toolbarBorders);
|
|
sliderThumbs->setCurrentItem(opts.sliderThumbs);
|
|
handles->setCurrentItem(opts.handles);
|
|
appearance->setCurrentItem(opts.appearance);
|
|
focus->setCurrentItem(opts.focus);
|
|
lvLines->setCurrentItem(opts.lvLines);
|
|
lvButton->setChecked(opts.lvButton);
|
|
drawStatusBarFrames->setChecked(opts.drawStatusBarFrames);
|
|
buttonEffect->setCurrentItem(opts.buttonEffect);
|
|
coloredMouseOver->setCurrentItem(opts.coloredMouseOver);
|
|
menubarMouseOver->setChecked(opts.menubarMouseOver);
|
|
shadeMenubarOnlyWhenActive->setChecked(opts.shadeMenubarOnlyWhenActive);
|
|
thinnerMenuItems->setChecked(opts.thinnerMenuItems);
|
|
thinnerBtns->setChecked(opts.thinnerBtns);
|
|
fixParentlessDialogs->setChecked(opts.fixParentlessDialogs);
|
|
animatedProgress->setChecked(opts.animatedProgress);
|
|
stripedProgress->setCurrentItem(opts.stripedProgress);
|
|
embolden->setChecked(opts.embolden);
|
|
defBtnIndicator->setCurrentItem(opts.defBtnIndicator);
|
|
highlightTab->setChecked(opts.highlightTab);
|
|
menubarAppearance->setCurrentItem(opts.menubarAppearance);
|
|
toolbarAppearance->setCurrentItem(opts.toolbarAppearance);
|
|
lvAppearance->setCurrentItem(opts.lvAppearance);
|
|
sliderAppearance->setCurrentItem(opts.sliderAppearance);
|
|
tabAppearance->setCurrentItem(opts.tabAppearance);
|
|
activeTabAppearance->setCurrentItem(opts.activeTabAppearance);
|
|
toolbarSeparators->setCurrentItem(opts.toolbarSeparators);
|
|
splitters->setCurrentItem(opts.splitters);
|
|
shadeSliders->setCurrentItem(opts.shadeSliders);
|
|
shadeMenubars->setCurrentItem(opts.shadeMenubars);
|
|
highlightFactor->setValue(opts.highlightFactor);
|
|
customSlidersColor->setColor(opts.customSlidersColor);
|
|
customMenubarsColor->setColor(opts.customMenubarsColor);
|
|
customMenuNormTextColor->setColor(opts.customMenuNormTextColor);
|
|
customMenuSelTextColor->setColor(opts.customMenuSelTextColor);
|
|
customMenuTextColor->setChecked(opts.customMenuTextColor);
|
|
|
|
customSlidersColor->setEnabled(SHADE_CUSTOM==opts.shadeSliders);
|
|
customMenubarsColor->setEnabled(SHADE_CUSTOM==opts.shadeMenubars);
|
|
customMenuNormTextColor->setEnabled(customMenuTextColor->isChecked());
|
|
customMenuSelTextColor->setEnabled(customMenuTextColor->isChecked());
|
|
customCheckRadioColor->setEnabled(SHADE_CUSTOM==opts.shadeCheckRadio);
|
|
customMenuStripeColor->setEnabled(SHADE_CUSTOM==opts.menuStripe);
|
|
menuStripeAppearance->setEnabled(SHADE_NONE!=opts.menuStripe);
|
|
|
|
animatedProgress->setEnabled(STRIPE_NONE!=stripedProgress->currentItem() &&
|
|
STRIPE_FADE!=stripedProgress->currentItem());
|
|
|
|
fillSlider->setChecked(opts.fillSlider);
|
|
sliderStyle->setCurrentItem(opts.sliderStyle);
|
|
roundMbTopOnly->setChecked(opts.roundMbTopOnly);
|
|
fillProgress->setChecked(opts.fillProgress);
|
|
darkerBorders->setChecked(opts.darkerBorders);
|
|
comboSplitter->setChecked(opts.comboSplitter);
|
|
comboBtn->setCurrentItem(opts.comboBtn);
|
|
customComboBtnColor->setColor(opts.customComboBtnColor);
|
|
sortedLv->setCurrentItem(opts.sortedLv);
|
|
customSortedLvColor->setColor(opts.customSortedLvColor);
|
|
unifySpinBtns->setChecked(opts.unifySpinBtns);
|
|
unifySpin->setChecked(opts.unifySpin);
|
|
unifyCombo->setChecked(opts.unifyCombo);
|
|
vArrows->setChecked(opts.vArrows);
|
|
xCheck->setChecked(opts.xCheck);
|
|
crHighlight->setValue(opts.crHighlight);
|
|
crButton->setChecked(opts.crButton);
|
|
colorSelTab->setValue(opts.colorSelTab);
|
|
roundAllTabs->setChecked(opts.roundAllTabs);
|
|
borderTab->setChecked(opts.borderTab);
|
|
doubleGtkComboArrow->setChecked(opts.doubleGtkComboArrow);
|
|
borderInactiveTab->setChecked(opts.borderInactiveTab);
|
|
invertBotTab->setChecked(opts.invertBotTab);
|
|
tabMouseOver->setCurrentItem(opts.tabMouseOver);
|
|
stdSidebarButtons->setChecked(opts.stdSidebarButtons);
|
|
borderMenuitems->setChecked(opts.borderMenuitems);
|
|
popupBorder->setChecked(opts.popupBorder);
|
|
progressAppearance->setCurrentItem(opts.progressAppearance);
|
|
progressGrooveAppearance->setCurrentItem(opts.progressGrooveAppearance);
|
|
grooveAppearance->setCurrentItem(opts.grooveAppearance);
|
|
sunkenAppearance->setCurrentItem(opts.sunkenAppearance);
|
|
progressGrooveColor->setCurrentItem(opts.progressGrooveColor);
|
|
menuitemAppearance->setCurrentItem(opts.menuitemAppearance);
|
|
titlebarAppearance->setCurrentItem(opts.titlebarAppearance);
|
|
inactiveTitlebarAppearance->setCurrentItem(opts.inactiveTitlebarAppearance);
|
|
titlebarButtonAppearance->setCurrentItem(opts.titlebarButtonAppearance);
|
|
colorTitlebarOnly->setChecked(opts.windowBorder&WINDOW_BORDER_COLOR_TITLEBAR_ONLY);
|
|
selectionAppearance->setCurrentItem(opts.selectionAppearance);
|
|
shadeCheckRadio->setCurrentItem(opts.shadeCheckRadio);
|
|
customCheckRadioColor->setColor(opts.customCheckRadioColor);
|
|
colorMenubarMouseOver->setChecked(opts.colorMenubarMouseOver);
|
|
useHighlightForMenu->setChecked(opts.useHighlightForMenu);
|
|
groupBoxLine->setChecked(opts.groupBoxLine);
|
|
fadeLines->setChecked(opts.fadeLines);
|
|
menuIcons->setChecked(opts.menuIcons);
|
|
stdBtnSizes->setChecked(opts.stdBtnSizes);
|
|
forceAlternateLvCols->setChecked(opts.forceAlternateLvCols);
|
|
squareLvSelection->setChecked(opts.square&SQUARE_LISTVIEW_SELECTION);
|
|
titlebarAlignment->setCurrentItem(opts.titlebarAlignment);
|
|
|
|
shading->setCurrentItem(opts.shading);
|
|
gtkScrollViews->setChecked(opts.gtkScrollViews);
|
|
highlightScrollViews->setChecked(opts.highlightScrollViews);
|
|
squareScrollViews->setChecked(opts.square&SQUARE_SCROLLVIEW);
|
|
etchEntry->setChecked(opts.etchEntry);
|
|
flatSbarButtons->setChecked(opts.flatSbarButtons);
|
|
thinSbarGroove->setChecked(opts.thinSbarGroove);
|
|
colorSliderMouseOver->setChecked(opts.colorSliderMouseOver);
|
|
titlebarBorder->setChecked(opts.windowBorder&WINDOW_BORDER_ADD_LIGHT_BORDER);
|
|
sbarBgndAppearance->setCurrentItem(opts.sbarBgndAppearance);
|
|
sliderFill->setCurrentItem(opts.sliderFill);
|
|
dwtAppearance->setCurrentItem(opts.dwtAppearance);
|
|
crColor->setChecked(SHADE_BLEND_SELECTED==opts.crColor);
|
|
smallRadio->setChecked(opts.smallRadio);
|
|
splitterHighlight->setValue(opts.splitterHighlight);
|
|
gtkComboMenus->setChecked(opts.gtkComboMenus);
|
|
gtkButtonOrder->setChecked(opts.gtkButtonOrder);
|
|
mapKdeIcons->setChecked(opts.mapKdeIcons);
|
|
setPasswordChar(opts.passwordChar);
|
|
framelessGroupBoxes->setChecked(opts.framelessGroupBoxes);
|
|
customGradient=opts.customGradient;
|
|
gradCombo->setCurrentItem(APPEARANCE_CUSTOM1);
|
|
|
|
populateShades(opts);
|
|
}
|
|
|
|
int QtCurveConfig::getSquareFlags()
|
|
{
|
|
int square(0);
|
|
/*
|
|
if(squareEntry->isChecked())
|
|
square|=SQUARE_ENTRY;
|
|
if(squareProgress->isChecked())
|
|
square|=SQUARE_PROGRESS;
|
|
*/
|
|
if(squareScrollViews->isChecked())
|
|
square|=SQUARE_SCROLLVIEW;
|
|
if(squareLvSelection->isChecked())
|
|
square|=SQUARE_LISTVIEW_SELECTION;
|
|
return square;
|
|
}
|
|
|
|
int QtCurveConfig::getWindowBorderFlags()
|
|
{
|
|
int flags(0);
|
|
|
|
if(colorTitlebarOnly->isChecked())
|
|
flags|=WINDOW_BORDER_COLOR_TITLEBAR_ONLY;
|
|
// if(windowBorder_menuColor->isChecked())
|
|
// flags|=WINDOW_BORDER_USE_MENUBAR_COLOR_FOR_TITLEBAR;
|
|
if(titlebarBorder->isChecked())
|
|
flags|=WINDOW_BORDER_ADD_LIGHT_BORDER;
|
|
// if(windowBorder_blend->isChecked())
|
|
// flags|=WINDOW_BORDER_BLEND_TITLEBAR;
|
|
return flags;
|
|
}
|
|
|
|
bool QtCurveConfig::settingsChanged()
|
|
{
|
|
return round->currentItem()!=currentStyle.round ||
|
|
toolbarBorders->currentItem()!=currentStyle.toolbarBorders ||
|
|
appearance->currentItem()!=(int)currentStyle.appearance ||
|
|
focus->currentItem()!=(int)currentStyle.focus ||
|
|
lvLines->currentItem()!=(int)currentStyle.lvLines ||
|
|
lvButton->isChecked()!=currentStyle.lvButton ||
|
|
drawStatusBarFrames->isChecked()!=currentStyle.drawStatusBarFrames ||
|
|
buttonEffect->currentItem()!=(int)currentStyle.buttonEffect ||
|
|
coloredMouseOver->currentItem()!=(int)currentStyle.coloredMouseOver ||
|
|
menubarMouseOver->isChecked()!=currentStyle.menubarMouseOver ||
|
|
shadeMenubarOnlyWhenActive->isChecked()!=currentStyle.shadeMenubarOnlyWhenActive ||
|
|
thinnerMenuItems->isChecked()!=currentStyle.thinnerMenuItems ||
|
|
thinnerBtns->isChecked()!=currentStyle.thinnerBtns ||
|
|
fixParentlessDialogs->isChecked()!=currentStyle.fixParentlessDialogs ||
|
|
animatedProgress->isChecked()!=currentStyle.animatedProgress ||
|
|
stripedProgress->currentItem()!=currentStyle.stripedProgress ||
|
|
lighterPopupMenuBgnd->value()!=currentStyle.lighterPopupMenuBgnd ||
|
|
tabBgnd->value()!=currentStyle.tabBgnd ||
|
|
menuDelay->value()!=currentStyle.menuDelay ||
|
|
sliderWidth->value()!=currentStyle.sliderWidth ||
|
|
menuStripe->currentItem()!=currentStyle.menuStripe ||
|
|
menuStripeAppearance->currentItem()!=currentStyle.menuStripeAppearance ||
|
|
menuBgndAppearance->currentItem()!=currentStyle.menuBgndAppearance ||
|
|
menuBgndGrad->currentItem()!=currentStyle.menuBgndGrad ||
|
|
embolden->isChecked()!=currentStyle.embolden ||
|
|
fillSlider->isChecked()!=currentStyle.fillSlider ||
|
|
sliderStyle->currentItem()!=currentStyle.sliderStyle ||
|
|
roundMbTopOnly->isChecked()!=currentStyle.roundMbTopOnly ||
|
|
fillProgress->isChecked()!=currentStyle.fillProgress ||
|
|
darkerBorders->isChecked()!=currentStyle.darkerBorders ||
|
|
comboSplitter->isChecked()!=currentStyle.comboSplitter ||
|
|
comboBtn->currentItem()!=(int)currentStyle.comboBtn ||
|
|
sortedLv->currentItem()!=(int)currentStyle.sortedLv ||
|
|
unifySpinBtns->isChecked()!=currentStyle.unifySpinBtns ||
|
|
unifySpin->isChecked()!=currentStyle.unifySpin ||
|
|
unifyCombo->isChecked()!=currentStyle.unifyCombo ||
|
|
vArrows->isChecked()!=currentStyle.vArrows ||
|
|
xCheck->isChecked()!=currentStyle.xCheck ||
|
|
crHighlight->value()!=currentStyle.crHighlight ||
|
|
crButton->isChecked()!=currentStyle.crButton ||
|
|
colorSelTab->value()!=currentStyle.colorSelTab ||
|
|
roundAllTabs->isChecked()!=currentStyle.roundAllTabs ||
|
|
borderTab->isChecked()!=currentStyle.borderTab ||
|
|
doubleGtkComboArrow->isChecked()!=currentStyle.doubleGtkComboArrow ||
|
|
borderInactiveTab->isChecked()!=currentStyle.borderInactiveTab ||
|
|
invertBotTab->isChecked()!=currentStyle.invertBotTab ||
|
|
tabMouseOver->currentItem()!=currentStyle.tabMouseOver ||
|
|
stdSidebarButtons->isChecked()!=currentStyle.stdSidebarButtons ||
|
|
borderMenuitems->isChecked()!=currentStyle.borderMenuitems ||
|
|
popupBorder->isChecked()!=currentStyle.popupBorder ||
|
|
defBtnIndicator->currentItem()!=(int)currentStyle.defBtnIndicator ||
|
|
sliderThumbs->currentItem()!=(int)currentStyle.sliderThumbs ||
|
|
handles->currentItem()!=(int)currentStyle.handles ||
|
|
scrollbarType->currentItem()!=(int)currentStyle.scrollbarType ||
|
|
highlightTab->isChecked()!=currentStyle.highlightTab ||
|
|
shadeSliders->currentItem()!=(int)currentStyle.shadeSliders ||
|
|
shadeMenubars->currentItem()!=(int)currentStyle.shadeMenubars ||
|
|
shadeCheckRadio->currentItem()!=(int)currentStyle.shadeCheckRadio ||
|
|
menubarAppearance->currentItem()!=currentStyle.menubarAppearance ||
|
|
toolbarAppearance->currentItem()!=currentStyle.toolbarAppearance ||
|
|
lvAppearance->currentItem()!=currentStyle.lvAppearance ||
|
|
sliderAppearance->currentItem()!=currentStyle.sliderAppearance ||
|
|
tabAppearance->currentItem()!=currentStyle.tabAppearance ||
|
|
activeTabAppearance->currentItem()!=currentStyle.activeTabAppearance ||
|
|
progressAppearance->currentItem()!=currentStyle.progressAppearance ||
|
|
progressGrooveAppearance->currentItem()!=currentStyle.progressGrooveAppearance ||
|
|
grooveAppearance->currentItem()!=currentStyle.grooveAppearance ||
|
|
sunkenAppearance->currentItem()!=currentStyle.sunkenAppearance ||
|
|
progressGrooveColor->currentItem()!=currentStyle.progressGrooveColor ||
|
|
menuitemAppearance->currentItem()!=currentStyle.menuitemAppearance ||
|
|
titlebarAppearance->currentItem()!=currentStyle.titlebarAppearance ||
|
|
inactiveTitlebarAppearance->currentItem()!=currentStyle.inactiveTitlebarAppearance ||
|
|
titlebarButtonAppearance->currentItem()!=currentStyle.titlebarButtonAppearance ||
|
|
selectionAppearance->currentItem()!=currentStyle.selectionAppearance ||
|
|
toolbarSeparators->currentItem()!=currentStyle.toolbarSeparators ||
|
|
splitters->currentItem()!=currentStyle.splitters ||
|
|
colorMenubarMouseOver->isChecked()!=currentStyle.colorMenubarMouseOver ||
|
|
useHighlightForMenu->isChecked()!=currentStyle.useHighlightForMenu ||
|
|
groupBoxLine->isChecked()!=currentStyle.groupBoxLine ||
|
|
fadeLines->isChecked()!=currentStyle.fadeLines ||
|
|
menuIcons->isChecked()!=currentStyle.menuIcons ||
|
|
stdBtnSizes->isChecked()!=currentStyle.stdBtnSizes ||
|
|
forceAlternateLvCols->isChecked()!=currentStyle.forceAlternateLvCols ||
|
|
titlebarAlignment->currentItem()!=currentStyle.titlebarAlignment ||
|
|
|
|
shading->currentItem()!=(int)currentStyle.shading ||
|
|
gtkScrollViews->isChecked()!=currentStyle.gtkScrollViews ||
|
|
highlightScrollViews->isChecked()!=currentStyle.highlightScrollViews ||
|
|
etchEntry->isChecked()!=currentStyle.etchEntry ||
|
|
flatSbarButtons->isChecked()!=currentStyle.flatSbarButtons ||
|
|
thinSbarGroove->isChecked()!=currentStyle.thinSbarGroove ||
|
|
colorSliderMouseOver->isChecked()!=currentStyle.colorSliderMouseOver ||
|
|
sbarBgndAppearance->currentItem()!=currentStyle.sbarBgndAppearance ||
|
|
sliderFill->currentItem()!=currentStyle.sliderFill ||
|
|
dwtAppearance->currentItem()!=currentStyle.dwtAppearance ||
|
|
crColor->isChecked()!=(SHADE_BLEND_SELECTED==currentStyle.crColor ? true : false)||
|
|
smallRadio->isChecked()!=currentStyle.smallRadio ||
|
|
splitterHighlight->value()!=currentStyle.splitterHighlight ||
|
|
gtkComboMenus->isChecked()!=currentStyle.gtkComboMenus ||
|
|
gtkButtonOrder->isChecked()!=currentStyle.gtkButtonOrder ||
|
|
mapKdeIcons->isChecked()!=currentStyle.mapKdeIcons ||
|
|
framelessGroupBoxes->isChecked()!=currentStyle.framelessGroupBoxes ||
|
|
|
|
getSquareFlags()!=currentStyle.square ||
|
|
getWindowBorderFlags()!=currentStyle.windowBorder||
|
|
|
|
toInt(passwordChar->text())!=currentStyle.passwordChar ||
|
|
|
|
highlightFactor->value()!=currentStyle.highlightFactor ||
|
|
customMenuTextColor->isChecked()!=currentStyle.customMenuTextColor ||
|
|
(SHADE_CUSTOM==currentStyle.shadeSliders &&
|
|
customSlidersColor->color()!=currentStyle.customSlidersColor) ||
|
|
(SHADE_CUSTOM==currentStyle.shadeMenubars &&
|
|
customMenubarsColor->color()!=currentStyle.customMenubarsColor) ||
|
|
(SHADE_CUSTOM==currentStyle.shadeCheckRadio &&
|
|
customCheckRadioColor->color()!=currentStyle.customCheckRadioColor) ||
|
|
(customMenuTextColor->isChecked() &&
|
|
customMenuNormTextColor->color()!=currentStyle.customMenuNormTextColor) ||
|
|
(customMenuTextColor->isChecked() &&
|
|
customMenuSelTextColor->color()!=currentStyle.customMenuSelTextColor) ||
|
|
(SHADE_CUSTOM==currentStyle.menuStripe &&
|
|
customMenuStripeColor->color()!=currentStyle.customMenuStripeColor) ||
|
|
(SHADE_CUSTOM==currentStyle.comboBtn &&
|
|
customComboBtnColor->color()!=currentStyle.customComboBtnColor) ||
|
|
(SHADE_CUSTOM==currentStyle.sortedLv &&
|
|
customSortedLvColor->color()!=currentStyle.customSortedLvColor) ||
|
|
|
|
customGradient!=currentStyle.customGradient;
|
|
|
|
diffShades(currentStyle);
|
|
}
|
|
|
|
#include "qtcurveconfig.moc"
|