summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorMavridis Philippe <[email protected]>2021-06-26 15:45:55 +0300
committerMavridis Philippe <[email protected]>2021-06-26 15:45:55 +0300
commite822245ef1730e7d24b9704a309776613d030f73 (patch)
treeb82df5cf010f3283d6de1c16ad07a1d937c7751f /client
downloadtwin-style-dekorator-e822245ef1730e7d24b9704a309776613d030f73.tar.gz
twin-style-dekorator-e822245ef1730e7d24b9704a309776613d030f73.zip
Initial commit - imported KDE3 version
Signed-off-by: Mavridis Philippe <[email protected]>
Diffstat (limited to 'client')
-rw-r--r--client/Makefile.am23
-rw-r--r--client/Makefile.in911
-rw-r--r--client/config/Makefile.am19
-rw-r--r--client/config/Makefile.in824
-rw-r--r--client/config/configdialog.ui2165
-rw-r--r--client/config/deKoratorconfig.cc464
-rw-r--r--client/config/deKoratorconfig.h72
-rw-r--r--client/config/themes.cpp460
-rw-r--r--client/config/themes.h74
-rw-r--r--client/config/themes.moc.cc110
-rw-r--r--client/config/themes.moc.loT7
-rw-r--r--client/deKorator.desktop5
-rw-r--r--client/deKoratorclient.cc2831
-rw-r--r--client/deKoratorclient.h322
-rw-r--r--client/shadow.cpp129
-rw-r--r--client/shadow.h56
-rw-r--r--client/themes.moc.cc110
17 files changed, 8582 insertions, 0 deletions
diff --git a/client/Makefile.am b/client/Makefile.am
new file mode 100644
index 0000000..931162a
--- /dev/null
+++ b/client/Makefile.am
@@ -0,0 +1,23 @@
+AUTOMAKE_OPTIONS = foreign
+
+SUBDIRS = config
+
+KDE_CXXFLAGS = -DQT_PLUGIN
+
+INCLUDES = $(all_includes) -I$(kde_includes)/kwin
+
+kwindir = $(kde_datadir)/kwin/
+kwin_DATA = deKorator.desktop
+
+noinst_HEADERS = deKoratorclient.h shadow.h
+
+kde_module_LTLIBRARIES = kwin3_deKorator.la
+kwin3_deKorator_la_SOURCES = deKoratorclient.cc shadow.cpp
+kwin3_deKorator_la_LIBADD = $(kde_libraries)/libkdecorations.la
+kwin3_deKorator_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN) -lkdecore
+kwin3_deKorator_la_METASOURCES = AUTO
+
+DISTCLEANFILES = $(kwin3_deKorator_la_METASOURCES)
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kwin_deKorator.po
diff --git a/client/Makefile.in b/client/Makefile.in
new file mode 100644
index 0000000..4abd438
--- /dev/null
+++ b/client/Makefile.in
@@ -0,0 +1,911 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 435799 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = client
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(kde_moduledir)" "$(DESTDIR)$(kwindir)"
+kde_moduleLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(kde_module_LTLIBRARIES)
+kwin3_deKorator_la_DEPENDENCIES = $(kde_libraries)/libkdecorations.la
+am_kwin3_deKorator_la_OBJECTS = deKoratorclient.lo shadow.lo
+#>- kwin3_deKorator_la_OBJECTS = $(am_kwin3_deKorator_la_OBJECTS)
+#>+ 4
+kwin3_deKorator_la_final_OBJECTS = deKoratorclient.lo shadow.lo
+kwin3_deKorator_la_nofinal_OBJECTS = deKoratorclient.lo shadow.lo
+@KDE_USE_FINAL_FALSE@kwin3_deKorator_la_OBJECTS = $(kwin3_deKorator_la_nofinal_OBJECTS)
+@KDE_USE_FINAL_TRUE@kwin3_deKorator_la_OBJECTS = $(kwin3_deKorator_la_final_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
+am__depfiles_maybe = depfiles
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+#>- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+#>- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(KDE_CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(kwin3_deKorator_la_SOURCES)
+DIST_SOURCES = $(kwin3_deKorator_la_SOURCES)
+#>- RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+#>- html-recursive info-recursive install-data-recursive \
+#>- install-exec-recursive install-info-recursive \
+#>- install-recursive installcheck-recursive installdirs-recursive \
+#>- pdf-recursive ps-recursive uninstall-info-recursive \
+#>- uninstall-recursive
+#>+ 6
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive nmcheck-recursive bcheck-recursive
+kwinDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(kwin_DATA)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_PERMISSIVE_FLAG = @ENABLE_PERMISSIVE_FLAG@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GMSGFMT = @GMSGFMT@
+HAVE_GCC_VISIBILITY = @HAVE_GCC_VISIBILITY@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_CHECK_PLUGIN = @KDE_CHECK_PLUGIN@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_FPIE = @KDE_USE_FPIE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+KDE_USE_PIE = @KDE_USE_PIE@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_AS_NEEDED = @LDFLAGS_AS_NEEDED@
+LDFLAGS_NEW_DTAGS = @LDFLAGS_NEW_DTAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDED = @LIB_KDED@
+LIB_KDEPIM = @LIB_KDEPIM@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KDNSSD = @LIB_KDNSSD@
+LIB_KFILE = @LIB_KFILE@
+LIB_KFM = @LIB_KFM@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIMPROXY = @LIB_KIMPROXY@
+LIB_KIO = @LIB_KIO@
+LIB_KJS = @LIB_KJS@
+LIB_KNEWSTUFF = @LIB_KNEWSTUFF@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_KUNITTEST = @LIB_KUNITTEST@
+LIB_KUTILS = @LIB_KUTILS@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LIB_XRENDER = @LIB_XRENDER@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_RPATH = @X_RPATH@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+include_ARTS_FALSE = @include_ARTS_FALSE@
+include_ARTS_TRUE = @include_ARTS_TRUE@
+include_x11_FALSE = @include_x11_FALSE@
+include_x11_TRUE = @include_x11_TRUE@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+kdeinitdir = @kdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+unsermake_enable_pch_FALSE = @unsermake_enable_pch_FALSE@
+unsermake_enable_pch_TRUE = @unsermake_enable_pch_TRUE@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+AUTOMAKE_OPTIONS = foreign
+SUBDIRS = config
+KDE_CXXFLAGS = -DQT_PLUGIN
+INCLUDES = $(all_includes) -I$(kde_includes)/kwin
+kwindir = $(kde_datadir)/kwin/
+kwin_DATA = deKorator.desktop
+noinst_HEADERS = deKoratorclient.h shadow.h
+kde_module_LTLIBRARIES = kwin3_deKorator.la
+kwin3_deKorator_la_SOURCES = deKoratorclient.cc shadow.cpp
+kwin3_deKorator_la_LIBADD = $(kde_libraries)/libkdecorations.la
+kwin3_deKorator_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN) -lkdecore
+#>- kwin3_deKorator_la_METASOURCES = AUTO
+DISTCLEANFILES = $(kwin3_deKorator_la_METASOURCES)
+#>- all: all-recursive
+#>+ 1
+all: docs-am all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --foreign client/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign client/Makefile
+ cd $(top_srcdir) && perl admin/am_edit client/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-kde_moduleLTLIBRARIES: $(kde_module_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(kde_moduledir)" || $(mkdir_p) "$(DESTDIR)$(kde_moduledir)"
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(kde_moduledir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(kde_moduledir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-kde_moduleLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(kde_moduledir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(kde_moduledir)/$$p"; \
+ done
+
+clean-kde_moduleLTLIBRARIES:
+ -test -z "$(kde_module_LTLIBRARIES)" || rm -f $(kde_module_LTLIBRARIES)
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+#>- kwin3_deKorator.la: $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_DEPENDENCIES)
+#>+ 2
+@KDE_USE_CLOSURE_TRUE@kwin3_deKorator.la: kwin3_deKorator.la.closure $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_DEPENDENCIES)
+@KDE_USE_CLOSURE_FALSE@kwin3_deKorator.la: $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(kde_moduledir) $(kwin3_deKorator_la_LDFLAGS) $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deKoratorclient.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shadow.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-kwinDATA: $(kwin_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(kwindir)" || $(mkdir_p) "$(DESTDIR)$(kwindir)"
+ @list='$(kwin_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(kwinDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(kwindir)/$$f'"; \
+ $(kwinDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(kwindir)/$$f"; \
+ done
+
+uninstall-kwinDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(kwin_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(kwindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(kwindir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(kde_moduledir)" "$(DESTDIR)$(kwindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-recursive
+#>+ 1
+clean: kde-rpo-clean clean-recursive
+
+#>- clean-am: clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+#>- mostlyclean-am
+#>+ 2
+clean-am: clean-metasources clean-closures clean-bcheck clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+#>- install-data-am: install-kde_moduleLTLIBRARIES install-kwinDATA
+#>+ 1
+install-data-am: install-kwinDATA
+
+#>- install-exec-am:
+#>+ 1
+install-exec-am: install-kde_moduleLTLIBRARIES
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-kde_moduleLTLIBRARIES \
+ uninstall-kwinDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+ clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-kde_moduleLTLIBRARIES install-kwinDATA \
+ install-man install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-info-am \
+ uninstall-kde_moduleLTLIBRARIES uninstall-kwinDATA
+
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kwin_deKorator.po
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 8
+kwin3_deKorator.la.closure: $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_DEPENDENCIES)
+ @echo "int main() {return 0;}" > kwin3_deKorator_la_closure.cc
+ @$(LTCXXCOMPILE) -c kwin3_deKorator_la_closure.cc
+ $(CXXLINK) kwin3_deKorator_la_closure.lo $(kwin3_deKorator_la_LDFLAGS) $(kwin3_deKorator_la_OBJECTS) $(kwin3_deKorator_la_LIBADD) $(LIBS)
+ @rm -f kwin3_deKorator_la_closure.* kwin3_deKorator.la.closure
+ @echo "timestamp" > kwin3_deKorator.la.closure
+
+
+#>+ 3
+deKoratorclient.moc: $(srcdir)/deKoratorclient.h
+ $(MOC) $(srcdir)/deKoratorclient.h -o deKoratorclient.moc
+
+#>+ 2
+mocs: deKoratorclient.moc
+
+#>+ 3
+clean-metasources:
+ -rm -f deKoratorclient.moc
+
+#>+ 2
+KDE_DIST=Makefile.in deKorator.desktop Makefile.am
+
+#>+ 3
+clean-closures:
+ -rm -f kwin3_deKorator.la.closure
+
+#>+ 2
+docs-am:
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign client/Makefile
+ cd $(top_srcdir) && perl admin/am_edit client/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-recursive
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXXCOMPILE) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 3
+final:
+ $(MAKE) kwin3_deKorator_la_OBJECTS="$(kwin3_deKorator_la_final_OBJECTS)" all-am
+
+#>+ 3
+final-install:
+ $(MAKE) kwin3_deKorator_la_OBJECTS="$(kwin3_deKorator_la_final_OBJECTS)" install-am
+
+#>+ 3
+no-final:
+ $(MAKE) kwin3_deKorator_la_OBJECTS="$(kwin3_deKorator_la_nofinal_OBJECTS)" all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) kwin3_deKorator_la_OBJECTS="$(kwin3_deKorator_la_nofinal_OBJECTS)" install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 5
+nmcheck:
+deKoratorclient.lo: deKoratorclient.moc
+deKoratorclient.o: deKoratorclient.moc
+nmcheck-am: nmcheck
diff --git a/client/config/Makefile.am b/client/config/Makefile.am
new file mode 100644
index 0000000..de690eb
--- /dev/null
+++ b/client/config/Makefile.am
@@ -0,0 +1,19 @@
+AUTOMAKE_OPTIONS = foreign
+
+KDE_CXXFLAGS = -DQT_PLUGIN
+
+INCLUDES = $(all_includes)
+
+noinst_HEADERS = deKoratorconfig.h themes.h
+
+kde_module_LTLIBRARIES = kwin_deKorator_config.la
+kwin_deKorator_config_la_SOURCES = deKoratorconfig.cc configdialog.ui \
+ themes.cpp
+kwin_deKorator_config_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN)
+kwin_deKorator_config_la_LIBADD = $(LIB_KIO) $(LIB_KDEUI)
+kwin_deKorator_config_la_METASOURCES = AUTO
+
+DISTCLEANFILES = $(kwin_deKorator_config_la_METASOURCES)
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kwin_deKorator_config.pot
diff --git a/client/config/Makefile.in b/client/config/Makefile.in
new file mode 100644
index 0000000..db931cb
--- /dev/null
+++ b/client/config/Makefile.in
@@ -0,0 +1,824 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# KDE tags expanded automatically by am_edit - $Revision: 435799 $
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = client/config
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/admin/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(kde_moduledir)"
+kde_moduleLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(kde_module_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+kwin_deKorator_config_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+am_kwin_deKorator_config_la_OBJECTS = deKoratorconfig.lo themes.lo
+#>- kwin_deKorator_config_la_OBJECTS = \
+#>- $(am_kwin_deKorator_config_la_OBJECTS)
+#>+ 4
+kwin_deKorator_config_la_final_OBJECTS = kwin_deKorator_config_la.all_cc.lo themes.lo
+kwin_deKorator_config_la_nofinal_OBJECTS = deKoratorconfig.lo themes.lo configdialog.lo
+@KDE_USE_FINAL_FALSE@kwin_deKorator_config_la_OBJECTS = $(kwin_deKorator_config_la_nofinal_OBJECTS)
+@KDE_USE_FINAL_TRUE@kwin_deKorator_config_la_OBJECTS = $(kwin_deKorator_config_la_final_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
+am__depfiles_maybe = depfiles
+#>- CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+#>- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 2
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+#>- LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+#>- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+#>- $(AM_CXXFLAGS) $(CXXFLAGS)
+#>+ 3
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(KDE_CXXFLAGS)
+CXXLD = $(CXX)
+#>- CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+#>- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+#>+ 2
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(KDE_CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(kwin_deKorator_config_la_SOURCES)
+DIST_SOURCES = $(kwin_deKorator_config_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+#>- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+#>+ 1
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) $(KDE_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONF_FILES = @CONF_FILES@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOPIDLNG = @DCOPIDLNG@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_PERMISSIVE_FLAG = @ENABLE_PERMISSIVE_FLAG@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GMSGFMT = @GMSGFMT@
+HAVE_GCC_VISIBILITY = @HAVE_GCC_VISIBILITY@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KCFG_DEPENDENCIES = @KCFG_DEPENDENCIES@
+KCONFIG_COMPILER = @KCONFIG_COMPILER@
+KDECONFIG = @KDECONFIG@
+KDE_CHECK_PLUGIN = @KDE_CHECK_PLUGIN@
+KDE_EXTRA_RPATH = @KDE_EXTRA_RPATH@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_NO_UNDEFINED = @KDE_NO_UNDEFINED@
+KDE_PLUGIN = @KDE_PLUGIN@
+KDE_RPATH = @KDE_RPATH@
+KDE_USE_CLOSURE_FALSE = @KDE_USE_CLOSURE_FALSE@
+KDE_USE_CLOSURE_TRUE = @KDE_USE_CLOSURE_TRUE@
+KDE_USE_FINAL_FALSE = @KDE_USE_FINAL_FALSE@
+KDE_USE_FINAL_TRUE = @KDE_USE_FINAL_TRUE@
+KDE_USE_FPIE = @KDE_USE_FPIE@
+KDE_USE_NMCHECK_FALSE = @KDE_USE_NMCHECK_FALSE@
+KDE_USE_NMCHECK_TRUE = @KDE_USE_NMCHECK_TRUE@
+KDE_USE_PIE = @KDE_USE_PIE@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_AS_NEEDED = @LDFLAGS_AS_NEEDED@
+LDFLAGS_NEW_DTAGS = @LDFLAGS_NEW_DTAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBZ = @LIBZ@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDED = @LIB_KDED@
+LIB_KDEPIM = @LIB_KDEPIM@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KDNSSD = @LIB_KDNSSD@
+LIB_KFILE = @LIB_KFILE@
+LIB_KFM = @LIB_KFM@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIMPROXY = @LIB_KIMPROXY@
+LIB_KIO = @LIB_KIO@
+LIB_KJS = @LIB_KJS@
+LIB_KNEWSTUFF = @LIB_KNEWSTUFF@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_KUNITTEST = @LIB_KUNITTEST@
+LIB_KUTILS = @LIB_KUTILS@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LIB_XRENDER = @LIB_XRENDER@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKEKDEWIDGETS = @MAKEKDEWIDGETS@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+MSGFMT = @MSGFMT@
+NOOPT_CFLAGS = @NOOPT_CFLAGS@
+NOOPT_CXXFLAGS = @NOOPT_CXXFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TOPSUBDIRS = @TOPSUBDIRS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_EXCEPTIONS = @USE_EXCEPTIONS@
+USE_RTTI = @USE_RTTI@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+WOVERLOADED_VIRTUAL = @WOVERLOADED_VIRTUAL@
+XGETTEXT = @XGETTEXT@
+XMLLINT = @XMLLINT@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_RPATH = @X_RPATH@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+include_ARTS_FALSE = @include_ARTS_FALSE@
+include_ARTS_TRUE = @include_ARTS_TRUE@
+include_x11_FALSE = @include_x11_FALSE@
+include_x11_TRUE = @include_x11_TRUE@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_kcfgdir = @kde_kcfgdir@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+kdeinitdir = @kdeinitdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+unsermake_enable_pch_FALSE = @unsermake_enable_pch_FALSE@
+unsermake_enable_pch_TRUE = @unsermake_enable_pch_TRUE@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+xdg_appsdir = @xdg_appsdir@
+xdg_directorydir = @xdg_directorydir@
+xdg_menudir = @xdg_menudir@
+AUTOMAKE_OPTIONS = foreign
+KDE_CXXFLAGS = -DQT_PLUGIN
+INCLUDES = $(all_includes)
+noinst_HEADERS = deKoratorconfig.h themes.h
+kde_module_LTLIBRARIES = kwin_deKorator_config.la
+#>- kwin_deKorator_config_la_SOURCES = deKoratorconfig.cc configdialog.ui \
+#>- themes.cpp
+#>+ 2
+kwin_deKorator_config_la_SOURCES=deKoratorconfig.cc \
+ themes.cpp configdialog.cc
+
+kwin_deKorator_config_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN)
+kwin_deKorator_config_la_LIBADD = $(LIB_KIO) $(LIB_KDEUI)
+#>- kwin_deKorator_config_la_METASOURCES = AUTO
+DISTCLEANFILES = $(kwin_deKorator_config_la_METASOURCES)
+#>- all: all-am
+#>+ 1
+all: docs-am all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .cpp .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+#>- @for dep in $?; do \
+#>- case '$(am__configure_deps)' in \
+#>- *$$dep*) \
+#>- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+#>- && exit 0; \
+#>- exit 1;; \
+#>- esac; \
+#>- done; \
+#>- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/config/Makefile'; \
+#>- cd $(top_srcdir) && \
+#>- $(AUTOMAKE) --foreign client/config/Makefile
+#>+ 12
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/config/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign client/config/Makefile
+ cd $(top_srcdir) && perl admin/am_edit client/config/Makefile.in
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-kde_moduleLTLIBRARIES: $(kde_module_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(kde_moduledir)" || $(mkdir_p) "$(DESTDIR)$(kde_moduledir)"
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(kde_moduledir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(kde_moduleLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(kde_moduledir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-kde_moduleLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(kde_moduledir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(kde_moduledir)/$$p"; \
+ done
+
+clean-kde_moduleLTLIBRARIES:
+ -test -z "$(kde_module_LTLIBRARIES)" || rm -f $(kde_module_LTLIBRARIES)
+ @list='$(kde_module_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+#>- kwin_deKorator_config.la: $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_DEPENDENCIES)
+#>+ 2
+@KDE_USE_CLOSURE_TRUE@kwin_deKorator_config.la: kwin_deKorator_config.la.closure $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_DEPENDENCIES)
+@KDE_USE_CLOSURE_FALSE@kwin_deKorator_config.la: $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(kde_moduledir) $(kwin_deKorator_config_la_LDFLAGS) $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deKoratorconfig.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/themes.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(kde_moduledir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+#>- clean: clean-am
+#>+ 1
+clean: kde-rpo-clean clean-am
+
+#>- clean-am: clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+#>- mostlyclean-am
+#>+ 2
+clean-am: clean-metasources clean-ui clean-closures clean-bcheck clean-final clean-generic clean-kde_moduleLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+#>- install-data-am: install-kde_moduleLTLIBRARIES
+#>+ 1
+install-data-am:
+
+#>- install-exec-am:
+#>+ 1
+install-exec-am: install-kde_moduleLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-kde_moduleLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-kde_moduleLTLIBRARIES clean-libtool ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am \
+ install-kde_moduleLTLIBRARIES install-man install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-kde_moduleLTLIBRARIES
+
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kwin_deKorator_config.pot
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
+
+#>+ 8
+kwin_deKorator_config.la.closure: $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_DEPENDENCIES)
+ @echo "int main() {return 0;}" > kwin_deKorator_config_la_closure.cc
+ @$(LTCXXCOMPILE) -c kwin_deKorator_config_la_closure.cc
+ $(CXXLINK) kwin_deKorator_config_la_closure.lo $(kwin_deKorator_config_la_LDFLAGS) $(kwin_deKorator_config_la_OBJECTS) $(kwin_deKorator_config_la_LIBADD) $(LIBS)
+ @rm -f kwin_deKorator_config_la_closure.* kwin_deKorator_config.la.closure
+ @echo "timestamp" > kwin_deKorator_config.la.closure
+
+
+#>+ 3
+themes.moc: $(srcdir)/themes.h
+ $(MOC) $(srcdir)/themes.h -o themes.moc
+
+#>+ 2
+mocs: themes.moc
+
+#>+ 3
+deKoratorconfig.moc: $(srcdir)/deKoratorconfig.h
+ $(MOC) $(srcdir)/deKoratorconfig.h -o deKoratorconfig.moc
+
+#>+ 2
+mocs: deKoratorconfig.moc
+
+#>+ 3
+clean-metasources:
+ -rm -f themes.moc deKoratorconfig.moc
+
+#>+ 2
+KDE_DIST=Makefile.in configdialog.ui deKoratorconfig.loT Makefile.am
+
+#>+ 4
+clean-ui:
+ -rm -f \
+ configdialog.cc configdialog.h configdialog.moc
+
+#>+ 3
+clean-closures:
+ -rm -f kwin_deKorator_config.la.closure
+
+#>+ 2
+docs-am:
+
+#>+ 15
+force-reedit:
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign client/config/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign client/config/Makefile
+ cd $(top_srcdir) && perl admin/am_edit client/config/Makefile.in
+
+
+#>+ 21
+clean-bcheck:
+ rm -f *.bchecktest.cc *.bchecktest.cc.class a.out
+
+bcheck: bcheck-am
+
+bcheck-am:
+ @for i in ; do \
+ if test $(srcdir)/$$i -nt $$i.bchecktest.cc; then \
+ echo "int main() {return 0;}" > $$i.bchecktest.cc ; \
+ echo "#include \"$$i\"" >> $$i.bchecktest.cc ; \
+ echo "$$i"; \
+ if ! $(CXXCOMPILE) --dump-class-hierarchy -c $$i.bchecktest.cc; then \
+ rm -f $$i.bchecktest.cc; exit 1; \
+ fi ; \
+ echo "" >> $$i.bchecktest.cc.class; \
+ perl $(top_srcdir)/admin/bcheck.pl $$i.bchecktest.cc.class || { rm -f $$i.bchecktest.cc; exit 1; }; \
+ rm -f a.out; \
+ fi ; \
+ done
+
+
+#>+ 11
+kwin_deKorator_config_la.all_cc.cc: $(srcdir)/Makefile.in $(srcdir)/deKoratorconfig.cc configdialog.cc themes.moc deKoratorconfig.moc
+ @echo 'creating kwin_deKorator_config_la.all_cc.cc ...'; \
+ rm -f kwin_deKorator_config_la.all_cc.files kwin_deKorator_config_la.all_cc.final; \
+ echo "#define KDE_USE_FINAL 1" >> kwin_deKorator_config_la.all_cc.final; \
+ for file in deKoratorconfig.cc configdialog.cc ; do \
+ echo "#include \"$$file\"" >> kwin_deKorator_config_la.all_cc.files; \
+ test ! -f $(srcdir)/$$file || egrep '^#pragma +implementation' $(srcdir)/$$file >> kwin_deKorator_config_la.all_cc.final; \
+ done; \
+ cat kwin_deKorator_config_la.all_cc.final kwin_deKorator_config_la.all_cc.files > kwin_deKorator_config_la.all_cc.cc; \
+ rm -f kwin_deKorator_config_la.all_cc.final kwin_deKorator_config_la.all_cc.files
+
+#>+ 3
+clean-final:
+ -rm -f kwin_deKorator_config_la.all_cc.cc
+
+#>+ 3
+final:
+ $(MAKE) kwin_deKorator_config_la_OBJECTS="$(kwin_deKorator_config_la_final_OBJECTS)" all-am
+
+#>+ 3
+final-install:
+ $(MAKE) kwin_deKorator_config_la_OBJECTS="$(kwin_deKorator_config_la_final_OBJECTS)" install-am
+
+#>+ 3
+no-final:
+ $(MAKE) kwin_deKorator_config_la_OBJECTS="$(kwin_deKorator_config_la_nofinal_OBJECTS)" all-am
+
+#>+ 3
+no-final-install:
+ $(MAKE) kwin_deKorator_config_la_OBJECTS="$(kwin_deKorator_config_la_nofinal_OBJECTS)" install-am
+
+#>+ 3
+kde-rpo-clean:
+ -rm -f *.rpo
+
+#>+ 9
+nmcheck:
+$(srcdir)/themes.cpp: configdialog.h
+deKoratorconfig.o: deKoratorconfig.moc
+nmcheck-am: nmcheck
+deKoratorconfig.lo: deKoratorconfig.moc
+themes.lo: themes.moc
+$(srcdir)/deKoratorconfig.cc: configdialog.h
+themes.o: themes.moc
+
+#>+ 15
+configdialog.cc: $(srcdir)/configdialog.ui configdialog.h configdialog.moc
+ rm -f configdialog.cc
+ echo '#include <kdialog.h>' > configdialog.cc
+ echo '#include <klocale.h>' >> configdialog.cc
+ $(UIC) -tr ${UIC_TR} -i configdialog.h $(srcdir)/configdialog.ui > configdialog.cc.temp ; ret=$$?; \
+ $(PERL) -pe "s,${UIC_TR}( \"\" ),QString::null,g" configdialog.cc.temp | $(PERL) -pe "s,${UIC_TR}( \"\"\, \"\" ),QString::null,g" | $(PERL) -pe "s,image([0-9][0-9]*)_data,img\$$1_configdialog,g" | $(PERL) -pe "s,: QWizard\(,: KWizard(,g" >> configdialog.cc ;\
+ rm -f configdialog.cc.temp ;\
+ if test "$$ret" = 0; then echo '#include "configdialog.moc"' >> configdialog.cc; else rm -f configdialog.cc ; exit $$ret ; fi
+
+configdialog.h: $(srcdir)/configdialog.ui
+ rm -rf configdialog.h;
+ $(UIC) $(srcdir)/configdialog.ui | $(PERL) -pi -e "s,public QWizard,public KWizard,g; s,#include <qwizard.h>,#include <kwizard.h>,g" >> configdialog.h ;
+configdialog.moc: configdialog.h
+ $(MOC) configdialog.h -o configdialog.moc
diff --git a/client/config/configdialog.ui b/client/config/configdialog.ui
new file mode 100644
index 0000000..0fd4ee1
--- /dev/null
+++ b/client/config/configdialog.ui
@@ -0,0 +1,2165 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>ConfigDialog</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>ConfigDialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>471</width>
+ <height>525</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Config Dialog</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTabWidget">
+ <property name="name">
+ <cstring>tabWidget2</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>M&amp;isc</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>generalbox</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>GroupBoxPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="title">
+ <string>Decoration Settings</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>titlealign</cstring>
+ </property>
+ <property name="title">
+ <string>Title &amp;Alignment</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Use these buttons to set the alignment of the window title</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>AlignLeft</cstring>
+ </property>
+ <property name="text">
+ <string>L&amp;eft</string>
+ </property>
+ <property name="accel">
+ <string>Alt+E</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>AlignHCenter</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Center</string>
+ </property>
+ <property name="accel">
+ <string>Alt+C</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>AlignRight</cstring>
+ </property>
+ <property name="text">
+ <string>Ri&amp;ght</string>
+ </property>
+ <property name="accel">
+ <string>Alt+G</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup6</cstring>
+ </property>
+ <property name="title">
+ <string>Text Shadow</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>useShdtextChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Use shadowed text</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout15</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup7</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Active</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout11</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>X :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>activeShdtextXSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5_2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Y :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>activeShdtextYSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout10</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_6</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Color</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>activeShdColBtn</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup7_2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Inactive</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout11_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5_4</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>X :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>inActiveShdtextXSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5_2_3</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Y :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>inActiveShdtextYSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout14</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_6_3</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Color</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>inActiveShdColBtn</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup9</cstring>
+ </property>
+ <property name="title">
+ <string>Pressed Buttons Shift</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout17</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout16</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5_3</cstring>
+ </property>
+ <property name="text">
+ <string>X :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>btnShiftXSpinBox</cstring>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_5_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Y :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>btnShiftYSpinBox</cstring>
+ </property>
+ <property name="maxValue">
+ <number>3</number>
+ </property>
+ <property name="minValue">
+ <number>-3</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>161</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>useMenuImageChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Use menu button image insted o&amp;f the app icon</string>
+ </property>
+ <property name="accel">
+ <string>Alt+F</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>ignoreAppIcnCol</cstring>
+ </property>
+ <property name="text">
+ <string>Ignore app icon colorizing</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>dblClkCloseChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Close &amp;window by by double clicking the menu button</string>
+ </property>
+ <property name="accel">
+ <string>Alt+W</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>showBtmBorderChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Show &amp;bottom border when window is shaded</string>
+ </property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer11_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>30</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Color&amp;s</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup2</cstring>
+ </property>
+ <property name="title">
+ <string>Colors</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout19</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup14</cstring>
+ </property>
+ <property name="title">
+ <string>Active</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>colorizeActFramesChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Colrize &amp;frames</string>
+ </property>
+ <property name="accel">
+ <string>Alt+F</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>colorizeActButtonsChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Colorize &amp;buttons</string>
+ </property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup14_2</cstring>
+ </property>
+ <property name="title">
+ <string>Inactive</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>colorizeInActFramesChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Colrize &amp;frames</string>
+ </property>
+ <property name="accel">
+ <string>Alt+F</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>colorizeInActButtonsChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Colorize &amp;buttons</string>
+ </property>
+ <property name="accel">
+ <string>Alt+B</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup5</cstring>
+ </property>
+ <property name="title">
+ <string>Hover Effects</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>useAnimChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Use buttons animation</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout18</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup12</cstring>
+ </property>
+ <property name="title">
+ <string>Animate Effect</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Intensity</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Blend</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Solarize</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Fade</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Trashed</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Hue Shift</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>animateEfeectsCombo</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout37</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_8</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Steps :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>stepsSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2_5</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Interval</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>intervalSpinBox</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maxValue">
+ <number>1000</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>KeepAnimateChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Keep Animating</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup11</cstring>
+ </property>
+ <property name="title">
+ <string>Hover And Press Effect</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>To Gray</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Colorize</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>DeSaturate</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>To Gamma</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Use Image Colors</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>hoverTypeCombo</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout14</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_4</cstring>
+ </property>
+ <property name="text">
+ <string>Amount :</string>
+ </property>
+ </widget>
+ <widget class="QSpinBox">
+ <property name="name">
+ <cstring>effectsAmount_SpinBox</cstring>
+ </property>
+ <property name="maxValue">
+ <number>10</number>
+ </property>
+ <property name="minValue">
+ <number>1</number>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup13</cstring>
+ </property>
+ <property name="title">
+ <string>Highlight Colors</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout19</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout17</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_3</cstring>
+ </property>
+ <property name="text">
+ <string>Active color</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>activeHighlightClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout18</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_3_2</cstring>
+ </property>
+ <property name="text">
+ <string>Inactive color</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>inActiveHighlightClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup5_2</cstring>
+ </property>
+ <property name="title">
+ <string>Colorizing Method</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout38</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2_4</cstring>
+ </property>
+ <property name="text">
+ <string>Deco's</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Liquid Method</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Kde Method</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Hue Adgustment</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>decoColorizeComboBox</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout39</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel3</cstring>
+ </property>
+ <property name="text">
+ <string>Buttons</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>Liquid Method</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Kde Method</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Hue Adgustment</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>buttonsColorizeComboBox</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>Buttons</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>useCusBtnClrChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Use custom buttons colors</string>
+ </property>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup16</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Custom Buttons Colors</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_7</cstring>
+ </property>
+ <property name="text">
+ <string>Apply custom colors to:</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout37</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cusColActBtnChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>Active buttons</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cusColInActBtnChkBox</cstring>
+ </property>
+ <property name="text">
+ <string>InActive buttons</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer10_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout42</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout41</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout38</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel9</cstring>
+ </property>
+ <property name="text">
+ <string>Close</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>closeClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout25</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Max</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>maxClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout28</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4_2</cstring>
+ </property>
+ <property name="text">
+ <string>Help</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>helpClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout29</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel5</cstring>
+ </property>
+ <property name="text">
+ <string>Sticky</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>stickyClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout32</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel7</cstring>
+ </property>
+ <property name="text">
+ <string>Above</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>aboveClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout28_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel4_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Below</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>belowClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout31_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel6_2</cstring>
+ </property>
+ <property name="text">
+ <string>Shade</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>shadeClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout36</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout27</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel3_2</cstring>
+ </property>
+ <property name="text">
+ <string>Min</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>minClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout26</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2_2</cstring>
+ </property>
+ <property name="text">
+ <string>Restore</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>restoreClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout33_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel8_2</cstring>
+ </property>
+ <property name="text">
+ <string>Menu</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>menuClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout31</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel6</cstring>
+ </property>
+ <property name="text">
+ <string>Sticky Down</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>stickyDownClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout33</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel8</cstring>
+ </property>
+ <property name="text">
+ <string>Above Down</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>aboveDownClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout29_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel5_2</cstring>
+ </property>
+ <property name="text">
+ <string>Below Down</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>belowDownClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout32_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel7_2</cstring>
+ </property>
+ <property name="text">
+ <string>Shade Down</string>
+ </property>
+ </widget>
+ <widget class="KColorButton">
+ <property name="name">
+ <cstring>shadeDownClrBtn</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer18</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>60</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;Paths</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup3</cstring>
+ </property>
+ <property name="title">
+ <string>Tiles Path's</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>Frames tiles Path</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester">
+ <property name="name">
+ <cstring>framesPathKurl</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>Buttons tiles path</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester">
+ <property name="name">
+ <cstring>buttonsPathKurl</cstring>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>useMasks_Chkbox</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Use Masks</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel2_3</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Masks tiles path</string>
+ </property>
+ </widget>
+ <widget class="KURLRequester">
+ <property name="name">
+ <cstring>masksPathKurl</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer12_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>100</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;Themes</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>buttonGroup10</cstring>
+ </property>
+ <property name="title">
+ <string>Preview</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout12</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>95</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>previewLabael</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>This is a Screen shot of what KDM will look like when you go to log in.</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>95</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="KListView">
+ <column>
+ <property name="text">
+ <string>Theme Name</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>themesKlstView</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout13</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>installthemeBtn</cstring>
+ </property>
+ <property name="text">
+ <string>Install Ne&amp;w Theme</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>removeThemBtn</cstring>
+ </property>
+ <property name="text">
+ <string>R&amp;emove Theme</string>
+ </property>
+ <property name="accel">
+ <string>Alt+E</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>applyThemeBtn</cstring>
+ </property>
+ <property name="text">
+ <string>Set The&amp;me Paths</string>
+ </property>
+ <property name="accel">
+ <string>Alt+M</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>TabPage</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;Help</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTextEdit">
+ <property name="name">
+ <cstring>textEdit1</cstring>
+ </property>
+ <property name="text">
+ <string>****** Summary ******
+deKorator is a kwin engine that takes several user-defined images and presents
+them as a window decoration. deKorator expects to find those in a theme. Here
+is a guide for building such a theme.
+
+****** In the package ******
+deKorator comes with:
+ * default-theme - Used by default, illustrates some of deKorator's
+ features.
+ * ugly-theme - It's purpose is to understand the way deKorator paints the
+ decorations.
+ * template-theme - this theme is meant to be a template theme for other themes,this theme features all possible buttons.
+ * Bushido-Yellow-theme - shows how masking can be done.
+
+****** Names ******
+deKorator expects the same directory structure and file names as the ones in
+default-theme. Every theme file should end with "-theme" (as in "default-
+theme"), and should contain all the folders that are in default-theme (deco,
+buttons, masks).
+
+****** Sizes ******
+deKorator determines the 4 borders' sizes from:
+
+|Property |Source |
+------------------------------------------------------------------------------------------------
+|the left border width |midLeftFrameBg's width |
+|the right border width |midRightFrameBg's width |
+|the top bar height |midTitleBg's height |
+|the bottom border height |midBottomFrameBg's height |
+
+All parts that build up a specific border should be in the same width or height
+correspondingly. An example follows for a window decoration with a 10px high
+top bar, a 20px wide left border, a 30px wide right border and a 40px high
+bottom border.
+
+All tiles in the top bar should be 10 pixel high:
+ * topLeftCornerBg
+ * leftButtonsBg
+ * leftTitleBg
+ * midTitleBg
+ * rightTitleBg
+ * rightButtonsBg
+ * topRightCornerBg
+
+All tiles in the left border should be 20 pixel wide:
+ * topLeftFrameBg
+ * midLeftFrameBg
+ * bottomLeftFrameBg
+
+All tiles in the right border should be 30 pixel wide:
+ * topRightFrameBg
+ * midRightFrameBg
+ * bottomRightFrameBg
+
+All tiles in the bottom border should be 40 pixel high:
+ * leftBottomFrameBg
+ * midBottomFrameBg
+ * rightBottomFrameBg
+
+The corner tiles should fit into the tile grid:
+Tile Height Width
+topLeftCornerBg 10 20
+topRightCornerBg 10 30
+leftBottomFrameBg 40 20
+rightBottomFrameBg 40 30
+
+****** Buttons ******
+The button images are separated into background and foreground ones.
+
+***** Background *****
+The button background uses the leftButtonsBg and the rightButtonsBg tiles.
+Their height should be the same as the top bar's. The background's repeated
+horizontally to fit the buttons in.
+
+***** Foreground *****
+The width is determined by the button width. This way theme makers can put the
+buttons as close as they wish. To make space between buttons you can add
+transparent pixels to the right and left. A button with a smaller height than
+the top bar's gets centered vertically. To place the button in a custom height
+use transparent pixels, too.
+
+****** Masks ******
+Masks contain only black and white. Black pixels are subtracted from the
+decoration.
+
+****** Image format ******
+All images should be in PNG.
+
+****** Tips and Tricks ******
+Allways start up building your theme from the template-theme.
+</string>
+ </property>
+ <property name="wordWrap">
+ <enum>WidgetWidth</enum>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;About</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>spacer10</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>35</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="1" column="2">
+ <property name="name">
+ <cstring>spacer9</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>34</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="0" column="1">
+ <property name="name">
+ <cstring>spacer11</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>60</height>
+ </size>
+ </property>
+ </spacer>
+ <spacer row="2" column="1">
+ <property name="name">
+ <cstring>spacer12</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>80</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KActiveLabel" row="1" column="1">
+ <property name="name">
+ <cstring>kActiveLabel4</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;p align="center"&gt;&lt;h3&gt;deKorator Window's Decoration Version 0.3&lt;/h3&gt;&lt;/p&gt;&lt;br&gt;
+
+
+
+&lt;p align="center"&gt;Art Designer: jon clarke AKA ArbitraryReason&lt;br&gt;
+Email: &lt;a href="mailto:[email protected]"&gt;&lt;font color="#ff0000"&gt;[email protected]&lt;/font&gt;&lt;/a&gt;&lt;br&gt;
+&lt;p align="center"&gt;Theme contributer: Zoran Karavla AKA the-error&lt;br&gt;
+Email: &lt;a href="mailto:[email protected]"&gt;&lt;font color="#ff0000"&gt;[email protected]&lt;/font&gt;&lt;/a&gt;&lt;br&gt;
+&lt;p align="center"&gt;Author: moty rahamim&lt;br&gt;
+Email: &lt;a href="mailto:[email protected]"&gt;&lt;font color="#ff0000"&gt;[email protected]&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </vbox>
+</widget>
+<customwidgets>
+</customwidgets>
+<connections>
+ <connection>
+ <sender>useMasks_Chkbox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>masksPathKurl</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_5</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>activeShdtextXSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_5_2</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>activeShdtextYSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_6</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>activeShdColBtn</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>buttonGroup7</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_5_4</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>inActiveShdtextXSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_5_2_3</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>inActiveShdtextYSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_6_3</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>inActiveShdColBtn</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useShdtextChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>buttonGroup7_2</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>animateEfeectsCombo</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useCusBtnClrChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>buttonGroup16</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel1_8</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>stepsSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel2_5</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>intervalSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useAnimChkBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>KeepAnimateChkBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>useMasks_Chkbox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>textLabel2_3</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kcolorbutton.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>kurlrequester.h</includehint>
+ <includehint>klineedit.h</includehint>
+ <includehint>kpushbutton.h</includehint>
+ <includehint>klistview.h</includehint>
+ <includehint>kactivelabel.h</includehint>
+</includehints>
+</UI>
diff --git a/client/config/deKoratorconfig.cc b/client/config/deKoratorconfig.cc
new file mode 100644
index 0000000..b3b686f
--- /dev/null
+++ b/client/config/deKoratorconfig.cc
@@ -0,0 +1,464 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#include <kconfig.h>
+#include <klocale.h>
+#include <kglobal.h>
+#include <qbuttongroup.h>
+#include <qgroupbox.h>
+#include <qradiobutton.h>
+#include <qwhatsthis.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qspinbox.h>
+#include <qcheckbox.h>
+#include <kcolorbutton.h>
+#include <klistview.h>
+
+#include "deKoratorconfig.h"
+#include "configdialog.h"
+#include <themes.h>
+
+#include <kurlrequester.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorConfig()
+// -------------
+// Constructor
+
+DeKoratorConfig::DeKoratorConfig( KConfig* config, QWidget* parent )
+ : QObject( parent ), config_( 0 ), dialog_( 0 )
+{
+ // create the configuration object
+ config_ = new KConfig( "kwindeKoratorrc" );
+ KGlobal::locale() ->insertCatalogue( "kwin_deKorator_config" );
+
+
+
+ // create and show the configuration dialog
+ dialog_ = new ConfigDialog( parent );
+
+ themes_ = new IconThemesConfig( dialog_, dialog_->themesKlstView /*, dialog_->removeThemBtn*/ );
+
+ dialog_->show();
+
+ // load the configuration
+ load( config_ );
+
+ // setup the connections
+
+ // misc
+ connect( dialog_->titlealign, SIGNAL( clicked( int ) ),
+ this, SLOT( selectionChanged( int ) ) );
+ connect( dialog_->useMenuImageChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->ignoreAppIcnCol, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->dblClkCloseChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->showBtmBorderChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->useShdtextChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->activeShdtextXSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->activeShdtextYSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->activeShdColBtn, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->inActiveShdtextXSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->inActiveShdtextYSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->inActiveShdColBtn, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->inActiveShdColBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->btnShiftXSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->btnShiftYSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+
+
+ // colors
+ connect( dialog_->colorizeActFramesChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->colorizeActButtonsChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->colorizeInActFramesChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->colorizeInActButtonsChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->useAnimChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->animateEfeectsCombo, SIGNAL( activated( const QString& ) ), SIGNAL( changed() ) );
+
+ connect( dialog_->stepsSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->intervalSpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->KeepAnimateChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+
+ connect( dialog_->hoverTypeCombo, SIGNAL( activated( const QString& ) ), SIGNAL( changed() ) );
+ connect( dialog_->effectsAmount_SpinBox, SIGNAL( valueChanged( int ) ), SIGNAL( changed() ) );
+ connect( dialog_->activeHighlightClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->inActiveHighlightClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->decoColorizeComboBox, SIGNAL( activated( const QString& ) ), SIGNAL( changed() ) );
+ connect( dialog_->buttonsColorizeComboBox, SIGNAL( activated( const QString& ) ), SIGNAL( changed() ) );
+ // connect( dialog_->buttonsHoverColorizeComboBox, SIGNAL( activated( const QString& ) ), SIGNAL( changed() ) );
+
+ // buttons
+ connect( dialog_->useCusBtnClrChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->cusColActBtnChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->cusColInActBtnChkBox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+
+ connect( dialog_->closeClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->minClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->maxClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->restoreClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->helpClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->menuClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->stickyClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->stickyDownClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->aboveClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->aboveDownClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->belowClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->belowDownClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->shadeClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+ connect( dialog_->shadeDownClrBtn, SIGNAL( clicked( ) ), SIGNAL( changed() ) );
+
+ // path's
+ connect( dialog_->framesPathKurl, SIGNAL( textChanged( const QString& ) ), SIGNAL( changed() ) );
+ dialog_->framesPathKurl->setMode( 2 );
+ connect( dialog_->buttonsPathKurl, SIGNAL( textChanged( const QString& ) ), SIGNAL( changed() ) );
+ dialog_->buttonsPathKurl->setMode( 2 );
+ connect( dialog_->useMasks_Chkbox, SIGNAL( clicked() ), SIGNAL( changed() ) );
+ connect( dialog_->masksPathKurl, SIGNAL( textChanged( const QString& ) ), SIGNAL( changed() ) );
+ dialog_->masksPathKurl->setMode( 2 );
+
+ // themes
+ connect( dialog_->themesKlstView, SIGNAL( selectionChanged( QListViewItem * ) ),
+ SLOT( themeSelected( QListViewItem * ) ) );
+ connect( dialog_->installthemeBtn, SIGNAL( clicked( ) ), SLOT( installNewTheme() ) );
+ connect( dialog_->removeThemBtn, SIGNAL( clicked( ) ), SLOT( removeSelectedTheme() ) );
+ connect( dialog_->applyThemeBtn, SIGNAL( clicked( ) ), SLOT( setTheme() ) );
+
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// ~DeKoratorConfig()
+// --------------
+// Destructor
+
+DeKoratorConfig::~DeKoratorConfig()
+{
+ if ( dialog_ ) delete dialog_;
+ if ( config_ ) delete config_;
+ if ( themes_ ) delete themes_;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// selectionChanged()
+// ------------------
+// Selection has changed
+
+void DeKoratorConfig::selectionChanged( int )
+{
+ emit changed();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// load()
+// ------
+// Load configuration data
+
+void DeKoratorConfig::load( KConfig* )
+{
+ // misc
+ config_->setGroup( "MISC" );
+
+ QString value = config_->readEntry( "TitleAlignment", "AlignHCenter" );
+ QRadioButton *button = ( QRadioButton* ) dialog_->titlealign->child( value );
+ if ( button ) button->setChecked( TRUE );
+ dialog_->useMenuImageChkBox->setChecked( config_->readBoolEntry( "UseMenuImage", FALSE ) );
+ dialog_->ignoreAppIcnCol->setChecked( config_->readBoolEntry( "IgnoreAppIconCol", FALSE ) );
+ dialog_->dblClkCloseChkBox->setChecked( config_->readBoolEntry( "DblClkClose", FALSE ) );
+ dialog_->showBtmBorderChkBox->setChecked( config_->readBoolEntry( "ShowBtmBorder", FALSE ) );
+ QColor color = QColor( 150, 150, 150 );
+ dialog_->useShdtextChkBox->setChecked( config_->readBoolEntry( "UseShdtext", FALSE ) );
+ dialog_->activeShdtextXSpinBox->setValue( config_->readNumEntry( "ActiveShdtextX", 0 ) );
+ dialog_->activeShdtextYSpinBox->setValue( config_->readNumEntry( "ActiveShdtextY", 0 ) );
+ dialog_->activeShdColBtn->setColor( config_->readColorEntry( "ActiveShadowColor", &color ) );
+ dialog_->inActiveShdtextXSpinBox->setValue( config_->readNumEntry( "InActiveShdtextX", 0 ) );
+ dialog_->inActiveShdtextYSpinBox->setValue( config_->readNumEntry( "InActiveShdtextY", 0 ) );
+ dialog_->inActiveShdColBtn->setColor( config_->readColorEntry( "InActiveShadowColor", &color ) );
+ dialog_->btnShiftXSpinBox->setValue( config_->readNumEntry( "BtnShiftX", 0 ) );
+ dialog_->btnShiftYSpinBox->setValue( config_->readNumEntry( "BtnShiftY", 0 ) );
+
+
+ // colors
+ config_->setGroup( "COLORS" );
+
+ dialog_->colorizeActFramesChkBox->setChecked( config_->readBoolEntry( "ColorizeActFrames", FALSE ) );
+ dialog_->colorizeActButtonsChkBox->setChecked( config_->readBoolEntry( "ColorizeActButtons", FALSE ) );
+ dialog_->colorizeInActFramesChkBox->setChecked( config_->readBoolEntry( "ColorizeInActFrames", FALSE ) );
+ dialog_->colorizeInActButtonsChkBox->setChecked( config_->readBoolEntry( "ColorizeInActButtons", FALSE ) );
+ dialog_->useAnimChkBox->setChecked( config_->readBoolEntry( "UseAnimation", FALSE ) );
+ dialog_->animateEfeectsCombo->setCurrentText( config_->readEntry( "AnimationType", "Intensity" ) );
+
+ dialog_->stepsSpinBox->setValue( config_->readNumEntry( "AnimSteps", 5 ) );
+ dialog_->intervalSpinBox->setValue( config_->readNumEntry( "AnimInterval", 30 ) );
+ dialog_->KeepAnimateChkBox->setChecked( config_->readBoolEntry( "KeepAnimating", FALSE ) );
+
+ dialog_->activeHighlightClrBtn->setColor( config_->readColorEntry( "ActiveHighlightColor", &color ) );
+ dialog_->inActiveHighlightClrBtn->setColor( config_->readColorEntry( "InActiveHighlightColor", &color ) );
+ dialog_->hoverTypeCombo->setCurrentText( config_->readEntry( "ButtonsHoverType", "To Gray" ) );
+ dialog_->effectsAmount_SpinBox->setValue( config_->readNumEntry( "EffectAmount", 5 ) );
+ dialog_->decoColorizeComboBox->setCurrentText( config_->readEntry( "DecoColorize", "Liquid Method" ) );
+ dialog_->buttonsColorizeComboBox->setCurrentText( config_->readEntry( "ButtonsColorize", "Liquid Method" ) );
+ // dialog_->buttonsHoverColorizeComboBox->setCurrentText( config_->readEntry( "ButtonsHoverColorize", "Liquid Method" ) );
+
+ // buttons
+ config_->setGroup( "BUTTONS" );
+
+ dialog_->useCusBtnClrChkBox->setChecked( config_->readBoolEntry( "UseCustomButtonsColors", FALSE ) );
+ dialog_->cusColActBtnChkBox->setChecked( config_->readBoolEntry( "customColorsActiveButtons", FALSE ) );
+ dialog_->cusColInActBtnChkBox->setChecked( config_->readBoolEntry( "customColorsInActiveButtons", FALSE ) );
+ dialog_->closeClrBtn->setColor( config_->readColorEntry( "CloseButtonColor", &color ) );
+ dialog_->minClrBtn->setColor( config_->readColorEntry( "MinButtonColor", &color ) );
+ dialog_->maxClrBtn->setColor( config_->readColorEntry( "MaxButtonColor", &color ) );
+ dialog_->restoreClrBtn->setColor( config_->readColorEntry( "RestoreButtonColor", &color ) );
+ dialog_->helpClrBtn->setColor( config_->readColorEntry( "HelpButtonColor", &color ) );
+ dialog_->menuClrBtn->setColor( config_->readColorEntry( "MenuButtonColor", &color ) );
+ dialog_->stickyClrBtn->setColor( config_->readColorEntry( "StickyButtonColor", &color ) );
+ dialog_->stickyDownClrBtn->setColor( config_->readColorEntry( "StickyDownButtonColor", &color ) );
+ dialog_->aboveClrBtn->setColor( config_->readColorEntry( "AboveButtonColor", &color ) );
+ dialog_->aboveDownClrBtn->setColor( config_->readColorEntry( "AboveDownButtonColor", &color ) );
+ dialog_->belowClrBtn->setColor( config_->readColorEntry( "BelowButtonColor", &color ) );
+ dialog_->belowDownClrBtn->setColor( config_->readColorEntry( "BelowDownButtonColor", &color ) );
+ dialog_->shadeClrBtn->setColor( config_->readColorEntry( "ShadeButtonColor", &color ) );
+ dialog_->shadeDownClrBtn->setColor( config_->readColorEntry( "ShadeDownButtonColor", &color ) );
+
+ // path's
+ config_->setGroup( "PATHS" );
+
+ dialog_->framesPathKurl->setURL( config_->readEntry( "FramesPath", "" ) );
+ dialog_->buttonsPathKurl->setURL( config_->readEntry( "ButtonsPath", "" ) );
+ dialog_->useMasks_Chkbox->setChecked( config_->readBoolEntry( "UseMasks", FALSE ) );
+ dialog_->masksPathKurl->setURL( config_->readEntry( "MasksPath", "" ) );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// save()
+// ------
+// Save configuration data
+
+void DeKoratorConfig::save( KConfig* )
+{
+ // misc
+ config_->setGroup( "MISC" );
+
+ QRadioButton *button = ( QRadioButton* ) dialog_->titlealign->selected();
+ if ( button ) config_->writeEntry( "TitleAlignment", QString( button->name() ) );
+ config_->writeEntry( "UseMenuImage", dialog_->useMenuImageChkBox->isChecked() );
+ config_->writeEntry( "IgnoreAppIconCol", dialog_->ignoreAppIcnCol->isChecked() );
+ config_->writeEntry( "DblClkClose", dialog_->dblClkCloseChkBox->isChecked() );
+ config_->writeEntry( "ShowBtmBorder", dialog_->showBtmBorderChkBox->isChecked() );
+ config_->writeEntry( "UseShdtext", dialog_->useShdtextChkBox->isChecked() );
+ config_->writeEntry( "ActiveShdtextX", dialog_->activeShdtextXSpinBox->value() );
+ config_->writeEntry( "ActiveShdtextY", dialog_->activeShdtextYSpinBox->value() );
+ config_->writeEntry( "ActiveShadowColor", dialog_->activeShdColBtn->color() );
+ config_->writeEntry( "InActiveShdtextX", dialog_->inActiveShdtextXSpinBox->value() ); config_->writeEntry( "InActiveShdtextY", dialog_->inActiveShdtextYSpinBox->value() );
+ config_->writeEntry( "InActiveShadowColor", dialog_->inActiveShdColBtn->color() );
+ config_->writeEntry( "BtnShiftX", dialog_->btnShiftXSpinBox->value() );
+ config_->writeEntry( "BtnShiftY", dialog_->btnShiftYSpinBox->value() );
+
+
+ // colors
+ config_->setGroup( "COLORS" );
+
+ config_->writeEntry( "ColorizeActFrames", dialog_->colorizeActFramesChkBox->isChecked() );
+ config_->writeEntry( "ColorizeActButtons", dialog_->colorizeActButtonsChkBox->isChecked() );
+ config_->writeEntry( "ColorizeInActFrames", dialog_->colorizeInActFramesChkBox->isChecked() );
+ config_->writeEntry( "ColorizeInActButtons", dialog_->colorizeInActButtonsChkBox->isChecked() );
+ config_->writeEntry( "UseAnimation", dialog_->useAnimChkBox->isChecked() );
+ config_->writeEntry( "AnimationType", dialog_->animateEfeectsCombo->currentText() );
+
+ config_->writeEntry( "AnimSteps", dialog_->stepsSpinBox->value() );
+ config_->writeEntry( "AnimInterval", dialog_->intervalSpinBox->value() );
+ config_->writeEntry( "KeepAnimating", dialog_->KeepAnimateChkBox->isChecked() );
+
+ config_->writeEntry( "ButtonsHoverType", dialog_->hoverTypeCombo->currentText() );
+ config_->writeEntry( "EffectAmount", dialog_->effectsAmount_SpinBox->value() );
+ config_->writeEntry( "ActiveHighlightColor", dialog_->activeHighlightClrBtn->color() );
+ config_->writeEntry( "InActiveHighlightColor", dialog_->inActiveHighlightClrBtn->color() );
+ config_->writeEntry( "DecoColorize", dialog_->decoColorizeComboBox->currentText() );
+ config_->writeEntry( "ButtonsColorize", dialog_->buttonsColorizeComboBox->currentText() );
+ // config_->writeEntry( "ButtonsHoverColorize", dialog_->buttonsHoverColorizeComboBox->currentText() );
+
+ // buttons
+ config_->setGroup( "BUTTONS" );
+
+ config_->writeEntry( "UseCustomButtonsColors", dialog_->useCusBtnClrChkBox->isChecked() );
+ config_->writeEntry( "customColorsActiveButtons", dialog_->cusColActBtnChkBox->isChecked() );
+ config_->writeEntry( "customColorsInActiveButtons", dialog_->cusColInActBtnChkBox->isChecked() );
+ config_->writeEntry( "CloseButtonColor", dialog_->closeClrBtn->color() );
+ config_->writeEntry( "MinButtonColor", dialog_->minClrBtn->color() );
+ config_->writeEntry( "MaxButtonColor", dialog_->maxClrBtn->color() );
+ config_->writeEntry( "RestoreButtonColor", dialog_->restoreClrBtn->color() );
+ config_->writeEntry( "HelpButtonColor", dialog_->helpClrBtn->color() );
+ config_->writeEntry( "MenuButtonColor", dialog_->menuClrBtn->color() );
+ config_->writeEntry( "StickyButtonColor", dialog_->stickyClrBtn->color() );
+ config_->writeEntry( "StickyDownButtonColor", dialog_->stickyDownClrBtn->color() );
+ config_->writeEntry( "AboveButtonColor", dialog_->aboveClrBtn->color() );
+ config_->writeEntry( "AboveDownButtonColor", dialog_->aboveDownClrBtn->color() );
+ config_->writeEntry( "BelowButtonColor", dialog_->belowClrBtn->color() );
+ config_->writeEntry( "BelowDownButtonColor", dialog_->belowDownClrBtn->color() );
+ config_->writeEntry( "ShadeButtonColor", dialog_->shadeClrBtn->color() );
+ config_->writeEntry( "ShadeDownButtonColor", dialog_->shadeDownClrBtn->color() );
+
+ // path's
+ config_->setGroup( "PATHS" );
+
+ config_->writeEntry( "FramesPath", dialog_->framesPathKurl->url() );
+ config_->writeEntry( "ButtonsPath", dialog_->buttonsPathKurl->url() );
+ config_->writeEntry( "UseMasks", dialog_->useMasks_Chkbox->isChecked() );
+ config_->writeEntry( "MasksPath", dialog_->masksPathKurl->url() );
+
+ config_->sync();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// defaults()
+// ----------
+// Set configuration defaults
+
+void DeKoratorConfig::defaults()
+{
+
+ // misc
+ QRadioButton * button =
+ ( QRadioButton* ) dialog_->titlealign->child( "AlignHCenter" );
+ if ( button ) button->setChecked( TRUE );
+ dialog_->useMenuImageChkBox->setChecked( FALSE );
+ dialog_->ignoreAppIcnCol->setChecked( FALSE );
+ dialog_->dblClkCloseChkBox->setChecked( FALSE );
+ dialog_->showBtmBorderChkBox->setChecked( FALSE );
+ dialog_->useShdtextChkBox->setChecked( FALSE );
+ dialog_->activeShdtextXSpinBox->setValue( 0 );
+ dialog_->activeShdtextYSpinBox->setValue( 0 );
+ dialog_->activeShdColBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->inActiveShdtextXSpinBox->setValue( 0 );
+ dialog_->inActiveShdtextYSpinBox->setValue( 0 );
+ dialog_->inActiveShdColBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->btnShiftXSpinBox->setValue( 0 );
+ dialog_->btnShiftYSpinBox->setValue( 0 );
+
+ // colors
+ dialog_->colorizeActFramesChkBox->setChecked( FALSE );
+ dialog_->colorizeActButtonsChkBox->setChecked( FALSE );
+ dialog_->colorizeInActFramesChkBox->setChecked( FALSE );
+ dialog_->colorizeInActButtonsChkBox->setChecked( FALSE );
+ dialog_->useAnimChkBox->setChecked( FALSE );
+ dialog_->animateEfeectsCombo->setCurrentText( "Intensity" );
+
+ dialog_->stepsSpinBox->setValue( 5 );
+ dialog_->intervalSpinBox->setValue( 30 );
+ dialog_->KeepAnimateChkBox->setChecked( FALSE );
+
+ dialog_->hoverTypeCombo->setCurrentText( "To Gray" );
+ dialog_->effectsAmount_SpinBox->setValue( 5 );
+ dialog_->activeHighlightClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->inActiveHighlightClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->decoColorizeComboBox->setCurrentText( "Liquid Method" );
+ dialog_->buttonsColorizeComboBox->setCurrentText( "Liquid Method" );
+ // dialog_->buttonsHoverColorizeComboBox->setCurrentText( "Liquid Method" );
+
+ // buttons
+ dialog_->useCusBtnClrChkBox->setChecked( FALSE );
+ dialog_->cusColActBtnChkBox->setChecked( FALSE );
+ dialog_->cusColInActBtnChkBox->setChecked( FALSE );
+ dialog_->closeClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->minClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->maxClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->restoreClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->helpClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->menuClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->stickyClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->stickyDownClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->aboveClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->aboveDownClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->belowClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->belowDownClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->shadeClrBtn->setColor( QColor( 150, 150, 150 ) );
+ dialog_->shadeDownClrBtn->setColor( QColor( 150, 150, 150 ) );
+
+ // path's
+ dialog_->framesPathKurl->setURL( "" );
+ dialog_->buttonsPathKurl->setURL( "" );
+ dialog_->useMasks_Chkbox->setChecked( config_->readBoolEntry( "UseMasks", FALSE ) );
+ dialog_->masksPathKurl->setURL( "" );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// themeSelected()
+// ----------
+//
+
+void DeKoratorConfig::themeSelected( QListViewItem *item )
+{
+ themes_->themeSelected( item, dialog_->previewLabael, dialog_->removeThemBtn );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// installNewTheme()
+// ----------
+//
+
+void DeKoratorConfig::installNewTheme()
+{
+ themes_->installNewTheme();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// removeSelectedTheme()
+// ----------
+//
+
+void DeKoratorConfig::removeSelectedTheme()
+{
+ themes_->removeSelectedTheme();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// setTheme()
+// ----------
+//
+
+void DeKoratorConfig::setTheme()
+{
+ themes_->setTheme( dialog_->framesPathKurl, dialog_->buttonsPathKurl, dialog_->masksPathKurl );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// Plugin Stuff //
+//////////////////////////////////////////////////////////////////////////////
+
+extern "C"
+{
+ QObject * allocate_config( KConfig * config, QWidget * parent )
+ {
+ return ( new DeKoratorConfig( config, parent ) );
+ }
+}
+
+#include "deKoratorconfig.moc"
diff --git a/client/config/deKoratorconfig.h b/client/config/deKoratorconfig.h
new file mode 100644
index 0000000..0505c98
--- /dev/null
+++ b/client/config/deKoratorconfig.h
@@ -0,0 +1,72 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#ifndef EXAMPLECONFIG_H
+#define EXAMPLECONFIG_H
+
+#include <qobject.h>
+
+
+class KConfig;
+class ConfigDialog;
+class IconThemesConfig;
+
+class DeKoratorConfig : public QObject
+{
+ Q_OBJECT
+public:
+ DeKoratorConfig( KConfig* config, QWidget* parent );
+ ~DeKoratorConfig();
+
+signals:
+ void changed();
+
+public slots:
+ void load( KConfig* );
+ void save( KConfig* );
+ void defaults();
+
+
+protected slots:
+ void themeSelected( QListViewItem *item );
+ void selectionChanged( int );
+ void installNewTheme();
+ void removeSelectedTheme();
+ void setTheme();
+private:
+ KConfig *config_;
+ IconThemesConfig *themes_;
+ ConfigDialog *dialog_;
+};
+
+#endif // EXAMPLECONFIG_H
diff --git a/client/config/themes.cpp b/client/config/themes.cpp
new file mode 100644
index 0000000..f612ad6
--- /dev/null
+++ b/client/config/themes.cpp
@@ -0,0 +1,460 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#include <config.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <qfileinfo.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+#include <kdebug.h>
+#include <kapplication.h>
+#include <kstandarddirs.h>
+#include <kservice.h>
+#include <klocale.h>
+#include <ksimpleconfig.h>
+#undef Unsorted
+#include <kipc.h>
+
+#include <klistview.h>
+#include <kurlrequesterdlg.h>
+#include <kmessagebox.h>
+#include <kprogress.h>
+#include <kiconloader.h>
+
+#include <kio/job.h>
+#include <kio/netaccess.h>
+#include <ktar.h>
+
+#ifdef HAVE_LIBART
+#include <ksvgiconengine.h>
+#endif
+
+#include <qdir.h>
+#include <qpainter.h>
+#include <qregexp.h>
+
+#include "themes.h"
+#include <kurlrequester.h>
+
+
+//////////////////////////////////////////////////////////////////////////////
+// IconThemesConfig()
+// ----------
+//
+
+IconThemesConfig::IconThemesConfig( QWidget *parent, KListView *themesView /*, QPushButton *removethemeBtn*/ )
+{
+ parent_ = parent;
+ themesView_ = themesView;
+ //removeThemeBtn_ = removethemeBtn;
+
+ loadThemes();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// ~IconThemesConfig()
+// ----------
+//
+
+IconThemesConfig::~IconThemesConfig()
+{}
+
+//////////////////////////////////////////////////////////////////////////////
+// iconThemeItem()
+// ----------
+//
+
+QListViewItem *IconThemesConfig::iconThemeItem( const QString &name )
+{
+ QListViewItem * item;
+ for ( item = themesView_->firstChild(); item ; item = item->nextSibling() )
+ if ( item->text( 0 ) == name ) return item;
+
+ return 0L;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// loadThemes()
+// ----------
+//
+
+
+void IconThemesConfig::loadThemes()
+{
+ themesView_->clear();
+ m_themeNames.clear();
+ QStringList themelist;
+ QString name;
+ QString place;
+ QStringList::Iterator it, itj;
+ QStringList themesDirs;
+
+ // if no local deKorator folders
+ if ( ! QDir( QDir::homeDirPath() + "/.kde/share/apps/" ).exists( "deKorator" ) )
+ {
+ qWarning( "no dirs, will make them..." );
+ KIO::mkdir( QDir::homeDirPath() + "/.kde/share/apps/deKorator/" );
+ KIO::mkdir( QDir::homeDirPath() + "/.kde/share/apps/deKorator/themes/" );
+ }
+ else
+ {
+ qWarning( "exist" );
+ }
+
+ themesDirs = KGlobal::dirs() ->findDirs( "data", "deKorator/themes" ) ;
+
+ for ( it = themesDirs.begin(); it != themesDirs.end(); ++it )
+ {
+ QDir dir = QDir( *it );
+ themelist = dir.entryList( "*-theme" );
+
+ for ( itj = themelist.begin(); itj != themelist.end(); ++itj )
+ {
+ place = *it;
+
+ name = ( QString ) * itj;
+
+ themesView_->insertItem( new QListViewItem( themesView_, name ) );
+
+ m_themeNames.insert( name, place );
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// installNewTheme()
+// ----------
+//
+
+void IconThemesConfig::installNewTheme()
+{
+
+ KURL themeURL = KURLRequesterDlg::getURL( QString::null, parent_,
+ i18n( "Drag or Type Theme URL" ) );
+ kdDebug() << themeURL.prettyURL() << endl;
+
+ if ( themeURL.url().isEmpty() )
+ return ;
+
+ // themeTmpFile contains the name of the downloaded file
+ QString themeTmpFile;
+
+ if ( !KIO::NetAccess::download( themeURL, themeTmpFile, parent_ ) )
+ {
+ QString sorryText;
+ if ( themeURL.isLocalFile() )
+ sorryText = i18n( "Unable to find the deKorator theme archive %1." );
+ else
+ sorryText = i18n( "Unable to download deKorator theme archive;\n"
+ "please check that address %1 is correct." );
+ KMessageBox::sorry( parent_, sorryText.arg( themeURL.prettyURL() ) );
+ return ;
+ }
+
+ //
+ QStringList themesNames = findThemeDirs( themeTmpFile );
+ if ( themesNames.isEmpty() )
+ {
+ QString invalidArch( i18n( "The file is not a valid deKorator theme archive." ) );
+ KMessageBox::error( parent_, invalidArch );
+
+ KIO::NetAccess::removeTempFile( themeTmpFile );
+ return ;
+ }
+
+ if ( !installThemes( themesNames, themeTmpFile ) )
+ {
+ //FIXME: make me able to know what is wrong....
+ // QStringList instead of bool?
+ QString somethingWrong =
+ i18n( "A problem occurred during the installation process; "
+ "however, most of the themes in the archive have been installed" );
+ KMessageBox::error( parent_, somethingWrong );
+ }
+
+ KIO::NetAccess::removeTempFile( themeTmpFile );
+
+ loadThemes();
+
+ QStringList::Iterator cur = themesNames.at( 0 );
+
+ QListViewItem *item = iconThemeItem( *cur );
+ themesView_->setSelected( item, true );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// installThemes()
+// ----------
+//
+
+bool IconThemesConfig::installThemes( const QStringList &themes, const QString &archiveName )
+{
+ bool everythingOk = true;
+ QString localThemesDir = QDir::homeDirPath() + "/.kde/share/apps/deKorator/themes/";
+ //
+ KProgressDialog progressDiag( parent_, "themeinstallprogress",
+ i18n( "Installing icon themes" ),
+ QString::null,
+ true );
+ progressDiag.setAutoClose( true );
+ progressDiag.progressBar() ->setTotalSteps( themes.count() );
+ progressDiag.show();
+
+ KTar archive( archiveName );
+ archive.open( IO_ReadOnly );
+ kapp->processEvents();
+
+ const KArchiveDirectory* rootDir = archive.directory();
+
+ KArchiveDirectory* currentTheme;
+ for ( QStringList::ConstIterator it = themes.begin(); it != themes.end(); ++it )
+ {
+ progressDiag.setLabel(
+ i18n( "<qt>Installing <strong>%1</strong> theme</qt>" )
+ .arg( *it ) );
+ kapp->processEvents();
+
+ if ( progressDiag.wasCancelled() )
+ break;
+
+ currentTheme = dynamic_cast<KArchiveDirectory*>(
+ const_cast<KArchiveEntry*>(
+ rootDir->entry( *it ) ) );
+ if ( currentTheme == NULL )
+ {
+ // we tell back that something went wrong, but try to install as much
+ // as possible
+ everythingOk = false;
+ continue;
+ }
+
+ currentTheme->copyTo( localThemesDir + *it );
+ progressDiag.progressBar() ->advance( 1 );
+ }
+
+ archive.close();
+ return everythingOk;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// findThemeDirs()
+// ----------
+//
+
+QStringList IconThemesConfig::findThemeDirs( const QString &archiveName )
+{
+ QStringList foundThemes;
+
+ KTar archive( archiveName );
+ archive.open( IO_ReadOnly );
+ const KArchiveDirectory* themeDir = archive.directory();
+
+ KArchiveEntry* possibleDir = 0L;
+ KArchiveDirectory* subDir = 0L;
+
+ // iterate all the dirs looking for an index.theme or index.desktop file
+ QStringList entries = themeDir->entries();
+ for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it )
+ {
+ QString name = ( QString ) * it;
+ QRegExp rxp = QRegExp( "*-theme", TRUE, TRUE );
+ int i = name.contains( rxp );
+ if ( !i )
+ {
+ continue;
+ }
+
+ possibleDir = const_cast<KArchiveEntry*>( themeDir->entry( *it ) );
+ if ( possibleDir->isDirectory() )
+ {
+ subDir = dynamic_cast<KArchiveDirectory*>( possibleDir );
+ if ( subDir && ( subDir->entry( "deco" ) != NULL && subDir->entry( "buttons" ) != NULL && subDir->entry( "masks" ) != NULL ) )
+ {
+ foundThemes.append( subDir->name() );
+ //qWarning( "found" );
+ }
+ }
+ }
+
+ archive.close();
+
+ return foundThemes;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// removeSelectedTheme()
+// ----------
+//
+
+void IconThemesConfig::removeSelectedTheme()
+{
+ QListViewItem * selected = themesView_->selectedItem();
+ if ( !selected )
+ return ;
+
+ QString question = i18n( "<qt>Are you sure you want to remove the "
+ "<strong>%1</strong> theme?<br>"
+ "<br>"
+ "This will delete the files installed by this theme.</qt>" ).
+ arg( selected->text( 0 ) );
+
+ int r = KMessageBox::warningContinueCancel( parent_, question, i18n( "Confirmation" ), KStdGuiItem::del() );
+ if ( r != KMessageBox::Continue ) return ;
+
+ QString delTheme = selected->text( 0 );
+ QString deldirStr = QDir::homeDirPath() + "/.kde/share/apps/deKorator/themes/" + delTheme;
+ QDir dir = QDir( deldirStr );
+ dir.rename( deldirStr, deldirStr + "del" );
+
+ KIO::del( KURL( deldirStr + "del" ) );
+
+ loadThemes();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// themeSelected()
+// ----------
+//
+
+void IconThemesConfig::themeSelected( QListViewItem *item, QLabel *previewLabel, QPushButton *btn )
+{
+ QPixmap previewPix, topLeftCornerBg, leftButtonsBg, leftTitleBg, midTitleBg, rightTitleBg, rightButtonsBg, topRightCornerBg;
+ QPainter painter;
+ int w, h, x;
+ QString dirName( m_themeNames[ item->text( 0 ) ] );
+
+ if ( dirName.contains( "home" ) )
+ {
+ //qWarning("true");
+ btn->setEnabled( true );
+ }
+ else
+ {
+ btn->setEnabled( false );
+ //qWarning("false");
+ }
+
+ QString dirNameStr = dirName + item->text( 0 ) + "/deco/" ;
+ topLeftCornerBg.load( dirNameStr + "topLeftCornerBg.png" );
+ leftButtonsBg.load( dirNameStr + "leftButtonsBg" );
+ leftTitleBg.load( dirNameStr + "leftTitleBg.png" );
+ midTitleBg.load( dirNameStr + "midTitleBg.png" );
+ rightTitleBg.load( dirNameStr + "rightTitleBg.png" );
+ rightButtonsBg.load( dirNameStr + "rightButtonsBg.png" );
+ topRightCornerBg.load( dirNameStr + "topRightCornerBg.png" );
+
+ w = topLeftCornerBg.width() + leftButtonsBg.width() + leftTitleBg.width() + midTitleBg.width() + rightTitleBg.width() + rightButtonsBg.width() + topRightCornerBg.width() + 8;
+ h = midTitleBg.height() + 8;
+ previewPix.resize( w, h );
+ //qWarning("%d",w);
+ painter.begin( &previewPix );
+
+ // paint outer rect
+ painter.fillRect( 0, 0, w, h, QColor( 20, 20, 20 ) );
+
+ painter.setPen( QColor( 60, 60, 60 ) );
+ painter.drawRect( 0, 0, w , h );
+
+ painter.setPen( QColor( 80, 80, 80 ) );
+ painter.drawRect( 1, 1, w - 2 , h - 2 );
+
+ painter.setPen( QColor( 180, 180, 180 ) );
+ painter.drawLine( w - 1, 1, w - 1, h - 1 );
+ painter.drawLine( 1, h - 1, w - 2, h - 1 );
+
+ painter.setPen( QColor( 150, 150, 150 ) );
+ painter.drawLine( w - 2, 2, w - 2, h - 2 );
+ painter.drawLine( 2, h - 2, w - 3, h - 2 );
+
+
+ // paint deco tiles
+ x = 4;
+ painter.drawPixmap( x, 4, topLeftCornerBg );
+
+ x += topLeftCornerBg.width();
+ painter.drawPixmap( x, 4, leftButtonsBg );
+
+ x += leftButtonsBg.width();
+ painter.drawPixmap( x , 4, leftTitleBg );
+
+ x += leftTitleBg.width();
+ painter.drawPixmap( x, 4, midTitleBg );
+
+ x += midTitleBg.width();
+ painter.drawPixmap( x, 4, rightTitleBg );
+
+ x += rightTitleBg.width();
+ painter.drawPixmap( x, 4, rightButtonsBg );
+
+ x += rightButtonsBg.width();
+ painter.drawPixmap( x, 4, topRightCornerBg );
+
+ painter.setPen( QColor( 0, 0, 0 ) );
+ painter.drawLine( 4, h - 5, w - 4 , h - 5 );
+
+ painter.end();
+
+ previewLabel->resize( w, h );
+ previewLabel->setPixmap( previewPix );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// setTheme()
+// ----------
+//
+
+void IconThemesConfig::setTheme( KURLRequester *framesPath, KURLRequester *buttonsPath, KURLRequester *masksPath )
+{
+ QListViewItem * selected = themesView_->selectedItem();
+ if ( !selected )
+ return ;
+
+ QString dirName( m_themeNames[ selected->text( 0 ) ] );
+
+ QString setTheme = selected->text( 0 );
+ QString setThemeStr = dirName + setTheme;
+
+ framesPath->setURL( setThemeStr + "/deco" );
+ buttonsPath->setURL( setThemeStr + "/buttons" );
+ masksPath->setURL( setThemeStr + "/masks" );
+}
+
+
+
+
+#include "themes.moc"
diff --git a/client/config/themes.h b/client/config/themes.h
new file mode 100644
index 0000000..feb2cf5
--- /dev/null
+++ b/client/config/themes.h
@@ -0,0 +1,74 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#ifndef ICONTHEMES_H
+#define ICONTHEMES_H
+
+#include <kcmodule.h>
+#include <qmap.h>
+#include <klistview.h>
+
+class QPushButton;
+class DeviceManager;
+class QCheckBox;
+class QStringList;
+
+
+
+class IconThemesConfig : public QObject
+{
+ Q_OBJECT
+
+public:
+ IconThemesConfig( QWidget *parent, KListView *themesView/*, QPushButton *removethemeBtn*/ );
+ virtual ~IconThemesConfig();
+
+ void loadThemes();
+ bool installThemes( const QStringList &themes, const QString &archiveName );
+ QStringList findThemeDirs( const QString &archiveName );
+ void themeSelected( QListViewItem *item, QLabel *preview, QPushButton *btn );
+ void installNewTheme();
+ void removeSelectedTheme();
+ void setTheme( KURLRequester *framesPath, KURLRequester *buttonsPath, KURLRequester *masksPath );
+
+private:
+ QListViewItem *iconThemeItem( const QString &name );
+ KListView *themesView_;
+ QWidget *parent_;
+ //QPushButton *removeThemeBtn_;
+ QListViewItem *m_defaultTheme;
+ QMap <QString, QString>m_themeNames;
+};
+
+#endif // ICONTHEMES_H
+
diff --git a/client/config/themes.moc.cc b/client/config/themes.moc.cc
new file mode 100644
index 0000000..111855b
--- /dev/null
+++ b/client/config/themes.moc.cc
@@ -0,0 +1,110 @@
+/****************************************************************************
+** IconThemesConfig meta object code from reading C++ file 'themes.h'
+**
+** Created: Wed Dec 7 20:20:14 2005
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.5 edited Sep 2 14:41 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "themes.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.5. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *IconThemesConfig::className() const
+{
+ return "IconThemesConfig";
+}
+
+QMetaObject *IconThemesConfig::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_IconThemesConfig( "IconThemesConfig", &IconThemesConfig::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString IconThemesConfig::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "IconThemesConfig", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString IconThemesConfig::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "IconThemesConfig", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* IconThemesConfig::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KCModule::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { "item", &static_QUType_ptr, "QListViewItem", QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"themeSelected", 1, param_slot_0 };
+ static const QUMethod slot_1 = {"installNewTheme", 0, 0 };
+ static const QUMethod slot_2 = {"removeSelectedTheme", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "themeSelected(QListViewItem*)", &slot_0, QMetaData::Protected },
+ { "installNewTheme()", &slot_1, QMetaData::Protected },
+ { "removeSelectedTheme()", &slot_2, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "IconThemesConfig", parentObject,
+ slot_tbl, 3,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_IconThemesConfig.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* IconThemesConfig::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "IconThemesConfig" ) )
+ return this;
+ return KCModule::qt_cast( clname );
+}
+
+bool IconThemesConfig::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: themeSelected((QListViewItem*)static_QUType_ptr.get(_o+1)); break;
+ case 1: installNewTheme(); break;
+ case 2: removeSelectedTheme(); break;
+ default:
+ return KCModule::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool IconThemesConfig::qt_emit( int _id, QUObject* _o )
+{
+ return KCModule::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool IconThemesConfig::qt_property( int id, int f, QVariant* v)
+{
+ return KCModule::qt_property( id, f, v);
+}
+
+bool IconThemesConfig::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES
diff --git a/client/config/themes.moc.loT b/client/config/themes.moc.loT
new file mode 100644
index 0000000..f7771d1
--- /dev/null
+++ b/client/config/themes.moc.loT
@@ -0,0 +1,7 @@
+# themes.moc.lo - a libtool object file
+# Generated by ltmain.sh - GNU libtool 1.5a (1.1240 2003/06/26 06:55:19)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
diff --git a/client/deKorator.desktop b/client/deKorator.desktop
new file mode 100644
index 0000000..62e2b0c
--- /dev/null
+++ b/client/deKorator.desktop
@@ -0,0 +1,5 @@
+# KDE Desktop Entry
+[Desktop Entry]
+Encoding=UTF-8
+Name=DeKorator
+X-KDE-Library=kwin3_deKorator
diff --git a/client/deKoratorclient.cc b/client/deKoratorclient.cc
new file mode 100644
index 0000000..4374b71
--- /dev/null
+++ b/client/deKoratorclient.cc
@@ -0,0 +1,2831 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#include "deKoratorclient.h"
+
+#include <qsettings.h>
+
+using namespace DeKorator;
+
+// global constants
+
+static int MARGIN = 4;
+//static int GRUBMARGIN = 5;
+
+static QColor STYLEBGCOL;
+
+// frames
+static int TITLESIZE = 0;
+static int LEFTFRAMESIZE = 0;
+static int BUTTOMFRAMESIZE = 0;
+static int RIGHTFRAMESIZE = 0;
+
+// deco
+static int TOPLEFTCORNERWIDTH;
+static int TOPRIGHTCORNERWIDTH;
+static int LEFTTITLEWIDTH;
+static int RIGHTTITLEWIDTH;
+static int TOPLEFTFRAMEHEIGHT;
+static int BOTTOMLEFTFRAMEHEIGHT;
+static int TOPRIGHTFRAMEHEIGHT;
+static int BOTTOMRIGHTFRAMEHEIGHT;
+static int LEFTBOTTOMFRAMEWIDTH;
+static int RIGHTBOTTOMFRAMEWIDTH;
+
+// buttons
+//static const int DECOSIZE = 24;
+
+static int BUTTONSHEIGHT = 0;
+
+static int BTNHELPEWIDTH = 0;
+static int BTNMAXWIDTH = 0;
+static int BTNCLOSEWIDTH = 0;
+static int BTNMINWIDTH = 0;
+static int BTNSTICKYWIDTH = 0;
+static int BTNABOVEWIDTH = 0;
+static int BTNBELOWWIDTH = 0;
+static int BTNSHADEWIDTH = 0;
+static int BTNMENUWIDTH = 0;
+
+static int BTNHELPEHEIGHT = 0;
+static int BTNMAXHEIGHT = 0;
+static int BTNCLOSEHEIGHT = 0;
+static int BTNMINHEIGHT = 0;
+static int BTNSTICKYHEIGHT = 0;
+static int BTNABOVEHEIGHT = 0;
+static int BTNBELOWHEIGHT = 0;
+static int BTNSHADEHEIGHT = 0;
+static int BTNMENUHEIGHT = 0;
+
+// masks
+static int TOPLEFTMASKWIDTH = 0;
+static int TOPMIDMASKWIDTH = 0;
+static int TOPRIGHTMASKWIDTH = 0;
+static int BOTTOMLEFTMASKWIDTH = 0;
+static int BOTTOMMIDMASKWIDTH = 0;
+static int BOTTOMRIGHTMASKWIDTH = 0;
+
+static int BOTTOMLEFTMASKHEIGHT = 0;
+static int BOTTOMMIDMASKHEIGHT = 0;
+static int BOTTOMRIGHTMASKHEIGHT = 0;
+
+// config
+// misc
+static Qt::AlignmentFlags TITLEALIGN = Qt::AlignHCenter;
+static bool USEMENUEIMAGE = FALSE;
+static bool IGNOREAPPICNCOL = FALSE;
+static bool DBLCLKCLOSE = FALSE;
+static bool SHOWBTMBORDER = FALSE;
+static bool USESHDTEXT = FALSE;
+static int ACTIVESHDTEXTX = FALSE;
+static int ACTIVESHDTEXTY = FALSE;
+static QColor ACTIVESHADECOLOR = QColor( 150, 150, 150 );
+static int INACTIVESHDTEXTX = FALSE;
+static int INACTIVESHDTEXTY = FALSE;
+static QColor INACTIVESHADECOLOR = QColor( 150, 150, 150 );
+static int BTNSHIFTX = 0;
+static int BTNSHIFTY = 0;
+
+
+// colors
+
+static bool USEANIMATION = TRUE;
+static QString ANIMATIONTYPE = "Intensity";
+
+static int STEPS = 5;
+static int INTERVAL = 5;
+static int KEEPANIMATING = FALSE;
+
+static QString BUTTONHOVERTYPE = "To Gray";
+static float EFFECTAMOUNT = 5;
+static QColor ACTIVEHIGHLIGHTCOLOR = QColor( 150, 150, 150 );
+static QColor INACTIVEHIGHLIGHTCOLOR = QColor( 150, 150, 150 );
+static QString DECOCOLORIZE = "Liquid Method";
+static QString BUTTONSCOLORIZE = "Liquid Method";
+//static QString BUTTONSHOVERCOLORIZE = "Liquid Method";
+static const uint TIMERINTERVAL = 30; // msec
+static const uint ANIMATIONSTEPS = 100;
+
+//
+
+// paths
+static bool USEMASKS = FALSE;
+
+// pix arrays
+static QPixmap *DECOARR[ decoCount ][ pixTypeCount ];
+static QPixmap *DECOPIXACTARR[ decoCount ];
+static QPixmap *DECOPIXINACTARR[ decoCount ];
+
+static QPixmap *BUTTONSARR[ buttonTypeAllCount ][ buttonStateCount ][ pixTypeCount ];
+static QPixmap *BUTTONPIXACTARR[ buttonTypeAllCount ][ buttonStateCount ];
+static QPixmap *BUTTONPIXINACTARR[ buttonTypeAllCount ][ buttonStateCount ];
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorFactory Class //
+//////////////////////////////////////////////////////////////////////////////
+
+bool DeKoratorFactory::initialized_ = FALSE;
+bool DeKoratorFactory::colorizeActFrames_ = FALSE;
+bool DeKoratorFactory::colorizeActButtons_ = FALSE;
+bool DeKoratorFactory::colorizeInActFrames_ = FALSE;
+bool DeKoratorFactory::colorizeInActButtons_ = FALSE;
+
+bool DeKoratorFactory::useCustomButtonsColors_ = FALSE;
+bool DeKoratorFactory::customColorsActiveButtons_ = FALSE;
+bool DeKoratorFactory::customColorsInActiveButtons_ = FALSE;
+QColor DeKoratorFactory::cusBtnCol_[ buttonTypeAllCount ];
+
+bool DeKoratorFactory::needInit_ = FALSE;
+bool DeKoratorFactory::needReload_ = FALSE;
+QString DeKoratorFactory::framesPath_ = "";
+QString DeKoratorFactory::buttonsPath_ = "";
+QString DeKoratorFactory::masksPath_ = "";
+
+
+extern "C" KDecorationFactory* create_factory()
+{
+ return new DeKorator::DeKoratorFactory();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorFactory()
+// ----------------
+// Constructor
+DeKoratorFactory::DeKoratorFactory()
+{
+ readConfig();
+ initialized_ = TRUE;
+
+ initPixmaps();
+
+ loadPixmaps();
+
+ bool isActive = false;
+ if ( colorizeInActFrames_ )
+ colorizeDecoPixmaps( isActive );
+ if ( colorizeInActButtons_ )
+ colorizeButtonsPixmaps( isActive );
+
+ isActive = true;
+ if ( colorizeActFrames_ )
+ colorizeDecoPixmaps( isActive );
+ if ( colorizeActButtons_ )
+ colorizeButtonsPixmaps( isActive );
+
+ prepareDecoWithBgCol();
+
+ chooseRightPixmaps();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// ~DeKoratorFactory()
+// -----------------
+// Destructor
+DeKoratorFactory::~DeKoratorFactory()
+{
+ initialized_ = FALSE;
+ int i, j, k;
+
+ for ( i = 0; i < decoCount; i++ )
+ {
+ for ( j = 0; j < pixTypeCount; j++ )
+ {
+ if ( DECOARR[ i ][ j ] )
+ delete DECOARR[ i ][ j ];
+ }
+ }
+
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ for ( k = 0; k < pixTypeCount; k++ )
+ {
+ if ( BUTTONSARR[ i ][ j ][ k ] )
+ delete BUTTONSARR[ i ][ j ][ k ];
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// createDecoration()
+// -----------------
+// Create the decoration
+KDecoration* DeKoratorFactory::createDecoration( KDecorationBridge* b )
+{
+ return new DeKoratorClient( b, this );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// reset()
+// -------
+// Reset the handler. Returns TRUE if decorations need to be remade, FALSE if
+// only a repaint is necessary
+bool DeKoratorFactory::reset( unsigned long changed )
+{
+ // captionBufferDirty_ = true;
+ // read in the configuration
+ initialized_ = FALSE;
+ bool confchange = readConfig();
+ initialized_ = TRUE;
+
+
+ if ( confchange || ( changed & ( SettingDecoration | SettingButtons | SettingBorder | SettingColors ) ) )
+ {
+ //qWarning( "aaaaaaaaaaaaa" );
+ if ( DeKoratorFactory::needReload_ )
+ {
+ loadPixmaps();
+
+ // bool isActive = false;
+ // if ( colorizeInActFrames_ )
+ // colorizeDecoPixmaps( isActive );
+ // if ( colorizeInActButtons_ )
+ // colorizeButtonsPixmaps( isActive );
+ //
+ // isActive = true;
+ // if ( colorizeActFrames_ )
+ // colorizeDecoPixmaps( isActive );
+ // if ( colorizeActButtons_ )
+ // colorizeButtonsPixmaps( isActive );
+ //
+ // prepareDecoWithBgCol();
+ //
+ // chooseRightPixmaps();
+ //
+ // return TRUE;
+ }
+
+ //if ( DeKoratorFactory::needInit_ )
+ {
+ bool isActive = false;
+ if ( colorizeInActFrames_ )
+ colorizeDecoPixmaps( isActive );
+ if ( colorizeInActButtons_ )
+ colorizeButtonsPixmaps( isActive );
+
+ isActive = true;
+ if ( colorizeActFrames_ )
+ colorizeDecoPixmaps( isActive );
+ if ( colorizeActButtons_ )
+ colorizeButtonsPixmaps( isActive );
+
+ prepareDecoWithBgCol();
+
+ chooseRightPixmaps();
+
+ //return TRUE;
+ }
+ return TRUE;
+ }
+ else
+ {
+ resetDecorations( changed );
+ return FALSE;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// readConfig()
+// ------------
+// Read in the configuration file
+bool DeKoratorFactory::readConfig()
+{
+ // create a config object
+ KConfig config( "kwindeKoratorrc" );
+ QColor col = QColor( 150, 150, 150 );
+
+ // grab settings
+
+ // misc settings
+ config.setGroup( "MISC" );
+
+ Qt::AlignmentFlags oldalign = TITLEALIGN;
+ QString value = config.readEntry( "TitleAlignment", "AlignHCenter" );
+ if ( value == "AlignLeft" )
+ TITLEALIGN = Qt::AlignLeft;
+ else if ( value == "AlignHCenter" )
+ TITLEALIGN = Qt::AlignHCenter;
+ else if ( value == "AlignRight" )
+ TITLEALIGN = Qt::AlignRight;
+
+ bool oldUseMenuImage = USEMENUEIMAGE;
+ USEMENUEIMAGE = config.readBoolEntry( "UseMenuImage", "false" );
+
+ bool oldIgnoreAppIcnCol = IGNOREAPPICNCOL;
+ IGNOREAPPICNCOL = config.readBoolEntry( "IgnoreAppIconCol", "false" );
+
+// bool oldDblClkClose = DBLCLKCLOSE;
+ DBLCLKCLOSE = config.readBoolEntry( "DblClkClose", "false" );
+
+ bool oldShowBtmBorder = SHOWBTMBORDER;
+ SHOWBTMBORDER = config.readBoolEntry( "ShowBtmBorder", "false" );
+
+ bool oldUseShdtext = USESHDTEXT;
+ USESHDTEXT = config.readBoolEntry( "UseShdtext", "false" );
+
+ int oldActiveShdtextX = ACTIVESHDTEXTX;
+ ACTIVESHDTEXTX = config.readNumEntry( "ActiveShdtextX", 0 );
+
+ int oldActiveShdtextY = ACTIVESHDTEXTY;
+ ACTIVESHDTEXTY = config.readNumEntry( "ActiveShdtextY", 0 );
+
+ QColor oldActiveShadeColor = ACTIVESHADECOLOR;
+ ACTIVESHADECOLOR = config.readColorEntry( "ActiveShadowColor", &col );
+
+ int oldInActiveShdtextX = INACTIVESHDTEXTX;
+ INACTIVESHDTEXTX = config.readNumEntry( "InActiveShdtextX", 0 );
+
+ int oldInActiveShdtextY = INACTIVESHDTEXTY;
+ INACTIVESHDTEXTY = config.readNumEntry( "InActiveShdtextY", 0 );
+
+ QColor oldInActiveShadeColor = INACTIVESHADECOLOR;
+ INACTIVESHADECOLOR = config.readColorEntry( "InActiveShadowColor", &col );
+
+
+ //int oldBtnShiftX = BTNSHIFTX;
+ BTNSHIFTX = config.readNumEntry( "BtnShiftX", 0 );
+
+ //int oldBtnShiftY = BTNSHIFTY;
+ BTNSHIFTY = config.readNumEntry( "BtnShiftY", 0 );
+
+
+ // color's settings
+ config.setGroup( "COLORS" );
+
+ bool oldColorizeActFrames = DeKoratorFactory::colorizeActFrames_;
+ DeKoratorFactory::colorizeActFrames_ = config.readBoolEntry( "ColorizeActFrames", "false" );
+
+ bool oldColorizeActButtons = DeKoratorFactory::colorizeActButtons_;
+ DeKoratorFactory::colorizeActButtons_ = config.readBoolEntry( "ColorizeActButtons", "false" );
+
+ bool oldColorizeInActFrames = DeKoratorFactory::colorizeInActFrames_;
+ DeKoratorFactory::colorizeInActFrames_ = config.readBoolEntry( "ColorizeInActFrames", "false" );
+
+ bool oldColorizeInActButtons = DeKoratorFactory::colorizeInActButtons_;
+ DeKoratorFactory::colorizeInActButtons_ = config.readBoolEntry( "ColorizeInActButtons", "false" );
+
+ USEANIMATION = config.readBoolEntry( "UseAnimation", "false" );
+
+ ANIMATIONTYPE = config.readEntry( "AnimationType", "Liquid Method" );
+
+ STEPS = config.readNumEntry( "AnimSteps", 5 );
+ INTERVAL = config.readNumEntry( "AnimInterval", 30 );
+ KEEPANIMATING = config.readBoolEntry( "KeepAnimating", "false" );
+
+ BUTTONHOVERTYPE = config.readEntry( "ButtonsHoverType", "To Gray" );
+
+ EFFECTAMOUNT = ( ( float ) config.readNumEntry( "EffectAmount", 5 ) / 10 );
+
+ ACTIVEHIGHLIGHTCOLOR = config.readColorEntry( "ActiveHighlightColor", &col );
+
+ INACTIVEHIGHLIGHTCOLOR = config.readColorEntry( "InActiveHighlightColor", &col );
+
+ QString oldDecoColorize = DECOCOLORIZE;
+ DECOCOLORIZE = config.readEntry( "DecoColorize", "Liquid Method" );
+
+ QString oldButtonsColorize = BUTTONSCOLORIZE;
+ BUTTONSCOLORIZE = config.readEntry( "ButtonsColorize", "Liquid Method" );
+ /*
+ QString oldButtonsHoverColorize = BUTTONSHOVERCOLORIZE;
+ BUTTONSHOVERCOLORIZE = config.readEntry( "ButtonsHoverColorize", "Liquid Method" );*/
+
+ // buttons settings
+ config.setGroup( "BUTTONS" );
+
+ bool oldUseCustomButtonsColors = DeKoratorFactory::useCustomButtonsColors_;
+ DeKoratorFactory::useCustomButtonsColors_ = config.readBoolEntry( "UseCustomButtonsColors", "false" );
+
+ bool oldCustomColorsActiveButtons = DeKoratorFactory::customColorsActiveButtons_;
+ DeKoratorFactory::customColorsActiveButtons_ = config.readBoolEntry( "customColorsActiveButtons", "false" );
+
+ bool oldCustomColorsInActiveButtons = DeKoratorFactory::customColorsInActiveButtons_;
+ DeKoratorFactory::customColorsInActiveButtons_ = config.readBoolEntry( "customColorsInActiveButtons", "false" );
+
+ // load buttons colors
+ QColor colArr[ buttonTypeAllCount ];
+ for ( int i = 0 ; i < buttonTypeAllCount ; i++ )
+ {
+ colArr[ i ] = DeKoratorFactory::cusBtnCol_[ i ];
+ }
+ DeKoratorFactory::cusBtnCol_[ restore ] = config.readColorEntry( "RestoreButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ help ] = config.readColorEntry( "HelpButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ max ] = config.readColorEntry( "MaxButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ min ] = config.readColorEntry( "MinButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ close ] = config.readColorEntry( "CloseButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ sticky ] = config.readColorEntry( "StickyButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ stickydown ] = config.readColorEntry( "StickyDownButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ above ] = config.readColorEntry( "AboveButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ abovedown ] = config.readColorEntry( "AboveDownButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ below ] = config.readColorEntry( "BelowButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ belowdown ] = config.readColorEntry( "BelowDownButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ shade ] = config.readColorEntry( "ShadeButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ shadedown ] = config.readColorEntry( "ShadeDownButtonColor", &col );
+ DeKoratorFactory::cusBtnCol_[ menu ] = config.readColorEntry( "MenuButtonColor", &col );
+
+ bool cusColChanged = false;
+ for ( int i = 0 ; i < buttonTypeAllCount ; i++ )
+ {
+ if ( colArr[ i ] != DeKoratorFactory::cusBtnCol_[ i ] )
+ {
+ cusColChanged = true;
+ i = buttonTypeAllCount;
+ qWarning( "true" );
+ }
+
+ }
+
+ // path's settings
+ config.setGroup( "PATHS" );
+
+ QString oldFramesPath = DeKoratorFactory::framesPath_;
+ DeKoratorFactory::framesPath_ = config.readEntry( "FramesPath", "" );
+
+ QString oldButtonsPath = DeKoratorFactory::buttonsPath_;
+ DeKoratorFactory::buttonsPath_ = config.readEntry( "ButtonsPath", "" );
+
+ bool oldUseMasks = USEMASKS;
+ USEMASKS = config.readBoolEntry( "UseMasks", "false" );
+
+ QString oldMasksPath = DeKoratorFactory::masksPath_;
+ DeKoratorFactory::masksPath_ = config.readEntry( "MasksPath", "" );
+
+
+ //style backgrond
+ QColor oldStyleBgCol = STYLEBGCOL;
+
+ QString colStr = QSettings().readEntry( "/Qt/Palette/active", "aaaa" );
+ colStr = colStr.section( "#", 3, 3 ) ;
+ colStr.insert( 0, '#' );
+ colStr.truncate( 7 );
+
+ QColor c;
+ c.setNamedColor( colStr );
+ STYLEBGCOL = c;
+
+
+
+ if ( oldalign == TITLEALIGN &&
+ oldUseMenuImage == USEMENUEIMAGE &&
+ oldIgnoreAppIcnCol == IGNOREAPPICNCOL &&
+ oldShowBtmBorder == SHOWBTMBORDER &&
+ oldUseShdtext == USESHDTEXT &&
+ oldActiveShdtextX == ACTIVESHDTEXTX &&
+ oldActiveShdtextY == ACTIVESHDTEXTY &&
+ oldActiveShadeColor == ACTIVESHADECOLOR &&
+ oldInActiveShdtextX == INACTIVESHDTEXTX &&
+ oldInActiveShdtextY == INACTIVESHDTEXTY &&
+ oldInActiveShadeColor == INACTIVESHADECOLOR &&
+ oldColorizeActFrames == DeKoratorFactory::colorizeActFrames_ &&
+ oldColorizeActButtons == DeKoratorFactory::colorizeActButtons_ &&
+ oldColorizeInActFrames == DeKoratorFactory::colorizeInActFrames_ &&
+ oldColorizeInActButtons == DeKoratorFactory::colorizeInActButtons_ &&
+ oldDecoColorize == DECOCOLORIZE &&
+ oldButtonsColorize == BUTTONSCOLORIZE &&
+ oldUseCustomButtonsColors == DeKoratorFactory::useCustomButtonsColors_ &&
+ oldCustomColorsActiveButtons == DeKoratorFactory::customColorsActiveButtons_ &&
+ oldCustomColorsInActiveButtons == DeKoratorFactory::customColorsInActiveButtons_ &&
+ cusColChanged == false &&
+ oldFramesPath == DeKoratorFactory::framesPath_ &&
+ oldButtonsPath == DeKoratorFactory::buttonsPath_ &&
+ oldMasksPath == DeKoratorFactory::masksPath_ &&
+ oldUseMasks == USEMASKS &&
+ oldStyleBgCol == STYLEBGCOL
+ )
+ return FALSE;
+ else
+ {
+ // if ( oldColorizeActFrames != DeKoratorFactory::colorizeActFrames_ ||
+ // oldColorizeActButtons != DeKoratorFactory::colorizeActButtons_ ||
+ // oldColorizeInActFrames != DeKoratorFactory::colorizeInActFrames_ ||
+ // oldColorizeInActButtons != DeKoratorFactory::colorizeInActButtons_ ||
+ // oldDecoColorize != DECOCOLORIZE ||
+ // oldButtonsColorize != BUTTONSCOLORIZE ||
+ // cusColChanged == true ||
+ // oldStyleBgCol != STYLEBGCOL
+ // )
+ // DeKoratorFactory::needInit_ = TRUE;
+ // else
+ // DeKoratorFactory::needInit_ = FALSE;
+
+ if ( oldFramesPath != DeKoratorFactory::framesPath_ ||
+ oldButtonsPath != DeKoratorFactory::buttonsPath_ ||
+ oldMasksPath != DeKoratorFactory::masksPath_
+ )
+ DeKoratorFactory::needReload_ = TRUE;
+ else
+ DeKoratorFactory::needReload_ = FALSE;
+
+ return TRUE;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// loadPixmaps()
+// ------------
+// Read in the configuration file
+void DeKoratorFactory::loadPixmaps()
+{
+ QString decoPixDir = DeKoratorFactory::framesPath_;
+ QString btnPixDir = DeKoratorFactory::buttonsPath_;
+ QString masksPixDir = DeKoratorFactory::masksPath_;
+
+
+ // deco
+ // top bar from left to right
+ DECOARR[ topLeftCorner ][ orig ] ->load( decoPixDir + "/topLeftCornerBg.png" );
+ DECOARR[ leftButtons ][ orig ] ->load( decoPixDir + "/leftButtonsBg.png" );
+ DECOARR[ leftTitle ][ orig ] ->load( decoPixDir + "/leftTitleBg.png" );
+ DECOARR[ midTitle ][ orig ] ->load( decoPixDir + "/midTitleBg.png" );
+ DECOARR[ rightTitle ][ orig ] ->load( decoPixDir + "/rightTitleBg.png" );
+ DECOARR[ rightButtons ][ orig ] ->load( decoPixDir + "/rightButtonsBg.png" );
+ DECOARR[ topRightCorner ][ orig ] ->load( decoPixDir + "/topRightCornerBg.png" );
+ // left frame from top to buttom
+ DECOARR[ topLeftFrame ][ orig ] ->load( decoPixDir + "/topLeftFrameBg.png" );
+ DECOARR[ midLeftFrame ][ orig ] ->load( decoPixDir + "/midLeftFrameBg.png" );
+ DECOARR[ buttomLeftFrame ][ orig ] ->load( decoPixDir + "/bottomLeftFrameBg.png" );
+ // buttom frame from left to right
+ DECOARR[ leftButtomFrame ][ orig ] ->load( decoPixDir + "/leftBottomFrameBg.png" );
+ DECOARR[ midButtomFrame ][ orig ] ->load( decoPixDir + "/midBottomFrameBg.png" );
+ DECOARR[ rightButtomFrame ][ orig ] ->load( decoPixDir + "/rightBottomFrameBg.png" );
+ // right frame from top to buttom
+ DECOARR[ topRightFrame ][ orig ] ->load( decoPixDir + "/topRightFrameBg.png" );
+ DECOARR[ midRightFrame ][ orig ] ->load( decoPixDir + "/midRightFrameBg.png" );
+ DECOARR[ buttomRightFrame ][ orig ] ->load( decoPixDir + "/bottomRightFrameBg.png" );
+
+
+ // buttons
+ BUTTONSARR[ restore ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonRestore.png" );
+ BUTTONSARR[ restore ][ press ][ normal ] ->load( btnPixDir + "/press/buttonRestorePress.png" );
+ BUTTONSARR[ restore ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonRestoreHover.png" );
+
+ BUTTONSARR[ help ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonHelp.png" );
+ BUTTONSARR[ help ][ press ][ normal ] ->load( btnPixDir + "/press/buttonHelpPress.png" );
+ BUTTONSARR[ help ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonHelpHover.png" );
+
+ BUTTONSARR[ max ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonMax.png" );
+ BUTTONSARR[ max ][ press ][ normal ] ->load( btnPixDir + "/press/buttonMaxPress.png" );
+ BUTTONSARR[ max ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonMaxHover.png" );
+
+ BUTTONSARR[ min ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonMin.png" );
+ BUTTONSARR[ min ][ press ][ normal ] ->load( btnPixDir + "/press/buttonMinPress.png" );
+ BUTTONSARR[ min ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonMinHover.png" );
+
+ BUTTONSARR[ close ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonClose.png" );
+ BUTTONSARR[ close ][ press ][ normal ] ->load( btnPixDir + "/press/buttonClosePress.png" );
+ BUTTONSARR[ close ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonCloseHover.png" );
+
+ BUTTONSARR[ sticky ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonSticky.png" );
+ BUTTONSARR[ sticky ][ press ][ normal ] ->load( btnPixDir + "/press/buttonStickyDownPress.png" );
+ BUTTONSARR[ sticky ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonStickyHover.png" );
+
+ BUTTONSARR[ stickydown ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonStickyDown.png" );
+ BUTTONSARR[ stickydown ][ press ][ normal ] ->load( btnPixDir + "/press/buttonStickyDownPress.png" );
+ BUTTONSARR[ stickydown ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonStickyDownHover.png" );
+
+ BUTTONSARR[ above ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonAbove.png" );
+ BUTTONSARR[ above ][ press ][ normal ] ->load( btnPixDir + "/press/buttonAbovePress.png" );
+ BUTTONSARR[ above ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonAboveHover.png" );
+
+ BUTTONSARR[ abovedown ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonAboveDown.png" );
+ BUTTONSARR[ abovedown ][ press ][ normal ] ->load( btnPixDir + "/press/buttonAboveDownPress.png" );
+ BUTTONSARR[ abovedown ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonAboveDownHover.png" );
+
+ BUTTONSARR[ below ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonBelow.png" );
+ BUTTONSARR[ below ][ press ][ normal ] ->load( btnPixDir + "/press/buttonBelowPress.png" );
+ BUTTONSARR[ below ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonBelowHover.png" );
+
+ BUTTONSARR[ belowdown ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonBelowDown.png" );
+ BUTTONSARR[ belowdown ][ press ][ normal ] ->load( btnPixDir + "/press/buttonBelowDownPress.png" );
+ BUTTONSARR[ belowdown ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonBelowDownHover.png" );
+
+ BUTTONSARR[ shade ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonShade.png" );
+ BUTTONSARR[ shade ][ press ][ normal ] ->load( btnPixDir + "/press/buttonShadePress.png" );
+ BUTTONSARR[ shade ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonShadeHover.png" );
+
+ BUTTONSARR[ shadedown ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonShadeDown.png" );
+ BUTTONSARR[ shadedown ][ press ][ normal ] ->load( btnPixDir + "/press/buttonShadeDownPress.png" );
+ BUTTONSARR[ shadedown ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonShadeDownHover.png" );
+
+ BUTTONSARR[ menu ][ regular ][ normal ] ->load( btnPixDir + "/normal/buttonMenu.png" );
+ BUTTONSARR[ menu ][ press ][ normal ] ->load( btnPixDir + "/press/buttonMenuPress.png" );
+ BUTTONSARR[ menu ][ hover ][ normal ] ->load( btnPixDir + "/hover/buttonMenuHover.png" );
+
+
+ //masks
+ topLeftCornerBitmap_ = QBitmap( masksPixDir + "/topLeftCornerBitmap.png" );
+ topMidBitmap_ = QBitmap( masksPixDir + "/topMidBitmap.png" );
+ topRightCornerBitmap_ = QBitmap( masksPixDir + "/topRightCornerBitmap.png" );
+ buttomLeftCornerBitmap_ = QBitmap( masksPixDir + "/buttomLeftCornerBitmap.png" );
+ buttomMidBitmap_ = QBitmap( masksPixDir + "/buttomMidBitmap.png" );
+ buttomRightCornerBitmap_ = QBitmap( masksPixDir + "/buttomRightCornerBitmap.png" );
+
+ determineSizes();
+
+ //prepareDecoWithBgCol();
+
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// determineSizes()
+// ------------
+//
+void DeKoratorFactory::determineSizes()
+{
+ //MARGIN = midButtomFrameBg_.height();
+
+ // frames
+ TITLESIZE = DECOARR[ midTitle ][ orig ] ->height();
+ LEFTFRAMESIZE = DECOARR[ midLeftFrame ][ orig ] ->width();
+ BUTTOMFRAMESIZE = DECOARR[ midButtomFrame ][ orig ] ->height();
+ RIGHTFRAMESIZE = DECOARR[ midRightFrame ][ orig ] ->width();
+
+ TOPLEFTCORNERWIDTH = DECOARR[ topLeftCorner ][ orig ] ->width();
+ TOPRIGHTCORNERWIDTH = DECOARR[ topRightCorner ][ orig ] ->width();
+ LEFTTITLEWIDTH = DECOARR[ leftTitle ][ orig ] ->width();
+ RIGHTTITLEWIDTH = DECOARR[ rightTitle ][ orig ] ->width();
+ TOPLEFTFRAMEHEIGHT = DECOARR[ topLeftFrame ][ orig ] ->height();
+ BOTTOMLEFTFRAMEHEIGHT = DECOARR[ buttomLeftFrame ][ orig ] ->height();
+ TOPRIGHTFRAMEHEIGHT = DECOARR[ topRightFrame ][ orig ] ->height();
+ BOTTOMRIGHTFRAMEHEIGHT = DECOARR[ buttomRightFrame ][ orig ] ->height();
+ LEFTBOTTOMFRAMEWIDTH = DECOARR[ leftButtomFrame ][ orig ] ->width();
+ RIGHTBOTTOMFRAMEWIDTH = DECOARR[ rightButtomFrame ][ orig ] ->width();
+
+
+ // buttons
+ BUTTONSHEIGHT = TITLESIZE;
+
+ BTNHELPEWIDTH = BUTTONSARR[ help ][ regular ][ normal ] ->width();
+ BTNMAXWIDTH = BUTTONSARR[ max ][ regular ][ normal ] ->width();
+ BTNCLOSEWIDTH = BUTTONSARR[ close ][ regular ][ normal ] ->width();
+ BTNMINWIDTH = BUTTONSARR[ min ][ regular ][ normal ] ->width();
+ BTNSTICKYWIDTH = BUTTONSARR[ sticky ][ regular ][ normal ] ->width();
+ BTNABOVEWIDTH = BUTTONSARR[ above ][ regular ][ normal ] ->width();
+ BTNBELOWWIDTH = BUTTONSARR[ below ][ regular ][ normal ] ->width();
+ BTNSHADEWIDTH = BUTTONSARR[ shade ][ regular ][ normal ] ->width();
+ BTNMENUWIDTH = BUTTONSARR[ menu ][ regular ][ normal ] ->width();
+
+ BTNHELPEHEIGHT = BUTTONSARR[ help ][ regular ][ normal ] ->height();
+ BTNMAXHEIGHT = BUTTONSARR[ max ][ regular ][ normal ] ->height();
+ BTNCLOSEHEIGHT = BUTTONSARR[ close ][ regular ][ normal ] ->height();
+ BTNMINHEIGHT = BUTTONSARR[ min ][ regular ][ normal ] ->height();
+ BTNSTICKYHEIGHT = BUTTONSARR[ sticky ][ regular ][ normal ] ->height();
+ BTNABOVEHEIGHT = BUTTONSARR[ above ][ regular ][ normal ] ->height();
+ BTNBELOWHEIGHT = BUTTONSARR[ below ][ regular ][ normal ] ->height();
+ BTNSHADEHEIGHT = BUTTONSARR[ shade ][ regular ][ normal ] ->height();
+ BTNMENUHEIGHT = BUTTONSARR[ menu ][ regular ][ normal ] ->height();
+
+ // masks
+ TOPLEFTMASKWIDTH = topLeftCornerBitmap_.width();
+ TOPMIDMASKWIDTH = topMidBitmap_.width();
+ TOPRIGHTMASKWIDTH = topRightCornerBitmap_.width();
+ BOTTOMLEFTMASKWIDTH = buttomLeftCornerBitmap_.width();
+ BOTTOMMIDMASKWIDTH = buttomMidBitmap_.width();
+ BOTTOMRIGHTMASKWIDTH = buttomRightCornerBitmap_.width();
+
+ BOTTOMLEFTMASKHEIGHT = buttomLeftCornerBitmap_.height();
+ BOTTOMMIDMASKHEIGHT = buttomMidBitmap_.height();
+ BOTTOMRIGHTMASKHEIGHT = buttomRightCornerBitmap_.height();
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// colorizeDecoPixmaps()
+// ------------
+//
+void DeKoratorFactory::colorizeDecoPixmaps( bool isActive )
+{
+ int i;
+ QColor col = options() ->colorGroup( KDecoration::ColorTitleBar, isActive ).background();
+
+ if ( isActive )
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ *( DECOARR[ i ][ actCol ] ) = *( DECOARR[ i ][ orig ] );
+ colorizePixmap( DECOARR[ i ][ actCol ], col, DECOCOLORIZE );
+ }
+ }
+ else
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ *( DECOARR[ i ][ inActCol ] ) = *( DECOARR[ i ][ orig ] );
+ colorizePixmap( DECOARR[ i ][ inActCol ], col, DECOCOLORIZE );
+ }
+
+ }
+
+ prepareDecoWithBgCol();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// colorizeButtonsPixmaps()
+// ------------
+//
+void DeKoratorFactory::colorizeButtonsPixmaps( bool isActive )
+{
+ int i, j;
+ QColor col = options() ->colorGroup( KDecoration::ColorButtonBg, isActive ).background();
+
+ if ( isActive )
+ {
+ if ( useCustomButtonsColors_ && customColorsActiveButtons_ )
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ *( BUTTONSARR[ i ][ j ][ actCol ] ) = *( BUTTONSARR[ i ][ j ][ normal ] );
+ colorizePixmap( BUTTONSARR[ i ][ j ][ actCol ], cusBtnCol_[ i ], BUTTONSCOLORIZE );
+ }
+ }
+ }
+ else
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ *( BUTTONSARR[ i ][ j ][ actCol ] ) = *( BUTTONSARR[ i ][ j ][ normal ] );
+ colorizePixmap( BUTTONSARR[ i ][ j ][ actCol ], col, BUTTONSCOLORIZE );
+ }
+ }
+ }
+ }
+ else
+ {
+ if ( ( useCustomButtonsColors_ && customColorsInActiveButtons_ ) )
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ *( BUTTONSARR[ i ][ j ][ inActCol ] ) = *( BUTTONSARR[ i ][ j ][ normal ] );
+ colorizePixmap( BUTTONSARR[ i ][ j ][ inActCol ], cusBtnCol_[ i ], BUTTONSCOLORIZE );
+ }
+ }
+ }
+ else
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ *( BUTTONSARR[ i ][ j ][ inActCol ] ) = *( BUTTONSARR[ i ][ j ][ normal ] );
+ colorizePixmap( BUTTONSARR[ i ][ j ][ inActCol ], col, BUTTONSCOLORIZE );
+ }
+ }
+ }
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// colorizePixmap()
+// ------------
+//
+void DeKoratorFactory::colorizePixmap( QPixmap *pix, QColor c, QString colorizeMethod )
+{
+ QImage img;
+ if ( colorizeMethod == "Liquid Method" )
+ {
+ img = pix->convertToImage();
+ //KIconEffect::toGray( img, 1.0 );
+
+ if ( img.depth() != 32 )
+ img = img.convertDepth( 32 );
+ QImage *dest = new QImage( img.width(), img.height(), 32 );
+ dest->setAlphaBuffer( TRUE );
+ unsigned int *data = ( unsigned int * ) img.bits();
+ unsigned int *destData = ( unsigned int* ) dest->bits();
+ int total = img.width() * img.height();
+ int current;
+ int delta;
+ int destR, destG, destB, alpha;
+ int srcR = c.red() + 100;
+ int srcG = c.green() + 100;
+ int srcB = c.blue() + 100;
+
+ for ( current = 0; current < total; ++current )
+ {
+ alpha = qAlpha( data[ current ] );
+
+ // qWarning( "--------------------------" );
+ // qWarning( "red - %d", qRed( data[ current ] ) );
+ // qWarning( "green - %d", qRed( data[ current ] ) );
+ // qWarning( "blue - %d", qRed( data[ current ] ) );
+
+ delta = 255 - qGray( data[ current ] );
+
+ destR = srcR - delta;
+ destG = srcG - delta;
+ destB = srcB - delta;
+
+ if ( destR < 0 )
+ destR = 0;
+ if ( destG < 0 )
+ destG = 0;
+ if ( destB < 0 )
+ destB = 0;
+ if ( destR > 255 )
+ destR = 255;
+ if ( destG > 255 )
+ destG = 255;
+ if ( destB > 255 )
+ destB = 255;
+ destData[ current ] = qRgba( destR, destG, destB, alpha );
+ }
+ pix->convertFromImage( *dest );
+ }
+ else if ( colorizeMethod == "Kde Method" )
+ {
+ img = pix->convertToImage();
+ KIconEffect::colorize( img, c, 1.0 );
+ pix->convertFromImage( img, 0 );
+ }
+ else if ( colorizeMethod == "Hue Adgustment" )
+ {
+ img = pix->convertToImage();
+ //KIconEffect::toGray( img, 1.0 );
+
+ if ( img.depth() != 32 )
+ img = img.convertDepth( 32 );
+
+ // QImage *dest;
+ // *dest = img;
+ QImage *dest = new QImage( img.width(), img.height(), 32 );
+ dest->setAlphaBuffer( TRUE );
+ unsigned int *data = ( unsigned int * ) img.bits();
+ unsigned int *destData = ( unsigned int* ) dest->bits();
+ int total = img.width() * img.height();
+ int current;
+// int delta;
+ int destR, destG, destB, alpha;
+// int srcR = c.red();
+// int srcG = c.green();
+// int srcB = c.blue();
+ int h, s, v, ch;
+// int *r, *g, *b, *a;
+ QColor col ;
+// float srcPercent, destPercent;
+
+ for ( current = 0; current < total; ++current )
+ {
+ // int qRed ( data[ current ] );
+ // int qGreen ( data[ current ] );
+ // int qBlue ( data[ current ] );
+ // alpha = qAlpha( destData[ current ] );
+ //
+ // //destData[ current ] = data[ current ];
+ //
+ // QColor col = destData[ current ];
+ // col.getHsv( h, s, v );
+ // //*h += 50;
+ //
+ // col.setHsv( 50, *s, *v );
+ //
+ // col.getRgb( r, g, b );
+
+ col.setRgb( data[ current ] );
+ //col = Qt::red;
+ c.hsv( &h, &s, &v );
+ ch = h;
+ col.hsv( &h, &s, &v );
+ // s = 0;
+ //v += 100;
+ col.setHsv( ch, s, v );
+ destR = col.red();
+ destG = col.green();
+ destB = col.blue();
+ alpha = qAlpha( data[ current ] );
+
+
+ // if ( destR < 0 )
+ // destR = 0;
+ // if ( destG < 0 )
+ // destG = 0;
+ // if ( destB < 0 )
+ // destB = 0;
+ // if ( destR > 255 )
+ // destR = 255;
+ // if ( destG > 255 )
+ // destG = 255;
+ // if ( destB > 255 )
+ // destB = 255;
+
+ destData[ current ] = qRgba( destR, destG, destB, alpha );
+ //destData[ current ] = data[ current ];
+ }
+ pix->convertFromImage( *dest, /*Qt::ColorOnly | Qt::DiffuseDither | Qt::DiffuseAlphaDither |*/ Qt::AvoidDither );
+ }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// colorizePixmap()
+//
+void DeKoratorFactory::initPixmaps()
+{
+ int i, j, k;
+
+ for ( i = 0; i < decoCount; i++ )
+ {
+ for ( j = 0; j < pixTypeCount; j++ )
+ {
+ DECOARR[ i ][ j ] = new QPixmap();
+ }
+ }
+
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ for ( k = 0; k < pixTypeCount; k++ )
+ {
+ BUTTONSARR[ i ][ j ][ k ] = new QPixmap();
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// colorizePixmap()
+//
+void DeKoratorFactory::chooseRightPixmaps()
+{
+ int i, j;
+
+ if ( DeKoratorFactory::colorizeActFrames_ )
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ DECOPIXACTARR[ i ] = DECOARR[ i ][ actCol ];
+ }
+ }
+ else
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ DECOPIXACTARR[ i ] = DECOARR[ i ][ normal ];
+ }
+ }
+
+ if ( DeKoratorFactory::colorizeInActFrames_ )
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ DECOPIXINACTARR[ i ] = DECOARR[ i ][ inActCol ];
+ }
+ }
+ else
+ {
+ for ( i = 0; i < decoCount; i++ )
+ {
+ DECOPIXINACTARR[ i ] = DECOARR[ i ][ normal ];
+ }
+ }
+
+
+
+ if ( DeKoratorFactory::colorizeActButtons_ )
+ {
+
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ BUTTONPIXACTARR[ i ][ j ] = BUTTONSARR[ i ][ j ][ actCol ];
+ }
+ }
+ }
+ else
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ BUTTONPIXACTARR[ i ][ j ] = BUTTONSARR[ i ][ j ][ normal ];
+ }
+ }
+ }
+
+
+ if ( DeKoratorFactory::colorizeInActButtons_ )
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ BUTTONPIXINACTARR[ i ][ j ] = BUTTONSARR[ i ][ j ][ inActCol ];
+ }
+ }
+ }
+ else
+ {
+ for ( i = 0; i < buttonTypeAllCount; i++ )
+ {
+ for ( j = 0; j < buttonStateCount; j++ )
+ {
+ BUTTONPIXINACTARR[ i ][ j ] = BUTTONSARR[ i ][ j ][ normal ];
+ }
+ }
+ }
+
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// prepareDecoWithBbCol()
+//
+void DeKoratorFactory::prepareDecoWithBgCol()
+{
+ int i;
+ QPainter painter;
+ QPixmap tempPix;
+ QWidget widget;
+ QColor col = widget.colorGroup().background();
+
+
+ if ( DeKoratorFactory::colorizeActFrames_ )
+ {
+ for ( i = 0 ; i < decoCount ; i++ )
+ {
+ tempPix.resize( DECOARR[ i ][ orig ] ->width(), DECOARR[ i ][ orig ] ->height() );
+
+ tempPix.fill( col );
+
+ painter.begin( &tempPix );
+ {
+ painter.drawPixmap( 0, 0, *( DECOARR[ i ][ actCol ] ) );
+ }
+ painter.end();
+
+ *( DECOARR[ i ][ actCol ] ) = tempPix;
+ }
+ }
+ else
+ {
+ for ( i = 0 ; i < decoCount ; i++ )
+ {
+ tempPix.resize( DECOARR[ i ][ orig ] ->width(), DECOARR[ i ][ orig ] ->height() );
+
+ tempPix.fill( col );
+
+ painter.begin( &tempPix );
+ {
+ painter.drawPixmap( 0, 0, *( DECOARR[ i ][ orig ] ) );
+ }
+ painter.end();
+
+ *( DECOARR[ i ][ normal ] ) = tempPix;
+ }
+ }
+
+ if ( DeKoratorFactory::colorizeInActFrames_ )
+ {
+ for ( i = 0 ; i < decoCount ; i++ )
+ {
+ tempPix.resize( DECOARR[ i ][ orig ] ->width(), DECOARR[ i ][ orig ] ->height() );
+
+ tempPix.fill( col );
+
+ painter.begin( &tempPix );
+ {
+ painter.drawPixmap( 0, 0, *( DECOARR[ i ][ inActCol ] ) );
+ }
+ painter.end();
+
+ *( DECOARR[ i ][ inActCol ] ) = tempPix;
+ }
+ }
+ else
+ {
+ for ( i = 0 ; i < decoCount ; i++ )
+ {
+ tempPix.resize( DECOARR[ i ][ orig ] ->width(), DECOARR[ i ][ orig ] ->height() );
+
+ tempPix.fill( col );
+
+ painter.begin( &tempPix );
+ {
+ painter.drawPixmap( 0, 0, *( DECOARR[ i ][ orig ] ) );
+ }
+ painter.end();
+
+ *( DECOARR[ i ][ normal ] ) = tempPix;
+ }
+ }
+
+
+ // if ( !DeKoratorFactory::colorizeActFrames_ || !DeKoratorFactory::colorizeInActFrames_ )
+ // {
+ // for ( i = 0 ; i < decoCount ; i++ )
+ // {
+ // tempPix.resize( DECOARR[ i ][ orig ] ->width(), DECOARR[ i ][ orig ] ->height() );
+ //
+ // tempPix.fill( col );
+ //
+ // painter.begin( &tempPix );
+ // {
+ // painter.drawPixmap( 0, 0, *( DECOARR[ i ][ orig ] ) );
+ // }
+ // painter.end();
+ //
+ // *( DECOARR[ i ][ normal ] ) = tempPix;
+ // }
+ // }
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorButton Class //
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorButton()
+// ---------------
+// Constructor
+DeKoratorButton::DeKoratorButton( bool isLeft, int buttonWidth, int buttonHeight, DeKoratorClient * parent, const char * name,
+ const QString & tip, ButtonType type, buttonTypeAll btnType )
+ : QButton( parent->widget(), name ), isLeft_( isLeft ), buttonWidth_( buttonWidth ), client_( parent ), type_( type ), lastmouse_( NoButton ), decoPixHeight_( buttonHeight )
+{
+ //decoPixInAct_ = buttonPixInAct;
+ animProgress = 0;
+ hover_ = FALSE;
+ setBackgroundMode( NoBackground );
+ setFixedSize( buttonWidth_, BUTTONSHEIGHT );
+ setCursor( arrowCursor );
+
+
+
+ //if ( buttonPix )
+ setPixmap( btnType );
+ QToolTip::add
+ ( this, tip );
+ animTmr = new QTimer( this );
+ connect( animTmr, SIGNAL( timeout() ), this, SLOT( animate() ) );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorButton()
+// ---------------
+// destructor
+DeKoratorButton::~DeKoratorButton()
+{
+ //if ( deco_ ) delete deco_;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// setPixmap()
+
+// -----------
+// Set the button decoration
+void DeKoratorButton::setPixmap( buttonTypeAll btnType )
+{
+ // decoPix_ = buttonPix;
+ // decoPixPress_ = buttonPixPress;
+ // decoPixHover_ = buttonPixHover;
+ // decoPixInAct_ = buttonPixInAct;
+
+ // btnPixAct_ = btnPixAct;
+ // btnPixInAct_ = btnPixInAct;
+ btnType_ = btnType;
+
+
+ // btnPixAct_ = btnPixAct;
+ // btnPixInAct_ = btnPixInAct;
+
+ //decoPix_->setMask(*deco_);
+ // }
+ // else
+ // {
+ // deco_ = new QBitmap(DECOSIZE, DECOSIZE, bitmap, TRUE);
+ // deco_->setMask(*deco_);
+ // }
+ repaint( FALSE );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// sizeHint()
+// ----------
+// Return size hint
+QSize DeKoratorButton::sizeHint() const
+{
+ return QSize( buttonWidth_, BUTTONSHEIGHT );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// enterEvent()
+// ------------
+// Mouse has entered the button
+void DeKoratorButton::enterEvent( QEvent * e )
+{
+ // if we wanted to do mouseovers, we would keep track of it here
+ QButton::enterEvent( e );
+ s = STEPS;
+ hover_ = TRUE;
+ setCursor( Qt::PointingHandCursor );
+
+ if ( USEANIMATION )
+ animate();
+ else
+ repaint( FALSE );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// leaveEvent()
+// ------------
+// Mouse has left the button
+void DeKoratorButton::leaveEvent( QEvent * e )
+{
+ // if we wanted to do mouseovers, we would keep track of it here
+
+ QButton::leaveEvent( e );
+ //STEPS = s;
+ hover_ = FALSE;
+ unsetCursor ();
+
+ if ( USEANIMATION )
+ animate();
+ else
+ repaint( FALSE );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mousePressEvent()
+// -----------------
+// Button has been pressed
+void DeKoratorButton::mousePressEvent( QMouseEvent * e )
+{
+ lastmouse_ = e->button();
+
+ // translate and pass on mouse event
+ int button = LeftButton;
+ if ( ( type_ != ButtonMax ) && ( e->button() != LeftButton ) )
+ {
+ button = NoButton; // middle & right buttons inappropriate
+ }
+ QMouseEvent me( e->type(), e->pos(), e->globalPos(),
+ button, e->state() );
+ QButton::mousePressEvent( &me );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mouseReleaseEvent()
+// -----------------
+// Button has been released
+void DeKoratorButton::mouseReleaseEvent( QMouseEvent * e )
+{
+ lastmouse_ = e->button();
+
+ // translate and pass on mouse event
+ int button = LeftButton;
+ if ( ( type_ != ButtonMax ) && ( e->button() != LeftButton ) )
+ {
+ button = NoButton; // middle & right buttons inappropriate
+ }
+ QMouseEvent me( e->type(), e->pos(), e->globalPos(), button, e->state() );
+ QButton::mouseReleaseEvent( &me );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// drawButton()
+// ------------
+// Draw the button
+void DeKoratorButton::drawButton( QPainter * painter )
+{
+ if ( !DeKoratorFactory::initialized() )
+ return ;
+
+ QColorGroup group;
+ int dx = 0, dy = 0;
+ bool act = client_->isActive();
+ QImage buttonImgBak;
+
+ // fill background
+ if ( isLeft_ )
+ painter->drawTiledPixmap( rect(), act ? *( DECOPIXACTARR[ leftButtons ] ) : *( DECOPIXINACTARR[ leftButtons ] ) );
+ else
+ painter->drawTiledPixmap( rect(), act ? *( DECOPIXACTARR[ rightButtons ] ) : *( DECOPIXINACTARR[ rightButtons ] ) );
+
+ // apply app icon effects
+ if ( type_ == ButtonMenu && !USEMENUEIMAGE )
+ {
+ dy = ( height() - 16 ) / 2;
+
+ QPixmap appIconPix = client_->icon().pixmap( QIconSet::Small, QIconSet::Normal );
+
+ if ( !IGNOREAPPICNCOL )
+ {
+ if ( act )
+ {
+ if ( client_->decoFactory_->useCustomButtonsColors_ && client_->decoFactory_->customColorsActiveButtons_ )
+ {
+ DeKoratorFactory::colorizePixmap( &appIconPix, client_->decoFactory_->cusBtnCol_[ menu ], BUTTONSCOLORIZE );
+ }
+ else if ( client_->decoFactory_->colorizeActButtons_ )
+ {
+ QColor col = client_->decoFactory_->options() ->colorGroup( KDecoration::ColorButtonBg, act ).background();
+
+ DeKoratorFactory::colorizePixmap( &appIconPix, col, BUTTONSCOLORIZE );
+ }
+ }
+ else
+ {
+ if ( client_->decoFactory_->useCustomButtonsColors_ && client_->decoFactory_->customColorsInActiveButtons_ )
+ {
+ DeKoratorFactory::colorizePixmap( &appIconPix, client_->decoFactory_->cusBtnCol_[ menu ], BUTTONSCOLORIZE );
+ }
+ else if ( client_->decoFactory_->colorizeInActButtons_ )
+ {
+ QColor col = client_->decoFactory_->options() ->colorGroup( KDecoration::ColorButtonBg, act ).background();
+
+ DeKoratorFactory::colorizePixmap( &appIconPix, col, BUTTONSCOLORIZE );
+ }
+ }
+ }
+ buttonImgBak = appIconPix;
+
+ }
+ else
+ {
+ dy = ( BUTTONSHEIGHT - decoPixHeight_ ) / 2;
+ }
+
+
+ // down
+ if ( isDown() )
+ {
+ if ( !( type_ == ButtonMenu && !USEMENUEIMAGE ) )
+ {
+ buttonImgBak = act ? *( BUTTONPIXACTARR[ btnType_ ][ press ] ) : *( BUTTONPIXINACTARR[ btnType_ ][ press ] );
+ }
+ dx += BTNSHIFTX;
+ dy += BTNSHIFTY;
+
+ chooseRightHoverEffect( &buttonImgBak, BUTTONHOVERTYPE );
+ }
+ // hover
+ else if ( hover_ )
+ {
+ if ( !( type_ == ButtonMenu && !USEMENUEIMAGE ) )
+ {
+ buttonImgBak = act ? *( BUTTONPIXACTARR[ btnType_ ][ hover ] ) : *( BUTTONPIXINACTARR[ btnType_ ][ hover ] );
+ }
+ chooseRightHoverEffect( &buttonImgBak, USEANIMATION ? ANIMATIONTYPE : BUTTONHOVERTYPE );
+ }
+ // regular
+ else
+ {
+ if ( !( type_ == ButtonMenu && !USEMENUEIMAGE ) )
+ {
+ buttonImgBak = act ? *( BUTTONPIXACTARR[ btnType_ ][ regular ] ) : *( BUTTONPIXINACTARR[ btnType_ ][ regular ] );
+ }
+
+ if ( USEANIMATION && animProgress > 0 )
+ chooseRightHoverEffect( &buttonImgBak, ANIMATIONTYPE );
+ }
+
+ painter->drawPixmap( dx, dy, buttonImgBak );
+
+
+ if ( client_->isShade() && !SHOWBTMBORDER )
+ {
+ painter->setPen( QColor( 70, 70, 70 ) );
+ painter->drawLine( 0, BUTTONSHEIGHT - 1, buttonWidth_ - 1, BUTTONSHEIGHT - 1 );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// chooseRightHoverEffect()
+// ------------
+//
+QImage* DeKoratorButton::chooseRightHoverEffect( QImage * img, QString res )
+{
+
+ if ( USEANIMATION && !isDown() )
+ {
+ float f = ( ( float ) animProgress / 100 );
+
+ if ( res == "Intensity" )
+ {
+ f /= 1.5;
+
+ * img = KImageEffect::intensity ( *img, f );
+ }
+ else if ( res == "Blend" )
+ {
+ f /= 1.7;
+ QColor col = client_->isActive() ? ACTIVEHIGHLIGHTCOLOR : INACTIVEHIGHLIGHTCOLOR;
+
+ * img = KImageEffect::blend ( col, *img, f );
+ }
+ else if ( res == "Solarize" )
+ {
+ KImageEffect::solarize ( *img, 100 - animProgress );
+ }
+ else if ( res == "Fade" )
+ {
+ f /= 3;
+ QColor col = client_->isActive() ? ACTIVEHIGHLIGHTCOLOR : INACTIVEHIGHLIGHTCOLOR;
+
+ * img = KImageEffect::fade ( *img, f, col );
+ }
+ else if ( res == "Trashed" )
+ {
+ * img = KImageEffect::fade ( *img, animProgress, Qt::black );
+ }
+ else if ( res == "Hue Shift" )
+ {
+ int h, s, v;
+ QColor col ;
+ int shift = ( int ) ( animProgress * 3.5 );
+ col.setRgb( 255, 0, 0 );
+ col.hsv( &h, &s, &v );
+ col.setHsv( shift, s, v );
+
+ QPixmap pix;
+ pix.convertFromImage( *img, Qt::AvoidDither );
+ DeKoratorFactory::colorizePixmap( &pix, col, "Hue Adgustment" );
+ *img = pix.convertToImage();
+ }
+ }
+ else
+ {
+ if ( BUTTONHOVERTYPE == "To Gray" )
+ KIconEffect::toGray( *img, EFFECTAMOUNT );
+ else if ( BUTTONHOVERTYPE == "Colorize" )
+ {
+ QColor col = client_->isActive() ? ACTIVEHIGHLIGHTCOLOR : INACTIVEHIGHLIGHTCOLOR;
+
+ QPixmap pix;
+ pix.convertFromImage( *img, Qt::AvoidDither );
+ DeKoratorFactory::colorizePixmap( &pix, col, BUTTONSCOLORIZE );
+ *img = pix.convertToImage();
+ }
+ else if ( BUTTONHOVERTYPE == "DeSaturate" )
+ KIconEffect::deSaturate( *img, EFFECTAMOUNT );
+ else if ( BUTTONHOVERTYPE == "To Gamma" )
+ KIconEffect::toGamma( *img, EFFECTAMOUNT );
+ }
+ return img;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// animate()
+// ------------
+//
+void DeKoratorButton::animate()
+{
+ animTmr->stop();
+
+ if ( hover_ )
+ {
+ if ( KEEPANIMATING )
+ {
+ animProgress += s;
+
+ if ( animProgress >= ANIMATIONSTEPS || animProgress <= 0 )
+ {
+ s *= -1;
+ }
+ animTmr->start( INTERVAL, true ); // single-shot
+ }
+ else
+ {
+ if ( !KEEPANIMATING )
+ {
+ if ( animProgress < ANIMATIONSTEPS )
+ animProgress += STEPS;
+ else
+ {
+ animProgress = ANIMATIONSTEPS;
+ }
+ }
+ if ( animProgress < ANIMATIONSTEPS )
+ animTmr->start( INTERVAL, true ); // single-shot
+ }
+ }
+ else
+ {
+ if ( animProgress > 0 )
+ animProgress -= STEPS;
+ else
+ {
+ animProgress = 0;
+ }
+ if ( animProgress > 0 )
+ animTmr->start( INTERVAL, true ); // single-shot
+ }
+ //qWarning( "STEPS: %d", STEPS );
+ //qWarning( "animProgress: %d", animProgress );
+ //qWarning( "INTERVAL: %d", INTERVAL );
+ repaint( false );
+}
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorClient Class //
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// DeKoratorClient()
+// ---------------
+// Constructor
+DeKoratorClient::DeKoratorClient( KDecorationBridge * b, KDecorationFactory * f )
+ : KDecoration( b, f ), mainLayout_( NULL ), titleLayout_( NULL ), midLayout_( NULL ) , leftTitleBarSpacer_( NULL ), titleBarSpacer_( NULL ), rightTitleBarSpacer_( NULL ), leftSpacer_( NULL ), rightSpacer_( NULL ), bottomSpacer_( NULL ), captionBufferDirty_( true )
+{
+ //captionBufferDirty_ = true;
+ //maskDirty_ = true;
+ decoFactory_ = ( DeKoratorFactory* ) f;
+}
+
+DeKoratorClient::~DeKoratorClient()
+{
+ for ( int n = 0; n < ButtonTypeCount; n++ )
+ {
+ if ( button[ n ] )
+ delete button[ n ];
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// init()
+// ------
+// Actual initializer for class
+
+
+// basic layout:
+
+// __________________________________________________________________________
+// | leftTitleBarSpacer | btns | titleBarSpacer_ | bts | rightTitleBarSpacer |
+// |____________________|______|_________________|_____|_____________________|
+// | | | |
+// | | contentsFake | |
+// | | | |
+// |leftSpacer rightSpacer|
+// |_|_____________________________________________________________________|_|
+// | bottomSpacer |
+// |_________________________________________________________________________|
+//
+
+void DeKoratorClient::init()
+{
+ createMainWidget( WNoAutoErase );
+ widget() ->installEventFilter( this );
+
+ // for flicker-free redraws
+ widget() ->setBackgroundMode( NoBackground );
+
+ // layouts
+ delete mainLayout_;
+ delete titleLayout_;
+ delete midLayout_;
+ // spacers
+ delete leftTitleBarSpacer_;
+ delete titleBarSpacer_;
+ delete rightTitleBarSpacer_;
+ delete leftSpacer_;
+ delete rightSpacer_;
+ delete bottomSpacer_;
+ /* topLeftCornerBg[ normal ] ->load( decoPixDir + "/topLeftCornerBg.png" );
+ leftButtonsBg[ normal ] ->load( decoPixDir + "/leftButtonsBg.png" );
+ leftTitleBg[ normal ] ->load( decoPixDir + "/leftTitleBg.png" );
+ midTitleBg[ normal ] ->load( decoPixDir + "/midTitleBg.png" );
+ rightTitleBg[ normal ] ->load( decoPixDir + "/rightTitleBg.png" );
+ rightButtonsBg[ normal ] ->load( decoPixDir + "/rightButtonsBg.png" );
+ topRightCornerBg[ normal ] ->load( decoPixDir + "/topRightCornerBg.png" );
+ // left frame from top to buttom
+ topLeftFrameBg[ normal ] ->load( decoPixDir + "/topLeftFrameBg.png" );
+ midLeftFrameBg[ normal ] ->load( decoPixDir + "/midLeftFrameBg.png" );
+ buttomLeftFrameBg[ normal ] ->load( decoPixDir + "/bottomLeftFrameBg.png" );
+ // buttom frame from left to right
+ leftButtomFrameBg[ normal ] ->load( decoPixDir + "/leftBottomFrameBg.png" );
+ midButtomFrameBg[ normal ] ->load( decoPixDir + "/midBottomFrameBg.png" );
+ rightButtomFrameBg[ normal ] ->load( decoPixDir + "/rightBottomFrameBg.png" );
+ // right frame from top to buttom
+ topRightFrameBg[ normal ] ->load( decoPixDir + "/topRightFrameBg.png" );
+ midRightFrameBg[ normal ] ->load( decoPixDir + "/midRightFrameBg.png" );
+ buttomRightFrameBg[ normal ] ->load( decoPixDir + "/bottomRightFrameBg.png" );*/
+
+ // layouts
+ mainLayout_ = new QVBoxLayout( widget(), 0, 0 );
+ titleLayout_ = new QHBoxLayout( mainLayout_, 0, 0 );
+ midLayout_ = new QHBoxLayout( mainLayout_, 0, 0 );
+
+ // spacers
+ leftTitleBarSpacer_ = new QSpacerItem( TOPLEFTCORNERWIDTH, TITLESIZE,
+ QSizePolicy::Fixed, QSizePolicy::Fixed );
+ titleBarSpacer_ = new QSpacerItem( 1, TITLESIZE, QSizePolicy::Expanding,
+ QSizePolicy::Fixed );
+ rightTitleBarSpacer_ = new QSpacerItem( TOPRIGHTCORNERWIDTH, TITLESIZE,
+ QSizePolicy::Fixed, QSizePolicy::Fixed );
+ leftSpacer_ = new QSpacerItem( LEFTFRAMESIZE, 1,
+ QSizePolicy::Fixed, QSizePolicy::Expanding );
+ rightSpacer_ = new QSpacerItem( RIGHTFRAMESIZE, 1,
+ QSizePolicy::Fixed, QSizePolicy::Expanding );
+ bottomSpacer_ = new QSpacerItem( 1, ( !isSetShade() || SHOWBTMBORDER ) ? BUTTOMFRAMESIZE : 0,
+ QSizePolicy::Expanding, QSizePolicy::Fixed );
+
+
+ // setup layout
+
+ //left spacer
+ titleLayout_->addItem( leftTitleBarSpacer_ );
+ // setup titlebar buttons
+ for ( int n = 0; n < ButtonTypeCount; n++ )
+ button[ n ] = 0;
+ addButtons( titleLayout_, options() ->titleButtonsLeft(), TRUE );
+ titleLayout_->addItem( titleBarSpacer_ );
+ addButtons( titleLayout_, options() ->titleButtonsRight(), FALSE );
+ //right spacer
+ titleLayout_->addItem( rightTitleBarSpacer_ );
+
+ // mid layout
+ midLayout_->addItem( leftSpacer_ );
+ if ( isPreview() )
+ {
+ midLayout_->addWidget( new QLabel( "<center><b>" + i18n( "Dekorator preview (Version 0.3)" ) + "</b></center>", widget() ) );
+ }
+ else
+ {
+ midLayout_->addItem( new QSpacerItem( 0, 0 ) );
+ }
+ midLayout_->addItem( rightSpacer_ );
+
+
+ //Bottom
+ //if(!isSetShade() || SHOWBTMBORDER)
+ mainLayout_->addItem( bottomSpacer_ );
+
+ // connections
+ connect( this, SIGNAL( keepAboveChanged( bool ) ), SLOT( keepAboveChange( bool ) ) );
+ connect( this, SIGNAL( keepBelowChanged( bool ) ), SLOT( keepBelowChange( bool ) ) );
+
+ captionBufferDirty_ = true;
+ //maskDirty_ = true;
+ widget() ->update( titleBarSpacer_->geometry() );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// addButtons()
+// ------------
+// Add buttons to title layout
+void DeKoratorClient::addButtons( QBoxLayout * layout, const QString & s, bool isLeft )
+{
+ //const unsigned char * bitmap;
+// QPixmap * pix1, *pix2, *pix3, *pix4;
+ QString tip;
+ buttonTypeAll btnType;
+
+ if ( s.length() > 0 )
+ {
+ for ( unsigned n = 0; n < s.length(); n++ )
+ {
+ switch ( s[ n ] )
+ {
+ case 'M':
+ // Menu button
+ if ( !button[ ButtonMenu ] )
+ {
+ button[ ButtonMenu ] =
+ new DeKoratorButton( isLeft, ( BTNMENUWIDTH < 16 ) ? 16 : BTNMENUWIDTH, BTNMENUHEIGHT, this, "menu", i18n( "Menu" ), ButtonMenu, menu );
+ connect( button[ ButtonMenu ], SIGNAL( pressed() ),
+ this, SLOT( menuButtonPressed() ) );
+ connect( button[ ButtonMenu ], SIGNAL( released() ), this, SLOT( menuButtonReleased() ) );
+
+ layout->addWidget( button[ ButtonMenu ] );
+ }
+ break;
+
+ case 'S':
+ // Sticky button
+ if ( !button[ ButtonSticky ] )
+ {
+ bool d = isOnAllDesktops();
+ if ( d )
+ {
+ btnType = stickydown;
+ }
+ else
+ {
+ // pix1 = &( decoFactory_->buttonStickyPix_ );
+ // pix2 = &( decoFactory_->buttonStickyPressPix_ );
+ // pix3 = &( decoFactory_->buttonStickyHoverPix_ );
+ // pix4 = &( decoFactory_->buttonStickyDownPixInAct_ );
+
+
+ btnType = sticky;
+ }
+ button[ ButtonSticky ] =
+ new DeKoratorButton( isLeft, BTNSTICKYWIDTH, BTNSTICKYHEIGHT, this, "sticky", d ? i18n( "Sticky" ) : i18n( "Un-Sticky" ), ButtonSticky, btnType );
+ connect( button[ ButtonSticky ], SIGNAL( clicked() ),
+ this, SLOT( toggleOnAllDesktops() ) );
+ layout->addWidget( button[ ButtonSticky ] );
+ }
+ break;
+
+ case 'H':
+ // Help button
+ if ( ( !button[ ButtonHelp ] ) && providesContextHelp() )
+ {
+ button[ ButtonHelp ] =
+ new DeKoratorButton( isLeft, BTNHELPEWIDTH, BTNHELPEHEIGHT, this, "help", i18n( "Help" ),
+ ButtonHelp, help );
+ connect( button[ ButtonHelp ], SIGNAL( clicked() ),
+ this, SLOT( showContextHelp() ) );
+ layout->addWidget( button[ ButtonHelp ] );
+ }
+ break;
+
+ case 'I':
+ // Minimize button
+ if ( ( !button[ ButtonMin ] ) && isMinimizable() )
+ {
+ button[ ButtonMin ] =
+ new DeKoratorButton( isLeft, BTNMINWIDTH, BTNMINHEIGHT, this, "iconify", i18n( "Minimize" ), ButtonMin, min );
+ connect( button[ ButtonMin ], SIGNAL( clicked() ),
+ this, SLOT( minimize() ) );
+ layout->addWidget( button[ ButtonMin ] );
+ }
+ break;
+
+ case 'A':
+ // Maximize button
+ if ( ( !button[ ButtonMax ] ) && isMaximizable() )
+ {
+ bool m = ( maximizeMode() == MaximizeFull );
+ if ( m )
+ {
+ // pix1 = &( decoFactory_->buttonRestorePix_ );
+ // pix2 = &( decoFactory_->buttonRestorePressPix_ );
+ // pix3 = &( decoFactory_->buttonRestoreHoverPix_ );
+ // pix4 = &( decoFactory_->buttonRestorePixInAct_ );
+
+
+ btnType = restore;
+ }
+ else
+ {
+ // pix1 = &( decoFactory_->buttonMaxPix_ );
+ // pix2 = &( decoFactory_->buttonMaxPressPix_ );
+ // pix3 = &( decoFactory_->buttonMaxHoverPix_ );
+ // pix4 = &( decoFactory_->buttonMaxPixInAct_ );
+
+
+ btnType = max;
+ }
+ button[ ButtonMax ] =
+ new DeKoratorButton( isLeft, BTNMAXWIDTH, BTNMAXHEIGHT, this, "maximize", m ? i18n( "Restore" ) : i18n( "Maximize" ),
+ ButtonMax, btnType );
+ connect( button[ ButtonMax ], SIGNAL( clicked() ),
+ this, SLOT( maxButtonPressed() ) );
+ layout->addWidget( button[ ButtonMax ] );
+ }
+ break;
+
+ case 'X':
+ // Close button
+ if ( ( !button[ ButtonClose ] ) && isCloseable() )
+ {
+ button[ ButtonClose ] =
+ new DeKoratorButton( isLeft, BTNCLOSEWIDTH, BTNCLOSEHEIGHT, this, "close", i18n( "Close" ),
+ ButtonClose, close );
+ connect( button[ ButtonClose ], SIGNAL( clicked() ),
+ this, SLOT( closeWindow() ) );
+ layout->addWidget( button[ ButtonClose ] );
+ }
+ break;
+
+ case 'F':
+ // Above button
+ if ( ( !button[ ButtonAbove ] ) )
+ {
+ bool a = keepAbove();
+ if ( a )
+ {
+ btnType = abovedown;
+ }
+ else
+ {
+ btnType = above;
+ }
+ // pix1 = &( decoFactory_->buttonAbovePix_ );
+ button[ ButtonAbove ] =
+ new DeKoratorButton( isLeft, BTNABOVEWIDTH, BTNABOVEHEIGHT, this, "above",
+ i18n( "Keep Above Others" ), ButtonAbove, btnType );
+ connect( button[ ButtonAbove ], SIGNAL( clicked() ),
+ this, SLOT( aboveButtonPressed() ) );
+ layout->addWidget( button[ ButtonAbove ] );
+ }
+ break;
+
+ case 'B':
+ // Below button
+ if ( ( !button[ ButtonBelow ] ) )
+ {
+ bool b = keepBelow();
+ if ( b )
+ {
+ btnType = belowdown;
+ }
+ else
+ {
+ btnType = below;
+ }
+ // pix1 = &( decoFactory_->buttonBelowPix_ );
+ button[ ButtonBelow ] =
+ new DeKoratorButton( isLeft, BTNBELOWWIDTH, BTNBELOWHEIGHT, this, "below",
+ i18n( "Keep Below Others" ), ButtonBelow, btnType );
+ connect( button[ ButtonBelow ], SIGNAL( clicked() ),
+ this, SLOT( belowButtonPressed() ) );
+ layout->addWidget( button[ ButtonBelow ] );
+ }
+ break;
+
+ case 'L':
+ // Shade button
+ if ( ( !button[ ButtonShade && isShadeable() ] ) )
+ {
+ bool s = isSetShade();
+ if ( s )
+ {
+ btnType = shadedown;
+ }
+ else
+ {
+ btnType = shade;
+ }
+ button[ ButtonShade ] =
+ new DeKoratorButton( isLeft, BTNSHADEWIDTH, BTNSHADEHEIGHT, this, "shade", s ? i18n( "Unshade" ) : i18n( "Shade" ),
+ ButtonShade, btnType );
+ connect( button[ ButtonShade ], SIGNAL( clicked() ),
+ this, SLOT( shadeButtonPressed() ) );
+ layout->addWidget( button[ ButtonShade ] );
+ }
+ break;
+
+ case '_':
+ // Spacer item
+ layout->addSpacing( 3 );
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// activeChange()
+// --------------
+// window active state has changed
+void DeKoratorClient::activeChange()
+{
+ for ( int n = 0; n < ButtonTypeCount; n++ )
+ if ( button[ n ] )
+ button[ n ] ->reset();
+ widget() ->repaint( FALSE );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// captionChange()
+// ---------------
+// The title has changed
+void DeKoratorClient::captionChange()
+{
+ captionBufferDirty_ = true;
+ widget() ->repaint( titleBarSpacer_->geometry() );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// desktopChange()
+// ---------------
+// Called when desktop/sticky changes
+void DeKoratorClient::desktopChange()
+{
+ bool d = isOnAllDesktops();
+ buttonTypeAll btnType;
+
+ if ( d )
+ {
+ btnType = stickydown;
+ }
+ else
+ {
+ btnType = sticky;
+ }
+ if ( button[ ButtonSticky ] )
+ {
+ button[ ButtonSticky ] ->setPixmap( btnType );
+ QToolTip::remove
+ ( button[ ButtonSticky ] );
+ QToolTip::add
+ ( button[ ButtonSticky ], d ? i18n( "Sticky" ) : i18n( "Un-Sticky" ) );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// iconChange()
+// ------------
+// The title has changed
+void DeKoratorClient::iconChange()
+{
+ if ( !USEMENUEIMAGE && button[ ButtonMenu ] )
+ {
+ //button[ ButtonMenu ] ->setPixmap( 0 );
+ button[ ButtonMenu ] ->repaint( FALSE );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// maximizeChange()
+// ----------------
+// Maximized state has changed
+void DeKoratorClient::maximizeChange()
+{
+ bool m = ( maximizeMode() == MaximizeFull );
+ buttonTypeAll btnType;
+
+ if ( m )
+ {
+ btnType = restore;
+ }
+ else
+ {
+ btnType = max;
+ }
+ if ( button[ ButtonMax ] )
+ {
+ button[ ButtonMax ] ->setPixmap( btnType );
+ QToolTip::remove
+ ( button[ ButtonMax ] );
+ QToolTip::add
+ ( button[ ButtonMax ], m ? i18n( "Restore" ) : i18n( "Maximize" ) );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// shadeChange()
+// -------------
+// Called when window shading changes
+void DeKoratorClient::shadeChange()
+{
+ bool s = isSetShade();
+ buttonTypeAll btnType;
+
+ if ( s )
+ {
+ btnType = shadedown;
+ }
+ else
+ {
+ btnType = shade;
+ }
+ if ( button[ ButtonShade ] )
+ {
+ button[ ButtonShade ] ->setPixmap( btnType );
+ QToolTip::remove
+ ( button[ ButtonShade ] );
+ QToolTip::add
+ ( button[ ButtonShade ], s ? i18n( "Unshade" ) : i18n( "Shade" ) );
+ }
+
+ //mainlayout_->setRowSpacing( 3, isSetShade() ? 0 : MARGIN );
+ for ( int n = 0; n < ButtonTypeCount; n++ )
+ if ( button[ n ] )
+ button[ n ] ->reset();
+ widget() ->repaint( FALSE );
+
+ //mainlayout_->setRowSpacing( 3, isSetShade() ? 0 : MARGIN );
+ // if ( DeKoratorFactory::useMasks_ )
+ // doShape();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// keepAboveChange()
+// ------------
+// The above state has changed
+void DeKoratorClient::keepAboveChange( bool a )
+{
+ buttonTypeAll btnType;
+
+ if ( a )
+ {
+ btnType = abovedown;
+ }
+ else
+ {
+ btnType = above;
+ }
+ if ( button[ ButtonAbove ] )
+ {
+ button[ ButtonAbove ] ->setPixmap( btnType );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// keepBelowChange()
+// ------------
+// The below state has changed
+void DeKoratorClient::keepBelowChange( bool b )
+{
+ buttonTypeAll btnType;
+
+ if ( b )
+ {
+ btnType = belowdown;
+ }
+ else
+ {
+ btnType = below;
+ }
+ if ( button[ ButtonBelow ] )
+ {
+ button[ ButtonBelow ] ->setPixmap( btnType );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// borders()
+// ----------
+// Get the size of the borders
+void DeKoratorClient::borders( int & l, int & r, int & t, int & b ) const
+{
+ l = LEFTFRAMESIZE;
+ r = RIGHTFRAMESIZE;
+ t = TITLESIZE ;
+ // if ( SHOWBTMBORDER )
+ //b = 10;
+ // else
+ // b = isShade() ? 0 : BUTTOMFRAMESIZE;
+ //b = SHOWBTMBORDER ? BUTTOMFRAMESIZE : isShade() ? 1 : BUTTOMFRAMESIZE;
+ if ( !isShade() || SHOWBTMBORDER )
+ {
+ b = BUTTOMFRAMESIZE;
+ bottomSpacer_->changeSize( 1, BUTTOMFRAMESIZE, QSizePolicy::Expanding, QSizePolicy::Fixed );
+ }
+ else
+ {
+ b = 0;
+ bottomSpacer_->changeSize( 1, b, QSizePolicy::Expanding, QSizePolicy::Fixed );
+ }
+ widget() ->layout() ->activate();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// resize()
+// --------
+// Called to resize the window
+void DeKoratorClient::resize( const QSize & size )
+{
+ widget() ->resize( size );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// minimumSize()
+// -------------
+// Return the minimum allowable size for this window
+QSize DeKoratorClient::minimumSize() const
+{
+ QSize size = widget() ->minimumSize();
+ size.setWidth( size.width() + TOPLEFTCORNERWIDTH + TOPRIGHTCORNERWIDTH );
+
+ return size;
+
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mousePosition()
+// ---------------
+// Return logical mouse position
+KDecoration::Position DeKoratorClient::mousePosition( const QPoint & point ) const
+{
+ // bool res = TRUE;
+ Position pos;
+ if ( isShade() )
+ {
+ return PositionCenter;
+ }
+
+ if ( point.y() <= 5 )
+ {
+ // inside top frame
+ if ( point.x() <= LEFTFRAMESIZE )
+ pos = PositionTopLeft;
+ else if ( point.x() >= ( width() - RIGHTFRAMESIZE ) )
+ pos = PositionTopRight;
+ else
+ pos = PositionTop;
+ }
+ else if ( point.y() >= ( height() - BUTTOMFRAMESIZE ) )
+ {
+ // inside handle
+ if ( point.x() <= LEFTFRAMESIZE )
+ pos = PositionBottomLeft;
+ else if ( point.x() >= ( width() - RIGHTFRAMESIZE ) )
+ pos = PositionBottomRight;
+ else
+ pos = PositionBottom;
+ }
+ else if ( point.x() <= LEFTFRAMESIZE )
+ {
+ // on left frame
+ if ( point.y() <= TITLESIZE )
+ pos = PositionTopLeft;
+ else if ( point.y() >= ( height() - BUTTOMFRAMESIZE ) )
+ pos = PositionBottomLeft;
+ else
+ pos = PositionLeft;
+ }
+ else if ( point.x() >= width() - RIGHTFRAMESIZE )
+ {
+ // on right frame
+ if ( point.y() <= TITLESIZE )
+ pos = PositionTopRight;
+ else if ( point.y() >= ( height() - BUTTOMFRAMESIZE ) )
+ pos = PositionBottomRight;
+ else
+ pos = PositionRight;
+ }
+ else
+ {
+ // inside the frame
+ pos = PositionCenter;
+ }
+ return pos;
+
+ // const int corner = 24;
+ // Position pos;
+ //
+ // if (point.y() <= MARGIN) {
+ // // inside top frame
+ // if (point.x() <= corner) pos = PositionTopLeft;
+ // else if (point.x() >= (width()-corner)) pos = PositionTopRight;
+ // else pos = PositionTop;
+ // } else if (point.y() >= (height()-MARGIN*2)) {
+ // // inside handle
+ // if (point.x() <= corner) pos = PositionBottomLeft;
+ // else if (point.x() >= (width()-corner)) pos = PositionBottomRight;
+ // else pos = PositionBottom;
+ // } else if (point.x() <= MARGIN) {
+ // // on left frame
+ // if (point.y() <= corner) pos = PositionTopLeft;
+ // else if (point.y() >= (height()-corner)) pos = PositionBottomLeft;
+ // else pos = PositionLeft;
+ // } else if (point.x() >= width()-MARGIN) {
+ // // on right frame
+ // if (point.y() <= corner) pos = PositionTopRight;
+ // else if (point.y() >= (height()-corner)) pos = PositionBottomRight;
+ // else pos = PositionRight;
+ // } else {
+ // // inside the frame
+ // pos = PositionCenter;
+ // }
+ // return pos;
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// eventFilter()
+// -------------
+// Event filter
+bool DeKoratorClient::eventFilter( QObject * obj, QEvent * e )
+{
+ if ( obj != widget() )
+ return FALSE;
+
+ switch ( e->type() )
+ {
+
+ case QEvent::MouseButtonDblClick:
+ {
+ mouseDoubleClickEvent( static_cast<QMouseEvent *>( e ) );
+ return TRUE;
+ }
+ case QEvent::Wheel:
+ {
+ wheelEvent( static_cast<QWheelEvent *>( e ) );
+ return TRUE;
+ }
+ case QEvent::MouseButtonPress:
+ {
+ processMousePressEvent( static_cast<QMouseEvent *>( e ) );
+ if ( USEMASKS )
+ doShape();
+ return TRUE;
+ }
+ case QEvent::Paint:
+ {
+ paintEvent( static_cast<QPaintEvent *>( e ) );
+ return TRUE;
+ }
+ case QEvent::Resize:
+ {
+ resizeEvent( static_cast<QResizeEvent *>( e ) );
+ return TRUE;
+ }
+ case QEvent::Show:
+ {
+ showEvent( static_cast<QShowEvent *>( e ) );
+ return TRUE;
+ }
+ default:
+ {
+ return FALSE;
+ }
+ }
+
+ return FALSE;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mouseDoubleClickEvent()
+// -----------------------
+// Doubleclick on title
+void DeKoratorClient::mouseDoubleClickEvent( QMouseEvent * e )
+{
+ if ( titleBarSpacer_->geometry().contains( e->pos() ) )
+ titlebarDblClickOperation();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// wheelEvent()
+// -----------------------
+//
+void DeKoratorClient::wheelEvent( QWheelEvent *e )
+{
+ if ( titleLayout_->geometry().contains( e->pos() ) )
+ titlebarMouseWheelOperation( e->delta() );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// paintEvent()
+// ------------
+// Repaint the window
+void DeKoratorClient::paintEvent( QPaintEvent* )
+{
+ if ( !DeKoratorFactory::initialized() )
+ return ;
+ if ( TITLESIZE )
+ {
+ if ( captionBufferDirty_ && USESHDTEXT )
+ updateCaptionBuffer();
+
+ QPainter painter( widget() );
+ int tx, ty, tw, th;
+ int w = width() , h = height();
+ QRect titleR( titleBarSpacer_->geometry() );
+ QRect leftTitleR( leftTitleBarSpacer_->geometry() );
+ QRect rightTitleR( rightTitleBarSpacer_->geometry() );
+ titleR.rect( &tx, &ty, &tw, &th );
+ QRect rect;
+
+ QPainter painter2;
+ QPixmap pix( w, TITLESIZE );
+ painter2.begin( &pix );
+ {
+ // topLeftCorner
+
+ rect.setRect( 0, 0, TOPLEFTCORNERWIDTH, TITLESIZE );
+ painter2.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ topLeftCorner ] ) : *( DECOPIXINACTARR[ topLeftCorner ] ) );
+
+ // rect.setRect( 0, 0, TOPLEFTCORNERWIDTH, TITLESIZE );
+ // painter2.drawTiledPixmap( rect, isActive() ? decoFactory_->topLeftCornerBg_ : decoFactory_->topLeftCornerBgInAct_ );
+
+ // Space under the left button group
+ painter2.drawTiledPixmap( leftTitleR.right() + 1, titleR.top(),
+ ( titleR.left() - 1 ) - leftTitleR.right(), titleR.height(), isActive() ? *( DECOPIXACTARR[ leftButtons ] ) : *( DECOPIXINACTARR[ leftButtons ] ) );
+
+ if ( tw > 0 )
+ {
+ //qWarning("%d",titleR.width());
+
+ //leftTitleR
+ rect.setRect( tx, 0, QMIN( LEFTTITLEWIDTH, tw ), TITLESIZE );
+
+ painter2.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ leftTitle ] ) : *( DECOPIXINACTARR[ leftTitle ] ) );
+
+ // rect.setRect( tx, 0, QMIN( LEFTTITLEWIDTH, tw ), TITLESIZE );
+ // painter2.drawTiledPixmap( rect, isActive() ? decoFactory_->leftTitleBg_ : decoFactory_->leftTitleBgInAct_ );
+
+ //midTitle
+ if ( tw > LEFTTITLEWIDTH + RIGHTTITLEWIDTH )
+ {
+ rect.setRect( tx + LEFTTITLEWIDTH, 0, tw - ( RIGHTTITLEWIDTH + LEFTTITLEWIDTH ), th );
+
+ painter2.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ midTitle ] ) : *( DECOPIXINACTARR[ midTitle ] ) );
+
+ // painter2.drawTiledPixmap( rect, isActive() ? decoFactory_->midTitleBg_ : decoFactory_->midTitleBgInAct_ );
+ }
+
+ //rightTitleR
+ if ( tw > LEFTTITLEWIDTH )
+ {
+ rect.setRect( QMAX( tx + tw - RIGHTTITLEWIDTH, tx + LEFTTITLEWIDTH ), 0, QMIN( RIGHTTITLEWIDTH, tw - LEFTTITLEWIDTH ), th );
+
+ painter2.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? *( DECOPIXACTARR[ rightTitle ] ) : *( DECOPIXINACTARR[ rightTitle ] ), ( tw > LEFTTITLEWIDTH + RIGHTTITLEWIDTH ) ? 0 : LEFTTITLEWIDTH - ( tw - RIGHTTITLEWIDTH ), 0 );
+
+ // painter2.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? decoFactory_->rightTitleBg_ : decoFactory_->rightTitleBgInAct_, ( tw > LEFTTITLEWIDTH + RIGHTTITLEWIDTH ) ? 0 : LEFTTITLEWIDTH - ( tw - RIGHTTITLEWIDTH ), 0 );
+ }
+ }
+
+ // Space under the right button group
+ painter2.drawTiledPixmap( titleR.right() + 1, titleR.top(),
+ ( rightTitleR.left() - 1 ) - titleR.right(), titleR.height(), isActive() ? *( DECOPIXACTARR[ rightButtons ] ) : *( DECOPIXINACTARR[ rightButtons ] ) );
+
+
+ //topRightCorner
+ rect.setRect( widget() ->width() - TOPRIGHTCORNERWIDTH, 0, TOPRIGHTCORNERWIDTH, TITLESIZE );
+
+ painter2.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ topRightCorner ] ) : *( DECOPIXINACTARR[ topRightCorner ] ) );
+
+ // painter2.drawTiledPixmap( rect, isActive() ? decoFactory_->topRightCornerBg_ : decoFactory_->topRightCornerBgInAct_ );
+
+
+ QString c( caption() );
+ QFontMetrics fm( options() ->font( isActive() ) );
+ int captionWidth = fm.width( c );
+ // shadow text effect
+ if ( USESHDTEXT )
+ {
+
+ int captionHeight = fm.height( );
+ int dx = 0, dy = 0;
+
+ if ( TITLEALIGN == Qt::AlignLeft || captionWidth > titleR.width() )
+ {
+ dx = tx + 1 + ( isActive() ? ACTIVESHDTEXTX : INACTIVESHDTEXTX ) ;
+ dy = ( TITLESIZE / 2 ) - ( captionHeight / 2 ) + ( isActive() ? ACTIVESHDTEXTY : INACTIVESHDTEXTY ) ;
+ }
+ else if ( TITLEALIGN == Qt::AlignHCenter )
+ {
+ dx = tx + ( tw / 2 ) - ( ( captionWidth + ( MARGIN * 2 ) ) / 2 ) + ( isActive() ? ACTIVESHDTEXTX : INACTIVESHDTEXTX ) ;
+ dy = ( TITLESIZE / 2 ) - ( captionHeight / 2 ) + ( isActive() ? ACTIVESHDTEXTY : INACTIVESHDTEXTY ) ;
+ }
+ else if ( TITLEALIGN == Qt::AlignRight )
+ {
+ dx = tx + tw - ( captionWidth + ( MARGIN * 2 ) ) - 1 + ( isActive() ? ACTIVESHDTEXTX : INACTIVESHDTEXTX ) ;
+ dy = ( TITLESIZE / 2 ) - ( captionHeight / 2 ) + ( isActive() ? ACTIVESHDTEXTY : INACTIVESHDTEXTY ) ;
+ }
+
+ painter2.drawImage( dx, dy, isActive() ? activeShadowImg_ : inActiveShadowImg_, 0, 0, isActive() ? QMIN( activeShadowImg_.width(), titleR.width() ) : QMIN( inActiveShadowImg_.width(), titleR.width() ), isActive() ? activeShadowImg_.height() : inActiveShadowImg_.height() );
+ }
+
+
+ //draw titleR text
+ painter2.setFont( options() ->font( isActive(), FALSE ) );
+ painter2.setPen( options() ->color( KDecoration::ColorFont, isActive() ) );
+
+ Qt::AlignmentFlags titleAlignBak = TITLEALIGN;
+ if ( captionWidth > titleR.width() )
+ titleAlignBak = Qt::AlignLeft;
+
+ painter2.drawText( tx + MARGIN, ty, tw - ( MARGIN * 2 ), th, titleAlignBak | AlignVCenter, caption() );
+ }
+ painter2.end();
+ painter.drawPixmap( 0, 0, pix );
+
+
+ // draw frames
+ if ( ! isShade() || SHOWBTMBORDER )
+ {
+
+ if ( h - TITLESIZE - BUTTOMFRAMESIZE > 0 )
+ {
+ int leftRightFramesHeight = h - TITLESIZE - BUTTOMFRAMESIZE ;
+
+ //left frame
+ //top
+ rect.setRect( 0, TITLESIZE , LEFTFRAMESIZE, QMIN( TOPLEFTFRAMEHEIGHT, leftRightFramesHeight ) );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ topLeftFrame ] ) : *( DECOPIXINACTARR[ topLeftFrame ] ) );
+
+ // mid
+ if ( leftRightFramesHeight > TOPLEFTFRAMEHEIGHT + BOTTOMLEFTFRAMEHEIGHT )
+ {
+ rect.setRect( 0, TITLESIZE + TOPLEFTFRAMEHEIGHT , LEFTFRAMESIZE, leftRightFramesHeight - TOPLEFTFRAMEHEIGHT - BOTTOMLEFTFRAMEHEIGHT );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ midLeftFrame ] ) : *( DECOPIXINACTARR[ midLeftFrame ] ) );
+
+ // painter.drawTiledPixmap( rect, isActive() ? decoFactory_->midLeftFrameBg_ : decoFactory_->midLeftFrameBgInAct_ );
+ }
+
+ // buttom
+ if ( leftRightFramesHeight > TOPLEFTFRAMEHEIGHT )
+ {
+ rect.setRect( 0, QMAX( h - BUTTOMFRAMESIZE - BOTTOMLEFTFRAMEHEIGHT, TITLESIZE + TOPLEFTFRAMEHEIGHT ) , LEFTFRAMESIZE, QMIN( BOTTOMLEFTFRAMEHEIGHT, leftRightFramesHeight - TOPLEFTFRAMEHEIGHT ) );
+
+ painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? *( DECOPIXACTARR[ buttomLeftFrame ] ) : *( DECOPIXINACTARR[ buttomLeftFrame ] ), 0, ( leftRightFramesHeight > TOPLEFTFRAMEHEIGHT + BOTTOMLEFTFRAMEHEIGHT ) ? 0 : TITLESIZE + TOPLEFTFRAMEHEIGHT - ( h - BUTTOMFRAMESIZE - BOTTOMLEFTFRAMEHEIGHT ) );
+
+ // painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? decoFactory_->buttomLeftFrameBg_ : decoFactory_->buttomLeftFrameBgInAct_, 0, ( leftRightFramesHeight > TOPLEFTFRAMEHEIGHT + BOTTOMLEFTFRAMEHEIGHT ) ? 0 : TITLESIZE + TOPLEFTFRAMEHEIGHT - ( h - BUTTOMFRAMESIZE - BOTTOMLEFTFRAMEHEIGHT ) );
+ }
+
+
+ //rightFrame
+ // top
+ rect.setRect( w - RIGHTFRAMESIZE, TITLESIZE , RIGHTFRAMESIZE, QMIN( TOPRIGHTFRAMEHEIGHT, leftRightFramesHeight ) );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ topRightFrame ] ) : *( DECOPIXINACTARR[ topRightFrame ] ) );
+
+ // painter.drawTiledPixmap( rect, isActive() ? decoFactory_->topRightFrameBg_ : decoFactory_->topRightFrameBgInAct_ );
+
+ // mid
+ if ( leftRightFramesHeight > TOPRIGHTFRAMEHEIGHT + BOTTOMRIGHTFRAMEHEIGHT )
+ {
+ rect.setRect( w - RIGHTFRAMESIZE, TITLESIZE + TOPRIGHTFRAMEHEIGHT, RIGHTFRAMESIZE, leftRightFramesHeight - TOPRIGHTFRAMEHEIGHT - BOTTOMRIGHTFRAMEHEIGHT );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ midRightFrame ] ) : *( DECOPIXINACTARR[ midRightFrame ] ) );
+
+ // painter.drawTiledPixmap( rect, isActive() ? decoFactory_->midRightFrameBg_ : decoFactory_->rightFrameBgInAct_ );
+ }
+
+ // bottom
+ if ( leftRightFramesHeight > TOPRIGHTFRAMEHEIGHT )
+ {
+ rect.setRect( w - RIGHTFRAMESIZE, QMAX( h - BUTTOMFRAMESIZE - BOTTOMRIGHTFRAMEHEIGHT, TITLESIZE + TOPRIGHTFRAMEHEIGHT ) , RIGHTFRAMESIZE, QMIN( BOTTOMRIGHTFRAMEHEIGHT, leftRightFramesHeight - TOPRIGHTFRAMEHEIGHT ) );
+
+ painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? *( DECOPIXACTARR[ buttomRightFrame ] ) : *( DECOPIXINACTARR[ buttomRightFrame ] ), 0, ( leftRightFramesHeight > TOPRIGHTFRAMEHEIGHT + BOTTOMRIGHTFRAMEHEIGHT ) ? 0 : TITLESIZE + TOPRIGHTFRAMEHEIGHT - ( h - BUTTOMFRAMESIZE - BOTTOMRIGHTFRAMEHEIGHT ) );
+
+ // painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? decoFactory_->buttomRightFrameBg_ : decoFactory_->buttomRightFrameBgInAct_, 0, ( leftRightFramesHeight > TOPRIGHTFRAMEHEIGHT + BOTTOMRIGHTFRAMEHEIGHT ) ? 0 : TITLESIZE + TOPRIGHTFRAMEHEIGHT - ( h - BUTTOMFRAMESIZE - BOTTOMRIGHTFRAMEHEIGHT ) );
+ }
+ }
+
+
+ // buttom frame
+ if ( w > 0 )
+ { // left
+ rect.setRect( 0 , h - BUTTOMFRAMESIZE, QMIN( LEFTBOTTOMFRAMEWIDTH, w ) , BUTTOMFRAMESIZE );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ leftButtomFrame ] ) : *( DECOPIXINACTARR[ leftButtomFrame ] ) );
+
+ // mid
+ if ( w > LEFTBOTTOMFRAMEWIDTH + RIGHTBOTTOMFRAMEWIDTH )
+ {
+ rect.setRect( LEFTBOTTOMFRAMEWIDTH , h - BUTTOMFRAMESIZE, w - LEFTBOTTOMFRAMEWIDTH - RIGHTBOTTOMFRAMEWIDTH, BUTTOMFRAMESIZE );
+
+ painter.drawTiledPixmap( rect, isActive() ? *( DECOPIXACTARR[ midButtomFrame ] ) : *( DECOPIXINACTARR[ midButtomFrame ] ) );
+
+ // painter.drawTiledPixmap( rect, isActive() ? decoFactory_->midButtomFrameBg_ : decoFactory_->midButtomFrameBgInAct_ );
+ }
+
+ // right
+ if ( w > LEFTBOTTOMFRAMEWIDTH )
+ {
+ rect.setRect( QMAX( w - RIGHTBOTTOMFRAMEWIDTH, LEFTBOTTOMFRAMEWIDTH ) , h - BUTTOMFRAMESIZE, QMIN( RIGHTBOTTOMFRAMEWIDTH, w - LEFTBOTTOMFRAMEWIDTH ) , BUTTOMFRAMESIZE );
+
+ painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? *( DECOPIXACTARR[ rightButtomFrame ] ) : *( DECOPIXINACTARR[ rightButtomFrame ] ), ( w > LEFTBOTTOMFRAMEWIDTH + RIGHTBOTTOMFRAMEWIDTH ) ? 0 : LEFTBOTTOMFRAMEWIDTH - ( w - RIGHTBOTTOMFRAMEWIDTH ), 0 );
+
+ // painter.drawTiledPixmap( rect.x(), rect.y(), rect.width(), rect.height(), isActive() ? decoFactory_->rightButtomFrameBg_ : decoFactory_->rightButtomFrameBgInAct_, ( w > LEFTBOTTOMFRAMEWIDTH + RIGHTBOTTOMFRAMEWIDTH ) ? 0 : LEFTBOTTOMFRAMEWIDTH - ( w - RIGHTBOTTOMFRAMEWIDTH ), 0 );
+ }
+ }
+ }
+ else
+ {
+ painter.setPen( QColor( 70, 70, 70 ) );
+ painter.drawLine( 0 , h - 1, w, h - 1 );
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// update_captionBuffer()
+// ------------
+//
+void DeKoratorClient::updateCaptionBuffer()
+{
+ if ( !DeKoratorFactory::initialized() )
+ return ;
+
+ QPainter painter;
+ QString c( caption() );
+ QFontMetrics fm( options() ->font( isActive() ) );
+ int captionWidth = fm.width( c );
+ int captionHeight = fm.height( );
+ QPixmap textPixmap;
+
+ // prepare the shadow
+ textPixmap = QPixmap( captionWidth + ( MARGIN * 2 ) , captionHeight ); // 2*2 px shadow space
+ textPixmap.fill( QColor( 0, 0, 0 ) );
+ textPixmap.setMask( textPixmap.createHeuristicMask( TRUE ) );
+ painter.begin( &textPixmap );
+ painter.setFont( options() ->font( isActive(), FALSE ) );
+ painter.setPen( white );
+ painter.drawText( textPixmap.rect(), AlignCenter, caption() );
+ painter.end();
+
+
+ ShadowEngine se;
+ //if ( isActive() )
+ activeShadowImg_ = se.makeShadow( textPixmap, ACTIVESHADECOLOR );
+ //else
+ inActiveShadowImg_ = se.makeShadow( textPixmap, INACTIVESHADECOLOR );
+
+ captionBufferDirty_ = false;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// resizeEvent()
+// -------------
+// Window is being resized
+void DeKoratorClient::resizeEvent( QResizeEvent *e )
+{
+ if ( widget() ->isShown() )
+ {
+ QRegion region = widget() ->rect();
+ region = region.subtract( titleBarSpacer_->geometry() );
+ widget() ->erase( region );
+ }
+ if ( USEMASKS )
+ {
+
+ if ( oldSize_ != e->size() )
+ {
+ //qWarning("QResizeEvent");
+ sizeChanged = true;
+ }
+ else
+ sizeChanged = false;
+
+ oldSize_ = e->size();
+
+ // if(e->type() == QEvent::Resize)
+ // {
+ //
+ // //oldSize((QResizeEvent*)e)->size());
+ // qWarning( "resizeEvent" );
+ // }
+
+ // maskDirty_ = true;
+ doShape();
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// showEvent()
+// -----------
+// Window is being shown
+void DeKoratorClient::showEvent( QShowEvent * )
+{
+ widget() ->repaint();
+ if ( USEMASKS )
+ doShape();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// maxButtonPressed()
+// -----------------
+// Max button was pressed
+void DeKoratorClient::maxButtonPressed()
+{
+ if ( button[ ButtonMax ] )
+ {
+#if KDE_IS_VERSION(3, 3, 0)
+ maximize( button[ ButtonMax ] ->lastMousePress() );
+#else
+
+ switch ( button[ ButtonMax ] ->lastMousePress() )
+ {
+ case MidButton:
+ maximize( maximizeMode() ^ MaximizeVertical );
+ break;
+ case RightButton:
+ maximize( maximizeMode() ^ MaximizeHorizontal );
+ break;
+ default:
+ ( maximizeMode() == MaximizeFull ) ? maximize( MaximizeRestore )
+ : maximize( MaximizeFull );
+ }
+#endif
+
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// shadeButtonPressed()
+// -----------------
+// Shade button was pressed
+void DeKoratorClient::shadeButtonPressed()
+{
+ if ( button[ ButtonShade ] )
+ {
+ setShade( !isSetShade() );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// aboveButtonPressed()
+// -----------------
+// Above button was pressed
+void DeKoratorClient::aboveButtonPressed()
+{
+ if ( button[ ButtonAbove ] )
+ {
+ setKeepAbove( !keepAbove() );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// belowButtonPressed()
+// -----------------
+// Below buttQt::green; //on was pressed
+void DeKoratorClient::belowButtonPressed()
+{
+ if ( button[ ButtonBelow ] )
+ {
+ setKeepBelow( !keepBelow() );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// menuButtonPressed()
+// -------------------
+// Menu button was pressed (popup the menu)
+void DeKoratorClient::menuButtonPressed()
+{
+ // if ( button[ ButtonMenu ] )
+ // {
+ // QPoint p( button[ ButtonMenu ] ->rect().bottomLeft().x(),
+ // button[ ButtonMenu ] ->rect().bottomLeft().y() );
+ // KDecorationFactory* f = factory();
+ // showWindowMenu( button[ ButtonMenu ] ->mapToGlobal( p ) );
+ // if ( !f->exists( this ) ) return ; // decoration was destroyed
+ // button[ ButtonMenu ] ->setDown( FALSE );
+ // }
+
+ static QTime * t = NULL;
+ static DeKoratorClient* lastClient = NULL;
+ if ( t == NULL )
+ t = new QTime;
+ bool dbl = ( lastClient == this && t->elapsed() <= QApplication::doubleClickInterval() );
+ lastClient = this;
+ t->start();
+ if ( !dbl || !DBLCLKCLOSE )
+ {
+ QPoint p( button[ ButtonMenu ] ->rect().bottomLeft().x(),
+ button[ ButtonMenu ] ->rect().bottomLeft().y() );
+ KDecorationFactory* f = factory();
+ showWindowMenu( button[ ButtonMenu ] ->mapToGlobal( p ) );
+ if ( !f->exists( this ) )
+ return ; // decoration was destroyed
+ button[ ButtonMenu ] ->setDown( FALSE );
+ }
+ else
+ closing_ = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// menuButtonReleased()
+// -------------------
+//
+void DeKoratorClient::menuButtonReleased()
+{
+ if ( closing_ )
+ closeWindow();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// doShape()
+// -------------------
+//
+void DeKoratorClient::doShape()
+{
+ int w = width();
+ int h = height();
+ QRegion mask( 0, 0, w, h );
+
+ if ( sizeChanged )
+ {
+ //qWarning("doShape");
+
+ // top left
+ QRegion mtr;
+ QRegion m = QRegion( decoFactory_->topLeftCornerBitmap_ );
+ mask -= QRegion( m );
+
+
+ // top mid
+ if ( TOPMIDMASKWIDTH >= 1 )
+ {
+ int pos = TOPLEFTMASKWIDTH;
+ int rep = ( w - TOPLEFTMASKWIDTH - TOPRIGHTMASKWIDTH ) / TOPMIDMASKWIDTH;
+ m = QRegion( decoFactory_->topMidBitmap_ );
+ QRegion mBak = m;
+
+ for ( int i = 0 ; i < rep ; i++ )
+ {
+ m = mBak;
+ m.translate( TOPLEFTMASKWIDTH + ( i * TOPMIDMASKWIDTH ), 0 );
+ mask -= QRegion( m );
+ pos += TOPMIDMASKWIDTH;
+ }
+
+ m = mBak;
+ mtr = mBak;
+ mtr.translate( w - pos - TOPRIGHTMASKWIDTH, 0 );
+ m -= mtr;
+ m.translate( pos, 0 );
+ mask -= m;
+ }
+
+ {
+ //top right
+ m = QRegion( decoFactory_->topRightCornerBitmap_ );
+ m.translate( width() - TOPRIGHTMASKWIDTH, 0 );
+ mask -= QRegion( m );
+ }
+
+
+ if ( !isShade() || SHOWBTMBORDER )
+ {
+ //buttom left
+ m = QRegion( decoFactory_->buttomLeftCornerBitmap_ );
+ m.translate( 0, h - BOTTOMLEFTMASKHEIGHT );
+ mask -= QRegion( m );
+
+ // bottom mid
+ if ( BOTTOMMIDMASKWIDTH >= 1 )
+ {
+ int pos = BOTTOMLEFTMASKWIDTH;
+ int rep = ( w - BOTTOMLEFTMASKWIDTH - BOTTOMRIGHTMASKWIDTH ) / BOTTOMMIDMASKWIDTH;
+ int hm = h - BOTTOMMIDMASKHEIGHT;
+ m = QRegion( decoFactory_->buttomMidBitmap_ );
+ QRegion mBak = m;
+
+ for ( int i = 0 ; i < rep ; i++ )
+ {
+ m = mBak;
+ m.translate( BOTTOMLEFTMASKWIDTH + ( i * BOTTOMMIDMASKWIDTH ), hm );
+ mask -= QRegion( m );
+ pos += BOTTOMMIDMASKWIDTH;
+ }
+
+ m = mBak;
+ mtr = mBak;
+ mtr.translate( w - pos - BOTTOMRIGHTMASKWIDTH, 0 );
+ m -= mtr;
+ m.translate( pos, hm );
+ mask -= m;
+ }
+
+ //buttom right
+ m = QRegion( decoFactory_->buttomRightCornerBitmap_ );
+ m.translate( width() - BOTTOMRIGHTMASKWIDTH, h - BOTTOMRIGHTMASKHEIGHT );
+ mask -= QRegion( m );
+ }
+ mask_ = mask;
+ }
+
+ setMask( mask_ );
+}
+
+
+#include "deKoratorclient.moc"
diff --git a/client/deKoratorclient.h b/client/deKoratorclient.h
new file mode 100644
index 0000000..b8c7c28
--- /dev/null
+++ b/client/deKoratorclient.h
@@ -0,0 +1,322 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+
+#ifndef DEKORATORCLIENT_H
+#define DEKORATORCLIENT_H
+
+#include <qbutton.h>
+#include <qbitmap.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpainter.h>
+#include <qtooltip.h>
+#include <qpixmap.h>
+#include <qapplication.h>
+#include <qtimer.h>
+#include <qcursor.h>
+
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+#include <kconfig.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kiconeffect.h>
+#include <kimageeffect.h>
+
+#include "shadow.h"
+
+class QSpacerItem;
+class QPoint;
+
+namespace DeKorator
+{
+
+class DeKoratorClient;
+
+enum decoType {
+ topLeftCorner = 0,
+ leftButtons,
+ leftTitle,
+ midTitle,
+ rightTitle,
+ rightButtons,
+ topRightCorner,
+ topLeftFrame,
+ midLeftFrame,
+ buttomLeftFrame,
+ leftButtomFrame,
+ midButtomFrame,
+ rightButtomFrame,
+ topRightFrame,
+ midRightFrame,
+ buttomRightFrame,
+ decoCount
+};
+
+enum buttonTypeAll {
+ restore = 0,
+ help,
+ max,
+ min,
+ close,
+ sticky,
+ stickydown,
+ above,
+ abovedown,
+ below,
+ belowdown,
+ shade,
+ shadedown,
+ menu,
+ buttonTypeAllCount
+};
+
+enum ButtonType {
+ ButtonHelp = 0,
+ ButtonMax,
+ ButtonMin,
+ ButtonClose,
+ ButtonMenu,
+ ButtonSticky,
+ ButtonAbove,
+ ButtonBelow,
+ ButtonShade,
+ ButtonTypeCount
+};
+
+enum pixType {
+ normal = 0,
+ actCol,
+ inActCol,
+ orig,
+ pixTypeCount
+};
+
+enum buttonState {
+ regular = 0,
+ hover,
+ press,
+ buttonStateCount
+};
+
+// DeKoratorFactory /////////////////////////////////////////////////////////////
+
+class DeKoratorFactory: public KDecorationFactory
+{
+public:
+ DeKoratorFactory();
+ virtual ~DeKoratorFactory();
+ virtual KDecoration *createDecoration( KDecorationBridge *b );
+ virtual bool reset( unsigned long changed );
+ static void colorizePixmap( QPixmap *pix, QColor col, QString colorizeMethod );
+ static bool initialized();
+ QBitmap topLeftCornerBitmap_, topMidBitmap_, topRightCornerBitmap_, buttomLeftCornerBitmap_, buttomMidBitmap_, buttomRightCornerBitmap_;
+
+private:
+ bool readConfig();
+ void loadPixmaps();
+ void colorizeDecoPixmaps( bool isActive );
+ void colorizeButtonsPixmaps( bool isActive );
+ void initPixmaps();
+ void chooseRightPixmaps();
+ void determineSizes();
+ void prepareDecoWithBgCol();
+
+private:
+
+ static bool colorizeActFrames_;
+ static bool colorizeInActFrames_;
+ static bool needInit_;
+ static bool needReload_;
+ static QString framesPath_;
+ static QString buttonsPath_;
+ static QString masksPath_;
+public:
+ static bool initialized_;
+ static bool useCustomButtonsColors_;
+ static bool customColorsActiveButtons_;
+ static bool customColorsInActiveButtons_;
+ static bool colorizeActButtons_;
+ static bool colorizeInActButtons_;
+ static QColor cusBtnCol_[ buttonTypeAllCount ];
+};
+
+inline bool DeKoratorFactory::initialized()
+{
+ return initialized_;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+// DeKoratorButton //////////////////////////////////////////////////////////////
+
+class DeKoratorButton : public QButton
+{
+ Q_OBJECT
+public:
+ DeKoratorButton( bool isLeft, int buttonWidth, int buttonHeight, DeKoratorClient *parent = 0, const char *name = 0,
+ const QString &tip = NULL, ButtonType type = ButtonHelp, buttonTypeAll btnType = restore );
+ ~DeKoratorButton();
+
+ void setPixmap( buttonTypeAll btnType );
+ QSize sizeHint() const;
+ ButtonState lastMousePress() const;
+ void reset();
+
+protected slots:
+ void animate();
+
+private:
+ void enterEvent( QEvent *e );
+ void leaveEvent( QEvent *e );
+ void mousePressEvent( QMouseEvent *e );
+ void mouseReleaseEvent( QMouseEvent *e );
+ void drawButton( QPainter *painter );
+ QImage* chooseRightHoverEffect( QImage *img, QString res );
+
+private:
+ bool isLeft_;
+ int buttonWidth_;
+ DeKoratorClient *client_;
+ ButtonType type_;
+ //QPixmap *decoPix_, *decoPixPress_, *decoPixHover_, *decoPixInAct_;
+ ButtonState lastmouse_;
+ int decoPixHeight_;
+ bool hover_;
+ QTimer *animTmr;
+ uint animProgress;
+ QPixmap *btnPixAct_, *btnPixInAct_;
+ buttonTypeAll btnType_;
+int s;
+};
+
+inline Qt::ButtonState DeKoratorButton::lastMousePress() const
+{
+ return lastmouse_;
+}
+
+inline void DeKoratorButton::reset()
+{
+ repaint( FALSE );
+}
+
+
+
+
+
+
+
+
+
+
+
+
+// DeKoratorClient //////////////////////////////////////////////////////////////
+
+class DeKoratorClient : public KDecoration
+{
+ Q_OBJECT
+public:
+ DeKoratorClient( KDecorationBridge *b, KDecorationFactory *f );
+ virtual ~DeKoratorClient();
+
+ virtual void init();
+
+ virtual void activeChange();
+ virtual void desktopChange();
+ virtual void captionChange();
+ virtual void iconChange();
+ virtual void maximizeChange();
+ virtual void shadeChange();
+
+ virtual void borders( int &l, int &r, int &t, int &b ) const;
+ virtual void resize( const QSize &size );
+ virtual QSize minimumSize() const;
+ virtual Position mousePosition( const QPoint &point ) const;
+
+private:
+ void addButtons( QBoxLayout* layout, const QString& buttons, bool isLeft );
+
+ bool eventFilter( QObject *obj, QEvent *e );
+ void mouseDoubleClickEvent( QMouseEvent *e );
+ void wheelEvent( QWheelEvent *e );
+ void paintEvent( QPaintEvent *e );
+ void resizeEvent( QResizeEvent * );
+ void showEvent( QShowEvent * );
+ void doShape();
+ void updateCaptionBuffer();
+
+
+private slots:
+ void maxButtonPressed();
+ void menuButtonPressed();
+ void aboveButtonPressed();
+ void belowButtonPressed();
+ void shadeButtonPressed();
+ void keepAboveChange( bool );
+ void keepBelowChange( bool );
+ void menuButtonReleased();
+
+private:
+ DeKoratorButton *button[ ButtonTypeCount ];
+ QVBoxLayout *mainLayout_;
+ QHBoxLayout *titleLayout_ ;
+ QHBoxLayout *midLayout_;
+ QSpacerItem *leftTitleBarSpacer_, *titleBarSpacer_, *rightTitleBarSpacer_, *leftSpacer_, *rightSpacer_, *bottomSpacer_;
+ bool closing_;
+ QPixmap *captionBufferPix_;
+ bool captionBufferDirty_;
+ QImage activeShadowImg_, inActiveShadowImg_;
+ QRegion mask_;
+ bool sizeChanged;
+ QSize oldSize_;
+public:
+ DeKoratorFactory *decoFactory_;
+};
+
+
+} // namespace DeKorator
+
+#endif // DEKORATORCLIENT_H
diff --git a/client/shadow.cpp b/client/shadow.cpp
new file mode 100644
index 0000000..d17c936
--- /dev/null
+++ b/client/shadow.cpp
@@ -0,0 +1,129 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#include "shadow.h"
+#include <qcolor.h>
+
+ShadowEngine::ShadowEngine()
+{
+ thickness_ = 1;
+ multiplicationFactor_ = 10.0;
+}
+
+ShadowEngine::~ShadowEngine()
+{
+}
+
+QImage ShadowEngine::makeShadow(const QPixmap& textPixmap, const QColor &bgColor)
+{
+ QImage result;
+
+ // create a new image for for the shaddow
+ int w = textPixmap.width();
+ int h = textPixmap.height();
+
+ // avoid calling these methods for every pixel
+ int bgRed = bgColor.red();
+ int bgGreen = bgColor.green();
+ int bgBlue = bgColor.blue();
+
+ double alphaShadow;
+
+ /*
+ * This is the source pixmap
+ */
+ QImage img = textPixmap.convertToImage().convertDepth(32);
+
+ /*
+ * Resize the image if necessary
+ */
+ if ((result.width() != w) || (result.height() != h))
+ {
+ result.create(w, h, 32);
+ }
+
+ result.fill(0); // all black
+ result.setAlphaBuffer(true);
+
+ for (int i = thickness_; i < w - thickness_; i++)
+ {
+ for (int j = thickness_; j < h - thickness_; j++)
+ {
+ alphaShadow = decay(img, i, j);
+ alphaShadow = (alphaShadow > 180.0) ? 180.0 : alphaShadow;
+ // update the shadow's i,j pixel.
+ result.setPixel(i,j, qRgba(bgRed, bgGreen , bgBlue, (int) alphaShadow));
+ }
+ }
+ return result;
+}
+
+double ShadowEngine::decay(QImage& source, int i, int j)
+{
+ // create a new image for the shadow
+ int w = source.width();
+ int h = source.height();
+ int sx, sy;
+
+ double alphaShadow = 0;
+ double opacity = 0;
+ for (int k = 1; k <= thickness_; k++) {
+ /* Generate a shadow thickness_ pixels thicker
+ * on either side than the text image. Ensure
+ * that i +/- k and j +/- k are within the
+ * bounds of the text pixmap.
+ */
+ opacity = 0;
+ for (int l = -k; l <= k; l++) {
+ if (i < k)
+ sx = 0;
+ else if (i >= w - k)
+ sx = w - 1;
+ else
+ sx = i + l;
+
+ for (int m = -k; m <= k; m++) {
+ if (j < k)
+ sy = 0;
+ else if (j >= h - k)
+ sy = h - 1;
+ else
+ sy = j + m;
+
+ opacity += qGray(source.pixel(sx, sy));
+ }
+ }
+ alphaShadow += opacity / multiplicationFactor_;
+ }
+ return alphaShadow;
+}
diff --git a/client/shadow.h b/client/shadow.h
new file mode 100644
index 0000000..75d76f4
--- /dev/null
+++ b/client/shadow.h
@@ -0,0 +1,56 @@
+///////////////////////////////////////////////////////////////////////
+// -------------------
+// DeKorator window decoration for KDE
+// -------------------
+// Copyright (C) 2005 moty rahamim <[email protected]>
+//
+// Based on Example-0.8, some ideas and code have been taken from plastik and KCMicons
+//
+// Example window decoration for KDE
+// Copyright (c) 2003, 2004 David Johnson <[email protected]>
+//
+// Plastik KWin window decoration
+// Copyright (C) 2003-2005 Sandro Giessl <[email protected]>
+//
+// KCMicons for KDE
+// Copyright (c) 2000 Antonio Larrosa <[email protected]>
+//
+// 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; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+///////////////////////////////////////////////////////////////////////
+
+#ifndef __FX_SHADOW
+#define __FX_SHADOW
+
+#include <qpixmap.h>
+#include <qimage.h>
+#include <qcolor.h>
+
+class ShadowEngine
+{
+ public:
+ ShadowEngine();
+ ~ShadowEngine();
+ void setThickness(int thickness) { thickness_ = thickness; }
+ void setMultiplicationFactor(double factor) { multiplicationFactor_ = factor; }
+ QImage makeShadow(const QPixmap& textPixmap, const QColor &bgColor);
+ private:
+ double decay(QImage& source, int x, int y);
+
+ int thickness_;
+ double multiplicationFactor_;
+};
+
+#endif
diff --git a/client/themes.moc.cc b/client/themes.moc.cc
new file mode 100644
index 0000000..8ba243f
--- /dev/null
+++ b/client/themes.moc.cc
@@ -0,0 +1,110 @@
+/****************************************************************************
+** IconThemesConfig meta object code from reading C++ file 'themes.h'
+**
+** Created: Wed Dec 7 21:43:34 2005
+** by: The Qt MOC ($Id: qt/moc_yacc.cpp 3.3.5 edited Sep 2 14:41 $)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#undef QT_NO_COMPAT
+#include "themes.h"
+#include <qmetaobject.h>
+#include <qapplication.h>
+
+#include <private/qucomextra_p.h>
+#if !defined(Q_MOC_OUTPUT_REVISION) || (Q_MOC_OUTPUT_REVISION != 26)
+#error "This file was generated using the moc from 3.3.5. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+const char *IconThemesConfig::className() const
+{
+ return "IconThemesConfig";
+}
+
+QMetaObject *IconThemesConfig::metaObj = 0;
+static QMetaObjectCleanUp cleanUp_IconThemesConfig( "IconThemesConfig", &IconThemesConfig::staticMetaObject );
+
+#ifndef QT_NO_TRANSLATION
+QString IconThemesConfig::tr( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "IconThemesConfig", s, c, QApplication::DefaultCodec );
+ else
+ return QString::fromLatin1( s );
+}
+#ifndef QT_NO_TRANSLATION_UTF8
+QString IconThemesConfig::trUtf8( const char *s, const char *c )
+{
+ if ( qApp )
+ return qApp->translate( "IconThemesConfig", s, c, QApplication::UnicodeUTF8 );
+ else
+ return QString::fromUtf8( s );
+}
+#endif // QT_NO_TRANSLATION_UTF8
+
+#endif // QT_NO_TRANSLATION
+
+QMetaObject* IconThemesConfig::staticMetaObject()
+{
+ if ( metaObj )
+ return metaObj;
+ QMetaObject* parentObject = KCModule::staticMetaObject();
+ static const QUParameter param_slot_0[] = {
+ { "item", &static_QUType_ptr, "QListViewItem", QUParameter::In }
+ };
+ static const QUMethod slot_0 = {"themeSelected", 1, param_slot_0 };
+ static const QUMethod slot_1 = {"installNewTheme", 0, 0 };
+ static const QUMethod slot_2 = {"removeSelectedTheme", 0, 0 };
+ static const QMetaData slot_tbl[] = {
+ { "themeSelected(QListViewItem*)", &slot_0, QMetaData::Protected },
+ { "installNewTheme()", &slot_1, QMetaData::Protected },
+ { "removeSelectedTheme()", &slot_2, QMetaData::Protected }
+ };
+ metaObj = QMetaObject::new_metaobject(
+ "IconThemesConfig", parentObject,
+ slot_tbl, 3,
+ 0, 0,
+#ifndef QT_NO_PROPERTIES
+ 0, 0,
+ 0, 0,
+#endif // QT_NO_PROPERTIES
+ 0, 0 );
+ cleanUp_IconThemesConfig.setMetaObject( metaObj );
+ return metaObj;
+}
+
+void* IconThemesConfig::qt_cast( const char* clname )
+{
+ if ( !qstrcmp( clname, "IconThemesConfig" ) )
+ return this;
+ return KCModule::qt_cast( clname );
+}
+
+bool IconThemesConfig::qt_invoke( int _id, QUObject* _o )
+{
+ switch ( _id - staticMetaObject()->slotOffset() ) {
+ case 0: themeSelected((QListViewItem*)static_QUType_ptr.get(_o+1)); break;
+ case 1: installNewTheme(); break;
+ case 2: removeSelectedTheme(); break;
+ default:
+ return KCModule::qt_invoke( _id, _o );
+ }
+ return TRUE;
+}
+
+bool IconThemesConfig::qt_emit( int _id, QUObject* _o )
+{
+ return KCModule::qt_emit(_id,_o);
+}
+#ifndef QT_NO_PROPERTIES
+
+bool IconThemesConfig::qt_property( int id, int f, QVariant* v)
+{
+ return KCModule::qt_property( id, f, v);
+}
+
+bool IconThemesConfig::qt_static_property( QObject* , int , int , QVariant* ){ return FALSE; }
+#endif // QT_NO_PROPERTIES