diff options
author | Mavridis Philippe <[email protected]> | 2021-06-26 15:45:55 +0300 |
---|---|---|
committer | Mavridis Philippe <[email protected]> | 2021-06-26 15:45:55 +0300 |
commit | e822245ef1730e7d24b9704a309776613d030f73 (patch) | |
tree | b82df5cf010f3283d6de1c16ad07a1d937c7751f /client | |
download | twin-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.am | 23 | ||||
-rw-r--r-- | client/Makefile.in | 911 | ||||
-rw-r--r-- | client/config/Makefile.am | 19 | ||||
-rw-r--r-- | client/config/Makefile.in | 824 | ||||
-rw-r--r-- | client/config/configdialog.ui | 2165 | ||||
-rw-r--r-- | client/config/deKoratorconfig.cc | 464 | ||||
-rw-r--r-- | client/config/deKoratorconfig.h | 72 | ||||
-rw-r--r-- | client/config/themes.cpp | 460 | ||||
-rw-r--r-- | client/config/themes.h | 74 | ||||
-rw-r--r-- | client/config/themes.moc.cc | 110 | ||||
-rw-r--r-- | client/config/themes.moc.loT | 7 | ||||
-rw-r--r-- | client/deKorator.desktop | 5 | ||||
-rw-r--r-- | client/deKoratorclient.cc | 2831 | ||||
-rw-r--r-- | client/deKoratorclient.h | 322 | ||||
-rw-r--r-- | client/shadow.cpp | 129 | ||||
-rw-r--r-- | client/shadow.h | 56 | ||||
-rw-r--r-- | client/themes.moc.cc | 110 |
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&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 &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&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>&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&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>&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&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 &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 &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&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 &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 &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 &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 &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>&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>&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>&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>&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&w Theme</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>removeThemBtn</cstring> + </property> + <property name="text"> + <string>R&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&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>&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>&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><p align="center"><h3>deKorator Window's Decoration Version 0.3</h3></p><br> + + + +<p align="center">Art Designer: jon clarke AKA ArbitraryReason<br> +Email: <a href="mailto:[email protected]"><font color="#ff0000">[email protected]</font></a><br> +<p align="center">Theme contributer: Zoran Karavla AKA the-error<br> +Email: <a href="mailto:[email protected]"><font color="#ff0000">[email protected]</font></a><br> +<p align="center">Author: moty rahamim<br> +Email: <a href="mailto:[email protected]"><font color="#ff0000">[email protected]</font></a></p></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 |